From 5f131f229a539b2d0d399f0d3735441c7d234d01 Mon Sep 17 00:00:00 2001 From: TakSeBiegam Date: Thu, 14 Sep 2023 11:57:56 +0200 Subject: [PATCH 1/2] feat: added traverse dir to find stucco binary file --- packages/cli/package.json | 3 ++- packages/cli/src/commands/common/dev.ts | 34 ++++++++++++++++++++++--- packages/cli/src/index.ts | 1 + 3 files changed, 33 insertions(+), 5 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index ab095a7..ed84d38 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -36,7 +36,7 @@ "eslint-plugin-prettier": "^4.2.1", "impuddle": "0.0.2", "prettier": "^2.7.1", - "ttypescript": "^1.5.13", + "ttypescript": "^1.5.15", "typescript": "^4.8.3", "typescript-transform-paths": "^3.3.1" }, @@ -69,6 +69,7 @@ "run-async": "^2.4.1", "stucco-js": "^0.10.18", "ts-node": "^10.9.1", + "ttsc": "^0.3.1", "yargs": "^17.5.1" } } diff --git a/packages/cli/src/commands/common/dev.ts b/packages/cli/src/commands/common/dev.ts index 2b9538f..c6e20a2 100644 --- a/packages/cli/src/commands/common/dev.ts +++ b/packages/cli/src/commands/common/dev.ts @@ -9,12 +9,38 @@ import { getEnvFile } from '@/common/envs.js'; let killing = false; let changingFile = false; +const MAX_NEST = 10; + +const traverseDirToRoot = (iteration: number) => { + const execDir = process.cwd().split('/'); + let finalPath = ''; + for (let index = 0; index < execDir.length - iteration; index++) { + finalPath += execDir[index]; + } + return finalPath[1] === '/' ? finalPath.substring(1) : finalPath; +}; + +const tryRunStuccoWithDynamicPath = async () => { + for (let index = 0; index < MAX_NEST; index++) { + const basePath = traverseDirToRoot(index); + if (basePath.length === 0) { + break; + } + try { + const { onCloseStucco, onCreateStucco } = await stuccoRun({ + basePath: basePath, + schemaPath: path.join(process.cwd(), DEPLOY_FILE), + configPath: path.join(process.cwd(), STUCCO_FILE), + }); + return { onCloseStucco, onCreateStucco }; + } catch (e) {} + } + throw new Error('cannot find stucco binary'); +}; export const CommandDev = async () => { - const { onCloseStucco, onCreateStucco } = await stuccoRun({ - schemaPath: path.join(process.cwd(), DEPLOY_FILE), - configPath: path.join(process.cwd(), STUCCO_FILE), - }); + const { onCloseStucco, onCreateStucco } = await tryRunStuccoWithDynamicPath(); + const tsServer = typescriptServer({ searchPath: './', onCreate: async () => { diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts index d6f3a1f..d6d1236 100644 --- a/packages/cli/src/index.ts +++ b/packages/cli/src/index.ts @@ -21,6 +21,7 @@ import { confOptions, projectOptions } from '@/common/promptOptions.js'; import { CommandPrune } from '@/commands/common/prune.js'; import { CommandInspect } from '@/commands/common/inspect.js'; import { pushStuccoJson } from '@/commands/cloud/pushStuccoJson.js'; +import { cwd } from 'process'; welcome().then(() => { new Configuration(); From 66c43fb1cf8af6c569f109870e8e2f2fef7bb976 Mon Sep 17 00:00:00 2001 From: TakSeBiegam Date: Thu, 14 Sep 2023 12:00:42 +0200 Subject: [PATCH 2/2] chore: removed unused import and bump version --- packages/cli/package.json | 2 +- packages/cli/src/index.ts | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index ed84d38..ce1a846 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "graphql-editor-cli", - "version": "0.8.9", + "version": "0.9.0", "description": "GraphQL -> anything. Use GraphQL as your source of truth. GraphQL Editor Official CLI.", "main": "lib/api.js", "author": "Artur Czemiel", diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts index d6d1236..d6f3a1f 100644 --- a/packages/cli/src/index.ts +++ b/packages/cli/src/index.ts @@ -21,7 +21,6 @@ import { confOptions, projectOptions } from '@/common/promptOptions.js'; import { CommandPrune } from '@/commands/common/prune.js'; import { CommandInspect } from '@/commands/common/inspect.js'; import { pushStuccoJson } from '@/commands/cloud/pushStuccoJson.js'; -import { cwd } from 'process'; welcome().then(() => { new Configuration();