diff --git a/.github/workflows/generate.yml b/.github/workflows/generate.yml index d7b250f..9fc5654 100644 --- a/.github/workflows/generate.yml +++ b/.github/workflows/generate.yml @@ -39,12 +39,10 @@ jobs: run: poetry lock --no-update - name: Normalize package-lock.json run: npm install - - name: Generate code - run: npm run generate - name: Install dependencies run: poetry install --sync - - name: Format - run: make format + - name: Generate code + run: npm run generate - name: Commit uses: stefanzweifel/git-auto-commit-action@v5 with: diff --git a/generate-routes.js b/generate-routes.js new file mode 100644 index 0000000..f9b8e86 --- /dev/null +++ b/generate-routes.js @@ -0,0 +1,26 @@ +import { dirname, resolve } from 'node:path' +import { fileURLToPath } from 'node:url' + +import { + generatePythonSDK as generateSdk, + writeFs, +} from '@seamapi/nextlove-sdk-generator' +import { openapi } from '@seamapi/types/connect' +import { deleteAsync } from 'del' + +const libName = 'seam' + +const rootPath = dirname(fileURLToPath(import.meta.url)) +const outputPath = resolve(rootPath, libName) + +await deleteAsync(outputPath) + +const fileSystem = await generateSdk({ + openApiSpecObject: openapi, +}) + +const files = Object.entries(fileSystem).filter(([fileName]) => + fileName.startsWith(`${libName}/`), +) + +writeFs(rootPath, Object.fromEntries(files)) diff --git a/package.json b/package.json index a03f48b..695b063 100644 --- a/package.json +++ b/package.json @@ -3,9 +3,9 @@ "private": true, "type": "module", "scripts": { - "generate": "node ./scripts/generate.js", - "format": "prettier --write --ignore-path .gitignore .", - "preformat": "make format" + "generate": "node generate-routes.js", + "postgenerate": "make format", + "format": "prettier --write --ignore-path .gitignore ." }, "devDependencies": { "@seamapi/nextlove-sdk-generator": "1.8.5", diff --git a/scripts/generate.js b/scripts/generate.js deleted file mode 100644 index 5f4faba..0000000 --- a/scripts/generate.js +++ /dev/null @@ -1,37 +0,0 @@ -import { generatePythonSDK, writeFs } from '@seamapi/nextlove-sdk-generator' -import { openapi } from '@seamapi/types/connect' -import path from 'node:path' -import { fileURLToPath } from 'node:url' -import { deleteAsync } from 'del' - -const SEAM_DIRECTORY_PREFIX = 'seam/' -const PROJECT_ROOT_PATH = path.resolve( - path.dirname(fileURLToPath(import.meta.url)), - '../', -) -const MAIN_SEAM_DIR_PATH = path.resolve( - PROJECT_ROOT_PATH, - SEAM_DIRECTORY_PREFIX, -) - -const main = async () => { - try { - await deleteAsync(MAIN_SEAM_DIR_PATH) - - const pythonSdkFileSystem = await generatePythonSDK({ - openApiSpecObject: openapi, - }) - - const seamFiles = Object.entries(pythonSdkFileSystem).filter(([fileName]) => - fileName.startsWith(SEAM_DIRECTORY_PREFIX), - ) - - writeFs(PROJECT_ROOT_PATH, Object.fromEntries(seamFiles)) - - console.log('Python SDK generated successfully!') - } catch (error) { - console.error('Failed to generate SDK:', error) - } -} - -await main()