Skip to content

generate-sdk

generate-sdk #1

Workflow file for this run

name: 1 Generate SDK
on:
workflow_dispatch:
repository_dispatch:
types: [generate-sdk]
jobs:
generate_sdk:
runs-on: ubuntu-latest
env:
language: swift5
openapi_file: kandji_openapi.yaml
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
token: ${{ secrets.KANDJI_OPENAPI_TOKEN }}
- name: Delete Generated Files
run: |
if [[ -f ".openapi-generator/FILES" ]]; then
while IFS= read -r file; do
# Handle each file listed in .openapi-generator/FILES
if [[ -e "$file" ]]; then
rm -rf "$file"
else
echo "Warning: '$file' does not exist."
fi
done < .openapi-generator/FILES
else
echo "Directory .openapi-generator/FILES does not exist, skipping."
fi
- name: Download Kandji OpenAPI file
env:
GH_TOKEN: ${{ secrets.KANDJI_OPENAPI_TOKEN }}
run: |
gh release download \
--repo "MScottBlake/kandji-openapi-spec" \
--pattern "kandji_openapi\.yaml" \
--output "${{ env.openapi_file }}"
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: openapi_file
path: ${{ env.openapi_file }}
- name: Generate Client
uses: openapi-generators/openapitools-generator-action@v1
with:
config-file: kandji-generator-config.yaml
generator: ${{ env.language }}
generator-tag: latest-release
openapi-file: ${{ env.openapi_file }}
command-args:
--package-name=kandji_${{ env.language }}_sdk
--git-repo-id=kandji-${{ env.language }}-sdk
- name: Move and remove directory contents if it exists
run: |
if [[ -d "${{ env.language }}-client" ]]; then
shopt -s dotglob # Include hidden files
for item in "${{ env.language }}-client"/*; do
# Use rsync to merge and move directories, which handles nested structures well
rsync -av "$item" "${{ env.language }}-client"/../
done
# Remove the original directory and all its contents
rm -rf "${{ env.language }}-client"
else
echo "Directory ${{ env.language }}-client does not exist, skipping."
fi
- name: Delete Kandji OpenAPI file
run: |
rm -rf "${{ env.openapi_file }}"
- name: Check for Changes
id: check_changes
run: |
if [[ -z $(git status --porcelain) ]]; then
echo "No changes to commit."
echo "continue=false" >> $GITHUB_ENV
else
echo "Changes detected."
echo "continue=true" >> $GITHUB_ENV
fi
- name: Create Pull Request
if: env.continue == 'true'
uses: peter-evans/create-pull-request@v7
with:
token: ${{ secrets.GITHUB_TOKEN }}
sign-commits: true
commit-message: "[auto] Updated Kandji SDK"
branch: update-sdk
base: main
delete-branch: true
title: "[auto] Updated Kandji SDK"