explicity delete temp files #448
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Unmanic Plugin Test and Generate Repo | |
on: | |
push: | |
branches: | |
- '**' | |
- 'pr-**' | |
- '!template' | |
pull_request: | |
branches: | |
- 'official' | |
- 'master' | |
jobs: | |
# Ensure that all plugins contain the required files and that | |
# certain files or directories are not present. | |
plugins-contain-required-files: | |
runs-on: ubuntu-latest | |
name: Plugins contain all required files | |
steps: | |
# Checkout | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
# _____ ____ _ | |
# | ____|_ __ ___ _ _ _ __ ___ | _ \ _ __ ___ ___ ___ _ __ | |_ | |
# | _| | '_ \/ __| | | | '__/ _ \ | |_) | '__/ _ \/ __|/ _ \ '_ \| __| | |
# | |___| | | \__ \ |_| | | | __/ | __/| | | __/\__ \ __/ | | | |_ | |
# |_____|_| |_|___/\__,_|_| \___| |_| |_| \___||___/\___|_| |_|\__| | |
# | |
- name: Check .gitignore in all plugin folders | |
if: success() || failure() | |
run: | | |
success=0 | |
for plugin_dir in source/*; do | |
if [ -d "${plugin_dir}" ]; then | |
# Ensure this directory contains a .gitignore file | |
if [ -e "${plugin_dir}/.gitignore" ]; then | |
echo "PASS - Found .gitignore in plugin '${plugin_dir}'" | |
else | |
echo "FAIL - Missing .gitignore in plugin '${plugin_dir}'" | |
success=1 | |
fi | |
fi | |
done | |
if [ ${success} -gt 0 ]; then | |
exit 1 | |
fi | |
- name: Check info.json in all plugin folders | |
if: success() || failure() | |
run: | | |
success=0 | |
for plugin_dir in source/*; do | |
if [ -d "${plugin_dir}" ]; then | |
# Ensure this directory contains a info.json file | |
if [ -e "${plugin_dir}/info.json" ]; then | |
echo "PASS - Found info.json in plugin '${plugin_dir}'" | |
else | |
echo "FAIL - Missing info.json in plugin '${plugin_dir}'" | |
success=1 | |
fi | |
fi | |
done | |
if [ ${success} -gt 0 ]; then | |
exit 1 | |
fi | |
- name: Check plugin.py in all plugin folders | |
if: success() || failure() | |
run: | | |
success=0 | |
for plugin_dir in source/*; do | |
if [ -d "${plugin_dir}" ]; then | |
# Ensure this directory contains a plugin.py file | |
if [ -e "${plugin_dir}/plugin.py" ]; then | |
echo "PASS - Found plugin.py in plugin '${plugin_dir}'" | |
else | |
echo "FAIL - Missing plugin.py in plugin '${plugin_dir}'" | |
success=1 | |
fi | |
fi | |
done | |
if [ ${success} -gt 0 ]; then | |
exit 1 | |
fi | |
# _____ __ __ _ _ | |
# | ____|_ __ ___ _ _ _ __ ___ | \/ (_)___ ___(_)_ __ __ _ | |
# | _| | '_ \/ __| | | | '__/ _ \ | |\/| | / __/ __| | '_ \ / _` | | |
# | |___| | | \__ \ |_| | | | __/ | | | | \__ \__ \ | | | | (_| | | |
# |_____|_| |_|___/\__,_|_| \___| |_| |_|_|___/___/_|_| |_|\__, | | |
# |___/ | |
- name: Check site-packages in all plugin folders | |
if: success() || failure() | |
run: | | |
success=0 | |
for plugin_dir in source/*; do | |
if [ -d "${plugin_dir}" ]; then | |
# Ensure this directory contains a site-packages file | |
if [ -e "${plugin_dir}/site-packages" ]; then | |
echo "FAIL - Directory 'site-packages' found in plugin '${plugin_dir}'" | |
success=1 | |
else | |
echo "PASS - No 'site-packages' directory found in plugin '${plugin_dir}'" | |
fi | |
fi | |
done | |
if [ ${success} -gt 0 ]; then | |
exit 1 | |
fi | |
- name: Check settings.json in all plugin folders | |
if: success() || failure() | |
run: | | |
success=0 | |
for plugin_dir in source/*; do | |
if [ -d "${plugin_dir}" ]; then | |
# Ensure this directory contains a settings.json file | |
if [ -e "${plugin_dir}/settings.json" ]; then | |
echo "FAIL - Directory 'settings.json' found in plugin '${plugin_dir}'" | |
success=1 | |
else | |
echo "PASS - No 'settings.json' directory found in plugin '${plugin_dir}'" | |
fi | |
fi | |
done | |
if [ ${success} -gt 0 ]; then | |
exit 1 | |
fi | |
# Store success message in success file artifact | |
- name: Set success file on completion of tests | |
if: success() | |
run: echo 'true' > success_file.txt | |
- name: Upload success file | |
if: success() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: success_file | |
path: success_file.txt | |
# Build the plugin repository | |
deploy-plugin-repo: | |
needs: [plugins-contain-required-files] | |
runs-on: ubuntu-latest | |
name: Build the plugin repository | |
steps: | |
# Fetch and read success file | |
- name: Download success file from previous job | |
uses: actions/download-artifact@v4 | |
with: | |
path: ./artifacts/ | |
- name: Read success file | |
id: previous_jobs_success | |
run: | | |
IS_SUCCESS=$(cat ./artifacts/success_file/success_file.txt) | |
echo "IS_SUCCESS=${IS_SUCCESS:?}" >> $GITHUB_OUTPUT | |
rm -rfv ./artifacts | |
# Checkout | |
- name: Checkout | |
if: steps.previous_jobs_success.outputs.IS_SUCCESS == 'true' | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
# Execute plugin repo gen action | |
- name: Generate and Deploy Unmanic Plugin Repository | |
uses: Unmanic/action.generate-unmanic-plugin-repo@master | |
with: | |
deploy_repo: 'true' | |
github_token: ${{ secrets.GH_TOKEN }} |