-
Notifications
You must be signed in to change notification settings - Fork 18
88 lines (70 loc) · 3.05 KB
/
publish-update-json.yaml
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
name: Publish Update Json
on:
release:
types:
- published
jobs:
PublishUpdateJson:
name: PublishUpdateJson
runs-on: ubuntu-latest
steps:
- name: Install Dependencies
run: |
sudo apt-get install -y jq wget unzip dos2unix
- name: Generate Update Json
run: |
#!/bin/bash
# from https://github.com/topjohnwu/Magisk/blob/70415a396a4e1eae85d74672c11f6b675a8edff1/scripts/util_functions.sh#L30-L36
grep_prop() {
local REGEX="s/^$1=//p"
shift
local FILES=$@
[ -z "$FILES" ] && FILES='/system/build.prop'
cat $FILES 2>/dev/null | dos2unix | sed -n "$REGEX" | head -n 1
}
abort() {
echo "$1" >&2
exit 1
}
PUBLIC_ROOT="./publish"
TEMP_ROOT="./temp"
mkdir -p "$PUBLIC_ROOT"
mkdir -p "$TEMP_ROOT"
echo "Generate changelog.md"
cat << __EOF_OF_CHANGELOGS__ > "$PUBLIC_ROOT/changelog.md"
${{ github.event.release.body }}
__EOF_OF_CHANGELOGS__
echo "Fetching release assets"
wget -O - '${{ github.event.release.assets_url }}' 2> /dev/null | jq -r ".[].browser_download_url" | while read -r url
do
echo "Processing $url"
FILE_NAME="$TEMP_ROOT/module.zip"
EXTRACT_DIR="$TEMP_ROOT/module"
echo "Downloading $FILE_NAME"
wget -O "$FILE_NAME" "$url" > /dev/null 2>&1 || abort "Download $url failed"
echo "Extract module $FILE_NAME to $EXTRACT_DIR"
unzip -o -d "$EXTRACT_DIR" "$FILE_NAME" module.prop > /dev/null 2>&1 || abort "Unzip $url failed"
id="$(grep_prop id "$EXTRACT_DIR/module.prop")"
version="$(grep_prop version "$EXTRACT_DIR/module.prop")"
versionCode="$(grep_prop versionCode "$EXTRACT_DIR/module.prop")"
zipUrl="$url"
changelog="${{ github.event.repository.html_url }}/releases/download/${{ github.event.release.tag_name }}/changelog.md"
jsonFileName="$(echo -n "$id" | sed "s/_/-/g")"
echo "-------- Module properties --------"
echo "id = $id"
echo "version = $version"
echo "versionCode = $versionCode"
echo "zipUrl = $zipUrl"
echo "changelog = $changelog"
echo "jsonFileName = $jsonFileName"
if [[ -z "$id" || -z "$version" || -z "$versionCode" || -z "$zipUrl" || -z "$changelog" ]]; then
abort "Invalid module.prop"
fi
printf '{"version":"%s","versionCode":%d,"zipUrl":"%s","changelog":"%s"}' "$version" "$versionCode" "$zipUrl" "$changelog" > "$PUBLIC_ROOT/$jsonFileName.json"
done
- name: Upload Json
uses: shogo82148/actions-upload-release-asset@v1
with:
github_token: ${{ github.token }}
upload_url: ${{ github.event.release.upload_url }}
asset_path: ./publish/*