biucingcli 0.9.1__py3-none-any.whl
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.
- biucingcli/__init__.py +5 -0
- biucingcli/cli.py +849 -0
- biucingcli/template_data/android/template/.editorconfig +9 -0
- biucingcli/template_data/android/template/.gitignore +26 -0
- biucingcli/template_data/android/template/.mise.toml +3 -0
- biucingcli/template_data/android/template/Brewfile +6 -0
- biucingcli/template_data/android/template/Makefile +103 -0
- biucingcli/template_data/android/template/README.md +163 -0
- biucingcli/template_data/android/template/app/build.gradle.kts +178 -0
- biucingcli/template_data/android/template/app/proguard-rules.pro +1 -0
- biucingcli/template_data/android/template/app/src/androidTest/java/app/HomeRouteUiTest.kt +21 -0
- biucingcli/template_data/android/template/app/src/main/AndroidManifest.xml +18 -0
- biucingcli/template_data/android/template/app/src/main/java/app/MainActivity.kt +36 -0
- biucingcli/template_data/android/template/app/src/main/res/values/strings.xml +4 -0
- biucingcli/template_data/android/template/app/src/main/res/values/themes.xml +8 -0
- biucingcli/template_data/android/template/app/src/test/java/app/AppSmokeTest.kt +19 -0
- biucingcli/template_data/android/template/build.gradle.kts +27 -0
- biucingcli/template_data/android/template/core/designsystem/build.gradle.kts +33 -0
- biucingcli/template_data/android/template/core/designsystem/src/main/java/designsystem/Components.kt +75 -0
- biucingcli/template_data/android/template/core/designsystem/src/main/java/designsystem/DesignTokens.kt +23 -0
- biucingcli/template_data/android/template/core/designsystem/src/main/java/designsystem/Theme.kt +110 -0
- biucingcli/template_data/android/template/core/model/build.gradle.kts +26 -0
- biucingcli/template_data/android/template/core/model/src/main/java/model/Greeting.kt +6 -0
- biucingcli/template_data/android/template/core/model/src/test/java/model/GreetingTest.kt +16 -0
- biucingcli/template_data/android/template/core/network/build.gradle.kts +26 -0
- biucingcli/template_data/android/template/core/network/src/main/java/network/AppEnvironment.kt +17 -0
- biucingcli/template_data/android/template/core/testing/build.gradle.kts +27 -0
- biucingcli/template_data/android/template/core/testing/src/main/java/testing/FakeAppEnvironmentProvider.kt +13 -0
- biucingcli/template_data/android/template/docs/release-delivery.md +68 -0
- biucingcli/template_data/android/template/docs/release-signing.properties.example +20 -0
- biucingcli/template_data/android/template/fastlane/.env.example +22 -0
- biucingcli/template_data/android/template/fastlane/Appfile +1 -0
- biucingcli/template_data/android/template/fastlane/Fastfile +121 -0
- biucingcli/template_data/android/template/feature/home/build.gradle.kts +35 -0
- biucingcli/template_data/android/template/feature/home/src/main/java/home/HomeRoute.kt +38 -0
- biucingcli/template_data/android/template/feature/settings/build.gradle.kts +34 -0
- biucingcli/template_data/android/template/feature/settings/src/main/java/settings/SettingsRoute.kt +35 -0
- biucingcli/template_data/android/template/gradle/libs.versions.toml +35 -0
- biucingcli/template_data/android/template/gradle/verification-metadata.xml +3462 -0
- biucingcli/template_data/android/template/gradle/wrapper/gradle-wrapper.jar +0 -0
- biucingcli/template_data/android/template/gradle/wrapper/gradle-wrapper.jar.sha256 +1 -0
- biucingcli/template_data/android/template/gradle/wrapper/gradle-wrapper.properties +10 -0
- biucingcli/template_data/android/template/gradle.properties +4 -0
- biucingcli/template_data/android/template/gradlew +252 -0
- biucingcli/template_data/android/template/gradlew.bat +94 -0
- biucingcli/template_data/android/template/scripts/artifact-info +11 -0
- biucingcli/template_data/android/template/scripts/bootstrap +17 -0
- biucingcli/template_data/android/template/scripts/doctor +133 -0
- biucingcli/template_data/android/template/scripts/setup-android-sdk +23 -0
- biucingcli/template_data/android/template/scripts/sync-gradle-wrapper +19 -0
- biucingcli/template_data/android/template/scripts/verify-gradle-supply-chain +61 -0
- biucingcli/template_data/android/template/scripts/verify-release-artifact +104 -0
- biucingcli/template_data/android/template/settings.gradle.kts +25 -0
- biucingcli/template_data/android/template.json +146 -0
- biucingcli/template_data/apple/template/.gitignore +28 -0
- biucingcli/template_data/apple/template/.mise.toml +4 -0
- biucingcli/template_data/apple/template/.swiftformat +10 -0
- biucingcli/template_data/apple/template/.swiftlint.yml +33 -0
- biucingcli/template_data/apple/template/App/Config/ProjectDescriptionHelpers/Module.swift +6 -0
- biucingcli/template_data/apple/template/App/Config/XCConfig/Base.xcconfig +4 -0
- biucingcli/template_data/apple/template/App/Project.swift +66 -0
- biucingcli/template_data/apple/template/App/Targets/App/Resources/.gitkeep +1 -0
- biucingcli/template_data/apple/template/App/Targets/App/Sources/AppEntry.swift +9 -0
- biucingcli/template_data/apple/template/App/Targets/App/Sources/HomeView.swift +18 -0
- biucingcli/template_data/apple/template/App/Targets/App/Sources/HomeViewModel.swift +38 -0
- biucingcli/template_data/apple/template/App/Targets/AppTests/Sources/AppTests.swift +59 -0
- biucingcli/template_data/apple/template/Brewfile +8 -0
- biucingcli/template_data/apple/template/Makefile +128 -0
- biucingcli/template_data/apple/template/Packages/AppServices/Package.swift +20 -0
- biucingcli/template_data/apple/template/Packages/AppServices/Sources/AppServices/StarterMetadata.swift +52 -0
- biucingcli/template_data/apple/template/Packages/DesignSystem/Package.swift +20 -0
- biucingcli/template_data/apple/template/Packages/DesignSystem/Sources/DesignSystem/Theme.swift +8 -0
- biucingcli/template_data/apple/template/README.md +133 -0
- biucingcli/template_data/apple/template/Tuist.swift +8 -0
- biucingcli/template_data/apple/template/Workspace.swift +11 -0
- biucingcli/template_data/apple/template/docs/release-delivery.md +55 -0
- biucingcli/template_data/apple/template/fastlane/.env.example +20 -0
- biucingcli/template_data/apple/template/fastlane/Appfile +3 -0
- biucingcli/template_data/apple/template/fastlane/Fastfile +126 -0
- biucingcli/template_data/apple/template/fastlane/Matchfile +7 -0
- biucingcli/template_data/apple/template/scripts/bootstrap +9 -0
- biucingcli/template_data/apple/template/scripts/doctor +163 -0
- biucingcli/template_data/apple/template/scripts/setup-xcode +6 -0
- biucingcli/template_data/apple/template/scripts/test-destination +42 -0
- biucingcli/template_data/apple/template/scripts/verify-release-identity +88 -0
- biucingcli/template_data/apple/template.json +110 -0
- biucingcli/template_data/frontend/template/.dockerignore +8 -0
- biucingcli/template_data/frontend/template/.env.example +1 -0
- biucingcli/template_data/frontend/template/.gitignore +7 -0
- biucingcli/template_data/frontend/template/.npmrc +1 -0
- biucingcli/template_data/frontend/template/.prettierignore +2 -0
- biucingcli/template_data/frontend/template/.prettierrc.json +4 -0
- biucingcli/template_data/frontend/template/Dockerfile +25 -0
- biucingcli/template_data/frontend/template/Dockerfile.dev +35 -0
- biucingcli/template_data/frontend/template/Dockerfile.dev.full +40 -0
- biucingcli/template_data/frontend/template/Makefile +137 -0
- biucingcli/template_data/frontend/template/README.md +146 -0
- biucingcli/template_data/frontend/template/compose.dev.yaml +29 -0
- biucingcli/template_data/frontend/template/eslint.config.js +27 -0
- biucingcli/template_data/frontend/template/index.html +12 -0
- biucingcli/template_data/frontend/template/nginx.conf +11 -0
- biucingcli/template_data/frontend/template/package.json +50 -0
- biucingcli/template_data/frontend/template/playwright.production.config.ts +21 -0
- biucingcli/template_data/frontend/template/playwright.smoke.config.ts +19 -0
- biucingcli/template_data/frontend/template/pnpm-lock.yaml +4054 -0
- biucingcli/template_data/frontend/template/public/.gitkeep +1 -0
- biucingcli/template_data/frontend/template/scripts/browser-smoke-production +55 -0
- biucingcli/template_data/frontend/template/scripts/doctor +46 -0
- biucingcli/template_data/frontend/template/src/App.test.tsx +18 -0
- biucingcli/template_data/frontend/template/src/App.tsx +5 -0
- biucingcli/template_data/frontend/template/src/components/MetricCard.tsx +14 -0
- biucingcli/template_data/frontend/template/src/components/TaskPanel.tsx +32 -0
- biucingcli/template_data/frontend/template/src/config/env.ts +3 -0
- biucingcli/template_data/frontend/template/src/hooks/useProjectOverview.ts +24 -0
- biucingcli/template_data/frontend/template/src/index.css +208 -0
- biucingcli/template_data/frontend/template/src/main.tsx +11 -0
- biucingcli/template_data/frontend/template/src/pages/HomePage.tsx +60 -0
- biucingcli/template_data/frontend/template/src/router/AppRouter.tsx +14 -0
- biucingcli/template_data/frontend/template/src/services/api/client.ts +33 -0
- biucingcli/template_data/frontend/template/src/services/projectOverview.ts +39 -0
- biucingcli/template_data/frontend/template/src/test/setup.ts +1 -0
- biucingcli/template_data/frontend/template/src/types/projectOverview.ts +22 -0
- biucingcli/template_data/frontend/template/src/vite-env.d.ts +9 -0
- biucingcli/template_data/frontend/template/tests/browser-smoke.spec.ts +16 -0
- biucingcli/template_data/frontend/template/tests/production-browser-smoke.spec.ts +22 -0
- biucingcli/template_data/frontend/template/tsconfig.json +21 -0
- biucingcli/template_data/frontend/template/vite.config.ts +12 -0
- biucingcli/template_data/frontend/template.json +81 -0
- biucingcli/template_data/harmonyos/template/.gitignore +21 -0
- biucingcli/template_data/harmonyos/template/.mise.toml +2 -0
- biucingcli/template_data/harmonyos/template/AppScope/app.json5 +10 -0
- biucingcli/template_data/harmonyos/template/AppScope/resources/base/element/string.json +8 -0
- biucingcli/template_data/harmonyos/template/AppScope/resources/base/media/background.svg +3 -0
- biucingcli/template_data/harmonyos/template/AppScope/resources/base/media/foreground.svg +4 -0
- biucingcli/template_data/harmonyos/template/AppScope/resources/base/media/layered_image.json +6 -0
- biucingcli/template_data/harmonyos/template/Makefile +106 -0
- biucingcli/template_data/harmonyos/template/README.md +152 -0
- biucingcli/template_data/harmonyos/template/build-profile.json5 +36 -0
- biucingcli/template_data/harmonyos/template/code-linter.json5 +12 -0
- biucingcli/template_data/harmonyos/template/docs/release-signing.local.properties.example +14 -0
- biucingcli/template_data/harmonyos/template/entry/build-profile.json5 +9 -0
- biucingcli/template_data/harmonyos/template/entry/hvigorfile.ts +6 -0
- biucingcli/template_data/harmonyos/template/entry/oh-package.json5 +9 -0
- biucingcli/template_data/harmonyos/template/entry/src/main/ets/core/config/AppConfig.ets +10 -0
- biucingcli/template_data/harmonyos/template/entry/src/main/ets/core/designsystem/Tokens.ets +28 -0
- biucingcli/template_data/harmonyos/template/entry/src/main/ets/entryability/EntryAbility.ets +29 -0
- biucingcli/template_data/harmonyos/template/entry/src/main/ets/pages/Index.ets +47 -0
- biucingcli/template_data/harmonyos/template/entry/src/main/ets/pages/Settings.ets +96 -0
- biucingcli/template_data/harmonyos/template/entry/src/main/module.json5 +34 -0
- biucingcli/template_data/harmonyos/template/entry/src/main/resources/base/element/color.json +24 -0
- biucingcli/template_data/harmonyos/template/entry/src/main/resources/base/element/string.json +12 -0
- biucingcli/template_data/harmonyos/template/entry/src/main/resources/base/media/app_icon.svg +5 -0
- biucingcli/template_data/harmonyos/template/entry/src/main/resources/base/profile/main_pages.json +6 -0
- biucingcli/template_data/harmonyos/template/entry/src/test/List.test.ets +11 -0
- biucingcli/template_data/harmonyos/template/hvigor/hvigor-config.json5 +8 -0
- biucingcli/template_data/harmonyos/template/hvigorfile.ts +6 -0
- biucingcli/template_data/harmonyos/template/oh-package-lock.json5 +19 -0
- biucingcli/template_data/harmonyos/template/oh-package.json5 +13 -0
- biucingcli/template_data/harmonyos/template/scripts/artifact-info +31 -0
- biucingcli/template_data/harmonyos/template/scripts/bootstrap +38 -0
- biucingcli/template_data/harmonyos/template/scripts/doctor +147 -0
- biucingcli/template_data/harmonyos/template/scripts/lint +105 -0
- biucingcli/template_data/harmonyos/template/scripts/release-build +199 -0
- biucingcli/template_data/harmonyos/template/scripts/release-preflight +109 -0
- biucingcli/template_data/harmonyos/template/scripts/test +28 -0
- biucingcli/template_data/harmonyos/template/scripts/verify-release-artifact +173 -0
- biucingcli/template_data/harmonyos/template/scripts/verify-supply-chain +70 -0
- biucingcli/template_data/harmonyos/template.json +134 -0
- biucingcli/template_data/microservice/template/.air.toml +11 -0
- biucingcli/template_data/microservice/template/.dockerignore +5 -0
- biucingcli/template_data/microservice/template/.gitignore +4 -0
- biucingcli/template_data/microservice/template/.mise.toml +3 -0
- biucingcli/template_data/microservice/template/Brewfile +7 -0
- biucingcli/template_data/microservice/template/Dockerfile +44 -0
- biucingcli/template_data/microservice/template/Dockerfile.dev +50 -0
- biucingcli/template_data/microservice/template/Makefile +145 -0
- biucingcli/template_data/microservice/template/README.md +191 -0
- biucingcli/template_data/microservice/template/api/buf.gen.yaml +11 -0
- biucingcli/template_data/microservice/template/api/buf.yaml +11 -0
- biucingcli/template_data/microservice/template/api/proto/service/v1/service.proto +18 -0
- biucingcli/template_data/microservice/template/cmd/server/main.go +81 -0
- biucingcli/template_data/microservice/template/compose.dev.yaml +49 -0
- biucingcli/template_data/microservice/template/configs/config.yaml +18 -0
- biucingcli/template_data/microservice/template/deploy/compose.yaml +35 -0
- biucingcli/template_data/microservice/template/deploy/otel-collector.yaml +15 -0
- biucingcli/template_data/microservice/template/go.mod +53 -0
- biucingcli/template_data/microservice/template/go.sum +138 -0
- biucingcli/template_data/microservice/template/internal/config/config.go +112 -0
- biucingcli/template_data/microservice/template/internal/config/config_test.go +92 -0
- biucingcli/template_data/microservice/template/internal/handler/health.go +25 -0
- biucingcli/template_data/microservice/template/internal/handler/ping.go +25 -0
- biucingcli/template_data/microservice/template/internal/model/health.go +8 -0
- biucingcli/template_data/microservice/template/internal/model/ping.go +7 -0
- biucingcli/template_data/microservice/template/internal/repository/.gitkeep +1 -0
- biucingcli/template_data/microservice/template/internal/router/router.go +26 -0
- biucingcli/template_data/microservice/template/internal/runtime/server.go +116 -0
- biucingcli/template_data/microservice/template/internal/runtime/server_test.go +161 -0
- biucingcli/template_data/microservice/template/internal/service/health.go +26 -0
- biucingcli/template_data/microservice/template/internal/service/ping.go +23 -0
- biucingcli/template_data/microservice/template/internal/telemetry/telemetry.go +56 -0
- biucingcli/template_data/microservice/template/internal/transport/grpc.go +51 -0
- biucingcli/template_data/microservice/template/internal/transport/ping.go +28 -0
- biucingcli/template_data/microservice/template/scripts/bootstrap +29 -0
- biucingcli/template_data/microservice/template/scripts/doctor +115 -0
- biucingcli/template_data/microservice/template/tests/server_test.go +153 -0
- biucingcli/template_data/microservice/template.json +114 -0
- biucingcli/template_data/web-service/template/.air.toml +11 -0
- biucingcli/template_data/web-service/template/.dockerignore +5 -0
- biucingcli/template_data/web-service/template/.gitignore +5 -0
- biucingcli/template_data/web-service/template/.mise.toml +2 -0
- biucingcli/template_data/web-service/template/Brewfile +5 -0
- biucingcli/template_data/web-service/template/Dockerfile +41 -0
- biucingcli/template_data/web-service/template/Dockerfile.dev +45 -0
- biucingcli/template_data/web-service/template/Makefile +113 -0
- biucingcli/template_data/web-service/template/README.md +164 -0
- biucingcli/template_data/web-service/template/cmd/server/main.go +50 -0
- biucingcli/template_data/web-service/template/compose.dev.yaml +28 -0
- biucingcli/template_data/web-service/template/compose.yaml +14 -0
- biucingcli/template_data/web-service/template/configs/config.yaml +10 -0
- biucingcli/template_data/web-service/template/go.mod +36 -0
- biucingcli/template_data/web-service/template/go.sum +89 -0
- biucingcli/template_data/web-service/template/internal/config/config.go +84 -0
- biucingcli/template_data/web-service/template/internal/config/config_test.go +88 -0
- biucingcli/template_data/web-service/template/internal/handler/health.go +25 -0
- biucingcli/template_data/web-service/template/internal/handler/ping.go +25 -0
- biucingcli/template_data/web-service/template/internal/handler/user.go +40 -0
- biucingcli/template_data/web-service/template/internal/model/health.go +6 -0
- biucingcli/template_data/web-service/template/internal/model/ping.go +7 -0
- biucingcli/template_data/web-service/template/internal/model/user.go +7 -0
- biucingcli/template_data/web-service/template/internal/repository/.gitkeep +1 -0
- biucingcli/template_data/web-service/template/internal/repository/user.go +37 -0
- biucingcli/template_data/web-service/template/internal/router/router.go +28 -0
- biucingcli/template_data/web-service/template/internal/runtime/server.go +76 -0
- biucingcli/template_data/web-service/template/internal/runtime/server_test.go +139 -0
- biucingcli/template_data/web-service/template/internal/service/health.go +22 -0
- biucingcli/template_data/web-service/template/internal/service/ping.go +23 -0
- biucingcli/template_data/web-service/template/internal/service/user.go +27 -0
- biucingcli/template_data/web-service/template/scripts/bootstrap +23 -0
- biucingcli/template_data/web-service/template/scripts/doctor +83 -0
- biucingcli/template_data/web-service/template/tests/server_test.go +160 -0
- biucingcli/template_data/web-service/template.json +88 -0
- biucingcli/template_data/worker/template/.dockerignore +3 -0
- biucingcli/template_data/worker/template/.gitignore +2 -0
- biucingcli/template_data/worker/template/.mise.toml +2 -0
- biucingcli/template_data/worker/template/Brewfile +1 -0
- biucingcli/template_data/worker/template/Dockerfile +19 -0
- biucingcli/template_data/worker/template/Dockerfile.dev +9 -0
- biucingcli/template_data/worker/template/Makefile +105 -0
- biucingcli/template_data/worker/template/README.md +164 -0
- biucingcli/template_data/worker/template/cmd/worker/main.go +41 -0
- biucingcli/template_data/worker/template/compose.dev.yaml +29 -0
- biucingcli/template_data/worker/template/configs/config.json +11 -0
- biucingcli/template_data/worker/template/go.mod +3 -0
- biucingcli/template_data/worker/template/go.sum +1 -0
- biucingcli/template_data/worker/template/internal/config/config.go +108 -0
- biucingcli/template_data/worker/template/internal/config/config_test.go +86 -0
- biucingcli/template_data/worker/template/internal/runtime/runner.go +199 -0
- biucingcli/template_data/worker/template/internal/runtime/runner_test.go +215 -0
- biucingcli/template_data/worker/template/internal/task/heartbeat.go +19 -0
- biucingcli/template_data/worker/template/scripts/bootstrap +6 -0
- biucingcli/template_data/worker/template/scripts/doctor +41 -0
- biucingcli/template_data/worker/template/tests/worker_test.go +44 -0
- biucingcli/template_data/worker/template.json +100 -0
- biucingcli/templates.py +902 -0
- biucingcli-0.9.1.dist-info/METADATA +204 -0
- biucingcli-0.9.1.dist-info/RECORD +269 -0
- biucingcli-0.9.1.dist-info/WHEEL +5 -0
- biucingcli-0.9.1.dist-info/entry_points.txt +2 -0
- biucingcli-0.9.1.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
failures=0
|
|
5
|
+
warnings=0
|
|
6
|
+
platform="{{APPLE_PLATFORM}}"
|
|
7
|
+
platform_name="{{APPLE_PLATFORM_NAME}}"
|
|
8
|
+
repo_root="$(pwd)"
|
|
9
|
+
worktree_id="${WORKTREE_ID:-$(printf '%s' "$repo_root" | shasum | cut -c1-8)}"
|
|
10
|
+
tuist_home="${TUIST_HOME:-${repo_root}/.cache/tuist/${worktree_id}/home}"
|
|
11
|
+
tuist_xdg_cache="${TUIST_XDG_CACHE_HOME:-${repo_root}/.cache/tuist/${worktree_id}/xdg-cache}"
|
|
12
|
+
tuist_xdg_state="${TUIST_XDG_STATE_HOME:-${repo_root}/.cache/tuist/${worktree_id}/xdg-state}"
|
|
13
|
+
tuist_xdg_config="${TUIST_XDG_CONFIG_HOME:-${repo_root}/.cache/tuist/${worktree_id}/xdg-config}"
|
|
14
|
+
tuist_tmp="${TUIST_TMPDIR:-${repo_root}/.cache/tuist/${worktree_id}/tmp}"
|
|
15
|
+
|
|
16
|
+
pass() {
|
|
17
|
+
echo "[pass] $1"
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
warn() {
|
|
21
|
+
echo "[warn] $1"
|
|
22
|
+
warnings=$((warnings + 1))
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
fail() {
|
|
26
|
+
echo "[fail] $1"
|
|
27
|
+
failures=$((failures + 1))
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
echo "Apple environment doctor"
|
|
31
|
+
echo "platform: ${platform_name}"
|
|
32
|
+
|
|
33
|
+
developer_dir=""
|
|
34
|
+
if developer_dir="$(xcode-select -p 2>/dev/null)"; then
|
|
35
|
+
pass "xcode-select points to ${developer_dir}"
|
|
36
|
+
else
|
|
37
|
+
fail "xcode-select is not configured. Open Xcode once or run 'sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer'."
|
|
38
|
+
fi
|
|
39
|
+
|
|
40
|
+
if command -v xcodebuild >/dev/null 2>&1; then
|
|
41
|
+
xcodebuild_version="$(xcodebuild -version 2>&1 || true)"
|
|
42
|
+
if [[ "$xcodebuild_version" == Xcode* ]]; then
|
|
43
|
+
pass "xcodebuild is available"
|
|
44
|
+
echo "$xcodebuild_version" | sed -n '1,2p'
|
|
45
|
+
else
|
|
46
|
+
fail "xcodebuild is installed but not usable. Output: ${xcodebuild_version}"
|
|
47
|
+
fi
|
|
48
|
+
else
|
|
49
|
+
fail "xcodebuild is not available. Install Xcode and accept the license before building."
|
|
50
|
+
fi
|
|
51
|
+
|
|
52
|
+
if command -v tuist >/dev/null 2>&1; then
|
|
53
|
+
mkdir -p "$tuist_home" "$tuist_xdg_cache" "$tuist_xdg_state" "$tuist_xdg_config" "$tuist_tmp"
|
|
54
|
+
tuist_version_output="$(
|
|
55
|
+
HOME="$tuist_home" \
|
|
56
|
+
XDG_CACHE_HOME="$tuist_xdg_cache" \
|
|
57
|
+
XDG_STATE_HOME="$tuist_xdg_state" \
|
|
58
|
+
XDG_CONFIG_HOME="$tuist_xdg_config" \
|
|
59
|
+
TMPDIR="$tuist_tmp" \
|
|
60
|
+
tuist version 2>&1 || true
|
|
61
|
+
)"
|
|
62
|
+
if [[ "$tuist_version_output" =~ ^[0-9] ]]; then
|
|
63
|
+
pass "tuist is available"
|
|
64
|
+
echo "tuist: ${tuist_version_output}"
|
|
65
|
+
else
|
|
66
|
+
fail "tuist is installed but not usable. Output: ${tuist_version_output}"
|
|
67
|
+
fi
|
|
68
|
+
else
|
|
69
|
+
fail "tuist is not available. Run 'brew bundle' or install Tuist before generating the workspace."
|
|
70
|
+
fi
|
|
71
|
+
|
|
72
|
+
if command -v swift >/dev/null 2>&1; then
|
|
73
|
+
swift_version_output="$(swift --version 2>&1 || true)"
|
|
74
|
+
if [[ "$swift_version_output" == *"swift-driver version"* || "$swift_version_output" == *"Apple Swift version"* ]]; then
|
|
75
|
+
pass "swift is available"
|
|
76
|
+
echo "$swift_version_output" | head -n 1
|
|
77
|
+
else
|
|
78
|
+
fail "swift is installed but not usable. Output: ${swift_version_output}"
|
|
79
|
+
fi
|
|
80
|
+
else
|
|
81
|
+
fail "swift is not available. Install Xcode command line tools before continuing."
|
|
82
|
+
fi
|
|
83
|
+
|
|
84
|
+
if command -v swiftlint >/dev/null 2>&1; then
|
|
85
|
+
swiftlint_version_output="$(swiftlint version 2>&1 || true)"
|
|
86
|
+
if [[ -n "$swiftlint_version_output" ]]; then
|
|
87
|
+
pass "swiftlint is available"
|
|
88
|
+
echo "swiftlint: ${swiftlint_version_output}"
|
|
89
|
+
else
|
|
90
|
+
fail "swiftlint is installed but did not return a version."
|
|
91
|
+
fi
|
|
92
|
+
else
|
|
93
|
+
fail "swiftlint is not available. Run 'brew bundle' before using make lint."
|
|
94
|
+
fi
|
|
95
|
+
|
|
96
|
+
if command -v swiftformat >/dev/null 2>&1; then
|
|
97
|
+
swiftformat_version_output="$(swiftformat --version 2>&1 || true)"
|
|
98
|
+
if [[ -n "$swiftformat_version_output" ]]; then
|
|
99
|
+
pass "swiftformat is available"
|
|
100
|
+
echo "swiftformat: ${swiftformat_version_output}"
|
|
101
|
+
else
|
|
102
|
+
fail "swiftformat is installed but did not return a version."
|
|
103
|
+
fi
|
|
104
|
+
else
|
|
105
|
+
fail "swiftformat is not available. Run 'brew bundle' before using make format."
|
|
106
|
+
fi
|
|
107
|
+
|
|
108
|
+
if command -v fastlane >/dev/null 2>&1; then
|
|
109
|
+
fastlane_version_output="$(fastlane --version 2>&1 || true)"
|
|
110
|
+
if [[ -n "$fastlane_version_output" ]]; then
|
|
111
|
+
pass "fastlane is available"
|
|
112
|
+
echo "$fastlane_version_output" | sed -n '1p'
|
|
113
|
+
else
|
|
114
|
+
warn "fastlane is installed but did not return version information. Beta and release automation may fail."
|
|
115
|
+
fi
|
|
116
|
+
else
|
|
117
|
+
warn "fastlane is not available. Run 'brew bundle' before using make beta or make release."
|
|
118
|
+
fi
|
|
119
|
+
|
|
120
|
+
if command -v xcrun >/dev/null 2>&1; then
|
|
121
|
+
simctl_output="$(xcrun simctl list devices available 2>&1 || true)"
|
|
122
|
+
if [[ "$simctl_output" == *"Unable to locate device set"* || "$simctl_output" == *"CoreSimulatorService connection became invalid"* || "$simctl_output" == *"Failed to initialize simulator device set"* ]]; then
|
|
123
|
+
if [[ "$platform" == "macos" ]]; then
|
|
124
|
+
warn "xcrun simctl is installed but simulator services are not ready. macOS builds can still proceed, but iOS-family simulator workflows may fail. Output: ${simctl_output}"
|
|
125
|
+
else
|
|
126
|
+
fail "xcrun simctl could not inspect available simulators. Resolve CoreSimulator service issues before running ${platform_name} tests. Output: ${simctl_output}"
|
|
127
|
+
fi
|
|
128
|
+
elif [[ "$simctl_output" == *"=="* || -n "$(printf '%s' "$simctl_output" | sed '/^$/d')" ]]; then
|
|
129
|
+
available_devices="$(printf '%s\n' "$simctl_output" | rg -c '^ ' || true)"
|
|
130
|
+
if [[ "${available_devices:-0}" -gt 0 ]]; then
|
|
131
|
+
pass "xcrun simctl can see ${available_devices} available simulator device(s)"
|
|
132
|
+
else
|
|
133
|
+
if [[ "$platform" == "macos" ]]; then
|
|
134
|
+
warn "xcrun simctl is available, but no simulator devices were listed. macOS builds can still proceed."
|
|
135
|
+
else
|
|
136
|
+
fail "xcrun simctl is available, but no simulator devices were listed. Install a ${platform_name} runtime and create a simulator before running tests."
|
|
137
|
+
fi
|
|
138
|
+
fi
|
|
139
|
+
else
|
|
140
|
+
if [[ "$platform" == "macos" ]]; then
|
|
141
|
+
warn "xcrun simctl returned an unexpected result. macOS builds can still proceed, but simulator inspection is unreliable. Output: ${simctl_output}"
|
|
142
|
+
else
|
|
143
|
+
fail "xcrun simctl returned an unexpected result while checking simulators. Output: ${simctl_output}"
|
|
144
|
+
fi
|
|
145
|
+
fi
|
|
146
|
+
else
|
|
147
|
+
if [[ "$platform" == "macos" ]]; then
|
|
148
|
+
warn "xcrun is not available, so simulator readiness could not be checked."
|
|
149
|
+
else
|
|
150
|
+
fail "xcrun is not available, so simulator readiness could not be checked for ${platform_name}."
|
|
151
|
+
fi
|
|
152
|
+
fi
|
|
153
|
+
|
|
154
|
+
if (( failures > 0 )); then
|
|
155
|
+
echo "Doctor found ${failures} issue(s) and ${warnings} warning(s)."
|
|
156
|
+
exit 1
|
|
157
|
+
fi
|
|
158
|
+
|
|
159
|
+
if (( warnings > 0 )); then
|
|
160
|
+
echo "Doctor completed with ${warnings} warning(s)."
|
|
161
|
+
else
|
|
162
|
+
echo "Environment looks ready."
|
|
163
|
+
fi
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
platform="${1:-ios}"
|
|
5
|
+
|
|
6
|
+
case "$platform" in
|
|
7
|
+
ios)
|
|
8
|
+
runtime_label="iOS"
|
|
9
|
+
;;
|
|
10
|
+
watchos)
|
|
11
|
+
runtime_label="watchOS"
|
|
12
|
+
;;
|
|
13
|
+
tvos)
|
|
14
|
+
runtime_label="tvOS"
|
|
15
|
+
;;
|
|
16
|
+
macos)
|
|
17
|
+
printf '%s\n' "platform=macOS"
|
|
18
|
+
exit 0
|
|
19
|
+
;;
|
|
20
|
+
*)
|
|
21
|
+
printf 'Unsupported Apple platform for tests: %s\n' "$platform" >&2
|
|
22
|
+
exit 1
|
|
23
|
+
;;
|
|
24
|
+
esac
|
|
25
|
+
|
|
26
|
+
device_line="$(
|
|
27
|
+
xcrun simctl list devices available 2>/dev/null \
|
|
28
|
+
| awk -v label="$runtime_label" '
|
|
29
|
+
$0 ~ "^-- " label " " { active = 1; next }
|
|
30
|
+
$0 ~ "^-- " { active = 0 }
|
|
31
|
+
active && /^ / { print; exit }
|
|
32
|
+
'
|
|
33
|
+
)"
|
|
34
|
+
|
|
35
|
+
udid="$(printf '%s\n' "$device_line" | sed -E 's/.*\(([0-9A-Fa-f-]{36})\).*/\1/')"
|
|
36
|
+
|
|
37
|
+
if [[ -z "$udid" || "$udid" == "$device_line" ]]; then
|
|
38
|
+
printf 'No available %s simulator was found. Install a runtime and create a simulator, then rerun make test.\n' "$runtime_label" >&2
|
|
39
|
+
exit 1
|
|
40
|
+
fi
|
|
41
|
+
|
|
42
|
+
printf 'id=%s\n' "$udid"
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
require "json"
|
|
5
|
+
require "open3"
|
|
6
|
+
|
|
7
|
+
EXPECTED_BUNDLE_IDENTIFIER = "{{BUNDLE_IDENTIFIER}}"
|
|
8
|
+
WORKSPACE = "{{PROJECT_NAME}}.xcworkspace"
|
|
9
|
+
SCHEME = "{{SWIFT_MODULE_NAME}}"
|
|
10
|
+
|
|
11
|
+
def fail_identity(message, actual: nil)
|
|
12
|
+
warn "Apple release identity check failed: #{message}"
|
|
13
|
+
warn "Expected: #{EXPECTED_BUNDLE_IDENTIFIER}"
|
|
14
|
+
warn "Actual: #{actual || '<missing>'}"
|
|
15
|
+
exit 1
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def run_command(*command)
|
|
19
|
+
stdout, stderr, status = Open3.capture3(*command)
|
|
20
|
+
return stdout if status.success?
|
|
21
|
+
|
|
22
|
+
warn stderr unless stderr.empty?
|
|
23
|
+
fail_identity("command failed: #{command.join(' ')}")
|
|
24
|
+
rescue Errno::ENOENT => error
|
|
25
|
+
fail_identity("command is unavailable: #{error.message}")
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def verify_workspace
|
|
29
|
+
output = run_command(
|
|
30
|
+
"xcodebuild",
|
|
31
|
+
"-workspace", WORKSPACE,
|
|
32
|
+
"-scheme", SCHEME,
|
|
33
|
+
"-configuration", "Release",
|
|
34
|
+
"-showBuildSettings",
|
|
35
|
+
"-json"
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
settings = JSON.parse(output)
|
|
39
|
+
fail_identity("xcodebuild JSON root must be an array") unless settings.is_a?(Array)
|
|
40
|
+
|
|
41
|
+
app_targets = settings.select { |entry| entry["target"] == SCHEME }
|
|
42
|
+
unless app_targets.length == 1
|
|
43
|
+
fail_identity("expected exactly one Release build-settings entry for target #{SCHEME}")
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
actual = app_targets.first.fetch("buildSettings", {})["PRODUCT_BUNDLE_IDENTIFIER"]
|
|
47
|
+
unless actual == EXPECTED_BUNDLE_IDENTIFIER
|
|
48
|
+
fail_identity("Release build settings use the wrong bundle identifier", actual: actual)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
puts "Apple Release workspace identity verified: #{actual}"
|
|
52
|
+
rescue JSON::ParserError => error
|
|
53
|
+
fail_identity("xcodebuild returned invalid JSON: #{error.message}")
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def verify_archive(path)
|
|
57
|
+
info_plist = File.join(path, "Info.plist")
|
|
58
|
+
fail_identity("archive Info.plist is missing: #{info_plist}") unless File.file?(info_plist)
|
|
59
|
+
|
|
60
|
+
actual = run_command(
|
|
61
|
+
"/usr/libexec/PlistBuddy",
|
|
62
|
+
"-c", "Print :ApplicationProperties:CFBundleIdentifier",
|
|
63
|
+
info_plist
|
|
64
|
+
).strip
|
|
65
|
+
unless actual == EXPECTED_BUNDLE_IDENTIFIER
|
|
66
|
+
fail_identity("archive uses the wrong bundle identifier", actual: actual)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
puts "Apple Release archive identity verified: #{actual}"
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
mode = ARGV.shift
|
|
73
|
+
|
|
74
|
+
case mode
|
|
75
|
+
when "workspace"
|
|
76
|
+
fail_identity("workspace mode does not accept extra arguments") unless ARGV.empty?
|
|
77
|
+
verify_workspace
|
|
78
|
+
when "archive"
|
|
79
|
+
archive_path = ARGV.shift
|
|
80
|
+
if archive_path.to_s.empty? || !ARGV.empty?
|
|
81
|
+
fail_identity("archive mode requires exactly one xcarchive path")
|
|
82
|
+
end
|
|
83
|
+
verify_archive(archive_path)
|
|
84
|
+
else
|
|
85
|
+
warn "Usage: ./scripts/verify-release-identity workspace"
|
|
86
|
+
warn " ./scripts/verify-release-identity archive PATH_TO_XCARCHIVE"
|
|
87
|
+
exit 2
|
|
88
|
+
end
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "apple",
|
|
3
|
+
"description": "Swift + Tuist Apple app starter for mid-sized teams",
|
|
4
|
+
"category": "native",
|
|
5
|
+
"stack": ["Swift", "Tuist", "SwiftPM", "fastlane"],
|
|
6
|
+
"tags": ["apple", "swiftui", "tuist", "fastlane"],
|
|
7
|
+
"platforms": ["ios", "macos", "watchos", "tvos"],
|
|
8
|
+
"maturity": {
|
|
9
|
+
"level": "validated",
|
|
10
|
+
"summary": "Multi-platform Apple starter with doctor, generate, lint, test, beta, and release workflows."
|
|
11
|
+
},
|
|
12
|
+
"validation": {
|
|
13
|
+
"status": "generated-project-verified",
|
|
14
|
+
"verification_tier": "generated-project",
|
|
15
|
+
"evidence": [
|
|
16
|
+
"python unittest template rendering coverage",
|
|
17
|
+
"real generated project make generate/build/test validation"
|
|
18
|
+
]
|
|
19
|
+
},
|
|
20
|
+
"operating_assumptions": [
|
|
21
|
+
"The starter assumes a native Apple workstation with Xcode-oriented tooling and simulator-first validation.",
|
|
22
|
+
"Generated projects should keep bootstrap, doctor, generate, lint, test, beta, and release workflows explicit."
|
|
23
|
+
],
|
|
24
|
+
"workflow_labels": ["bootstrap", "doctor", "generate", "lint", "test", "build", "release", "open"],
|
|
25
|
+
"commands": {
|
|
26
|
+
"bootstrap": "make bootstrap",
|
|
27
|
+
"doctor": "make doctor",
|
|
28
|
+
"lint": "make lint",
|
|
29
|
+
"test": "make test",
|
|
30
|
+
"verify": "make verify",
|
|
31
|
+
"build": "make build",
|
|
32
|
+
"clean": "make clean",
|
|
33
|
+
"help": "make help"
|
|
34
|
+
},
|
|
35
|
+
"worktree": {
|
|
36
|
+
"support_level": "worktree-ready",
|
|
37
|
+
"isolation_dimensions": [
|
|
38
|
+
"caches",
|
|
39
|
+
"generated-output",
|
|
40
|
+
"local-config",
|
|
41
|
+
"installed-app-identity",
|
|
42
|
+
"cleanup",
|
|
43
|
+
"diagnostics"
|
|
44
|
+
],
|
|
45
|
+
"diagnostics": [
|
|
46
|
+
"make worktree-info",
|
|
47
|
+
"make worktree-doctor"
|
|
48
|
+
],
|
|
49
|
+
"cleanup": [
|
|
50
|
+
"make clean-worktree"
|
|
51
|
+
]
|
|
52
|
+
},
|
|
53
|
+
"variables": [
|
|
54
|
+
{
|
|
55
|
+
"name": "project_name",
|
|
56
|
+
"required": true,
|
|
57
|
+
"validator": "project-name"
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"name": "display_name",
|
|
61
|
+
"required": false,
|
|
62
|
+
"default_from": "project_name",
|
|
63
|
+
"validator": "display-name"
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"name": "apple_platform",
|
|
67
|
+
"required": false,
|
|
68
|
+
"default": "ios",
|
|
69
|
+
"validator": "choice",
|
|
70
|
+
"choices": ["ios", "macos", "watchos", "tvos"]
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"name": "bundle_identifier",
|
|
74
|
+
"required": true,
|
|
75
|
+
"prompt": "Bundle identifier: ",
|
|
76
|
+
"validator": "bundle-identifier"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"name": "organization_name",
|
|
80
|
+
"required": false,
|
|
81
|
+
"default": "Example Team",
|
|
82
|
+
"validator": "display-name"
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"name": "development_team",
|
|
86
|
+
"required": false,
|
|
87
|
+
"default": "DEVELOPMENT_TEAM_ID",
|
|
88
|
+
"validator": "team-id"
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"name": "minimum_os_version",
|
|
92
|
+
"required": false,
|
|
93
|
+
"default": "26.0",
|
|
94
|
+
"validator": "apple-version"
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"name": "swift_module_name",
|
|
98
|
+
"required": false,
|
|
99
|
+
"validator": "identifier"
|
|
100
|
+
}
|
|
101
|
+
],
|
|
102
|
+
"next_steps": [
|
|
103
|
+
"make bootstrap",
|
|
104
|
+
"make doctor",
|
|
105
|
+
"make generate",
|
|
106
|
+
"make lint",
|
|
107
|
+
"make test",
|
|
108
|
+
"open {{PROJECT_NAME}}.xcworkspace"
|
|
109
|
+
]
|
|
110
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
VITE_API_BASE_URL=http://localhost:8080
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
store-dir=.pnpm-store
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
ARG BUILDER_IMAGE=node:20-alpine
|
|
2
|
+
ARG RUNTIME_IMAGE=nginx:1.27-alpine
|
|
3
|
+
|
|
4
|
+
FROM ${BUILDER_IMAGE} AS builder
|
|
5
|
+
|
|
6
|
+
WORKDIR /app
|
|
7
|
+
|
|
8
|
+
COPY package.json pnpm-lock.yaml ./
|
|
9
|
+
RUN corepack enable && corepack prepare pnpm@9.9.0 --activate \
|
|
10
|
+
&& pnpm install --frozen-lockfile
|
|
11
|
+
|
|
12
|
+
COPY . .
|
|
13
|
+
RUN pnpm build
|
|
14
|
+
|
|
15
|
+
FROM ${RUNTIME_IMAGE}
|
|
16
|
+
|
|
17
|
+
COPY nginx.conf /etc/nginx/conf.d/default.conf
|
|
18
|
+
COPY --from=builder /app/dist /usr/share/nginx/html
|
|
19
|
+
|
|
20
|
+
EXPOSE 80
|
|
21
|
+
|
|
22
|
+
HEALTHCHECK --interval=1s --timeout=2s --start-period=2s --retries=30 \
|
|
23
|
+
CMD wget -q -O /dev/null http://127.0.0.1/ || exit 1
|
|
24
|
+
|
|
25
|
+
CMD ["nginx", "-g", "daemon off;"]
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
ARG DEV_BASE_IMAGE=node:20-bookworm
|
|
2
|
+
FROM ${DEV_BASE_IMAGE}
|
|
3
|
+
|
|
4
|
+
WORKDIR /workspace
|
|
5
|
+
|
|
6
|
+
RUN apt-get update \
|
|
7
|
+
&& apt-get install -y --no-install-recommends \
|
|
8
|
+
bash \
|
|
9
|
+
ca-certificates \
|
|
10
|
+
git \
|
|
11
|
+
libasound2 \
|
|
12
|
+
libatk-bridge2.0-0 \
|
|
13
|
+
libatk1.0-0 \
|
|
14
|
+
libatspi2.0-0 \
|
|
15
|
+
libcups2 \
|
|
16
|
+
libdbus-1-3 \
|
|
17
|
+
libgbm1 \
|
|
18
|
+
libgtk-3-0 \
|
|
19
|
+
libnspr4 \
|
|
20
|
+
libnss3 \
|
|
21
|
+
libxcomposite1 \
|
|
22
|
+
libxdamage1 \
|
|
23
|
+
libxfixes3 \
|
|
24
|
+
libxkbcommon0 \
|
|
25
|
+
libxrandr2 \
|
|
26
|
+
&& rm -rf /var/lib/apt/lists/*
|
|
27
|
+
|
|
28
|
+
RUN corepack enable && corepack prepare pnpm@9.9.0 --activate
|
|
29
|
+
|
|
30
|
+
ENV CI=1
|
|
31
|
+
ENV PNPM_STORE_DIR=/pnpm-store
|
|
32
|
+
ENV npm_config_store_dir=/pnpm-store
|
|
33
|
+
ENV PLAYWRIGHT_BROWSERS_PATH=/ms-playwright
|
|
34
|
+
|
|
35
|
+
CMD ["bash", "-lc", "if [ ! -d node_modules/.pnpm ]; then pnpm install --frozen-lockfile; fi; pnpm dev --host 0.0.0.0 --port 5173"]
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
ARG DEV_BASE_IMAGE=node:20-bookworm
|
|
2
|
+
FROM ${DEV_BASE_IMAGE}
|
|
3
|
+
|
|
4
|
+
WORKDIR /workspace
|
|
5
|
+
|
|
6
|
+
RUN apt-get update \
|
|
7
|
+
&& apt-get install -y --no-install-recommends \
|
|
8
|
+
bash \
|
|
9
|
+
ca-certificates \
|
|
10
|
+
git \
|
|
11
|
+
libasound2 \
|
|
12
|
+
libatk-bridge2.0-0 \
|
|
13
|
+
libatk1.0-0 \
|
|
14
|
+
libatspi2.0-0 \
|
|
15
|
+
libcups2 \
|
|
16
|
+
libdbus-1-3 \
|
|
17
|
+
libgbm1 \
|
|
18
|
+
libgtk-3-0 \
|
|
19
|
+
libnspr4 \
|
|
20
|
+
libnss3 \
|
|
21
|
+
libxcomposite1 \
|
|
22
|
+
libxdamage1 \
|
|
23
|
+
libxfixes3 \
|
|
24
|
+
libxkbcommon0 \
|
|
25
|
+
libxrandr2 \
|
|
26
|
+
&& rm -rf /var/lib/apt/lists/*
|
|
27
|
+
|
|
28
|
+
RUN corepack enable && corepack prepare pnpm@9.9.0 --activate
|
|
29
|
+
|
|
30
|
+
ENV CI=1
|
|
31
|
+
ENV PNPM_STORE_DIR=/pnpm-store
|
|
32
|
+
ENV npm_config_store_dir=/pnpm-store
|
|
33
|
+
ENV PLAYWRIGHT_BROWSERS_PATH=/ms-playwright
|
|
34
|
+
|
|
35
|
+
COPY package.json pnpm-lock.yaml ./
|
|
36
|
+
RUN pnpm install --frozen-lockfile \
|
|
37
|
+
&& pnpm exec playwright install chromium \
|
|
38
|
+
&& rm -rf node_modules
|
|
39
|
+
|
|
40
|
+
CMD ["bash", "-lc", "if [ ! -d node_modules/.pnpm ]; then pnpm install --frozen-lockfile; fi; pnpm dev --host 0.0.0.0 --port 5173"]
|