mirror of
https://github.com/FlightControl-Master/MOOSE_MISSIONS.git
synced 2025-08-15 10:37:46 +00:00
Added New Github Actions Workflow
- Disabled scheduled and push commands in `demomissionspacked.yml` - Added `UpdateMoose.yml` in .github\workflows\ folder - Added `UpdateMoose.py` in .scripts folder
This commit is contained in:
94
.github/workflows/UpdateMoose.yml
vendored
Normal file
94
.github/workflows/UpdateMoose.yml
vendored
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
# This workflow updates the Moose.lua file in all miz files.
|
||||||
|
name: Build Demo Missions
|
||||||
|
|
||||||
|
# Controls when the workflow will run
|
||||||
|
on:
|
||||||
|
|
||||||
|
# Triggers the workflow on push or pull request events for the "main" and "develop" branches
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
- develop
|
||||||
|
|
||||||
|
# Cron job every day at 2 o'clock.
|
||||||
|
schedule:
|
||||||
|
- cron: '0 2 * * *'
|
||||||
|
|
||||||
|
# Allows you to run this workflow manually from the Actions tab
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
name:
|
||||||
|
description: 'Manual Run'
|
||||||
|
required: false
|
||||||
|
default: 'The Octoverse'
|
||||||
|
|
||||||
|
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
|
||||||
|
jobs:
|
||||||
|
|
||||||
|
# This workflow contains a single job called "Update"
|
||||||
|
Update:
|
||||||
|
|
||||||
|
# Operating system
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
# Set environment variable (not used)
|
||||||
|
env:
|
||||||
|
BRANCH: main
|
||||||
|
|
||||||
|
# Steps represent a sequence of tasks that will be executed as part of the job
|
||||||
|
steps:
|
||||||
|
|
||||||
|
# Say Mission branch name
|
||||||
|
- name: Mission branch
|
||||||
|
run: echo ${GITHUB_REF_NAME}
|
||||||
|
|
||||||
|
# Check if master
|
||||||
|
- name: Check if master
|
||||||
|
if: ${{ github.ref_name=='master' }}
|
||||||
|
run: echo "MOOSE_BRANCH=master" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
# Check if develop
|
||||||
|
- name: Check if develop
|
||||||
|
if: ${{ github.ref_name=='develop' }}
|
||||||
|
run: echo "MOOSE_BRANCH=develop" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
# Say Moose branch name.
|
||||||
|
- name: Moose branch name
|
||||||
|
run: echo $MOOSE_BRANCH
|
||||||
|
|
||||||
|
# Checks-out MOOSE_INCLUDE to ./MooseFiles
|
||||||
|
- name: Checkout MOOSE_INCLUDE
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
repository: FlightControl-Master/MOOSE_INCLUDE
|
||||||
|
ref: ${{ env.MOOSE_BRANCH }}
|
||||||
|
path: ./MooseFiles
|
||||||
|
|
||||||
|
# Checks-out repository to ./self
|
||||||
|
- name: Checkout Missions
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
#ref: ${{ env.BRANCH }}
|
||||||
|
path: ./self
|
||||||
|
|
||||||
|
# Install python
|
||||||
|
- name: Setup Python
|
||||||
|
uses: actions/setup-python@v4
|
||||||
|
with:
|
||||||
|
python-version: '3.10' # install the python version needed
|
||||||
|
|
||||||
|
# Run python script to update Moose.lua in all miz files
|
||||||
|
- name: Run UpdateMoose.py
|
||||||
|
run: |
|
||||||
|
cd ./self
|
||||||
|
python .scripts/UpdateMoose.py ../MooseFiles/Moose_Include_Static/ ./
|
||||||
|
|
||||||
|
# Commit changes
|
||||||
|
- name: Commit Changes
|
||||||
|
run: |
|
||||||
|
cd ./self
|
||||||
|
git add *
|
||||||
|
git config --global user.name 'funkyfranky'
|
||||||
|
git config --global user.email 'frank@inter-zone.de'
|
||||||
|
git commit -am "Updated Moose.lua" || echo "No changes to commit"
|
||||||
|
git push
|
||||||
12
.github/workflows/demomissionspacked.yml
vendored
12
.github/workflows/demomissionspacked.yml
vendored
@@ -5,13 +5,13 @@ name: Build Demo Missions (packed)
|
|||||||
# Controls when the action will run. Workflow runs when manually triggered using the UI
|
# Controls when the action will run. Workflow runs when manually triggered using the UI
|
||||||
# or API.
|
# or API.
|
||||||
on:
|
on:
|
||||||
schedule:
|
#schedule:
|
||||||
- cron: '0 7 * * 6'
|
# - cron: '0 7 * * 6'
|
||||||
|
|
||||||
push:
|
#push:
|
||||||
branches:
|
# branches:
|
||||||
- master
|
# - master
|
||||||
- develop
|
# - develop
|
||||||
|
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
inputs:
|
inputs:
|
||||||
|
|||||||
120
.scripts/UpdateMoose.py
Normal file
120
.scripts/UpdateMoose.py
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
"""
|
||||||
|
This script finds all miz files and updates the contained Moose.lua from a given one.
|
||||||
|
It also extracts the contained mission script and places it next to the miz file.
|
||||||
|
Here we assume that the stem of the file name is the same as the directory name, e.g.
|
||||||
|
"Auftrag - 10 - Arty.lua" if the miz file name is "Auftrag - 10 - Arty.miz"
|
||||||
|
|
||||||
|
This script is supposed to be run from, e.g., github actions when a new demo mission is
|
||||||
|
uploaded.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from multiprocessing.util import is_exiting
|
||||||
|
from pathlib import Path
|
||||||
|
from zipfile import ZipFile
|
||||||
|
from shutil import rmtree, copy
|
||||||
|
import argparse
|
||||||
|
import filecmp
|
||||||
|
|
||||||
|
def update(f: Path, MooseLua: Path, Temp: Path):
|
||||||
|
"""
|
||||||
|
Update the Moose.lua file in given file.
|
||||||
|
"""
|
||||||
|
# Print file name.
|
||||||
|
print(f"Updating file: {f}")
|
||||||
|
|
||||||
|
# Extract all the contents of zip file in different directory
|
||||||
|
with ZipFile(f, mode='r') as miz:
|
||||||
|
miz.extractall(Temp)
|
||||||
|
|
||||||
|
# Folder where script is located
|
||||||
|
ScriptDir=Temp/"l10n/DEFAULT/"
|
||||||
|
|
||||||
|
# Check if that directory exists! GRP-600 - Respawn.miz was faulty
|
||||||
|
if not ScriptDir.is_dir():
|
||||||
|
print(f"WARNING: {ScriptDir.name} does not exit!")
|
||||||
|
return
|
||||||
|
|
||||||
|
# Script file.
|
||||||
|
ScriptFile=ScriptDir/Path(f.stem + ".lua")
|
||||||
|
|
||||||
|
#Copy script file to directory.
|
||||||
|
if ScriptFile.is_file():
|
||||||
|
print(f"Copying script file {ScriptFile} to {f.parent}")
|
||||||
|
copy(ScriptFile, f.parent)
|
||||||
|
else:
|
||||||
|
print(f"Warning: expected script file {ScriptFile} does NOT exist in miz file!")
|
||||||
|
|
||||||
|
# Check if Moose.lua file is already.
|
||||||
|
if filecmp.cmp(MooseLua, ScriptDir/"Moose.lua"):
|
||||||
|
print(f"INFO: Moose.lua file is up-to-date ==> Nothing to do!")
|
||||||
|
else:
|
||||||
|
|
||||||
|
# Copy Moose.lua to temp dir.
|
||||||
|
copy(MooseLua, ScriptDir/"Moose.lua")
|
||||||
|
|
||||||
|
# Create new miz file
|
||||||
|
with ZipFile(f, mode='w') as archive:
|
||||||
|
for file_path in Temp.rglob("*"):
|
||||||
|
archive.write(file_path, arcname=file_path.relative_to(Temp))
|
||||||
|
|
||||||
|
# Remove temp dir.
|
||||||
|
try:
|
||||||
|
rmtree(Temp)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
|
# Debug info.
|
||||||
|
if False:
|
||||||
|
with ZipFile(f, mode='r') as zipObj:
|
||||||
|
zipObj.printdir()
|
||||||
|
#for filename in zipObj.namelist():
|
||||||
|
# print(filename)
|
||||||
|
|
||||||
|
# Done.
|
||||||
|
print("--------------")
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
|
||||||
|
# Command line argument parser.
|
||||||
|
parser = argparse.ArgumentParser(description='Blabla.')
|
||||||
|
|
||||||
|
# Add argument for Moose path.
|
||||||
|
parser.add_argument('MoosePath', metavar='moose', type=str, help='path to Moose.lua file', default="./")
|
||||||
|
|
||||||
|
# Add argument for Moose path.
|
||||||
|
parser.add_argument('MissionPath', metavar='missions', type=str, help='path to missions', default="./")
|
||||||
|
|
||||||
|
|
||||||
|
# Execute the parse_args() method
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
# Path to Moose.lua
|
||||||
|
Moose=Path(args.MoosePath)
|
||||||
|
|
||||||
|
# Moose.lua file
|
||||||
|
MooseLua=Moose/"Moose_.lua"
|
||||||
|
|
||||||
|
# Check that Moose.lua exists
|
||||||
|
if MooseLua.exists():
|
||||||
|
print("Moose_.lua exists")
|
||||||
|
with open(MooseLua) as myfile:
|
||||||
|
head = [next(myfile) for x in range(1)]
|
||||||
|
print(head)
|
||||||
|
else:
|
||||||
|
print(f"{MooseLua.name} does not exist")
|
||||||
|
quit()
|
||||||
|
|
||||||
|
# Path to search for mission (miz) files
|
||||||
|
Missions=Path(args.MissionPath)
|
||||||
|
|
||||||
|
# Temp directory.
|
||||||
|
Temp=Path("temp/")
|
||||||
|
|
||||||
|
# Try to delete temp folder.
|
||||||
|
if Temp.is_dir():
|
||||||
|
rmtree(Temp)
|
||||||
|
|
||||||
|
# Loop over all miz files (recursively)
|
||||||
|
print("\nMiz files:\n----------")
|
||||||
|
for f in Missions.rglob("*.miz"):
|
||||||
|
update(f, MooseLua, Temp)
|
||||||
Reference in New Issue
Block a user