Create main.yml #10

Merged
julian-CStack merged 4 commits from add_action into main 2023-05-18 21:58:26 +00:00
2 changed files with 88 additions and 0 deletions

21
.github/workflows/main.yml vendored Normal file
View File

@ -0,0 +1,21 @@
#should deny
name: Verify
on: [pull_request]
jobs:
test:
runs-on: ubuntu-20.04
steps:
- name: Prepare repository
uses: actions/checkout@v3
- name: Install dependencies
run: |
sudo apt install -y unzip jq
- name: Run verify script
run: |
cd scripts
bash verify.sh
if [ $? -eq 1 ]; then
exit 1
fi

67
scripts/verify.sh Executable file
View File

@ -0,0 +1,67 @@
#!/bin/bash
function checkVersionAndId {
idArg=$1
versionArg=$2
themeId="$(unzip -p "${idArg}.zip" theme.json | jq -r '.id')"
if [[ $idArg != "$themeId" ]]; then
echo "Theme id for $idArg does NOT match!"
exit 1
else
echo "theme ids match"
fi
themeVersion="$(unzip -p "${idArg}.zip" theme.json | jq -r '.version')"
if [[ "$versionArg" != "$themeVersion" ]]; then
echo "Versions for $idArg do NOT match!"
exit 1
else
echo "versions match"
fi
}
zip_dir="../data/themes"
# Change to the specified zip_dir
cd "$zip_dir" || exit 1
json_file="../themes.json"
# Read the contents of the JSON file
json=$(cat "$json_file")
# Extract the "sha256" and "id" values using jq
themes=$(echo "$json" | jq -r '.themes[] | "\(.sha256) \(.id) \(.version)"')
# Loop through each theme and print the "sha256" and "id" values
while read -r sha256 id version; do
file="${id}.zip"
if [[ -f "$file" ]]; then
# Calculate the SHA256 hash
sha256sum_output=$(sha256sum "$file")
sha256_hash=${sha256sum_output%% *}
# Check if match
if [[ "$sha256" == "$sha256_hash" ]]; then
echo "Theme $file hash matches hash in themes.json"
else
echo "Theme $file hash doe NOT match hash in themes.json!"
exit 1
fi
# Check inside zip file
checkVersionAndId "$id" "$version"
echo
else
echo "Theme $file not found!"
exit 1
fi
done <<< "$themes"