lucy-cli 2.0.0-alpha.9 → 2.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.yarnrc.yml +0 -1
- package/README.md +117 -102
- package/dist/args.d.ts +1 -6
- package/dist/args.js +103 -7
- package/dist/args.js.map +1 -0
- package/dist/commands/checks.d.ts +7 -0
- package/dist/commands/checks.js +47 -0
- package/dist/commands/checks.js.map +1 -0
- package/dist/commands/cleanup.d.ts +4 -0
- package/dist/commands/cleanup.js +10 -0
- package/dist/commands/cleanup.js.map +1 -0
- package/dist/commands/copy.d.ts +6 -0
- package/dist/commands/copy.js +20 -0
- package/dist/commands/copy.js.map +1 -0
- package/dist/commands/edit.d.ts +10 -0
- package/dist/commands/edit.js +67 -0
- package/dist/commands/edit.js.map +1 -0
- package/dist/commands/exec.d.ts +7 -0
- package/dist/commands/exec.js +67 -0
- package/dist/commands/exec.js.map +1 -0
- package/dist/commands/git.d.ts +8 -0
- package/dist/commands/git.js +104 -0
- package/dist/commands/git.js.map +1 -0
- package/dist/commands/home.d.ts +4 -0
- package/dist/commands/home.js +18 -0
- package/dist/commands/home.js.map +1 -0
- package/dist/commands/install.d.ts +8 -0
- package/dist/commands/install.js +165 -0
- package/dist/commands/install.js.map +1 -0
- package/dist/commands/read.d.ts +6 -0
- package/dist/commands/read.js +40 -0
- package/dist/commands/read.js.map +1 -0
- package/dist/commands/write.d.ts +7 -0
- package/dist/commands/write.js +28 -0
- package/dist/commands/write.js.map +1 -0
- package/dist/commands.js +1 -0
- package/dist/commands.js.map +1 -0
- package/dist/config.d.ts +29 -7
- package/dist/config.js +90 -26
- package/dist/config.js.map +1 -0
- package/dist/error.d.ts +1 -9
- package/dist/error.js +1 -2
- package/dist/error.js.map +1 -0
- package/dist/helpers.d.ts +9 -0
- package/dist/helpers.js +83 -0
- package/dist/helpers.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +77 -9
- package/dist/index.js.map +1 -0
- package/dist/init/blocks.d.ts +5 -0
- package/dist/init/blocks.js +62 -0
- package/dist/init/blocks.js.map +1 -0
- package/dist/init/cargo.d.ts +2 -0
- package/dist/init/cargo.js +21 -0
- package/dist/init/cargo.js.map +1 -0
- package/dist/init/expo.d.ts +5 -0
- package/dist/init/expo.js +52 -0
- package/dist/init/expo.js.map +1 -0
- package/dist/init/gitModules.d.ts +2 -0
- package/dist/init/gitModules.js +13 -0
- package/dist/init/gitModules.js.map +1 -0
- package/dist/init/index.d.ts +4 -0
- package/dist/init/index.js +77 -0
- package/dist/init/index.js.map +1 -0
- package/dist/init/monorepo.d.ts +4 -0
- package/dist/init/monorepo.js +48 -0
- package/dist/init/monorepo.js.map +1 -0
- package/dist/init/prepareVelo.d.ts +2 -0
- package/dist/init/prepareVelo.js +16 -0
- package/dist/init/prepareVelo.js.map +1 -0
- package/dist/init/tauri.d.ts +5 -0
- package/dist/init/tauri.js +32 -0
- package/dist/init/tauri.js.map +1 -0
- package/dist/init/templates.d.ts +5 -0
- package/dist/init/templates.js +93 -0
- package/dist/init/templates.js.map +1 -0
- package/dist/init/velo.d.ts +5 -0
- package/dist/init/velo.js +60 -0
- package/dist/init/velo.js.map +1 -0
- package/dist/policy.js +1 -0
- package/dist/policy.js.map +1 -0
- package/dist/prepare.js +1 -0
- package/dist/prepare.js.map +1 -0
- package/dist/runtime.d.ts +1 -1
- package/dist/runtime.js +1 -0
- package/dist/runtime.js.map +1 -0
- package/dist/schemas/gulp.d.ts +25 -0
- package/dist/schemas/gulp.js +8 -0
- package/dist/schemas/gulp.js.map +1 -0
- package/dist/schemas/index.d.ts +10 -0
- package/dist/schemas/index.js +9 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/lucy.d.ts +29 -0
- package/dist/schemas/lucy.js +42 -0
- package/dist/schemas/lucy.js.map +1 -0
- package/dist/schemas/tsconfig.js +2 -0
- package/dist/schemas/tsconfig.js.map +1 -0
- package/dist/schemas/types.d.ts +33 -0
- package/dist/schemas/types.js +5 -1
- package/dist/schemas/types.js.map +1 -0
- package/dist/states.js +1 -0
- package/dist/states.js.map +1 -0
- package/dist/tasks/Gulpfile.d.ts +4 -0
- package/dist/tasks/Gulpfile.js +111 -0
- package/dist/tasks/Gulpfile.js.map +1 -0
- package/dist/tasks/gulp/backend.d.ts +4 -0
- package/dist/tasks/gulp/backend.js +92 -0
- package/dist/tasks/gulp/backend.js.map +1 -0
- package/dist/tasks/gulp/checks.d.ts +4 -0
- package/dist/tasks/gulp/checks.js +202 -0
- package/dist/tasks/gulp/checks.js.map +1 -0
- package/dist/tasks/gulp/clean.d.ts +3 -0
- package/dist/tasks/gulp/clean.js +33 -0
- package/dist/tasks/gulp/clean.js.map +1 -0
- package/dist/tasks/gulp/copy.d.ts +3 -0
- package/dist/tasks/gulp/copy.js +34 -0
- package/dist/tasks/gulp/copy.js.map +1 -0
- package/dist/tasks/gulp/helpers.d.ts +3 -0
- package/dist/tasks/gulp/helpers.js +19 -0
- package/dist/tasks/gulp/helpers.js.map +1 -0
- package/dist/tasks/gulp/pages.d.ts +2 -0
- package/dist/tasks/gulp/pages.js +39 -0
- package/dist/tasks/gulp/pages.js.map +1 -0
- package/dist/tasks/gulp/pipeline.d.ts +1 -0
- package/dist/tasks/gulp/pipeline.js +29 -0
- package/dist/tasks/gulp/pipeline.js.map +1 -0
- package/dist/tasks/gulp/public.d.ts +3 -0
- package/dist/tasks/gulp/public.js +50 -0
- package/dist/tasks/gulp/public.js.map +1 -0
- package/dist/tasks/gulp/styles.d.ts +3 -0
- package/dist/tasks/gulp/styles.js +40 -0
- package/dist/tasks/gulp/styles.js.map +1 -0
- package/dist/tasks/gulp/templates.d.ts +2 -0
- package/dist/tasks/gulp/templates.js +45 -0
- package/dist/tasks/gulp/templates.js.map +1 -0
- package/dist/tasks/gulp/types.d.ts +4 -0
- package/dist/tasks/gulp/types.js +293 -0
- package/dist/tasks/gulp/types.js.map +1 -0
- package/dist/tasks/gulp/watchers.d.ts +3 -0
- package/dist/tasks/gulp/watchers.js +59 -0
- package/dist/tasks/gulp/watchers.js.map +1 -0
- package/dist/tasks/index.d.ts +4 -0
- package/dist/tasks/index.js +23 -0
- package/dist/tasks/index.js.map +1 -0
- package/dist/tasks/syncSettings.d.ts +3 -0
- package/dist/tasks/syncSettings.js +18 -0
- package/dist/tasks/syncSettings.js.map +1 -0
- package/dist/utils/index.js +2 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +17 -0
- package/dist/utils/logger.js +37 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/wix-sdk/check.d.ts +4 -0
- package/dist/wix-sdk/check.js +23 -0
- package/dist/wix-sdk/check.js.map +1 -0
- package/dist/wix-sdk/client.d.ts +10 -0
- package/dist/wix-sdk/client.js +18 -0
- package/dist/wix-sdk/client.js.map +1 -0
- package/dist/wix-sdk/index.d.ts +4 -0
- package/dist/wix-sdk/index.js +15 -0
- package/dist/wix-sdk/index.js.map +1 -0
- package/dist/wix-sdk/init.d.ts +4 -0
- package/dist/wix-sdk/init.js +51 -0
- package/dist/wix-sdk/init.js.map +1 -0
- package/dist/wix-sdk/run.d.ts +4 -0
- package/dist/wix-sdk/run.js +53 -0
- package/dist/wix-sdk/run.js.map +1 -0
- package/dist/wix-sync/client.d.ts +3 -0
- package/dist/wix-sync/client.js +5 -0
- package/dist/wix-sync/client.js.map +1 -0
- package/dist/wix-sync/export.d.ts +4 -0
- package/dist/wix-sync/export.js +15 -0
- package/dist/wix-sync/export.js.map +1 -0
- package/dist/wix-sync/import.d.ts +4 -0
- package/dist/wix-sync/import.js +26 -0
- package/dist/wix-sync/import.js.map +1 -0
- package/dist/wix-sync/index.d.ts +4 -0
- package/dist/wix-sync/index.js +35 -0
- package/dist/wix-sync/index.js.map +1 -0
- package/dist/wix-sync/init.d.ts +4 -0
- package/dist/wix-sync/init.js +74 -0
- package/dist/wix-sync/init.js.map +1 -0
- package/dist/wix-sync/is-alive.d.ts +4 -0
- package/dist/wix-sync/is-alive.js +23 -0
- package/dist/wix-sync/is-alive.js.map +1 -0
- package/dist/wix-sync/migrate.d.ts +4 -0
- package/dist/wix-sync/migrate.js +21 -0
- package/dist/wix-sync/migrate.js.map +1 -0
- package/dist/wix-sync/sync.d.ts +4 -0
- package/dist/wix-sync/sync.js +26 -0
- package/dist/wix-sync/sync.js.map +1 -0
- package/files/sync-data/data/test.csv +17 -0
- package/files/sync-data/files/lucy.jpg +0 -0
- package/files/sync-data/schema/test.json +11 -0
- package/files/templates/block[D]/files/.stylelintrc.js +8 -0
- package/files/templates/block[D]/lucy.json +9 -0
- package/files/templates/cargo[D]/files/.env +1 -0
- package/files/templates/cargo[D]/files/Cargo.toml +238 -0
- package/files/templates/cargo[D]/files/Makefile.toml +4 -0
- package/files/templates/cargo[D]/files/build/main.rs +35 -0
- package/files/templates/cargo[D]/files/config/beta.json +19 -0
- package/files/templates/cargo[D]/files/config/ci.json +15 -0
- package/files/templates/cargo[D]/files/config/default.json +71 -0
- package/files/templates/cargo[D]/files/config/development.json +10 -0
- package/files/templates/cargo[D]/files/config/produktion.json +5 -0
- package/files/templates/cargo[D]/files/config/stage.json +4 -0
- package/files/templates/cargo[D]/files/locales/todo.yml +3 -0
- package/files/templates/cargo[D]/files/public/index.html +1 -0
- package/files/templates/cargo[D]/lucy.json +15 -0
- package/files/templates/expo[D]/files/.stylelintrc.js +8 -0
- package/files/{expo → templates/expo[D]/files}/eas.json +9 -3
- package/files/templates/expo[D]/files/lib/data.ts +197 -0
- package/files/{expo → templates/expo[D]/files}/metro.config.js +6 -0
- package/files/templates/expo[D]/files/pnpm-workspace.yaml +3 -0
- package/files/templates/expo[D]/lucy.json +86 -0
- package/files/templates/monorepo[D]/files/.editorconfig +10 -0
- package/files/templates/monorepo[D]/files/.nvmrc +1 -0
- package/files/templates/monorepo[D]/files/.prettierignore +23 -0
- package/files/templates/monorepo[D]/files/.prettierrc.json +15 -0
- package/files/templates/monorepo[D]/files/.stylelintrc.js +8 -0
- package/files/templates/monorepo[D]/files/.yarnrc +1 -0
- package/files/templates/monorepo[D]/files/.yarnrc.yml +3 -0
- package/files/templates/monorepo[D]/files/README.md +109 -0
- package/files/templates/monorepo[D]/files/currents.config.ts +5 -0
- package/files/templates/monorepo[D]/files/nx.json +25 -0
- package/files/templates/monorepo[D]/files/pnpm-workspace.yaml +11 -0
- package/files/templates/monorepo[D]/files/tsconfig.json +6 -0
- package/files/templates/monorepo[D]/files/typedoc.json +25 -0
- package/files/templates/monorepo[D]/files/vitest.config.ts +27 -0
- package/files/templates/monorepo[D]/lucy.json +69 -0
- package/files/templates/tauri[D]/lucy.json +9 -0
- package/files/templates/velo[D]/files/.prettierignore +23 -0
- package/files/templates/velo[D]/files/.prettierrc.js +16 -0
- package/files/templates/velo[D]/lucy.json +137 -0
- package/lucy.jpg +0 -0
- package/old/Gulpfile.d.ts +34 -0
- package/old/Gulpfile.js +116 -0
- package/old/Gulpfile.js.map +1 -0
- package/old/gulp/backend.d.ts +3 -0
- package/old/gulp/backend.js +92 -0
- package/old/gulp/backend.js.map +1 -0
- package/old/gulp/checks.d.ts +3 -0
- package/old/gulp/checks.js +205 -0
- package/old/gulp/checks.js.map +1 -0
- package/old/gulp/clean.d.ts +3 -0
- package/old/gulp/clean.js +29 -0
- package/old/gulp/clean.js.map +1 -0
- package/old/gulp/copy.d.ts +2 -0
- package/old/gulp/copy.js +34 -0
- package/old/gulp/copy.js.map +1 -0
- package/old/gulp/helpers.d.ts +2 -0
- package/old/gulp/helpers.js +25 -0
- package/old/gulp/helpers.js.map +1 -0
- package/old/gulp/pages.d.ts +2 -0
- package/old/gulp/pages.js +37 -0
- package/old/gulp/pages.js.map +1 -0
- package/old/gulp/pipeline.d.ts +1 -0
- package/old/gulp/pipeline.js +29 -0
- package/old/gulp/pipeline.js.map +1 -0
- package/old/gulp/public.d.ts +2 -0
- package/old/gulp/public.js +50 -0
- package/old/gulp/public.js.map +1 -0
- package/old/gulp/styles.d.ts +2 -0
- package/old/gulp/styles.js +40 -0
- package/old/gulp/styles.js.map +1 -0
- package/old/gulp/templates.d.ts +2 -0
- package/old/gulp/templates.js +33 -0
- package/old/gulp/templates.js.map +1 -0
- package/old/gulp/types.d.ts +4 -0
- package/old/gulp/types.js +289 -0
- package/old/gulp/types.js.map +1 -0
- package/old/gulp/watchers.d.ts +9 -0
- package/old/gulp/watchers.js +59 -0
- package/old/gulp/watchers.js.map +1 -0
- package/old/helpers.d.ts +32 -0
- package/old/helpers.js +267 -0
- package/old/helpers.js.map +1 -0
- package/{src copy/helpers.ts → old/helpers.ts} +1 -1
- package/old/index.d.ts +59 -0
- package/old/index.js +288 -0
- package/old/index.js.map +1 -0
- package/old/init.d.ts +8 -0
- package/old/init.js +165 -0
- package/old/init.js.map +1 -0
- package/old/models.d.ts +37 -0
- package/old/models.js +2 -0
- package/old/models.js.map +1 -0
- package/old/prepare.d.ts +8 -0
- package/old/prepare.js +20 -0
- package/old/prepare.js.map +1 -0
- package/old/schemas/index.js +2 -0
- package/old/schemas/index.js.map +1 -0
- package/old/schemas/index.ts +0 -0
- package/old/schemas/types.d.ts +0 -0
- package/old/schemas/types.js +2 -0
- package/old/schemas/types.js.map +1 -0
- package/old/schemas/types.ts +0 -0
- package/old/sync.d.ts +2 -0
- package/old/sync.js +88 -0
- package/old/sync.js.map +1 -0
- package/package.json +18 -19
- package/patches/velo-sync+0.0.9.patch +13 -0
- package/src/args.ts +103 -17
- package/src/commands/checks.ts +51 -0
- package/src/commands/cleanup.ts +11 -0
- package/src/commands/copy.ts +28 -0
- package/src/commands/edit.ts +81 -0
- package/src/commands/exec.ts +69 -0
- package/src/commands/git.ts +113 -0
- package/src/commands/home.ts +22 -0
- package/src/commands/install.ts +249 -0
- package/src/commands/read.ts +45 -0
- package/src/commands/write.ts +45 -0
- package/src/config.ts +116 -35
- package/src/error.ts +1 -2
- package/src/helpers.ts +92 -0
- package/src/index.ts +88 -13
- package/src/init/blocks.ts +85 -0
- package/src/init/cargo.ts +25 -0
- package/src/init/expo.ts +69 -0
- package/src/init/gitModules.ts +15 -0
- package/src/init/index.ts +81 -0
- package/src/init/monorepo.ts +72 -0
- package/src/init/prepareVelo.ts +19 -0
- package/src/init/tauri.ts +42 -0
- package/src/init/templates.ts +98 -0
- package/src/init/velo.ts +65 -0
- package/src/runtime.ts +1 -0
- package/src/schemas/gulp.ts +31 -0
- package/src/schemas/index.ts +13 -1
- package/src/schemas/lucy.ts +43 -0
- package/src/schemas/types.ts +40 -0
- package/src/tasks/Gulpfile.ts +207 -0
- package/src/tasks/gulp/backend.ts +113 -0
- package/src/tasks/gulp/checks.ts +218 -0
- package/src/tasks/gulp/clean.ts +38 -0
- package/src/tasks/gulp/copy.ts +38 -0
- package/src/tasks/gulp/helpers.ts +18 -0
- package/src/tasks/gulp/pages.ts +43 -0
- package/src/tasks/gulp/pipeline.ts +31 -0
- package/src/tasks/gulp/public.ts +61 -0
- package/src/tasks/gulp/styles.ts +47 -0
- package/src/tasks/gulp/templates.ts +53 -0
- package/src/tasks/gulp/types.ts +310 -0
- package/src/tasks/gulp/watchers.ts +97 -0
- package/src/tasks/index.ts +24 -0
- package/src/tasks/syncSettings.ts +21 -0
- package/src/types.d.ts +1 -1
- package/src/utils/index.ts +0 -0
- package/src/utils/logger.ts +40 -0
- package/src/wix-sdk/check.ts +24 -0
- package/src/wix-sdk/client.ts +18 -0
- package/src/wix-sdk/index.ts +17 -0
- package/src/wix-sdk/init.ts +54 -0
- package/src/wix-sdk/run.ts +56 -0
- package/src/wix-sync/client.ts +6 -0
- package/src/wix-sync/export.ts +19 -0
- package/src/wix-sync/import.ts +27 -0
- package/src/wix-sync/index.ts +36 -0
- package/src/wix-sync/init.ts +77 -0
- package/src/wix-sync/is-alive.ts +25 -0
- package/src/wix-sync/migrate.ts +23 -0
- package/src/wix-sync/sync.ts +27 -0
- package/tsconfig.json +6 -5
- package/dist/init.d.ts +0 -4
- package/dist/init.js +0 -275
- package/dist/models.js +0 -1
- package/dist/params.d.ts +0 -7
- package/dist/params.js +0 -23
- package/files/expo/lib/data.ts +0 -48
- package/files/expo/lucy.json +0 -8
- package/src/init.ts +0 -392
- /package/dist/{models.d.ts → schemas/tsconfig.d.ts} +0 -0
- /package/{files/expo/components/.gitkeep → dist/utils/index.d.ts} +0 -0
- /package/files/{expo → templates/expo[D]/files}/.nvmrc +0 -0
- /package/files/{expo → templates/expo[D]/files}/.prettierignore +0 -0
- /package/files/{expo → templates/expo[D]/files}/.prettierrc.js +0 -0
- /package/files/{expo → templates/expo[D]/files}/.yarnrc +0 -0
- /package/files/{expo → templates/expo[D]/files}/.yarnrc.yml +0 -0
- /package/files/{expo → templates/expo[D]/files}/README.md +0 -0
- /package/files/{expo → templates/expo[D]/files}/assets/fonts/SpaceMono-Regular.ttf +0 -0
- /package/files/{expo → templates/expo[D]/files}/assets/images/adaptive-icon.png +0 -0
- /package/files/{expo → templates/expo[D]/files}/assets/images/favicon.png +0 -0
- /package/files/{expo → templates/expo[D]/files}/assets/images/icon.png +0 -0
- /package/files/{expo → templates/expo[D]/files}/assets/images/splash-icon.png +0 -0
- /package/files/{expo → templates/expo[D]/files}/babel.config.js +0 -0
- /package/files/{expo/components/ui → templates/expo[D]/files/components}/.gitkeep +0 -0
- /package/files/{velo/typescript/__mocks__ → templates/expo[D]/files/components/ui}/.gitkeep +0 -0
- /package/files/{expo → templates/expo[D]/files}/constants/theme.ts +0 -0
- /package/files/{expo → templates/expo[D]/files}/eslint.config.mjs +0 -0
- /package/files/{expo → templates/expo[D]/files}/global.css +0 -0
- /package/files/{expo → templates/expo[D]/files}/hooks/useColorScheme.ts +0 -0
- /package/files/{expo → templates/expo[D]/files}/index.ts +0 -0
- /package/files/{expo → templates/expo[D]/files}/lib/utils/index.ts +0 -0
- /package/files/{expo → templates/expo[D]/files}/lib/utils/polyfills.ts +0 -0
- /package/files/{expo → templates/expo[D]/files}/lib/wix/client.ts +0 -0
- /package/files/{expo → templates/expo[D]/files}/lib/wix/error.ts +0 -0
- /package/files/{expo → templates/expo[D]/files}/lib/wix/index.ts +0 -0
- /package/files/{expo → templates/expo[D]/files}/nativewind-env.d.ts +0 -0
- /package/files/{expo → templates/expo[D]/files}/scripts/reset-project.ts +0 -0
- /package/files/{expo → templates/expo[D]/files}/tailwind.config.js +0 -0
- /package/files/{expo → templates/expo[D]/files}/tsconfig.json +0 -0
- /package/files/{expo → templates/expo[D]/files}/types/reset.d.ts +0 -0
- /package/files/{velo → templates/velo[D]/files}/.gitmodules +0 -0
- /package/files/{velo → templates/velo[D]/files}/.madgerc +0 -0
- /package/files/{velo → templates/velo[D]/files}/.nvmrc +0 -0
- /package/files/{velo → templates/velo[D]/files}/.stylelintrc.js +0 -0
- /package/files/{velo → templates/velo[D]/files}/.yarnrc.yml +0 -0
- /package/files/{velo → templates/velo[D]/files}/currents.config.js +0 -0
- /package/files/{velo → templates/velo[D]/files}/cypress/e2e/base/base.cy.ts +0 -0
- /package/files/{velo → templates/velo[D]/files}/cypress/fixtures/example.json +0 -0
- /package/files/{velo → templates/velo[D]/files}/cypress/support/commands.ts +0 -0
- /package/files/{velo → templates/velo[D]/files}/cypress/support/e2e.ts +0 -0
- /package/files/{velo → templates/velo[D]/files}/cypress/tsconfig.json +0 -0
- /package/files/{velo → templates/velo[D]/files}/cypress.config.mjs +0 -0
- /package/files/{velo → templates/velo[D]/files}/eslint.config.mjs +0 -0
- /package/files/{velo → templates/velo[D]/files}/local.tsconfig.json +0 -0
- /package/files/{velo → templates/velo[D]/files}/typedoc.json +0 -0
- /package/files/{velo/typescript/pages → templates/velo[D]/files/typescript/__mocks__}/.gitkeep +0 -0
- /package/files/{velo → templates/velo[D]/files}/typescript/backend/data.ts +0 -0
- /package/files/{velo → templates/velo[D]/files}/typescript/backend/events.ts +0 -0
- /package/files/{velo → templates/velo[D]/files}/typescript/backend/http-functions.ts +0 -0
- /package/files/{velo → templates/velo[D]/files}/typescript/backend/lib/http-functions/sync.ts +0 -0
- /package/files/{velo → templates/velo[D]/files}/typescript/backend/permissions.json +0 -0
- /package/files/{velo/typescript/public → templates/velo[D]/files/typescript/pages}/.gitkeep +0 -0
- /package/files/{velo/typescript/styles → templates/velo[D]/files/typescript/public}/.gitkeep +0 -0
- /package/files/{velo → templates/velo[D]/files}/typescript/public/scss/app.scss +0 -0
- /package/files/{velo/typescript/styles/global.scss → templates/velo[D]/files/typescript/styles/.gitkeep} +0 -0
- /package/{src copy/schemas/index.ts → files/templates/velo[D]/files/typescript/styles/global.scss} +0 -0
- /package/files/{velo → templates/velo[D]/files}/typescript/tsconfig.json +0 -0
- /package/files/{velo → templates/velo[D]/files}/vitest.config.ts +0 -0
- /package/{src copy → old}/Gulpfile.ts +0 -0
- /package/{src copy → old}/gulp/backend.ts +0 -0
- /package/{src copy → old}/gulp/checks.ts +0 -0
- /package/{src copy → old}/gulp/clean.ts +0 -0
- /package/{src copy → old}/gulp/copy.ts +0 -0
- /package/{src copy → old}/gulp/helpers.ts +0 -0
- /package/{src copy → old}/gulp/pages.ts +0 -0
- /package/{src copy → old}/gulp/pipeline.ts +0 -0
- /package/{src copy → old}/gulp/public.ts +0 -0
- /package/{src copy → old}/gulp/styles.ts +0 -0
- /package/{src copy → old}/gulp/templates.ts +0 -0
- /package/{src copy → old}/gulp/types.ts +0 -0
- /package/{src copy → old}/gulp/watchers.ts +0 -0
- /package/{src copy → old}/index.ts +0 -0
- /package/{src copy → old}/init.ts +0 -0
- /package/{src copy → old}/models.ts +0 -0
- /package/{src copy → old}/prepare.ts +0 -0
- /package/{src copy/schemas/types.ts → old/schemas/index.d.ts} +0 -0
- /package/{src copy → old}/settings.json +0 -0
- /package/{src copy → old}/sync.ts +0 -0
- /package/{src copy → old}/types.d.ts +0 -0
- /package/src/{models.ts → schemas/tsconfig.ts} +0 -0
package/src/args.ts
CHANGED
@@ -1,36 +1,122 @@
|
|
1
1
|
import yargs from "yargs";
|
2
2
|
import { hideBin } from "yargs/helpers";
|
3
|
+
import { initTypes, LucyArgs, taskNames, syncActions } from "./schemas/types.js";
|
4
|
+
import { createRequire } from "node:module";
|
3
5
|
|
4
|
-
|
5
|
-
|
6
|
-
export interface LucyArgs {
|
7
|
-
[x: string]: unknown;
|
8
|
-
// This will hold the command used, e.g., 'init'
|
9
|
-
_: (string | number)[];
|
10
|
-
$0: string;
|
11
|
-
// Arguments for the 'init' command
|
12
|
-
type?: 'velo' | 'expo' | 'blocks';
|
13
|
-
}
|
6
|
+
const require = createRequire(import.meta.url);
|
7
|
+
const pkg = require("../package.json");
|
14
8
|
|
15
9
|
export async function get_args(): Promise<LucyArgs> {
|
16
10
|
const argv = await yargs(hideBin(process.argv))
|
17
11
|
.usage('Usage: $0 <command> [options]')
|
18
|
-
.command('init <
|
19
|
-
return yargs.positional('
|
12
|
+
.command('init <initType>', 'Initialize a new Lucy project', (yargs) => {
|
13
|
+
return yargs.positional('initType', {
|
20
14
|
describe: 'The type of project to initialize',
|
21
|
-
choices:
|
22
|
-
demandOption: true,
|
15
|
+
choices: initTypes,
|
16
|
+
demandOption: true,
|
17
|
+
})
|
18
|
+
}).option('force', {
|
19
|
+
alias: 'f',
|
20
|
+
type: 'boolean',
|
21
|
+
description: 'Run with force'
|
22
|
+
})
|
23
|
+
.command('open', 'Open the Lucy home directory')
|
24
|
+
.command('task <tasksName>', 'Run a task', (yargs) => {
|
25
|
+
return yargs.positional('tasksName', {
|
26
|
+
describe: 'The task to run',
|
27
|
+
choices: taskNames,
|
28
|
+
demandOption: true,
|
29
|
+
})
|
30
|
+
})
|
31
|
+
.command('wix-sync <syncAction>', 'Run a velo-sync action', (yargs) => {
|
32
|
+
return yargs.positional("syncAction", {
|
33
|
+
describe: "The velo-sync action to run",
|
34
|
+
choices: syncActions,
|
35
|
+
demandOption: true,
|
36
|
+
})
|
37
|
+
.option('input', {
|
38
|
+
alias: 'i',
|
39
|
+
type: 'string',
|
40
|
+
describe: 'The CSV file to import',
|
41
|
+
demandOption: false,
|
42
|
+
})
|
43
|
+
.option('c', {
|
44
|
+
alias: 'collection',
|
45
|
+
type: 'string',
|
46
|
+
describe: 'The name of the collection to import data into',
|
47
|
+
demandOption: false,
|
48
|
+
})
|
49
|
+
.option('s', {
|
50
|
+
alias: 'schema',
|
51
|
+
type: 'string',
|
52
|
+
describe: 'The schema file',
|
53
|
+
demandOption: false,
|
54
|
+
})
|
55
|
+
.option('d', {
|
56
|
+
type: 'boolean',
|
57
|
+
describe: 'Run in dry-run mode',
|
58
|
+
demandOption: false,
|
59
|
+
});
|
60
|
+
})
|
61
|
+
.command('wix-sdk <wixSDKAction>', 'Run a velo-sync action', (yargs) => {
|
62
|
+
return yargs.positional("wixSDKAction", {
|
63
|
+
describe: "The velo-sync action to run",
|
64
|
+
choices: syncActions,
|
65
|
+
demandOption: true,
|
23
66
|
});
|
24
67
|
})
|
25
|
-
// Enforce that a command must be provided (e.g., 'init')
|
26
68
|
.demandCommand(1, 'You need to provide a command. Use --help for a list of commands.')
|
69
|
+
.version('v', 'Show version number', pkg.version)
|
70
|
+
.alias('v', 'version')
|
27
71
|
.help()
|
28
72
|
.alias('h', 'help')
|
29
73
|
.strict()
|
30
|
-
.wrap(yargs().terminalWidth())
|
31
|
-
.epilogue(
|
74
|
+
.wrap(yargs().terminalWidth())
|
75
|
+
.epilogue(`
|
76
|
+
🦮 Lucy CLI - Complete Command Overview
|
77
|
+
|
78
|
+
📋 Available Commands:
|
79
|
+
init <type> Initialize a new Lucy project (types: ${initTypes.join(', ')})
|
80
|
+
open Open the Lucy home directory
|
81
|
+
task <name> Run a task (tasks: ${taskNames.join(', ')})
|
82
|
+
wix-sync <action> Run velo-sync actions (actions: ${syncActions.join(', ')})
|
83
|
+
wix-sdk <action> Run Wix SDK actions
|
84
|
+
|
85
|
+
🔧 Available Tasks:
|
86
|
+
dev Start development environment
|
87
|
+
build Build the project
|
88
|
+
build-prod Build for production
|
89
|
+
build-pipeline Build pipeline
|
90
|
+
sync-settings Sync settings
|
91
|
+
|
92
|
+
🔄 Wix Sync Actions:
|
93
|
+
sync Synchronize collections
|
94
|
+
import Import data from CSV
|
95
|
+
init Initialize sync configuration
|
96
|
+
is-alive Check if sync is alive
|
97
|
+
migrate Migrate data
|
98
|
+
export Export data
|
99
|
+
|
100
|
+
⚙️ Global Options:
|
101
|
+
-h, --help Show this help message
|
102
|
+
-v, --version Show version number
|
103
|
+
-f, --force Force execution (use with caution)
|
104
|
+
|
105
|
+
📁 Project Types:
|
106
|
+
velo Wix Velo project
|
107
|
+
expo React Native with Expo
|
108
|
+
blocks Wix Blocks
|
109
|
+
monorepo Monorepo setup
|
110
|
+
tauri Tauri desktop app
|
111
|
+
cargo Rust project
|
112
|
+
submodules Git submodules
|
113
|
+
wix-sdk Wix SDK setup
|
114
|
+
|
115
|
+
For more information, visit https://github.com/your-repo/wix-lucy-cli
|
116
|
+
`)
|
32
117
|
.parseAsync();
|
33
118
|
|
34
119
|
// The cast is now safer with the defined interface.
|
120
|
+
|
35
121
|
return argv as LucyArgs;
|
36
122
|
}
|
@@ -0,0 +1,51 @@
|
|
1
|
+
import { Effect, Schema } from "effect/index";
|
2
|
+
import { FileSystem, Path } from "@effect/platform"
|
3
|
+
import { Config, lucyJsonName } from "../config.js";
|
4
|
+
import { logger } from "../utils/logger.js";
|
5
|
+
import { AppError } from "../error.js";
|
6
|
+
import { JsonSchema } from "../schemas/index.js";
|
7
|
+
|
8
|
+
export const isDirectoryClean =(excludes: string[] = []) => {
|
9
|
+
return Effect.gen(function*() {
|
10
|
+
const fs = yield* FileSystem.FileSystem;
|
11
|
+
const config = yield* Config;
|
12
|
+
|
13
|
+
const files = yield* fs.readDirectory(config.config.cwd);
|
14
|
+
const allExcludes = [...excludes, '.git', lucyJsonName];
|
15
|
+
const filteredFiles = files.filter(file => !allExcludes.includes(file));
|
16
|
+
|
17
|
+
return filteredFiles.length > 0 ? false : true;
|
18
|
+
});
|
19
|
+
}
|
20
|
+
|
21
|
+
export const checkForDirty = (excludes: string[] = []) => {
|
22
|
+
return Effect.gen(function*() {
|
23
|
+
const config = yield* Config;
|
24
|
+
const clean = yield* isDirectoryClean(excludes);
|
25
|
+
if(!clean && !config.config.force) {
|
26
|
+
logger.alert("The current directory is not empty. Please run this command in an empty directory.")
|
27
|
+
yield* Effect.fail(new AppError({ message: "Directory is not clean", cause: new Error("Directory is not clean") }));
|
28
|
+
return;
|
29
|
+
}
|
30
|
+
if(config.config.lucySettings.initialized && !config.config.force) {
|
31
|
+
logger.alert("Lucy is already initialized in this directory. Use --force to reinitialize.")
|
32
|
+
yield* Effect.fail(new AppError({ message: "Lucy is already initialized in this directory", cause: new Error("Lucy is already initialized in this directory") }));
|
33
|
+
return;
|
34
|
+
}
|
35
|
+
|
36
|
+
if ((!clean && config.config.force) || (config.config.lucySettings.initialized && config.config.force)) logger.alert("Forced initialization!")
|
37
|
+
});
|
38
|
+
}
|
39
|
+
export const checkForVelo = () => {
|
40
|
+
return Effect.gen(function*() {
|
41
|
+
const config = yield* Config;
|
42
|
+
const fs = yield* FileSystem.FileSystem;
|
43
|
+
const path = yield* Path.Path;
|
44
|
+
|
45
|
+
const wixConfigPath = path.join(config.config.cwd, 'wix.config.json');
|
46
|
+
const wixConfigRaw = yield* fs.readFileString(wixConfigPath);
|
47
|
+
const wixConfigJSON =( yield* Schema.decodeUnknown(JsonSchema)(wixConfigRaw)) as any;
|
48
|
+
|
49
|
+
if(!(wixConfigJSON.siteId)) return yield* Effect.fail(new AppError({ message: "This directory is not a Velo project. Please run this command in a Velo project directory.", cause: new Error("Not a Velo project") }));
|
50
|
+
});
|
51
|
+
}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
import { Effect } from "effect/index";
|
2
|
+
import { Config } from "../config.js";
|
3
|
+
import { FileSystem, Path } from "@effect/platform"
|
4
|
+
|
5
|
+
export const cleanup = Effect.gen(function* () {
|
6
|
+
const config = yield* Config;
|
7
|
+
const fs = yield* FileSystem.FileSystem;
|
8
|
+
const path = yield* Path.Path;
|
9
|
+
|
10
|
+
yield* fs.remove(path.join(config.config.cwd, "package-lock.json"), { force: true })
|
11
|
+
});
|
@@ -0,0 +1,28 @@
|
|
1
|
+
import { Effect } from "effect/index";
|
2
|
+
import { Path } from "@effect/platform"
|
3
|
+
import { FileSystem } from "@effect/platform"
|
4
|
+
import { Config, syncDataName, syncFilesSource } from "../config.js";
|
5
|
+
|
6
|
+
export const copyTemplateFiles = Effect.gen(function*() {
|
7
|
+
const fs = yield* FileSystem.FileSystem;
|
8
|
+
const config = yield* Config;
|
9
|
+
const path = yield * Path.Path;
|
10
|
+
|
11
|
+
const templateFiles = yield* fs.readDirectory(config.config.templateFiles)
|
12
|
+
yield* Effect.forEach(
|
13
|
+
templateFiles,
|
14
|
+
(file) => fs.copy(path.join(config.config.templateFiles, file), path.join(config.config.cwd, file), { overwrite: true })
|
15
|
+
)
|
16
|
+
})
|
17
|
+
export const copySyncFiles = Effect.gen(function*() {
|
18
|
+
const fs = yield* FileSystem.FileSystem;
|
19
|
+
const config = yield* Config;
|
20
|
+
const path = yield * Path.Path;
|
21
|
+
|
22
|
+
const synDataFiles = yield* fs.readDirectory(syncFilesSource)
|
23
|
+
yield* fs.makeDirectory(path.join(config.config.cwd, syncDataName));
|
24
|
+
yield* Effect.forEach(
|
25
|
+
synDataFiles,
|
26
|
+
(file) => fs.copy(path.join(syncFilesSource, file), path.join(config.config.cwd, syncDataName, file), { overwrite: true })
|
27
|
+
)
|
28
|
+
})
|
@@ -0,0 +1,81 @@
|
|
1
|
+
import { Effect, Schema } from "effect/index";
|
2
|
+
import { Config, lucyJsonPath } from "../config.js";
|
3
|
+
import { FileSystem, Path } from "@effect/platform"
|
4
|
+
import { logger } from "../utils/logger.js";
|
5
|
+
import { JsonSchema } from "../schemas/index.js";
|
6
|
+
import { LucySettings } from "../schemas/lucy.js";
|
7
|
+
|
8
|
+
export const editJson = (json: any, keys: string[], values: string[] | Object[]) => {
|
9
|
+
return Effect.gen(function*() {
|
10
|
+
const config = yield* Config;
|
11
|
+
|
12
|
+
for (const key of keys){
|
13
|
+
const index = keys.indexOf(key);
|
14
|
+
const value = values[index];
|
15
|
+
json[key] = value;
|
16
|
+
}
|
17
|
+
})
|
18
|
+
}
|
19
|
+
|
20
|
+
export const mergeLucySettings2PackageJson = Effect.gen(function*() {
|
21
|
+
const config = yield* Config;
|
22
|
+
const lucySettings = config.config.lucySettings;
|
23
|
+
const packageJson = config.config.packageJson;
|
24
|
+
|
25
|
+
if (Object.keys(lucySettings.scripts).length > 0) {
|
26
|
+
yield* editJson(packageJson, ['scripts'], [{...packageJson.scripts, ...lucySettings.scripts}]);
|
27
|
+
}
|
28
|
+
})
|
29
|
+
|
30
|
+
export const setModule = Effect.gen(function*() {
|
31
|
+
const config = yield* Config;
|
32
|
+
const lucySettings = config.config.lucySettings;
|
33
|
+
const packageJson = config.config.packageJson;
|
34
|
+
|
35
|
+
yield* editJson(packageJson, ['type'], ['module']);
|
36
|
+
})
|
37
|
+
|
38
|
+
export const mergeAdditions = Effect.gen(function*() {
|
39
|
+
const config = yield* Config;
|
40
|
+
const lucySettings = config.config.lucySettings;
|
41
|
+
const packageJson = config.config.packageJson;
|
42
|
+
|
43
|
+
config.config.packageJson = {
|
44
|
+
...packageJson,
|
45
|
+
...lucySettings.additionalPkgProps,
|
46
|
+
}
|
47
|
+
})
|
48
|
+
|
49
|
+
export const setProjectName = Effect.gen(function*() {
|
50
|
+
const config = yield* Config;
|
51
|
+
const packageJson = config.config.packageJson;
|
52
|
+
|
53
|
+
yield * editJson(packageJson, ["name"], [config.config.projectName]);
|
54
|
+
})
|
55
|
+
|
56
|
+
export const setInitialized = Effect.gen(function*() {
|
57
|
+
const fs = yield* FileSystem.FileSystem;
|
58
|
+
const lucyRaw = yield* fs.readFileString(lucyJsonPath);
|
59
|
+
const lucyJSON = (yield* Schema.decodeUnknown(JsonSchema)(lucyRaw)) as any;
|
60
|
+
lucyJSON.initialized = true;
|
61
|
+
|
62
|
+
yield* fs.writeFileString(lucyJsonPath, JSON.stringify(lucyJSON, null, 2));
|
63
|
+
})
|
64
|
+
|
65
|
+
export const stringReplace = (filePath: string, keys: string[], values: string[]) => {
|
66
|
+
return Effect.gen(function*() {
|
67
|
+
const fs = yield* FileSystem.FileSystem;
|
68
|
+
let modifiedContent: string = '';
|
69
|
+
|
70
|
+
logger.action(`Replacing ${keys} with ${values} in ${filePath}`);
|
71
|
+
const data = yield* fs.readFileString(filePath, 'utf8');
|
72
|
+
for (const key of keys){
|
73
|
+
const index = keys.indexOf(key);
|
74
|
+
const value = values[index];
|
75
|
+
const regex = new RegExp(`${key}`, 'g');
|
76
|
+
modifiedContent = data.replace(regex, `${value}`);
|
77
|
+
}
|
78
|
+
yield* fs.writeFileString(filePath, modifiedContent);
|
79
|
+
logger.info(`Updated file ${filePath}`);
|
80
|
+
})
|
81
|
+
}
|
@@ -0,0 +1,69 @@
|
|
1
|
+
import { Effect, Schema } from "effect/index";
|
2
|
+
import { Config } from "../config.js";
|
3
|
+
import { Command } from "@effect/platform/index";
|
4
|
+
import { logger } from "../utils/logger.js";
|
5
|
+
import { FileSystem } from "@effect/platform"
|
6
|
+
import Enquirer from "enquirer";
|
7
|
+
import { AppError } from "../error.js";
|
8
|
+
|
9
|
+
export const execCommand = Effect.gen(function*() {
|
10
|
+
const config = yield* Config;
|
11
|
+
const cmds = config.config.lucySettings.additionalCommands ?? [];
|
12
|
+
logger.info("Executing additional commands...", cmds);
|
13
|
+
if (cmds.length > 0) {
|
14
|
+
logger.info("Executing additional commands");
|
15
|
+
yield *
|
16
|
+
Effect.all([
|
17
|
+
...cmds.map((cmd) => {
|
18
|
+
return Command.make(cmd[0], ...cmd.slice(1))
|
19
|
+
.pipe()
|
20
|
+
.pipe(Command.stdout("inherit"), Command.stderr("inherit"), Command.exitCode);
|
21
|
+
}),
|
22
|
+
]);
|
23
|
+
}
|
24
|
+
})
|
25
|
+
|
26
|
+
export const open = Effect.scoped(Effect.gen(function*() {
|
27
|
+
const config = yield* Config;
|
28
|
+
const fs = yield* FileSystem.FileSystem
|
29
|
+
console.log("Opening Lucy home directory:", config.config.lucyHome);
|
30
|
+
let command: ReturnType<typeof Command.make>;
|
31
|
+
switch (process.platform) {
|
32
|
+
case 'darwin': command = Command.make('open', config.config.lucyHome); break;
|
33
|
+
case 'win32': command = Command.make('start', config.config.lucyHome); break;
|
34
|
+
default: command = Command.make('xdg-open', config.config.lucyHome); break;
|
35
|
+
}
|
36
|
+
|
37
|
+
command.pipe().pipe(Command.stdout("inherit"), Command.stderr("inherit"), Command.exitCode);
|
38
|
+
yield* command.pipe().pipe(Command.stdout("inherit"), Command.stderr("inherit"), Command.exitCode);
|
39
|
+
}))
|
40
|
+
|
41
|
+
export const openVSCode = Effect.gen(function*() {
|
42
|
+
const config = yield* Config;
|
43
|
+
const open = Command.make(
|
44
|
+
"code",
|
45
|
+
config.config.cwd,
|
46
|
+
).pipe(
|
47
|
+
Command.stdout("inherit"), // Stream stdout to process.stdout
|
48
|
+
Command.stderr("inherit"), // Stream stderr to process.stderr
|
49
|
+
Command.exitCode // Get the exit code
|
50
|
+
)
|
51
|
+
const overwriteQuestion = new Enquirer();
|
52
|
+
const openVScodeQuestion = yield* Effect.tryPromise({
|
53
|
+
try: () => overwriteQuestion.prompt({
|
54
|
+
type: 'confirm',
|
55
|
+
name: 'openVSCode',
|
56
|
+
message: `Do you want to open the project in VSCode?`,
|
57
|
+
}),
|
58
|
+
catch: (e) => {
|
59
|
+
return new AppError({
|
60
|
+
cause: e,
|
61
|
+
message: "Error opening VSCode",
|
62
|
+
});
|
63
|
+
}
|
64
|
+
})
|
65
|
+
const choice = yield* Schema.decodeUnknown(Schema.Struct({ openVSCode: Schema.Boolean }))(openVScodeQuestion);
|
66
|
+
if (choice.openVSCode) {
|
67
|
+
yield* open
|
68
|
+
}
|
69
|
+
})
|
@@ -0,0 +1,113 @@
|
|
1
|
+
import { Effect } from 'effect/index';
|
2
|
+
import { simpleGit, SimpleGit } from 'simple-git';
|
3
|
+
import { Config } from '../config.js';
|
4
|
+
import { AppError } from '../error.js';
|
5
|
+
import { logger } from '../utils/logger.js';
|
6
|
+
import { FileSystem, Path } from "@effect/platform"
|
7
|
+
|
8
|
+
export const isSubmoduleRegistered = (git: SimpleGit, submoduleName: string) => Effect.gen(function* () {
|
9
|
+
const value = yield* Effect.tryPromise({
|
10
|
+
try: () => git.getConfig(`submodule.${submoduleName}.url`),
|
11
|
+
catch: (error) => {
|
12
|
+
return new AppError({
|
13
|
+
cause: error,
|
14
|
+
message: "Failed to get submodule url",
|
15
|
+
});
|
16
|
+
}
|
17
|
+
})
|
18
|
+
return !!value.value;
|
19
|
+
})
|
20
|
+
|
21
|
+
export const gitInit = (update: boolean = false) => Effect.gen(function* () {
|
22
|
+
const config = yield* Config;
|
23
|
+
const git = simpleGit({ baseDir: config.config.cwd });
|
24
|
+
const path = yield * Path.Path;
|
25
|
+
|
26
|
+
const isGit = yield* Effect.tryPromise({
|
27
|
+
try: () => git.checkIsRepo(),
|
28
|
+
catch: (error) => {
|
29
|
+
return new AppError({
|
30
|
+
cause: error,
|
31
|
+
message: "Failed to check if the directory is a git repository",
|
32
|
+
});
|
33
|
+
}
|
34
|
+
})
|
35
|
+
|
36
|
+
if(!isGit) {
|
37
|
+
yield* Effect.tryPromise({
|
38
|
+
try: () => git.init(),
|
39
|
+
catch: (error) => {
|
40
|
+
return new AppError({
|
41
|
+
cause: error,
|
42
|
+
message: "Failed to initialize git repository",
|
43
|
+
});
|
44
|
+
}
|
45
|
+
})
|
46
|
+
}
|
47
|
+
|
48
|
+
if (!config.config.lucySettings.modules) {
|
49
|
+
logger.alert('No submodules defined in settings, skipping.');
|
50
|
+
return;
|
51
|
+
}
|
52
|
+
yield* initSubmodules(update);
|
53
|
+
})
|
54
|
+
|
55
|
+
export const initSubmodules = (update: boolean = false) => Effect.gen(function* () {
|
56
|
+
const config = yield* Config;
|
57
|
+
const git = simpleGit({ baseDir: config.config.cwd });
|
58
|
+
const path = yield* Path.Path;
|
59
|
+
const fs = yield* FileSystem.FileSystem;
|
60
|
+
const gitmodulesPath = path.join(config.config.cwd, ".gitmodules");
|
61
|
+
|
62
|
+
for (const [name, repo] of Object.entries(config.config.lucySettings.modules)) {
|
63
|
+
logger.action(`Processing submodule ${name}`);
|
64
|
+
const clonePath = repo.path || path.join(config.config.lucySettings.defaultModulePath ?? '', name);
|
65
|
+
|
66
|
+
const isRegistered = yield* isSubmoduleRegistered(git, clonePath);
|
67
|
+
const isConfiguredInFile = (yield* fs.exists(gitmodulesPath)) && (yield* fs.readFileString(gitmodulesPath, 'utf-8')).includes(`[submodule "${clonePath}"]`);
|
68
|
+
|
69
|
+
if (!isConfiguredInFile || config.config.force) {
|
70
|
+
logger.action(`Adding/updating submodule ${name} at ${clonePath}...`);
|
71
|
+
// If git already has a config entry, we must use --force to repair it.
|
72
|
+
const submoduleArgs = () => {
|
73
|
+
if (update) {
|
74
|
+
return ['add', '--force', repo.source, clonePath];
|
75
|
+
}
|
76
|
+
return ['add', ...(config.config.force || isRegistered ? ['--force'] : []), repo.source, clonePath];
|
77
|
+
}
|
78
|
+
// await git.subModule(submoduleArgs);
|
79
|
+
yield* Effect.tryPromise({
|
80
|
+
try: () => git.subModule(submoduleArgs()),
|
81
|
+
catch: (error) => {
|
82
|
+
return new AppError({
|
83
|
+
cause: error,
|
84
|
+
message: "Failed to add submodule",
|
85
|
+
});
|
86
|
+
}
|
87
|
+
})
|
88
|
+
} else {
|
89
|
+
logger.alert(`Submodule ${name} at ${clonePath} already registered. Skipping add.`);
|
90
|
+
}
|
91
|
+
|
92
|
+
yield* Effect.tryPromise({
|
93
|
+
try: () => git.submoduleUpdate(['--init', '--recursive', clonePath]),
|
94
|
+
catch: (error) => {
|
95
|
+
return new AppError({
|
96
|
+
cause: error,
|
97
|
+
message: "Failed to update submodule",
|
98
|
+
});
|
99
|
+
}
|
100
|
+
})
|
101
|
+
yield* Effect.tryPromise({
|
102
|
+
try: () => simpleGit({ baseDir: path.join(config.config.cwd, clonePath) }).checkout(repo.branch),
|
103
|
+
catch: (error) => {
|
104
|
+
return new AppError({
|
105
|
+
cause: error,
|
106
|
+
message: `Failed to checkout submodule ${repo} branch ${repo.branch}`,
|
107
|
+
});
|
108
|
+
}
|
109
|
+
})
|
110
|
+
}
|
111
|
+
logger.success("All modules processed!");
|
112
|
+
|
113
|
+
})
|
@@ -0,0 +1,22 @@
|
|
1
|
+
import { Effect } from "effect/index";
|
2
|
+
import { Config } from "../config.js";
|
3
|
+
import { FileSystem } from "@effect/platform"
|
4
|
+
import { logger, orange } from "../utils/logger.js";
|
5
|
+
import path, { join } from 'path';
|
6
|
+
|
7
|
+
export const createLucyHome = () => {
|
8
|
+
return Effect.gen(function*() {
|
9
|
+
const config = yield* Config
|
10
|
+
const fs = yield* FileSystem.FileSystem
|
11
|
+
|
12
|
+
if(!(yield* fs.exists(config.config.lucyHome))) {
|
13
|
+
logger.action(`Creating Lucy home directory at ${orange(config.config.lucyHome)}`);
|
14
|
+
yield* fs.makeDirectory(config.config.lucyHome, { recursive: true });
|
15
|
+
}
|
16
|
+
const templateFiles = yield* fs.readDirectory(config.config.filesFolder)
|
17
|
+
yield* Effect.forEach(
|
18
|
+
templateFiles,
|
19
|
+
(file) => fs.copy(path.join(config.config.filesFolder, file), path.join(config.config.lucyHome, file), { overwrite: true })
|
20
|
+
)
|
21
|
+
});
|
22
|
+
}
|