-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathaction.yml
More file actions
109 lines (99 loc) · 3.6 KB
/
Copy pathaction.yml
File metadata and controls
109 lines (99 loc) · 3.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
name: 'Publish Plugin Manifest'
description: 'Generate and publish plugin manifest and release package for vfox plugins'
author: 'version-fox'
branding:
icon: 'package'
color: 'blue'
inputs:
version:
description: 'Version to publish (without v prefix)'
required: true
github-token:
description: 'GitHub token for publishing releases'
required: true
default: ${{ github.token }}
lua-version:
description: 'Lua version to use'
required: false
default: '5.3.5'
exclude-files:
description: 'Files to exclude from zip (glob patterns)'
required: false
default: '*.git* manifest.json'
outputs:
manifest-path:
description: 'Path to generated manifest.json file'
value: ${{ steps.generate-manifest.outputs.manifest-path }}
zip-path:
description: 'Path to generated zip file'
value: ${{ steps.compress-files.outputs.zip-path }}
runs:
using: 'composite'
steps:
- name: Set environment variables
shell: bash
run: |
echo "REPO_NAME=$(echo ${{ github.repository }} | cut -d'/' -f2)" >> $GITHUB_ENV
echo "VERSION=${{ inputs.version }}" >> $GITHUB_ENV
- name: Set up Lua
uses: leafo/gh-actions-lua@v10
with:
luaVersion: ${{ inputs.lua-version }}
- name: Install dependencies
shell: bash
run: |
sudo apt-get update
sudo apt-get install luarocks
sudo luarocks install dkjson
- name: Generate manifest
id: generate-manifest
shell: bash
run: |
eval $(luarocks path)
lua -e '
package.path = package.path .. ";./?.lua"
require("metadata");
local dkjson = require("dkjson");
PLUGIN.downloadUrl = "https://github.com/${{ github.repository }}/releases/download/v${{ env.VERSION }}/${{ env.REPO_NAME }}-${{ env.VERSION }}.zip";
local str = dkjson.encode(PLUGIN);
print(str)' > manifest.json
cat manifest.json
echo "manifest-path=$(pwd)/manifest.json" >> $GITHUB_OUTPUT
- name: Compress build files
id: compress-files
shell: bash
run: |
# Convert space-separated exclude patterns to zip exclusion format
EXCLUDE_PATTERNS="${{ inputs.exclude-files }}"
ZIP_EXCLUDES=""
for pattern in $EXCLUDE_PATTERNS; do
ZIP_EXCLUDES="$ZIP_EXCLUDES -x $pattern"
done
zip -r "${{ env.REPO_NAME }}-${{ env.VERSION }}.zip" . $ZIP_EXCLUDES
echo "zip-path=$(pwd)/${{ env.REPO_NAME }}-${{ env.VERSION }}.zip" >> $GITHUB_OUTPUT
- name: Publish plugin release
shell: bash
run: |
# Check if release already exists
if gh release view v${{ env.VERSION }} >/dev/null 2>&1; then
echo "Release v${{ env.VERSION }} already exists, uploading asset..."
gh release upload v${{ env.VERSION }} ./${{ env.REPO_NAME }}-${{ env.VERSION }}.zip --clobber
else
echo "Creating new release v${{ env.VERSION }}..."
gh release create v${{ env.VERSION }} ./${{ env.REPO_NAME }}-${{ env.VERSION }}.zip --generate-notes
fi
env:
GITHUB_TOKEN: ${{ inputs.github-token }}
- name: Publish manifest
shell: bash
run: |
# Check if manifest release already exists
if gh release view manifest >/dev/null 2>&1; then
echo "Manifest release already exists, uploading asset..."
gh release upload manifest ./manifest.json --clobber
else
echo "Creating new manifest release..."
gh release create manifest ./manifest.json --generate-notes
fi
env:
GITHUB_TOKEN: ${{ inputs.github-token }}