From 8a73de018c804b4984408a79f2583452a0e75329 Mon Sep 17 00:00:00 2001 From: bo0tzz Date: Mon, 10 Nov 2025 15:55:15 +0100 Subject: [PATCH] feat: mise monorepo tasks (#23691) --- .github/mise.toml | 10 + cli/mise.toml | 29 +++ deployment/mise.toml | 20 ++ docs/mise.toml | 25 +++ e2e/mise.toml | 29 +++ mise.toml | 521 +------------------------------------------ mobile/mise.toml | 185 +++++++++++++++ server/mise.toml | 66 ++++++ web/mise.toml | 62 +++++ 9 files changed, 437 insertions(+), 510 deletions(-) create mode 100644 .github/mise.toml create mode 100644 cli/mise.toml create mode 100644 deployment/mise.toml create mode 100644 docs/mise.toml create mode 100644 e2e/mise.toml create mode 100644 mobile/mise.toml create mode 100644 server/mise.toml create mode 100644 web/mise.toml diff --git a/.github/mise.toml b/.github/mise.toml new file mode 100644 index 0000000000..6930d41187 --- /dev/null +++ b/.github/mise.toml @@ -0,0 +1,10 @@ +[tasks.install] +run = "pnpm install --filter github --frozen-lockfile" + +[tasks.format] +env._.path = "./node_modules/.bin" +run = "prettier --check ." + +[tasks."format-fix"] +env._.path = "./node_modules/.bin" +run = "prettier --write ." diff --git a/cli/mise.toml b/cli/mise.toml new file mode 100644 index 0000000000..740184e03d --- /dev/null +++ b/cli/mise.toml @@ -0,0 +1,29 @@ +[tasks.install] +run = "pnpm install --filter @immich/cli --frozen-lockfile" + +[tasks.build] +env._.path = "./node_modules/.bin" +run = "vite build" + +[tasks.test] +env._.path = "./node_modules/.bin" +run = "vite" + +[tasks.lint] +env._.path = "./node_modules/.bin" +run = "eslint \"src/**/*.ts\" --max-warnings 0" + +[tasks."lint-fix"] +run = { task = "lint --fix" } + +[tasks.format] +env._.path = "./node_modules/.bin" +run = "prettier --check ." + +[tasks."format-fix"] +env._.path = "./node_modules/.bin" +run = "prettier --write ." + +[tasks.check] +env._.path = "./node_modules/.bin" +run = "tsc --noEmit" diff --git a/deployment/mise.toml b/deployment/mise.toml new file mode 100644 index 0000000000..f3d07ac31f --- /dev/null +++ b/deployment/mise.toml @@ -0,0 +1,20 @@ +[tools] +terragrunt = "0.91.2" +opentofu = "1.10.6" + +[tasks."tg:fmt"] +run = "terragrunt hclfmt" +description = "Format terragrunt files" + +[tasks.tf] +run = "terragrunt run --all" +description = "Wrapper for terragrunt run-all" +dir = "{{cwd}}" + +[tasks."tf:fmt"] +run = "tofu fmt -recursive tf/" +description = "Format terraform files" + +[tasks."tf:init"] +run = { task = "tf init -- -reconfigure" } +dir = "{{cwd}}" diff --git a/docs/mise.toml b/docs/mise.toml new file mode 100644 index 0000000000..4ffb7d5cce --- /dev/null +++ b/docs/mise.toml @@ -0,0 +1,25 @@ +[tasks.install] +run = "pnpm install --filter documentation --frozen-lockfile" + +[tasks.start] +env._.path = "./node_modules/.bin" +run = "docusaurus --port 3005" + +[tasks.build] +env._.path = "./node_modules/.bin" +run = [ + "jq -c < ../open-api/immich-openapi-specs.json > ./static/openapi.json || exit 0", + "docusaurus build", +] + +[tasks.preview] +env._.path = "./node_modules/.bin" +run = "docusaurus serve" + +[tasks.format] +env._.path = "./node_modules/.bin" +run = "prettier --check ." + +[tasks."format-fix"] +env._.path = "./node_modules/.bin" +run = "prettier --write ." diff --git a/e2e/mise.toml b/e2e/mise.toml new file mode 100644 index 0000000000..c298115e40 --- /dev/null +++ b/e2e/mise.toml @@ -0,0 +1,29 @@ +[tasks.install] +run = "pnpm install --filter immich-e2e --frozen-lockfile" + +[tasks.test] +env._.path = "./node_modules/.bin" +run = "vitest --run" + +[tasks."test-web"] +env._.path = "./node_modules/.bin" +run = "playwright test" + +[tasks.format] +env._.path = "./node_modules/.bin" +run = "prettier --check ." + +[tasks."format-fix"] +env._.path = "./node_modules/.bin" +run = "prettier --write ." + +[tasks.lint] +env._.path = "./node_modules/.bin" +run = "eslint \"src/**/*.ts\" --max-warnings 0" + +[tasks."lint-fix"] +run = { task = "lint --fix" } + +[tasks.check] +env._.path = "./node_modules/.bin" +run = "tsc --noEmit" diff --git a/mise.toml b/mise.toml index b4ccd76565..474f768137 100644 --- a/mise.toml +++ b/mise.toml @@ -1,527 +1,28 @@ +experimental_monorepo_root = true + [tools] node = "24.11.0" -flutter = "3.35.7" pnpm = "10.19.0" -terragrunt = "0.91.2" -opentofu = "1.10.6" - -[tools."github:CQLabs/homebrew-dcm"] -version = "1.30.0" -bin = "dcm" -postinstall = "chmod +x $MISE_TOOL_INSTALL_PATH/dcm" [settings] experimental = true pin = true -# .github -[tasks."github:install"] -run = "pnpm install --filter github --frozen-lockfile" - -[tasks."github:format"] -env._.path = "./.github/node_modules/.bin" -dir = ".github" -run = "prettier --check ." - -[tasks."github:format-fix"] -env._.path = "./.github/node_modules/.bin" -dir = ".github" -run = "prettier --write ." - -# @immich/cli -[tasks."cli:install"] -run = "pnpm install --filter @immich/cli --frozen-lockfile" - -[tasks."cli:build"] -env._.path = "./cli/node_modules/.bin" -dir = "cli" -run = "vite build" - -[tasks."cli:test"] -env._.path = "./cli/node_modules/.bin" -dir = "cli" -run = "vite" - -[tasks."cli:lint"] -env._.path = "./cli/node_modules/.bin" -dir = "cli" -run = "eslint \"src/**/*.ts\" --max-warnings 0" - -[tasks."cli:lint-fix"] -run = "mise run cli:lint --fix" - -[tasks."cli:format"] -env._.path = "./cli/node_modules/.bin" -dir = "cli" -run = "prettier --check ." - -[tasks."cli:format-fix"] -env._.path = "./cli/node_modules/.bin" -dir = "cli" -run = "prettier --write ." - -[tasks."cli:check"] -env._.path = "./cli/node_modules/.bin" -dir = "cli" -run = "tsc --noEmit" - -# @immich/sdk +# SDK tasks [tasks."sdk:install"] +dir = "open-api/typescript-sdk" run = "pnpm install --filter @immich/sdk --frozen-lockfile" [tasks."sdk:build"] -env._.path = "./open-api/typescript-sdk/node_modules/.bin" -dir = "./open-api/typescript-sdk" +dir = "open-api/typescript-sdk" +env._.path = "./node_modules/.bin" run = "tsc" -# docs -[tasks."docs:install"] -run = "pnpm install --filter documentation --frozen-lockfile" - -[tasks."docs:start"] -env._.path = "./docs/node_modules/.bin" -dir = "docs" -run = "docusaurus --port 3005" - -[tasks."docs:build"] -env._.path = "./docs/node_modules/.bin" -dir = "docs" -run = [ - "jq -c < ../open-api/immich-openapi-specs.json > ./static/openapi.json || exit 0", - "docusaurus build", -] - - -[tasks."docs:preview"] -env._.path = "./docs/node_modules/.bin" -dir = "docs" -run = "docusaurus serve" - - -[tasks."docs:format"] -env._.path = "./docs/node_modules/.bin" -dir = "docs" -run = "prettier --check ." - -[tasks."docs:format-fix"] -env._.path = "./docs/node_modules/.bin" -dir = "docs" -run = "prettier --write ." - - -# e2e -[tasks."e2e:install"] -run = "pnpm install --filter immich-e2e --frozen-lockfile" - -[tasks."e2e:test"] -env._.path = "./e2e/node_modules/.bin" -dir = "e2e" -run = "vitest --run" - -[tasks."e2e:test-web"] -env._.path = "./e2e/node_modules/.bin" -dir = "e2e" -run = "playwright test" - -[tasks."e2e:format"] -env._.path = "./e2e/node_modules/.bin" -dir = "e2e" -run = "prettier --check ." - -[tasks."e2e:format-fix"] -env._.path = "./e2e/node_modules/.bin" -dir = "e2e" -run = "prettier --write ." - -[tasks."e2e:lint"] -env._.path = "./e2e/node_modules/.bin" -dir = "e2e" -run = "eslint \"src/**/*.ts\" --max-warnings 0" - -[tasks."e2e:lint-fix"] -run = "mise run e2e:lint --fix" - -[tasks."e2e:check"] -env._.path = "./e2e/node_modules/.bin" -dir = "e2e" -run = "tsc --noEmit" - -# i18n +# i18n tasks [tasks."i18n:format"] -run = "mise run i18n:format-fix" +dir = "i18n" +run = { task = ":i18n:format-fix" } [tasks."i18n:format-fix"] -run = "pnpm dlx sort-json ./i18n/*.json" - - -# server -[tasks."server:install"] -run = "pnpm install --filter immich --frozen-lockfile" - -[tasks."server:build"] -env._.path = "./server/node_modules/.bin" -dir = "server" -run = "nest build" - -[tasks."server:test"] -env._.path = "./server/node_modules/.bin" -dir = "server" -run = "vitest --config test/vitest.config.mjs" - -[tasks."server:test-medium"] -env._.path = "./server/node_modules/.bin" -dir = "server" -run = "vitest --config test/vitest.config.medium.mjs" - -[tasks."server:format"] -env._.path = "./server/node_modules/.bin" -dir = "server" -run = "prettier --check ." - -[tasks."server:format-fix"] -env._.path = "./server/node_modules/.bin" -dir = "server" -run = "prettier --write ." - -[tasks."server:lint"] -env._.path = "./server/node_modules/.bin" -dir = "server" -run = "eslint \"src/**/*.ts\" \"test/**/*.ts\" --max-warnings 0" - -[tasks."server:lint-fix"] -run = "mise run server:lint --fix" - -[tasks."server:check"] -env._.path = "./server/node_modules/.bin" -dir = "server" -run = "tsc --noEmit" - -[tasks."server:sql"] -dir = "server" -run = "node ./dist/bin/sync-open-api.js" - -[tasks."server:open-api"] -dir = "server" -run = "node ./dist/bin/sync-open-api.js" - -[tasks."server:migrations"] -dir = "server" -run = "node ./dist/bin/migrations.js" -description = "Run database migration commands (create, generate, run, debug, or query)" - -[tasks."server:schema-drop"] -run = "mise run server:migrations query 'DROP schema public cascade; CREATE schema public;'" - -[tasks."server:schema-reset"] -run = "mise run server:schema-drop && mise run server:migrations run" - -[tasks."server:email-dev"] -env._.path = "./server/node_modules/.bin" -dir = "server" -run = "email dev -p 3050 --dir src/emails" - -[tasks."server:checklist"] -run = [ - "mise run server:install", - "mise run server:format", - "mise run server:lint", - "mise run server:check", - "mise run server:test-medium --run", - "mise run server:test --run", -] - - -# web -[tasks."web:install"] -run = "pnpm install --filter immich-web --frozen-lockfile" - -[tasks."web:svelte-kit-sync"] -env._.path = "./web/node_modules/.bin" -dir = "web" -run = "svelte-kit sync" - -[tasks."web:build"] -env._.path = "./web/node_modules/.bin" -dir = "web" -run = "vite build" - -[tasks."web:build-stats"] -env.BUILD_STATS = "true" -env._.path = "./web/node_modules/.bin" -dir = "web" -run = "vite build" - -[tasks."web:preview"] -env._.path = "./web/node_modules/.bin" -dir = "web" -run = "vite preview" - -[tasks."web:start"] -env._.path = "web/node_modules/.bin" -dir = "web" -run = "vite dev --host 0.0.0.0 --port 3000" - -[tasks."web:test"] -depends = "web:svelte-kit-sync" -env._.path = "web/node_modules/.bin" -dir = "web" -run = "vitest" - -[tasks."web:format"] -env._.path = "web/node_modules/.bin" -dir = "web" -run = "prettier --check ." - -[tasks."web:format-fix"] -env._.path = "web/node_modules/.bin" -dir = "web" -run = "prettier --write ." - -[tasks."web:lint"] -env._.path = "web/node_modules/.bin" -dir = "web" -run = "eslint . --max-warnings 0 --concurrency 4" - -[tasks."web:lint-fix"] -run = "mise run web:lint --fix" - -[tasks."web:check"] -depends = "web:svelte-kit-sync" -env._.path = "web/node_modules/.bin" -dir = "web" -run = "tsc --noEmit" - -[tasks."web:check-svelte"] -depends = "web:svelte-kit-sync" -env._.path = "web/node_modules/.bin" -dir = "web" -run = "svelte-check --no-tsconfig --fail-on-warnings" - -[tasks."web:checklist"] -run = [ - "mise run web:install", - "mise run web:format", - "mise run web:check", - "mise run web:test --run", - "mise run web:lint", -] - - -# mobile -[tasks."mobile:codegen:dart"] -alias = "mobile:codegen" -description = "Execute build_runner to auto-generate dart code" -dir = "mobile" -sources = [ - "pubspec.yaml", - "build.yaml", - "lib/**/*.dart", - "infrastructure/**/*.drift", -] -outputs = { auto = true } -run = "dart run build_runner build --delete-conflicting-outputs" - -[tasks."mobile:codegen:pigeon"] -alias = "mobile:pigeon" -description = "Generate pigeon platform code" -dir = "mobile" -depends = [ - "mobile:pigeon:native-sync", - "mobile:pigeon:thumbnail", - "mobile:pigeon:background-worker", - "mobile:pigeon:background-worker-lock", - "mobile:pigeon:connectivity", -] - -[tasks."mobile:codegen:translation"] -alias = "mobile:translation" -description = "Generate translations from i18n JSONs" -dir = "mobile" -run = [ - { task = "i18n:format-fix" }, - { tasks = [ - "mobile:i18n:loader", - "mobile:i18n:keys", - ] }, -] - -[tasks."mobile:codegen:app-icon"] -description = "Generate app icons" -dir = "mobile" -run = "flutter pub run flutter_launcher_icons:main" - -[tasks."mobile:codegen:splash"] -description = "Generate splash screen" -dir = "mobile" -run = "flutter pub run flutter_native_splash:create" - -[tasks."mobile:test"] -description = "Run mobile tests" -dir = "mobile" -run = "flutter test" - -[tasks."mobile:lint"] -description = "Analyze Dart code" -dir = "mobile" -depends = ["mobile:analyze:dart", "mobile:analyze:dcm"] - -[tasks."mobile:lint-fix"] -description = "Auto-fix Dart code" -dir = "mobile" -depends = ["mobile:analyze:fix:dart", "mobile:analyze:fix:dcm"] - -[tasks."mobile:format"] -description = "Format Dart code" -dir = "mobile" -run = "dart format --set-exit-if-changed $(find lib -name '*.dart' -not \\( -name '*.g.dart' -o -name '*.drift.dart' -o -name '*.gr.dart' \\))" - -[tasks."mobile:build:android"] -description = "Build Android release" -dir = "mobile" -run = "flutter build appbundle" - -[tasks."mobile:drift:migration"] -alias = "mobile:migration" -description = "Generate database migrations" -dir = "mobile" -run = "dart run drift_dev make-migrations" - - -# mobile internal tasks -[tasks."mobile:pigeon:native-sync"] -description = "Generate native sync API pigeon code" -dir = "mobile" -hide = true -sources = ["pigeon/native_sync_api.dart"] -outputs = [ - "lib/platform/native_sync_api.g.dart", - "ios/Runner/Sync/Messages.g.swift", - "android/app/src/main/kotlin/app/alextran/immich/sync/Messages.g.kt", -] -run = [ - "dart run pigeon --input pigeon/native_sync_api.dart", - "dart format lib/platform/native_sync_api.g.dart", -] - -[tasks."mobile:pigeon:thumbnail"] -description = "Generate thumbnail API pigeon code" -dir = "mobile" -hide = true -sources = ["pigeon/thumbnail_api.dart"] -outputs = [ - "lib/platform/thumbnail_api.g.dart", - "ios/Runner/Images/Thumbnails.g.swift", - "android/app/src/main/kotlin/app/alextran/immich/images/Thumbnails.g.kt", -] -run = [ - "dart run pigeon --input pigeon/thumbnail_api.dart", - "dart format lib/platform/thumbnail_api.g.dart", -] - -[tasks."mobile:pigeon:background-worker"] -description = "Generate background worker API pigeon code" -dir = "mobile" -hide = true -sources = ["pigeon/background_worker_api.dart"] -outputs = [ - "lib/platform/background_worker_api.g.dart", - "ios/Runner/Background/BackgroundWorker.g.swift", - "android/app/src/main/kotlin/app/alextran/immich/background/BackgroundWorker.g.kt", -] -run = [ - "dart run pigeon --input pigeon/background_worker_api.dart", - "dart format lib/platform/background_worker_api.g.dart", -] - -[tasks."mobile:pigeon:background-worker-lock"] -description = "Generate background worker lock API pigeon code" -dir = "mobile" -hide = true -sources = ["pigeon/background_worker_lock_api.dart"] -outputs = [ - "lib/platform/background_worker_lock_api.g.dart", - "android/app/src/main/kotlin/app/alextran/immich/background/BackgroundWorkerLock.g.kt", -] -run = [ - "dart run pigeon --input pigeon/background_worker_lock_api.dart", - "dart format lib/platform/background_worker_lock_api.g.dart", -] - -[tasks."mobile:pigeon:connectivity"] -description = "Generate connectivity API pigeon code" -dir = "mobile" -hide = true -sources = ["pigeon/connectivity_api.dart"] -outputs = [ - "lib/platform/connectivity_api.g.dart", - "ios/Runner/Connectivity/Connectivity.g.swift", - "android/app/src/main/kotlin/app/alextran/immich/connectivity/Connectivity.g.kt", -] -run = [ - "dart run pigeon --input pigeon/connectivity_api.dart", - "dart format lib/platform/connectivity_api.g.dart", -] - -[tasks."mobile:i18n:loader"] -description = "Generate i18n loader" -dir = "mobile" -hide = true -sources = ["i18n/"] -outputs = "lib/generated/codegen_loader.g.dart" -run = [ - "dart run easy_localization:generate -S ../i18n", - "dart format lib/generated/codegen_loader.g.dart", -] - -[tasks."mobile:i18n:keys"] -description = "Generate i18n keys" -dir = "mobile" -hide = true -sources = ["i18n/en.json"] -outputs = "lib/generated/intl_keys.g.dart" -run = [ - "dart run bin/generate_keys.dart", - "dart format lib/generated/intl_keys.g.dart", -] - -[tasks."mobile:analyze:dart"] -description = "Run Dart analysis" -dir = "mobile" -hide = true -run = "dart analyze --fatal-infos" - -[tasks."mobile:analyze:dcm"] -description = "Run Dart Code Metrics" -dir = "mobile" -hide = true -run = "dcm analyze lib --fatal-style --fatal-warnings" - -[tasks."mobile:analyze:fix:dart"] -description = "Auto-fix Dart analysis" -dir = "mobile" -hide = true -run = "dart fix --apply" - -[tasks."mobile:analyze:fix:dcm"] -description = "Auto-fix Dart Code Metrics" -dir = "mobile" -hide = true -run = "dcm fix lib" - -# docs deployment -[tasks."tg:fmt"] -run = "terragrunt hclfmt" -description = "Format terragrunt files" - -[tasks.tf] -run = "terragrunt run --all" -description = "Wrapper for terragrunt run-all" -dir = "{{cwd}}" - -[tasks."tf:fmt"] -run = "tofu fmt -recursive tf/" -description = "Format terraform files" - -[tasks."tf:init"] -run = "mise run tf init -- -reconfigure" -dir = "{{cwd}}" +dir = "i18n" +run = "pnpm dlx sort-json *.json" diff --git a/mobile/mise.toml b/mobile/mise.toml new file mode 100644 index 0000000000..cdafd1cc18 --- /dev/null +++ b/mobile/mise.toml @@ -0,0 +1,185 @@ +[tools] +flutter = "3.35.7" + +[tools."github:CQLabs/homebrew-dcm"] +version = "1.30.0" +bin = "dcm" +postinstall = "chmod +x $MISE_TOOL_INSTALL_PATH/dcm" + +[tasks."codegen:dart"] +alias = "codegen" +description = "Execute build_runner to auto-generate dart code" +sources = [ + "pubspec.yaml", + "build.yaml", + "lib/**/*.dart", + "infrastructure/**/*.drift", +] +outputs = { auto = true } +run = "dart run build_runner build --delete-conflicting-outputs" + +[tasks."codegen:pigeon"] +alias = "pigeon" +description = "Generate pigeon platform code" +depends = [ + "pigeon:native-sync", + "pigeon:thumbnail", + "pigeon:background-worker", + "pigeon:background-worker-lock", + "pigeon:connectivity", +] + +[tasks."codegen:translation"] +alias = "translation" +description = "Generate translations from i18n JSONs" +run = [ + { task = "//i18n:format-fix" }, + { tasks = [ + "i18n:loader", + "i18n:keys", + ] }, +] + +[tasks."codegen:app-icon"] +description = "Generate app icons" +run = "flutter pub run flutter_launcher_icons:main" + +[tasks."codegen:splash"] +description = "Generate splash screen" +run = "flutter pub run flutter_native_splash:create" + +[tasks.test] +description = "Run mobile tests" +run = "flutter test" + +[tasks.lint] +description = "Analyze Dart code" +depends = ["analyze:dart", "analyze:dcm"] + +[tasks."lint-fix"] +description = "Auto-fix Dart code" +depends = ["analyze:fix:dart", "analyze:fix:dcm"] + +[tasks.format] +description = "Format Dart code" +run = "dart format --set-exit-if-changed $(find lib -name '*.dart' -not \\( -name '*.g.dart' -o -name '*.drift.dart' -o -name '*.gr.dart' \\))" + +[tasks."build:android"] +description = "Build Android release" +run = "flutter build appbundle" + +[tasks."drift:migration"] +alias = "migration" +description = "Generate database migrations" +run = "dart run drift_dev make-migrations" + + +# Internal tasks +[tasks."pigeon:native-sync"] +description = "Generate native sync API pigeon code" +hide = true +sources = ["pigeon/native_sync_api.dart"] +outputs = [ + "lib/platform/native_sync_api.g.dart", + "ios/Runner/Sync/Messages.g.swift", + "android/app/src/main/kotlin/app/alextran/immich/sync/Messages.g.kt", +] +run = [ + "dart run pigeon --input pigeon/native_sync_api.dart", + "dart format lib/platform/native_sync_api.g.dart", +] + +[tasks."pigeon:thumbnail"] +description = "Generate thumbnail API pigeon code" +hide = true +sources = ["pigeon/thumbnail_api.dart"] +outputs = [ + "lib/platform/thumbnail_api.g.dart", + "ios/Runner/Images/Thumbnails.g.swift", + "android/app/src/main/kotlin/app/alextran/immich/images/Thumbnails.g.kt", +] +run = [ + "dart run pigeon --input pigeon/thumbnail_api.dart", + "dart format lib/platform/thumbnail_api.g.dart", +] + +[tasks."pigeon:background-worker"] +description = "Generate background worker API pigeon code" +hide = true +sources = ["pigeon/background_worker_api.dart"] +outputs = [ + "lib/platform/background_worker_api.g.dart", + "ios/Runner/Background/BackgroundWorker.g.swift", + "android/app/src/main/kotlin/app/alextran/immich/background/BackgroundWorker.g.kt", +] +run = [ + "dart run pigeon --input pigeon/background_worker_api.dart", + "dart format lib/platform/background_worker_api.g.dart", +] + +[tasks."pigeon:background-worker-lock"] +description = "Generate background worker lock API pigeon code" +hide = true +sources = ["pigeon/background_worker_lock_api.dart"] +outputs = [ + "lib/platform/background_worker_lock_api.g.dart", + "android/app/src/main/kotlin/app/alextran/immich/background/BackgroundWorkerLock.g.kt", +] +run = [ + "dart run pigeon --input pigeon/background_worker_lock_api.dart", + "dart format lib/platform/background_worker_lock_api.g.dart", +] + +[tasks."pigeon:connectivity"] +description = "Generate connectivity API pigeon code" +hide = true +sources = ["pigeon/connectivity_api.dart"] +outputs = [ + "lib/platform/connectivity_api.g.dart", + "ios/Runner/Connectivity/Connectivity.g.swift", + "android/app/src/main/kotlin/app/alextran/immich/connectivity/Connectivity.g.kt", +] +run = [ + "dart run pigeon --input pigeon/connectivity_api.dart", + "dart format lib/platform/connectivity_api.g.dart", +] + +[tasks."i18n:loader"] +description = "Generate i18n loader" +hide = true +sources = ["i18n/"] +outputs = "lib/generated/codegen_loader.g.dart" +run = [ + "dart run easy_localization:generate -S ../i18n", + "dart format lib/generated/codegen_loader.g.dart", +] + +[tasks."i18n:keys"] +description = "Generate i18n keys" +hide = true +sources = ["i18n/en.json"] +outputs = "lib/generated/intl_keys.g.dart" +run = [ + "dart run bin/generate_keys.dart", + "dart format lib/generated/intl_keys.g.dart", +] + +[tasks."analyze:dart"] +description = "Run Dart analysis" +hide = true +run = "dart analyze --fatal-infos" + +[tasks."analyze:dcm"] +description = "Run Dart Code Metrics" +hide = true +run = "dcm analyze lib --fatal-style --fatal-warnings" + +[tasks."analyze:fix:dart"] +description = "Auto-fix Dart analysis" +hide = true +run = "dart fix --apply" + +[tasks."analyze:fix:dcm"] +description = "Auto-fix Dart Code Metrics" +hide = true +run = "dcm fix lib" diff --git a/server/mise.toml b/server/mise.toml new file mode 100644 index 0000000000..d2240c4289 --- /dev/null +++ b/server/mise.toml @@ -0,0 +1,66 @@ +[tasks.install] +run = "pnpm install --filter immich --frozen-lockfile" + +[tasks.build] +env._.path = "./node_modules/.bin" +run = "nest build" + +[tasks.test] +env._.path = "./node_modules/.bin" +run = "vitest --config test/vitest.config.mjs" + +[tasks."test-medium"] +env._.path = "./node_modules/.bin" +run = "vitest --config test/vitest.config.medium.mjs" + +[tasks.format] +env._.path = "./node_modules/.bin" +run = "prettier --check ." + +[tasks."format-fix"] +env._.path = "./node_modules/.bin" +run = "prettier --write ." + +[tasks.lint] +env._.path = "./node_modules/.bin" +run = "eslint \"src/**/*.ts\" \"test/**/*.ts\" --max-warnings 0" + +[tasks."lint-fix"] +run = { task = "lint --fix" } + +[tasks.check] +env._.path = "./node_modules/.bin" +run = "tsc --noEmit" + +[tasks.sql] +run = "node ./dist/bin/sync-open-api.js" + +[tasks."open-api"] +run = "node ./dist/bin/sync-open-api.js" + +[tasks.migrations] +run = "node ./dist/bin/migrations.js" +description = "Run database migration commands (create, generate, run, debug, or query)" + +[tasks."schema-drop"] +run = { task = "migrations query 'DROP schema public cascade; CREATE schema public;'" } + +[tasks."schema-reset"] +run = [ + { task = ":schema-drop" }, + { task = "migrations run" }, +] + +[tasks."email-dev"] +env._.path = "./node_modules/.bin" +run = "email dev -p 3050 --dir src/emails" + +[tasks.checklist] +run = [ + { task = ":install" }, + { task = ":format" }, + { task = ":lint" }, + { task = ":check" }, + { task = ":test-medium --run" }, + { task = ":test --run" }, +] diff --git a/web/mise.toml b/web/mise.toml new file mode 100644 index 0000000000..5aca2d737d --- /dev/null +++ b/web/mise.toml @@ -0,0 +1,62 @@ +[tasks.install] +run = "pnpm install --filter immich-web --frozen-lockfile" + +[tasks."svelte-kit-sync"] +env._.path = "./node_modules/.bin" +run = "svelte-kit sync" + +[tasks.build] +env._.path = "./node_modules/.bin" +run = "vite build" + +[tasks."build-stats"] +env.BUILD_STATS = "true" +env._.path = "./node_modules/.bin" +run = "vite build" + +[tasks.preview] +env._.path = "./node_modules/.bin" +run = "vite preview" + +[tasks.start] +env._.path = "./node_modules/.bin" +run = "vite dev --host 0.0.0.0 --port 3000" + +[tasks.test] +depends = ["svelte-kit-sync"] +env._.path = "./node_modules/.bin" +run = "vitest" + +[tasks.format] +env._.path = "./node_modules/.bin" +run = "prettier --check ." + +[tasks."format-fix"] +env._.path = "./node_modules/.bin" +run = "prettier --write ." + +[tasks.lint] +env._.path = "./node_modules/.bin" +run = "eslint . --max-warnings 0 --concurrency 4" + +[tasks."lint-fix"] +run = { task = "lint --fix" } + +[tasks.check] +depends = ["svelte-kit-sync"] +env._.path = "./node_modules/.bin" +run = "tsc --noEmit" + +[tasks."check-svelte"] +depends = ["svelte-kit-sync"] +env._.path = "./node_modules/.bin" +run = "svelte-check --no-tsconfig --fail-on-warnings" + +[tasks.checklist] +run = [ + { task = ":install" }, + { task = ":format" }, + { task = ":check" }, + { task = ":test --run" }, + { task = ":lint" }, +]