CI #137
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
# Controls when the action will run. Triggers the workflow on push or pull request | |
# events but only for branch 1 and on start directory, command.txt file changes or by manually running the workflow from actions tab | |
on: | |
push: | |
branches: [ 1 ] | |
paths: | |
- 'command.txt' | |
workflow_dispatch: | |
inputs: | |
cmdval: | |
description: 'Command' | |
required: true | |
argval: | |
description: 'Arguments' | |
required: false | |
# A workflow run is made up of one or more jobs that can run sequentially or in parallel | |
jobs: | |
# This workflow contains a single job called "build" | |
build: | |
# The type of runner that the job will run on | |
runs-on: ubuntu-20.04 | |
# Steps represent a sequence of tasks that will be executed as part of the job | |
steps: | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: '18' | |
# Partial clone | |
- name: Partial clone | |
shell: bash | |
run: | | |
REPO="https://${GITHUB_ACTOR}:${{ secrets.GITHUB_TOKEN }}@github.com/${GITHUB_REPOSITORY}.git" | |
git clone --filter=blob:none --no-checkout --depth 1 --sparse $REPO . | |
git sparse-checkout reapply --no-cone | |
git sparse-checkout add start/* | |
git checkout | |
- name: Setting the command values from command.txt | |
if: ${{ github.event_name != 'workflow_dispatch' }} | |
shell: bash | |
run: | | |
echo "mycmd=$(sed -n '1 p' command.txt)" >> $GITHUB_ENV | |
echo "myargs=$(sed -n '2 p' command.txt)" >> $GITHUB_ENV | |
- name: Setting the command values using the manually entered values | |
if: ${{ github.event_name == 'workflow_dispatch' }} | |
shell: bash | |
run: | | |
echo "mycmd=${{ github.event.inputs.cmdval }}" >> $GITHUB_ENV | |
echo "myargs=${{ github.event.inputs.argval }}" >> $GITHUB_ENV | |
- name: Print command with args for debug | |
shell: bash | |
run: echo ${{ env.mycmd }} ${{ env.myargs }} | |
- name: Add folders to sparse-checkout only if the command is search or create | |
if: ${{ contains(env.mycmd, 'create') || contains(env.mycmd, 'search') }} | |
shell: bash | |
run: git sparse-checkout add database/linebyline/* isocodes/* | |
- name: Add folders to sparse-checkout only if the command is fontsgen | |
if: ${{ contains(env.mycmd, 'fontsgen') }} | |
shell: bash | |
run: git sparse-checkout add fonts/* | |
# Add folders to sparse-checkout | |
- name: Add folders to sparse-checkout only if the command is update or delete | |
if: ${{ contains(env.mycmd, 'update') || contains(env.mycmd, 'delete') }} | |
shell: bash | |
# delargs gets the arguments in command.txt, then remove start spaces if any, then adds space at end, then replace spaces with *, then remove if only single * exists | |
# updateargs lists all files in startDir, replaced .txt with * and then replace \n with space | |
# sparse checkout will have editionName*, which means all files and folders starting with editionName will be checkeout | |
run: | | |
delargs=`echo ${{ env.myargs }} | sed -E 's/^\s+//g' | sed -E 's/$/ /g' | sed -E 's/\s+/* /g' | sed -E 's/^\* $//'` | |
updateargs=`ls -1 start | sed -e 's/\.txt$/*/' | tr '\n' ' '` | |
git sparse-checkout add database/linebyline/* isocodes/* $delargs $updateargs | |
# we need to upgrade the pip ,so we can get the cache directory in muliple os using single command | |
# we need to upgrade the setuptools ,so that we can install googletrans | |
- name: Upgrading pip in unix like environments | |
if: ${{ ! contains(runner.os, 'windows') }} | |
run: python3 -m pip install --upgrade pip setuptools wheel | |
shell: bash | |
- name: Upgrading pip in windows environment | |
if: ${{ contains(runner.os, 'windows') }} | |
run: py -3 -m pip install --upgrade pip setuptools wheel | |
shell: bash | |
- name: Install Dependencies | |
run: | | |
pip3 install -r requirements.txt | |
npm install | |
- name: Running the command | |
run: node apiscript.js ${{ env.mycmd }} ${{ env.myargs }} | |
# Emptying command.txt as the command from command.txt was already run in previous step | |
- name: Emptying command.txt | |
run: | | |
> command.txt | |
- name: Saving the log.txt as artifcat | |
uses: actions/upload-artifact@v4 | |
with: | |
name: log | |
path: log.txt | |
# commiting and pushing changes | |
- name: commit and push | |
if: ${{ ! contains(env.mycmd, 'search') }} | |
shell: bash | |
run: | | |
git config --global user.email github-actions@github.com | |
git config --global user.name github-actions | |
git pull | |
git add --sparse -A | |
git commit -m ${{ env.mycmd }} | |
git push |