From bf3bfc26032166a49c57da7f8a59651798c49696 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Tue, 6 May 2025 08:45:17 +0000 Subject: [PATCH] Add token 0xA90D86BF4A86E9dA647ea4a744Ee25826cf41Af0 Chiserli (CHIS) --- .github/workflows/cleanup-branches.yml | 34 ---- .github/workflows/update-token-list.yml | 178 ------------------ FXList.json | 9 + .../logo.png | Bin 0 -> 19697 bytes 4 files changed, 9 insertions(+), 212 deletions(-) delete mode 100644 .github/workflows/cleanup-branches.yml delete mode 100644 .github/workflows/update-token-list.yml create mode 100644 Tokens/0xA90D86BF4A86E9dA647ea4a744Ee25826cf41Af0/logo.png diff --git a/.github/workflows/cleanup-branches.yml b/.github/workflows/cleanup-branches.yml deleted file mode 100644 index fe10747..0000000 --- a/.github/workflows/cleanup-branches.yml +++ /dev/null @@ -1,34 +0,0 @@ -name: Cleanup Stale Branches - -on: - schedule: - # Runs at 00:00 every day - - cron: "0 0 * * *" - workflow_dispatch: - -jobs: - delete_old_branches: - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v3 - - - name: Fetch all branches - run: git fetch --all - - - name: Delete stale branches - run: | - # Get the date 7 days ago in YYYY-MM-DD format - seven_days_ago=$(date -d '7 days ago' +%Y-%m-%d) - - # List branches that haven't been updated in the last 7 days - for branch in $(git for-each-ref --format='%(refname:short) %(committerdate:short)' refs/remotes/origin | awk -v date="$seven_days_ago" '$2 <= date {print $1}'); do - # Ensure the branch is not 'main', 'master', or any protected branches - if [[ "$branch" != "origin/main" && "$branch" != "origin/master" && "$branch" != *"HEAD"* ]]; then - git push origin --delete ${branch#origin/} - echo "Deleted branch $branch" - fi - done - - - name: Cleanup - run: git remote prune origin diff --git a/.github/workflows/update-token-list.yml b/.github/workflows/update-token-list.yml deleted file mode 100644 index eef9a27..0000000 --- a/.github/workflows/update-token-list.yml +++ /dev/null @@ -1,178 +0,0 @@ -name: Update Token List - -on: - workflow_dispatch: - inputs: - name: - description: "Token name" - required: true - chainId: - description: "Chain ID" - required: true - symbol: - description: "Token symbol" - required: true - address: - description: "Token address" - required: true - decimals: - description: "Token decimals" - required: true - image: - description: "Token logo (base64 encoded)" - required: true - twitter: - description: "Twitter handle" - required: false - website: - description: "Website URL" - required: false - -jobs: - update-token-list: - runs-on: ubuntu-latest - - steps: - - name: Checkout repository - uses: actions/checkout@v3 - - - name: Set up Node.js - uses: actions/setup-node@v3 - with: - node-version: "20" - - - name: Set up Git configuration - run: | - git config user.name "GitHub Actions" - git config user.email "actions@github.com" - git config core.autocrlf input - - - name: Determine logo file name - id: determine_logo - run: | - case "${{ github.event.inputs.chainId }}" in - 530) - logo_filename="logo.png" - ;; - 90001) - logo_filename="logo-testnet.png" - ;; - 7000) - logo_filename="logo-zeta.png" - ;; - 7001) - logo_filename="logo-athens.png" - ;; - *) - logo_filename="logo.png" - ;; - esac - echo "logo_filename=$logo_filename" >> $GITHUB_ENV - - - name: Debug inputs - run: | - echo "Twitter: '${{ github.event.inputs.twitter }}'" - echo "Website: '${{ github.event.inputs.website }}'" - - - name: Decode and save image - run: | - mkdir -p Tokens/${{ github.event.inputs.address }} - echo "${{ github.event.inputs.image }}" | base64 --decode > Tokens/${{ github.event.inputs.address }}/${{ env.logo_filename }} - - - name: List files in Tokens directory - run: ls -R Tokens/ - - - name: Prepare branch and token entry - id: prepare - run: | - name="${{ github.event.inputs.name }}" - symbol="${{ github.event.inputs.symbol }}" - address="${{ github.event.inputs.address }}" - sanitized_name=$(echo "$name" | tr ' ' '-' | tr -cd '[:alnum:]-') - sanitized_symbol=$(echo "$symbol" | tr ' ' '-' | tr -cd '[:alnum:]-') - sanitized_address=$(echo "$address" | tr ' ' '-' | tr -cd '[:alnum:]-') - branch_name="add-token-$sanitized_address-$sanitized_name-$sanitized_symbol" - - # Save branch name to be used in subsequent steps - echo "branch_name=$branch_name" >> $GITHUB_ENV - - - name: Pull latest changes from main - run: | - git checkout main - git pull origin main - - - name: Print branch name - run: | - echo "Branch name: ${{ env.branch_name }}" - - - name: Normalize line endings in FXList.json - run: | - awk '{ sub("\r$", ""); print }' FXList.json > tmp.FXList.json && mv tmp.FXList.json FXList.json - - - name: Format FXList.json before changes - run: | - jq --indent 4 . FXList.json > tmp.FXList.json && mv tmp.FXList.json FXList.json - - - name: Append new token to FXList.json - run: | - logoURI="https://raw.githubusercontent.com/FunctionX-SG/FXSwap-TokenList/main/Tokens/${{ github.event.inputs.address }}/${{ env.logo_filename }}" - # Create token entry - token_entry=$(jq -n \ - --arg name "${{ github.event.inputs.name }}" \ - --argjson chainId "${{ github.event.inputs.chainId }}" \ - --arg symbol "${{ github.event.inputs.symbol }}" \ - --argjson decimals "${{ github.event.inputs.decimals }}" \ - --arg address "${{ github.event.inputs.address }}" \ - --arg logoURI "$logoURI" \ - --arg twitter "${{ github.event.inputs.twitter }}" \ - --arg website "${{ github.event.inputs.website }}" \ - '{name: $name, chainId: $chainId, symbol: $symbol, decimals: $decimals, address: $address, logoURI: $logoURI, extensions: {twitter: $twitter, website: $website}} | with_entries(select(.value != "" and .value != null)) | .extensions |= with_entries(select(.value != "" and .value != null))') - # Append the new entry to the tokens array in FXList.json - jq --argjson token_entry "$token_entry" '.tokens += [$token_entry]' FXList.json > tmp.FXList.json && mv tmp.FXList.json FXList.json - - - name: Format FXList.json after changes - run: | - jq --indent 4 . FXList.json > tmp.FXList.json && mv tmp.FXList.json FXList.json - - - name: Check if branch exists locally and delete if it does - run: | - if git show-ref --quiet refs/heads/${{ env.branch_name }}; then - echo "Branch exists locally. Deleting local branch ${{ env.branch_name }}." - git branch -D ${{ env.branch_name }} - else - echo "Branch does not exist locally." - fi - - - name: Check if branch exists remotely and delete if it does - run: | - if git ls-remote --exit-code --heads origin ${{ env.branch_name }}; then - echo "Branch exists remotely. Deleting remote branch ${{ env.branch_name }}." - git push origin --delete ${{ env.branch_name }} - else - echo "Branch does not exist remotely." - fi - - - name: Commit changes - run: | - git checkout -b ${{ env.branch_name }} - git rm -r .github/workflows/cleanup-branches.yml .github/workflows/update-token-list.yml - git add FXList.json Tokens/${{ github.event.inputs.address }}/${{ env.logo_filename }} - git commit -m "Add token ${{ github.event.inputs.address }} ${{ github.event.inputs.name }} (${{ github.event.inputs.symbol }})" - git pull origin main --rebase - git push origin ${{ env.branch_name }} - - - name: Install GitHub CLI - run: | - sudo apt-get update - sudo apt-get install gh - - - name: Create Pull Request with GH CLI - env: - GH_TOKEN: ${{ secrets.TOKEN }} - run: | - gh pr create --repo FunctionX-SG/FXSwap-TokenList --base main --head marginx-spot-trade:${{ env.branch_name }} --title "Add ${{ github.event.inputs.name }} Token" --body "This PR adds a new token with address ${{ github.event.inputs.address }}, name '${{ github.event.inputs.name }}' and symbol '${{ github.event.inputs.symbol }}'." - - # gh pr create --title "Add ${{ github.event.inputs.name }} Token" \ - # --body "This PR adds a new token with name '${{ github.event.inputs.name }}' and symbol '${{ github.event.inputs.symbol }}'." \ - # --base main \ - # --head marginx-spot-trade:${{ env.branch_name }} diff --git a/FXList.json b/FXList.json index 5715374..b1e244b 100644 --- a/FXList.json +++ b/FXList.json @@ -1086,6 +1086,15 @@ "address": "0x4F7A8B0C35Aa437a8aB1cB414A71FA0950cEeAE1", "logoURI": "https://raw.githubusercontent.com/FunctionX-SG/FXSwap-TokenList/main/Tokens/0x4F7A8B0C35Aa437a8aB1cB414A71FA0950cEeAE1/logo.png", "extensions": {} + }, + { + "name": "Chiserli", + "chainId": 530, + "symbol": "CHIS", + "decimals": 18, + "address": "0xA90D86BF4A86E9dA647ea4a744Ee25826cf41Af0", + "logoURI": "https://raw.githubusercontent.com/FunctionX-SG/FXSwap-TokenList/main/Tokens/0xA90D86BF4A86E9dA647ea4a744Ee25826cf41Af0/logo.png", + "extensions": {} } ] } diff --git a/Tokens/0xA90D86BF4A86E9dA647ea4a744Ee25826cf41Af0/logo.png b/Tokens/0xA90D86BF4A86E9dA647ea4a744Ee25826cf41Af0/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..9ba6e3a01476c516a4707da3444b88a82fe9e399 GIT binary patch literal 19697 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 literal 0 HcmV?d00001