userPFP/.github/workflows/generate-db.yml
2023-09-24 16:37:15 +01:00

90 lines
3 KiB
YAML

name: Generate Database
on:
push:
branches:
- main
paths:
- ".github/workflows/generate-db.yml"
- ".github/scripts/generate/**/*.*"
- "db/template.css"
pull_request:
branches:
- main
workflow_dispatch:
concurrency:
group: ${{ github.ref }}
cancel-in-progress: true
jobs:
generate:
runs-on: ubuntu-latest
permissions:
contents: write
strategy:
matrix:
retry-max: [3] # Set the maximum number of retries here
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18.x
- name: Setup PNPM
working-directory: .github/scripts
run: |
npm i -g pnpm
pnpm i
- name: Run generate script
working-directory: .github/scripts
run: pnpm run generate
- name: Generate JSON
id: generate-json
run: |
# Use a script or command to generate the JSON data and store it in an environment variable.
# For example, you can use 'jq' to convert CSV or other data into JSON:
# JSON_DATA=$(jq -R -s 'split("\n")[:-1] | map(split(",")) | [.[0] as $key | .[1:] | {($key): .}] | add' data.csv)
# Replace 'data.csv' and the jq command with your actual data source and conversion command.
JSON_DATA=$(jq -R -s 'split("\n")[:-1] | map(split(",")) | [.[0] as $key | .[1:] | {($key): .}] | add' data.csv)
echo "::set-output name=json_data::$JSON_DATA"
- name: Generate CSS
id: generate-css
run: |
# Use the generated JSON data from the previous step to create CSS selectors.
JSON_DATA="${{ steps.generate-json.outputs.json_data }}"
CSS_SELECTORS=""
# Loop through the JSON data and create CSS selectors based on user IDs.
for USER_ID in $(echo "$JSON_DATA" | jq -r 'keys[]'); do
CSS_SELECTORS="$CSS_SELECTORS,[style^=\"https://cdn.discordapp.com/avatars/$USER_ID\"],[src^=\"https://cdn.discordapp.com/avatars/$USER_ID\"]"
done
# Remove leading comma and set the CSS content.
CSS_SELECTORS="${CSS_SELECTORS#,}"
CSS_CONTENT="$CSS_SELECTORS { /* Your CSS styles here */ }"
echo "::set-output name=css_content::$CSS_CONTENT"
- name: Push changes
continue-on-error: ${{ success() }}
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"
# Use the generated JSON data from the previous step to create a JSON file.
echo "${{ steps.generate-json.outputs.json_data }}" > db/datadesktop.json
# Use the generated CSS content from the previous step to create a CSS file.
echo "${{ steps.generate-css.outputs.css_content }}" > db/dist.css
git add db/datadesktop.json db/dist.css
git commit -m "chore(db): update datadesktop.json and dist.css (${{ github.sha || 'manual trigger' }})" || true
git push