@flisk-sh/flisk 1.3.190 → 1.3.191
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/CHANGELOG.md +9 -9
- package/LICENSE +1 -1
- package/README.md +41 -41
- package/Tiltfile +2 -2
- package/cli/bin/{flisk.js → tdk.js} +1 -1
- package/cli/dist/cli.js +61 -0
- package/cli/dist/commands/__tests__/project-e2e-helpers.js +2 -2
- package/cli/dist/commands/completion.js +26 -26
- package/cli/dist/commands/config.js +1 -1
- package/cli/dist/commands/import.js +4 -4
- package/cli/dist/commands/maintainers.js +1 -1
- package/cli/dist/commands/mcp.js +1 -4
- package/cli/dist/commands/project.js +1 -1
- package/cli/dist/commands/resource.js +1 -1
- package/cli/dist/commands/ui.js +1 -1
- package/cli/dist/commands/up.js +77 -3
- package/cli/dist/commands/upgrade.js +28 -14
- package/cli/dist/generator/extension-fetch.js +3 -3
- package/cli/dist/generator/template-engine.js +8 -8
- package/cli/dist/mcp/tools.js +2 -5
- package/cli/dist/program.js +2 -0
- package/cli/dist/utils/cli-command.js +107 -0
- package/cli/dist/utils/cold-preflight.js +2 -1
- package/cli/dist/utils/constants.js +1 -1
- package/cli/dist/utils/doctor-fix.js +4 -5
- package/cli/dist/utils/doctor-runtime.js +1 -1
- package/cli/dist/utils/doctor-starlark.js +1 -1
- package/cli/dist/utils/doctor-wiring.js +2 -2
- package/cli/dist/utils/env-selection.js +201 -0
- package/cli/dist/utils/env-validator.js +6 -0
- package/cli/dist/utils/one-command.js +41 -0
- package/cli/dist/utils/platform.js +2 -6
- package/cli/dist/utils/project-templates.js +11 -7
- package/cli/dist/utils/secret-redaction.js +15 -6
- package/cli/dist/utils/service-manifest.js +1 -1
- package/cli/dist/utils/smoke.js +2 -2
- package/cli/dist/utils/tar.js +1 -1
- package/cli/dist-bundle/{chunk-BZ4H7MM4.js → chunk-42IVF3YT.js} +2 -2
- package/cli/dist-bundle/chunk-GOEBYLFN.js +2 -0
- package/cli/dist-bundle/chunk-KGKKDD4K.js +2 -0
- package/cli/dist-bundle/chunk-LCSYOVPP.js +438 -0
- package/cli/dist-bundle/chunk-R3OOKBPG.js +34 -0
- package/cli/dist-bundle/chunk-V6K6MWSE.js +75 -0
- package/cli/dist-bundle/cli.js +344 -372
- package/cli/dist-bundle/cold-preflight-WDQRF5G6.js +2 -0
- package/cli/dist-bundle/{extension-fetch-J4FFH7TJ.js → extension-fetch-6XNTDF44.js} +1 -1
- package/cli/dist-bundle/one-command-BSYKMVAQ.js +4 -0
- package/cli/dist-bundle/project-WPYN4RTL.js +2 -0
- package/cli/dist-bundle/project-templates-BHURA3LT.js +2 -0
- package/cli/dist-bundle/url-actions-D6ROTHZG.js +2 -0
- package/cli/package.json +2 -4
- package/cli/shared-platform-engineering/docker-templates/bun-hoisted-symlink-fix.sh +1 -1
- package/cli/shared-platform-engineering/docker-templates/infisical-entrypoint.sh +1 -1
- package/cli/shared-platform-engineering/docker-templates/install-deps.sh +1 -1
- package/cli/shared-platform-engineering/docker-templates/prisma-bun-client-link-fix.sh +1 -1
- package/cli/shared-platform-engineering/docker-templates/prisma-normalize-client.sh +1 -1
- package/cli/templates/Tiltfile.hbs +1 -1
- package/discovery/AGENTS.md +1 -1
- package/discovery/TILT_DISCOVERY.star +3 -3
- package/discovery/Tiltfile +3 -3
- package/discovery/config.star +1 -1
- package/discovery/constants.star +1 -1
- package/discovery/discovery_orchestrator.star +1 -1
- package/discovery/identity-management-frontend/service.yaml +1 -1
- package/discovery/json_manifest_scanner.star +1 -1
- package/discovery/manifest/constants.star +1 -1
- package/discovery/manifest/loading.star +2 -2
- package/discovery/manifest/normalize.star +1 -1
- package/discovery/registry.star +1 -1
- package/discovery/resource_snapshot.py +1 -1
- package/discovery/resource_snapshot.star +1 -1
- package/discovery/test_resource_snapshot.py +2 -2
- package/engine/AGENTS.md +7 -7
- package/engine/README.md +1 -1
- package/engine/Tiltfile +3 -3
- package/engine/assets/docker/wake-gateway/decide.ts +1 -1
- package/engine/assets/docker/wake-gateway/server.ts +1 -1
- package/engine/assets/scripts/mac-m1-resource-monitor.sh +8 -8
- package/engine/lifecycle/orchestrator.star +6 -6
- package/engine/paths.star +1 -1
- package/engine/schemas/project-schema.json +2 -2
- package/engine/schemas/service-schema.json +3 -3
- package/engine/scripts/debug-container.sh +2 -2
- package/engine/spec.master +1 -1
- package/engine/topologies/platform/docker/compose/compose.star +1 -1
- package/engine/topologies/platform/docker/compose/traefik_standalone.star +1 -1
- package/engine/topologies/platform/docker/config/healthcheck.star +1 -1
- package/engine/topologies/platform/docker/constants.star +2 -2
- package/engine/topologies/platform/docker/dockerfile/language_dockerfile.star +3 -3
- package/engine/topologies/platform/docker/layers/l1_base_layers.star +1 -1
- package/engine/topologies/platform/docker/layers/l2_dependency_layers.star +1 -1
- package/engine/topologies/platform/docker/layers/l3_builder_layers.star +1 -1
- package/engine/topologies/platform/docker/layers/l4_runtime_layers.star +1 -1
- package/engine/topologies/platform/docker/layers/prisma/constants.star +1 -1
- package/engine/topologies/platform/docker/layers/prisma/prisma_build.star +2 -2
- package/engine/topologies/platform/docker/networking/api_path_constants.star +1 -1
- package/engine/topologies/platform/docker/networking/traefik_static_routes.star +1 -1
- package/engine/topologies/platform/docker/secrets/env_secrets.star +1 -1
- package/engine/topologies/platform/docker/secrets/infisical.star +1 -1
- package/engine/topologies/platform/security/secrets.star +1 -1
- package/engine/topologies/tilt/common/utils.star +5 -3
- package/engine/topologies/tilt/common/utils_debug.star +1 -1
- package/engine/topologies/tilt/common/utils_deterministic.star +1 -1
- package/engine/topologies/tilt/common/utils_env.star +23 -3
- package/engine/topologies/tilt/config/profiles.star +1 -1
- package/engine/topologies/tilt/generators/infisical/organization.star +1 -1
- package/engine/topologies/tilt/generators/npmrc.star +4 -4
- package/engine/topologies/tilt/generators/typescript/backend_tsconfig.star +1 -1
- package/engine/topologies/tilt/generators/vite/helpers.star +1 -1
- package/engine/topologies/tilt/generators/vite/templates.star +1 -1
- package/engine/topologies/tilt/manifest/json_to_yaml.py +2 -2
- package/engine/topologies/tilt/manifest/loader.star +1 -1
- package/engine/topologies/tilt/manifest/schema.star +2 -2
- package/engine/topologies/tilt/manifest/tests/test_loader_parser.star +3 -3
- package/engine/topologies/tilt/manifest/tests/test_validator.star +2 -2
- package/engine/topologies/tilt/manifest/yaml_to_json.py +1 -1
- package/engine/topologies/tilt/resources/databases.star +1 -1
- package/engine/topologies/tilt/resources/infra-loader.star +8 -6
- package/engine/topologies/tilt/resources/libs_paths.star +1 -1
- package/engine/topologies/tilt/resources/libs_resource_definition.star +1 -1
- package/engine/topologies/tilt/resources/libs_setup.star +1 -1
- package/engine/topologies/tilt/resources/orchestrator/apply_compose_resource_registration.star +13 -8
- package/engine/topologies/tilt/resources/orchestrator/generators/frontend.star +1 -1
- package/engine/topologies/tilt/resources/orchestrator/generators/manifest_resource.star +1 -1
- package/engine/topologies/tilt/resources/watchers.star +7 -7
- package/engine/where-things-live.star +1 -1
- package/examples/tdk-example/LICENSE +1 -1
- package/examples/tdk-example/Tiltfile +7 -7
- package/examples/tdk-example/services/shop/orders-api/service.json +1 -1
- package/examples/tdk-example/services/shop/orders-app/index.html +1 -1
- package/examples/tdk-example/services/shop/orders-app/service.json +1 -1
- package/examples/tdk-example/services/shop/orders-worker/service.json +1 -1
- package/ext/Tiltfile +3 -3
- package/ext/ide-components/code_viewer/server.py +1 -1
- package/ext/ide-components/config_inspector/server.py +1 -1
- package/ext/ide-components/file_browser/server.py +1 -1
- package/ext/ide-components/shared/config_service.py +2 -2
- package/ext/ide-components/shared/file_utils.py +2 -2
- package/ext/ide-components/shared/http_utils.py +1 -1
- package/ext/ide-components/shared/syntax_highlighter.py +1 -1
- package/ext/ide-components/shared/template_engine.py +1 -1
- package/ext/ide-components/shared/templates/base.html +1 -1
- package/ext/ide-components/shared/test_config_service.py +1 -1
- package/ext/ide-components/shared/tilt_integration.py +1 -1
- package/ext/ui-enhancements/tiltfile.py +1 -1
- package/package.json +6 -10
- package/shared-platform-engineering/docker-templates/bun-hoisted-symlink-fix.sh +1 -1
- package/shared-platform-engineering/docker-templates/infisical-entrypoint.sh +1 -1
- package/shared-platform-engineering/docker-templates/install-deps.sh +1 -1
- package/shared-platform-engineering/docker-templates/prisma-bun-client-link-fix.sh +1 -1
- package/shared-platform-engineering/docker-templates/prisma-normalize-client.sh +1 -1
- package/cli/dist-bundle/chunk-CLCUIDBH.js +0 -510
- package/cli/dist-bundle/cold-preflight-SY26O2IG.js +0 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
Notable changes to the `flisk` CLI. Versions match [npm](https://www.npmjs.com/package/@flisk-sh/flisk?activeTab=versions) and the [binary releases](https://github.com/flisk-sh/
|
|
3
|
+
Notable changes to the `flisk` CLI. Versions match [npm](https://www.npmjs.com/package/@flisk-sh/flisk?activeTab=versions) and the [binary releases](https://github.com/flisk-sh/releases/releases).
|
|
4
4
|
|
|
5
5
|
## 1.3.189 (2026-10-21)
|
|
6
6
|
|
|
@@ -12,7 +12,7 @@ Notable changes to the `flisk` CLI. Versions match [npm](https://www.npmjs.com/p
|
|
|
12
12
|
## 1.3.188 (2026-10-20)
|
|
13
13
|
|
|
14
14
|
- Security: the BYO examples install `certifi` 2026.10.19 now (was 2026.7.22). The older bundle shipped the `emSign ECC Root CA - G3` root, and the eight eMudhra intermediate CAs that chain to it had their private keys compromised and were revoked, so anyone holding one of those keys could mint a certificate for any hostname. Advisory GHSA-6q48-6c7w-9gw2 (#1779).
|
|
15
|
-
- Security: `vite` moves to 8.3.3. The `launch-editor` it bundles had three Windows command-injection advisories: CVE-2026-112942, CVE-2026-112943 and CVE-2026-112944. Both advisories are tracked on the [security page](https://github.com/
|
|
15
|
+
- Security: `vite` moves to 8.3.3. The `launch-editor` it bundles had three Windows command-injection advisories: CVE-2026-112942, CVE-2026-112943 and CVE-2026-112944. Both advisories are tracked on the [security page](https://github.com/tdk-landscape/tdk-cli-core/security) (#1780).
|
|
16
16
|
- `cli/pnpm-lock.yaml` is regenerated. It had drifted from `cli/package.json`, so `pnpm install --frozen-lockfile` failed there; it tracks the manifest again now (#1780).
|
|
17
17
|
|
|
18
18
|
## 1.3.151 (2026-10-12)
|
|
@@ -31,7 +31,7 @@ Notable changes to the `flisk` CLI. Versions match [npm](https://www.npmjs.com/p
|
|
|
31
31
|
|
|
32
32
|
## 1.3.130 (2026-10-08)
|
|
33
33
|
|
|
34
|
-
- Releases now come with a signed checksum list: `checksums.txt.sigstore.json` (keyless Sigstore signature from the release workflow) is attached next to the binaries in [tdk-cli-releases](https://github.com/
|
|
34
|
+
- Releases now come with a signed checksum list: `checksums.txt.sigstore.json` (keyless Sigstore signature from the release workflow) is attached next to the binaries in [tdk-cli-releases](https://github.com/tdk-landscape/tdk-cli-releases/releases) and to a release with the same tag here. How to verify is in [docs/security.md](docs/security.md#releases). The binaries themselves are not signed individually (#869, #840).
|
|
35
35
|
- `flisk resource` for a Python backend now writes `pytest==9.0.3` in the generated `pyproject.toml` (was 8.3.4, affected by GHSA-6w46-j5rx-g56g) (#867).
|
|
36
36
|
- Examples: bumped past open Dependabot alerts: puma 7.2.1 (Sinatra), NestJS 11.1.18, drizzle-orm 0.45.2 and pytest 9.0.3 (#867).
|
|
37
37
|
- Supply chain: every checked-in Dockerfile base image is pinned to a digest (#865).
|
|
@@ -55,12 +55,12 @@ Notable changes to the `flisk` CLI. Versions match [npm](https://www.npmjs.com/p
|
|
|
55
55
|
|
|
56
56
|
## 1.3.126 (2026-10-08)
|
|
57
57
|
|
|
58
|
-
- Security: fixes [GHSA-phgf-pww4-7jxc](https://github.com/
|
|
58
|
+
- Security: fixes [GHSA-phgf-pww4-7jxc](https://github.com/tdk-landscape/tdk-cli-core/security/advisories/GHSA-phgf-pww4-7jxc) (all earlier versions). A line break in a `service.json` value was written into the generated Docker Compose file and could add keys such as `privileged: true` to a service when you ran `flisk up` or `tilt up` on a repository you did not write. `flisk` and the Tilt engine now refuse any `service.json` string key or value that contains a line break (including U+0085, U+2028 and U+2029) or another control character, and `healthCheckPath`, `traefik.host`, `traefik.pathPrefix`, `traefik.healthCheck`, `nats.queueGroup`, `databaseName`, `stack` and `image` must also match a pattern. `smoke` is exempt. `flisk up` and `flisk config regenerate` stop with an error that names the field and does not print the value, and `tilt up` stops the same way. Upgrade, and check `service.json` files from repositories you did not write.
|
|
59
59
|
- `flisk up`, `flisk status` and `flisk ui` now treat a container as ready only once its Docker health check passes. Tilt reports a running container as ready even while its health check is starting or failing, so a Postgres that never accepted connections counted as up and its dependents looked ready. A health check that is still starting now counts as starting (`waiting for postgres` on dependents), and a failing one makes `flisk up` stop with `✗ postgres failed: container is running, but its health check is failing`, the services it blocks, and how many dependents are not ready. Containers without a health check (BYO images) are unchanged. Part of #683.
|
|
60
60
|
|
|
61
61
|
## 1.3.125 (2026-10-08)
|
|
62
62
|
|
|
63
|
-
- `flisk upgrade` no longer falls back to installing from the repository's moving GitHub default branch when the npm or Bun registry install fails. It reports the original install error, exits non-zero and prints the published-package command (`npm install -g @
|
|
63
|
+
- `flisk upgrade` no longer falls back to installing from the repository's moving GitHub default branch when the npm or Bun registry install fails. It reports the original install error, exits non-zero and prints the published-package command (`npm install -g @tdk-landscape/tdk-cli-core@latest` or `bun install -g @tdk-landscape/tdk-cli-core@latest`). npm `EACCES`/`EPERM` failures also point at npm's global-prefix docs and the official installer. Fixes #702.
|
|
64
64
|
- `flisk networks` now lists routable frontend, backend and MCP services that omit `basePath`, using the same default route the generator uses. `--json`, `--raw` and stack filtering are unchanged, and the advice that `basePath` is required is gone. Fixes #719.
|
|
65
65
|
- `flisk down`, `flisk eject` and `flisk logs` report a missing or invalid project root with the shared error and suggestions, before any Docker or Tilt check. `down --json` and `logs --json` return it in one schema-versioned envelope. Fixes #722.
|
|
66
66
|
- Registering an SDK resource whose path has no `service.json` now stops before scaffolding with the path and the next step (add a `service.json` with `"appType": "sdk"`, then rerun), instead of a raw `Object.entries` exception. Fixes #714.
|
|
@@ -152,7 +152,7 @@ Notable changes to the `flisk` CLI. Versions match [npm](https://www.npmjs.com/p
|
|
|
152
152
|
|
|
153
153
|
## 1.3.111 (2026-10-05)
|
|
154
154
|
|
|
155
|
-
- `flisk config regenerate` now restores a root `.tiltignore` that Flisk wrote (it carries the `SYSTEM-GENERATED BY Flisk CLI` header) and that was edited by hand, and prints `Restored: .tiltignore → project root (hand edits discarded)`. Before, it only copied the file when none existed, so `flisk config verify` kept failing with `Out of sync: .tiltignore (run 'flisk config regenerate')` after the advice was followed. A root `.tiltignore` without the header is still never overwritten, and plain `flisk project --yes` still does not overwrite an existing one. Docs: `docs/adopt-
|
|
155
|
+
- `flisk config regenerate` now restores a root `.tiltignore` that Flisk wrote (it carries the `SYSTEM-GENERATED BY Flisk CLI` header) and that was edited by hand, and prints `Restored: .tiltignore → project root (hand edits discarded)`. Before, it only copied the file when none existed, so `flisk config verify` kept failing with `Out of sync: .tiltignore (run 'flisk config regenerate')` after the advice was followed. A root `.tiltignore` without the header is still never overwritten, and plain `flisk project --yes` still does not overwrite an existing one. Docs: `docs/adopt-tdk.md` now quotes the current `flisk doctor` unknown-field wording. (#615)
|
|
156
156
|
- `flisk doctor` now checks the project's own resource configs for duplicates. Two resources with the same `appName` fail (`Duplicate resource names`, naming both `service.json` paths): the name becomes the Compose service and Traefik router, so they collide, and before nothing reported it. Two backend, mcp or routed bring-your-own resources on the same `port` give a warning, not a failure (`Duplicate resource ports`): service ports are not published on the host and each service has its own container, so the pair can run, but it is usually a copied `service.json`. Frontends, workers, libraries and a missing `port` are ignored. Fixes #76. (#609)
|
|
157
157
|
- `flisk doctor` no longer fails with `N resources without a package.json` for a bring-your-own resource. A bring-your-own resource (`--image`, `--dockerfile` or `buildContext`) is a plain container: its image is pulled or built from its own Dockerfile, never from the generated Dockerfile that copies a `package.json`, so the check was a false positive that made `flisk doctor` (and CI recipes that gate on it) exit non-zero right after wrapping an existing service. Backend, frontend, worker, migrator, mcp, library and sdk resources without a `package.json` still fail; Python, Go and Rust backends were already exempt. The other doctor checks were run on a project with only bring-your-own resources and report nothing. Fixes #599. (#600)
|
|
158
158
|
- A scaffolded frontend now says why `bun run build` / `bun run dev` cannot run on the host before `flisk up`: the `.autogenerated/vite.config.*.autogenerated.ts` files its scripts point at are written by the engine (Tilt) when `flisk up` loads the resource, and neither `flisk resource` nor `flisk config regenerate` creates them. Before, `vite` stopped with an esbuild `Could not resolve` stack trace. New `predev`/`prebuild` scripts print what is missing and how to get it; once the file exists (and inside the engine image build) they pass silently. Existing frontends need the two scripts added by hand. Backend, worker and mcp scaffolds are unchanged. Fixes #592. (#594)
|
|
@@ -317,7 +317,7 @@ Notable changes to the `flisk` CLI. Versions match [npm](https://www.npmjs.com/p
|
|
|
317
317
|
- Add an opt-in Python backend: `flisk resource <name> --type backend --language python` scaffolds a FastAPI service (`pyproject.toml`, `src/main.py`, a pytest smoke test) and Flisk generates its Docker image (`python:3.12-slim`, with `test` and `production` stages). The choice is saved as `language` in `service.json` only when you pass the flag; omitting it keeps the existing Bun + Hono output byte for byte. Unknown ids and `--language` on non-backend types fail before any file is written. A runnable example is in `examples/one-backend-python`, and the provider contract is in `docs/backend-language-providers.md`. Node.js is not included. (#227)
|
|
318
318
|
- `flisk doctor` no longer reports "resource without a package.json" for a Python backend, and a Python service missing `pyproject.toml` or `src/main.py` now fails early with the missing file named.
|
|
319
319
|
- Live reload now works: Tilt `live_update` sync paths were relative to the project root while Tilt resolves them against `.tdk/.tdk-out`, so they never matched and every source edit rebuilt the image ("Found file(s) not matching any sync"). An edit under `src/` is now copied into the running container without a rebuild, for Bun and Python services. Dependency file changes (`package.json`, `pyproject.toml`) still rebuild the image. (#228, #230)
|
|
320
|
-
- The service schema (`https://
|
|
320
|
+
- The service schema (`https://tdk-landscape.github.io/schema.service.json`) gains the `language` field (`bun`, `python`).
|
|
321
321
|
- Fix the routed health URL in the `one-backend` example README.
|
|
322
322
|
- CI: WSL2 landscape gate and native Windows refusal (#220, #222, #223, #224).
|
|
323
323
|
|
|
@@ -449,7 +449,7 @@ Notable changes to the `flisk` CLI. Versions match [npm](https://www.npmjs.com/p
|
|
|
449
449
|
- `flisk up` works in a fresh project. The Tiltfile no longer aborts when a stack listed in `project.json` has no directory yet, and stacks created after `flisk project` are added to the `pre_alpha` phase so they actually start.
|
|
450
450
|
- Prompts fail with an error and exit 1 when there's no input to read (CI, `< /dev/null`). Before, `flisk resource` printed its summary, exited 0 and created nothing.
|
|
451
451
|
- `flisk help`: one-line header with the version, instead of a misaligned ASCII box and doubled icons.
|
|
452
|
-
- One installer: `install.sh` in this repo hands off to `https://
|
|
452
|
+
- One installer: `install.sh` in this repo hands off to `https://tdk-landscape.github.io/install.sh`, which verifies release checksums. `flisk upgrade` verifies checksums too.
|
|
453
453
|
|
|
454
454
|
## 1.3.51 (2026-09-27)
|
|
455
455
|
|
|
@@ -489,4 +489,4 @@ Notable changes to the `flisk` CLI. Versions match [npm](https://www.npmjs.com/p
|
|
|
489
489
|
|
|
490
490
|
## Earlier
|
|
491
491
|
|
|
492
|
-
Releases before 1.3.33 are listed in the [git history](https://github.com/
|
|
492
|
+
Releases before 1.3.33 are listed in the [git history](https://github.com/tdk-landscape/tdk-cli-core/commits/main).
|
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -36,7 +36,7 @@ English | [简体中文](docs/README-zh_cn.md) | [繁體中文](docs/README-zh_t
|
|
|
36
36
|
|
|
37
37
|
<br />
|
|
38
38
|
|
|
39
|
-
[Website](https://
|
|
39
|
+
[Website](https://flisk.sh/) · [Quickstart](https://flisk.sh/docs/quickstart/) · [Examples](https://flisk.sh/docs/examples/) · [Awesome Flisk](https://github.com/flisk-sh/awesome-tdk-framework) · [Demo](https://flisk-sh.github.io/tdk-demo-animation/) · [Report a bug](https://github.com/flisk-sh/flisk/issues)
|
|
40
40
|
|
|
41
41
|
</div>
|
|
42
42
|
|
|
@@ -48,46 +48,46 @@ LLMs are brilliant at writing application logic, but notoriously terrible at mai
|
|
|
48
48
|
|
|
49
49
|
## Build your app in one click
|
|
50
50
|
|
|
51
|
-
Fastest way (recommended): open the [Flisk starter](https://github.com/
|
|
51
|
+
Fastest way (recommended): open the [Flisk starter](https://github.com/flisk-sh/tdk-cli-starter) in a ready-to-use environment.
|
|
52
52
|
|
|
53
53
|
<table align="center">
|
|
54
|
-
<tr><td align="center" valign="middle" width="33%"><a href="https://v0.dev/"><img src="https://raw.githubusercontent.com/
|
|
55
|
-
<tr><td align="center" valign="middle" width="33%"><a href="https://bolt.new/"><img src="https://raw.githubusercontent.com/
|
|
54
|
+
<tr><td align="center" valign="middle" width="33%"><a href="https://v0.dev/"><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/build-v0.svg" alt="Build app with v0" height="32"></a></td><td align="center" valign="middle" width="33%"><a href="https://gitpod.io/#https://github.com/flisk-sh/tdk-cli-starter"><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/build-gitpod.svg" alt="Build app with Gitpod" height="32"></a></td><td align="center" valign="middle" width="33%"><a href="https://lovable.dev/"><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/build-lovable.svg" alt="Build app with Lovable" height="32"></a></td></tr>
|
|
55
|
+
<tr><td align="center" valign="middle" width="33%"><a href="https://bolt.new/"><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/build-bolt.svg" alt="Build app with Bolt.new" height="32"></a></td><td align="center" valign="middle" width="33%"><a href="vscode://vscode.git/clone?url=https://github.com/flisk-sh/tdk-cli-starter"><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/build-vscode.svg" alt="Build app with VS Code" height="32"></a></td><td align="center" valign="middle" width="33%"><a href="https://github.com/codespaces/new/flisk-sh/tdk-cli-starter"><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/build-codespaces.svg" alt="Build app with Codespaces" height="32"></a></td></tr>
|
|
56
56
|
</table>
|
|
57
57
|
|
|
58
58
|
<details>
|
|
59
59
|
<summary>More build tools (7)</summary>
|
|
60
60
|
|
|
61
61
|
<table align="center">
|
|
62
|
-
<tr><td align="center" valign="middle" width="33%"><a href="https://replit.com/github/
|
|
63
|
-
<tr><td align="center" valign="middle" width="33%"><a href="https://stackblitz.com/github/
|
|
64
|
-
<tr><td align="center" valign="middle" width="33%"><a href="https://studio.firebase.google.com/import?url=https://github.com/
|
|
62
|
+
<tr><td align="center" valign="middle" width="33%"><a href="https://replit.com/github/flisk-sh/tdk-cli-starter"><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/build-replit.svg" alt="Build app with Replit" height="32"></a></td><td align="center" valign="middle" width="33%"><a href="https://glitch.com/edit/#!/import/github/flisk-sh/tdk-cli-starter"><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/build-glitch.svg" alt="Build app with Glitch" height="32"></a></td><td align="center" valign="middle" width="33%"><a href="https://devpod.sh/open#https://github.com/flisk-sh/tdk-cli-starter"><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/build-devpod.svg" alt="Build app with DevPod" height="32"></a></td></tr>
|
|
63
|
+
<tr><td align="center" valign="middle" width="33%"><a href="https://stackblitz.com/github/flisk-sh/tdk-cli-starter"><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/build-stackblitz.svg" alt="Build app with StackBlitz" height="32"></a></td><td align="center" valign="middle" width="33%"><a href="https://codesandbox.io/p/github/flisk-sh/tdk-cli-starter"><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/build-codesandbox.svg" alt="Build app with CodeSandbox" height="32"></a></td><td align="center" valign="middle" width="33%"><a href="https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/flisk-sh/tdk-cli-starter"><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/build-dev-containers.svg" alt="Build app with Dev Containers" height="32"></a></td></tr>
|
|
64
|
+
<tr><td align="center" valign="middle" width="33%"><a href="https://studio.firebase.google.com/import?url=https://github.com/flisk-sh/tdk-cli-starter"><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/build-firebase-studio.svg" alt="Build app with Firebase Studio" height="32"></a></td></tr>
|
|
65
65
|
</table>
|
|
66
66
|
|
|
67
67
|
</details>
|
|
68
68
|
|
|
69
69
|
<table align="center">
|
|
70
|
-
<tr><td align="center" valign="middle" width="33%"><a href="https://grok.com/?q=Build%20an%20app%20with%20the%
|
|
70
|
+
<tr><td align="center" valign="middle" width="33%"><a href="https://grok.com/?q=Build%20an%20app%20with%20the%20Flisk%20CLI.%20Read%20the%20setup%20guide%20at%20https%3A%2F%2Fgithub.com%2Fflisk-sh%2Ftdk-cli-starter%20and%20walk%20me%20through%20it%20step%20by%20step."><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/ai-grok.svg" alt="Build app with Grok" height="32"></a></td><td align="center" valign="middle" width="33%"><a href="https://claude.ai/new?q=Build%20an%20app%20with%20the%20Flisk%20CLI.%20Read%20the%20setup%20guide%20at%20https%3A%2F%2Fgithub.com%2Fflisk-sh%2Ftdk-cli-starter%20and%20walk%20me%20through%20it%20step%20by%20step."><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/ai-claude.svg" alt="Build app with Claude" height="32"></a></td><td align="center" valign="middle" width="33%"><a href="https://chatgpt.com/?q=Build%20an%20app%20with%20the%20Flisk%20CLI.%20Read%20the%20setup%20guide%20at%20https%3A%2F%2Fgithub.com%2Fflisk-sh%2Ftdk-cli-starter%20and%20walk%20me%20through%20it%20step%20by%20step."><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/ai-chatgpt.svg" alt="Build app with ChatGPT" height="32"></a></td></tr>
|
|
71
71
|
</table>
|
|
72
72
|
|
|
73
73
|
### Deploy
|
|
74
74
|
|
|
75
75
|
<table align="center">
|
|
76
|
-
<tr><td align="center" valign="middle" width="33%"><a href="https://claude.ai/new?q=Deploy%20the%20app%20I%20built%20with%20the%
|
|
77
|
-
<tr><td align="center" valign="middle" width="33%"><a href="https://claude.ai/new?q=Deploy%20the%20app%20I%20built%20with%20the%
|
|
78
|
-
<tr><td align="center" valign="middle" width="33%"><a href="https://claude.ai/new?q=Deploy%20the%20app%20I%20built%20with%20the%
|
|
76
|
+
<tr><td align="center" valign="middle" width="33%"><a href="https://claude.ai/new?q=Deploy%20the%20app%20I%20built%20with%20the%20Flisk%20CLI%20to%20AWS.%20Read%20the%20setup%20guide%20at%20https%3A%2F%2Fgithub.com%2Fflisk-sh%2Ftdk-cli-starter%20and%20walk%20me%20through%20it%20step%20by%20step."><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/deploy-aws.svg" alt="Deploy to AWS" height="32"></a></td><td align="center" valign="middle" width="33%"><a href="https://claude.ai/new?q=Deploy%20the%20app%20I%20built%20with%20the%20Flisk%20CLI%20to%20Azure.%20Read%20the%20setup%20guide%20at%20https%3A%2F%2Fgithub.com%2Fflisk-sh%2Ftdk-cli-starter%20and%20walk%20me%20through%20it%20step%20by%20step."><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/deploy-azure.svg" alt="Deploy to Azure" height="32"></a></td><td align="center" valign="middle" width="33%"><a href="https://claude.ai/new?q=Deploy%20the%20app%20I%20built%20with%20the%20Flisk%20CLI%20to%20Vercel.%20Read%20the%20setup%20guide%20at%20https%3A%2F%2Fgithub.com%2Fflisk-sh%2Ftdk-cli-starter%20and%20walk%20me%20through%20it%20step%20by%20step."><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/deploy-vercel.svg" alt="Deploy to Vercel" height="32"></a></td></tr>
|
|
77
|
+
<tr><td align="center" valign="middle" width="33%"><a href="https://claude.ai/new?q=Deploy%20the%20app%20I%20built%20with%20the%20Flisk%20CLI%20to%20Netlify.%20Read%20the%20setup%20guide%20at%20https%3A%2F%2Fgithub.com%2Fflisk-sh%2Ftdk-cli-starter%20and%20walk%20me%20through%20it%20step%20by%20step."><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/deploy-netlify.svg" alt="Deploy to Netlify" height="32"></a></td><td align="center" valign="middle" width="33%"><a href="https://claude.ai/new?q=Deploy%20the%20app%20I%20built%20with%20the%20Flisk%20CLI%20to%20Heroku.%20Read%20the%20setup%20guide%20at%20https%3A%2F%2Fgithub.com%2Fflisk-sh%2Ftdk-cli-starter%20and%20walk%20me%20through%20it%20step%20by%20step."><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/deploy-heroku.svg" alt="Deploy to Heroku" height="32"></a></td><td align="center" valign="middle" width="33%"><a href="https://claude.ai/new?q=Deploy%20the%20app%20I%20built%20with%20the%20Flisk%20CLI%20to%20Railway.%20Read%20the%20setup%20guide%20at%20https%3A%2F%2Fgithub.com%2Fflisk-sh%2Ftdk-cli-starter%20and%20walk%20me%20through%20it%20step%20by%20step."><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/deploy-railway.svg" alt="Deploy to Railway" height="32"></a></td></tr>
|
|
78
|
+
<tr><td align="center" valign="middle" width="33%"><a href="https://claude.ai/new?q=Deploy%20the%20app%20I%20built%20with%20the%20Flisk%20CLI%20to%20Cloudflare.%20Read%20the%20setup%20guide%20at%20https%3A%2F%2Fgithub.com%2Fflisk-sh%2Ftdk-cli-starter%20and%20walk%20me%20through%20it%20step%20by%20step."><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/deploy-cloudflare.svg" alt="Deploy to Cloudflare" height="32"></a></td><td align="center" valign="middle" width="33%"><a href="https://claude.ai/new?q=Deploy%20the%20app%20I%20built%20with%20the%20Flisk%20CLI%20to%20DigitalOcean.%20Read%20the%20setup%20guide%20at%20https%3A%2F%2Fgithub.com%2Fflisk-sh%2Ftdk-cli-starter%20and%20walk%20me%20through%20it%20step%20by%20step."><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/deploy-digitalocean.svg" alt="Deploy to DigitalOcean" height="32"></a></td><td align="center" valign="middle" width="33%"><a href="https://claude.ai/new?q=Deploy%20the%20app%20I%20built%20with%20the%20Flisk%20CLI%20to%20Google%20Cloud.%20Read%20the%20setup%20guide%20at%20https%3A%2F%2Fgithub.com%2Fflisk-sh%2Ftdk-cli-starter%20and%20walk%20me%20through%20it%20step%20by%20step."><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/deploy-google-cloud.svg" alt="Deploy to Google Cloud" height="32"></a></td></tr>
|
|
79
79
|
</table>
|
|
80
80
|
|
|
81
81
|
<details>
|
|
82
82
|
<summary>More clouds and hosts (18)</summary>
|
|
83
83
|
|
|
84
84
|
<table align="center">
|
|
85
|
-
<tr><td align="center" valign="middle" width="33%"><a href="https://claude.ai/new?q=Deploy%20the%20app%20I%20built%20with%20the%
|
|
86
|
-
<tr><td align="center" valign="middle" width="33%"><a href="https://claude.ai/new?q=Deploy%20the%20app%20I%20built%20with%20the%
|
|
87
|
-
<tr><td align="center" valign="middle" width="33%"><a href="https://claude.ai/new?q=Deploy%20the%20app%20I%20built%20with%20the%
|
|
88
|
-
<tr><td align="center" valign="middle" width="33%"><a href="https://claude.ai/new?q=Deploy%20the%20app%20I%20built%20with%20the%
|
|
89
|
-
<tr><td align="center" valign="middle" width="33%"><a href="https://claude.ai/new?q=Deploy%20the%20app%20I%20built%20with%20the%
|
|
90
|
-
<tr><td align="center" valign="middle" width="33%"><a href="https://claude.ai/new?q=Deploy%20the%20app%20I%20built%20with%20the%
|
|
85
|
+
<tr><td align="center" valign="middle" width="33%"><a href="https://claude.ai/new?q=Deploy%20the%20app%20I%20built%20with%20the%20Flisk%20CLI%20to%20SSH.%20Read%20the%20setup%20guide%20at%20https%3A%2F%2Fgithub.com%2Fflisk-sh%2Ftdk-cli-starter%20and%20walk%20me%20through%20it%20step%20by%20step."><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/deploy-ssh.svg" alt="Deploy to SSH" height="32"></a></td><td align="center" valign="middle" width="33%"><a href="https://claude.ai/new?q=Deploy%20the%20app%20I%20built%20with%20the%20Flisk%20CLI%20to%20Civo.%20Read%20the%20setup%20guide%20at%20https%3A%2F%2Fgithub.com%2Fflisk-sh%2Ftdk-cli-starter%20and%20walk%20me%20through%20it%20step%20by%20step."><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/deploy-civo.svg" alt="Deploy to Civo" height="32"></a></td><td align="center" valign="middle" width="33%"><a href="https://claude.ai/new?q=Deploy%20the%20app%20I%20built%20with%20the%20Flisk%20CLI%20to%20Flow.%20Read%20the%20setup%20guide%20at%20https%3A%2F%2Fgithub.com%2Fflisk-sh%2Ftdk-cli-starter%20and%20walk%20me%20through%20it%20step%20by%20step."><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/deploy-flow.svg" alt="Deploy to Flow" height="32"></a></td></tr>
|
|
86
|
+
<tr><td align="center" valign="middle" width="33%"><a href="https://claude.ai/new?q=Deploy%20the%20app%20I%20built%20with%20the%20Flisk%20CLI%20to%20Vultr.%20Read%20the%20setup%20guide%20at%20https%3A%2F%2Fgithub.com%2Fflisk-sh%2Ftdk-cli-starter%20and%20walk%20me%20through%20it%20step%20by%20step."><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/deploy-vultr.svg" alt="Deploy to Vultr" height="32"></a></td><td align="center" valign="middle" width="33%"><a href="https://claude.ai/new?q=Deploy%20the%20app%20I%20built%20with%20the%20Flisk%20CLI%20to%20Fly.io.%20Read%20the%20setup%20guide%20at%20https%3A%2F%2Fgithub.com%2Fflisk-sh%2Ftdk-cli-starter%20and%20walk%20me%20through%20it%20step%20by%20step."><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/deploy-flyio.svg" alt="Deploy to Fly.io" height="32"></a></td><td align="center" valign="middle" width="33%"><a href="https://claude.ai/new?q=Deploy%20the%20app%20I%20built%20with%20the%20Flisk%20CLI%20to%20Linode.%20Read%20the%20setup%20guide%20at%20https%3A%2F%2Fgithub.com%2Fflisk-sh%2Ftdk-cli-starter%20and%20walk%20me%20through%20it%20step%20by%20step."><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/deploy-linode.svg" alt="Deploy to Linode" height="32"></a></td></tr>
|
|
87
|
+
<tr><td align="center" valign="middle" width="33%"><a href="https://claude.ai/new?q=Deploy%20the%20app%20I%20built%20with%20the%20Flisk%20CLI%20to%20Render.%20Read%20the%20setup%20guide%20at%20https%3A%2F%2Fgithub.com%2Fflisk-sh%2Ftdk-cli-starter%20and%20walk%20me%20through%20it%20step%20by%20step."><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/deploy-render.svg" alt="Deploy to Render" height="32"></a></td><td align="center" valign="middle" width="33%"><a href="https://claude.ai/new?q=Deploy%20the%20app%20I%20built%20with%20the%20Flisk%20CLI%20to%20Docker.%20Read%20the%20setup%20guide%20at%20https%3A%2F%2Fgithub.com%2Fflisk-sh%2Ftdk-cli-starter%20and%20walk%20me%20through%20it%20step%20by%20step."><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/deploy-docker.svg" alt="Deploy to Docker" height="32"></a></td><td align="center" valign="middle" width="33%"><a href="https://claude.ai/new?q=Deploy%20the%20app%20I%20built%20with%20the%20Flisk%20CLI%20to%20Hetzner.%20Read%20the%20setup%20guide%20at%20https%3A%2F%2Fgithub.com%2Fflisk-sh%2Ftdk-cli-starter%20and%20walk%20me%20through%20it%20step%20by%20step."><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/deploy-hetzner.svg" alt="Deploy to Hetzner" height="32"></a></td></tr>
|
|
88
|
+
<tr><td align="center" valign="middle" width="33%"><a href="https://claude.ai/new?q=Deploy%20the%20app%20I%20built%20with%20the%20Flisk%20CLI%20to%20Cloudbit.%20Read%20the%20setup%20guide%20at%20https%3A%2F%2Fgithub.com%2Fflisk-sh%2Ftdk-cli-starter%20and%20walk%20me%20through%20it%20step%20by%20step."><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/deploy-cloudbit.svg" alt="Deploy to Cloudbit" height="32"></a></td><td align="center" valign="middle" width="33%"><a href="https://claude.ai/new?q=Deploy%20the%20app%20I%20built%20with%20the%20Flisk%20CLI%20to%20Exoscale.%20Read%20the%20setup%20guide%20at%20https%3A%2F%2Fgithub.com%2Fflisk-sh%2Ftdk-cli-starter%20and%20walk%20me%20through%20it%20step%20by%20step."><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/deploy-exoscale.svg" alt="Deploy to Exoscale" height="32"></a></td><td align="center" valign="middle" width="33%"><a href="https://claude.ai/new?q=Deploy%20the%20app%20I%20built%20with%20the%20Flisk%20CLI%20to%20Scaleway.%20Read%20the%20setup%20guide%20at%20https%3A%2F%2Fgithub.com%2Fflisk-sh%2Ftdk-cli-starter%20and%20walk%20me%20through%20it%20step%20by%20step."><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/deploy-scaleway.svg" alt="Deploy to Scaleway" height="32"></a></td></tr>
|
|
89
|
+
<tr><td align="center" valign="middle" width="33%"><a href="https://claude.ai/new?q=Deploy%20the%20app%20I%20built%20with%20the%20Flisk%20CLI%20to%20Multipass.%20Read%20the%20setup%20guide%20at%20https%3A%2F%2Fgithub.com%2Fflisk-sh%2Ftdk-cli-starter%20and%20walk%20me%20through%20it%20step%20by%20step."><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/deploy-multipass.svg" alt="Deploy to Multipass" height="32"></a></td><td align="center" valign="middle" width="33%"><a href="https://claude.ai/new?q=Deploy%20the%20app%20I%20built%20with%20the%20Flisk%20CLI%20to%20OVHcloud.%20Read%20the%20setup%20guide%20at%20https%3A%2F%2Fgithub.com%2Fflisk-sh%2Ftdk-cli-starter%20and%20walk%20me%20through%20it%20step%20by%20step."><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/deploy-ovhcloud.svg" alt="Deploy to OVHcloud" height="32"></a></td><td align="center" valign="middle" width="33%"><a href="https://claude.ai/new?q=Deploy%20the%20app%20I%20built%20with%20the%20Flisk%20CLI%20to%20IBM%20Cloud.%20Read%20the%20setup%20guide%20at%20https%3A%2F%2Fgithub.com%2Fflisk-sh%2Ftdk-cli-starter%20and%20walk%20me%20through%20it%20step%20by%20step."><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/deploy-ibm-cloud.svg" alt="Deploy to IBM Cloud" height="32"></a></td></tr>
|
|
90
|
+
<tr><td align="center" valign="middle" width="33%"><a href="https://claude.ai/new?q=Deploy%20the%20app%20I%20built%20with%20the%20Flisk%20CLI%20to%20Kubernetes.%20Read%20the%20setup%20guide%20at%20https%3A%2F%2Fgithub.com%2Fflisk-sh%2Ftdk-cli-starter%20and%20walk%20me%20through%20it%20step%20by%20step."><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/deploy-kubernetes.svg" alt="Deploy to Kubernetes" height="32"></a></td><td align="center" valign="middle" width="33%"><a href="https://claude.ai/new?q=Deploy%20the%20app%20I%20built%20with%20the%20Flisk%20CLI%20to%20Oracle%20Cloud.%20Read%20the%20setup%20guide%20at%20https%3A%2F%2Fgithub.com%2Fflisk-sh%2Ftdk-cli-starter%20and%20walk%20me%20through%20it%20step%20by%20step."><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/deploy-oracle-cloud.svg" alt="Deploy to Oracle Cloud" height="32"></a></td><td align="center" valign="middle" width="33%"><a href="https://claude.ai/new?q=Deploy%20the%20app%20I%20built%20with%20the%20Flisk%20CLI%20to%20OpenTelekomCloud.%20Read%20the%20setup%20guide%20at%20https%3A%2F%2Fgithub.com%2Fflisk-sh%2Ftdk-cli-starter%20and%20walk%20me%20through%20it%20step%20by%20step."><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/deploy-opentelekomcloud.svg" alt="Deploy to OpenTelekomCloud" height="32"></a></td></tr>
|
|
91
91
|
</table>
|
|
92
92
|
|
|
93
93
|
</details>
|
|
@@ -95,17 +95,17 @@ Fastest way (recommended): open the [Flisk starter](https://github.com/tdk-lands
|
|
|
95
95
|
### Build app with your AI agent
|
|
96
96
|
|
|
97
97
|
<table align="center">
|
|
98
|
-
<tr><td align="center" valign="middle" width="33%"><a href="https://devin.ai"><img src="https://raw.githubusercontent.com/
|
|
99
|
-
<tr><td align="center" valign="middle" width="33%"><a href="https://windsurf.com"><img src="https://raw.githubusercontent.com/
|
|
98
|
+
<tr><td align="center" valign="middle" width="33%"><a href="https://devin.ai"><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/devin.svg" alt="Build app with Devin" height="32"></a></td><td align="center" valign="middle" width="33%"><a href="codex://new?prompt=Build%20an%20app%20with%20the%20Flisk%20CLI.%20Read%20the%20setup%20guide%20at%20https%3A%2F%2Fgithub.com%2Fflisk-sh%2Ftdk-cli-starter%20and%20walk%20me%20through%20it%20step%20by%20step."><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/codex.svg" alt="Build app with Codex" height="32"></a></td><td align="center" valign="middle" width="33%"><a href="cursor://anysphere.cursor-deeplink/prompt?text=Build%20an%20app%20with%20the%20Flisk%20CLI.%20Read%20the%20setup%20guide%20at%20https%3A%2F%2Fgithub.com%2Fflisk-sh%2Ftdk-cli-starter%20and%20walk%20me%20through%20it%20step%20by%20step."><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/cursor.svg" alt="Build app with Cursor" height="32"></a></td></tr>
|
|
99
|
+
<tr><td align="center" valign="middle" width="33%"><a href="https://windsurf.com"><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/windsurf.svg" alt="Build app with Windsurf" height="32"></a></td><td align="center" valign="middle" width="33%"><a href="claude://code/new?q=Build%20an%20app%20with%20the%20Flisk%20CLI.%20Read%20the%20setup%20guide%20at%20https%3A%2F%2Fgithub.com%2Fflisk-sh%2Ftdk-cli-starter%20and%20walk%20me%20through%20it%20step%20by%20step."><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/claude-code.svg" alt="Build app with Claude Code" height="32"></a></td><td align="center" valign="middle" width="33%"><a href="https://github.com/features/copilot"><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/github-copilot.svg" alt="Build app with GitHub Copilot" height="32"></a></td></tr>
|
|
100
100
|
</table>
|
|
101
101
|
|
|
102
102
|
<details>
|
|
103
103
|
<summary>More agents (7)</summary>
|
|
104
104
|
|
|
105
105
|
<table align="center">
|
|
106
|
-
<tr><td align="center" valign="middle" width="33%"><a href="https://zed.dev"><img src="https://raw.githubusercontent.com/
|
|
107
|
-
<tr><td align="center" valign="middle" width="33%"><a href="https://github.com/google-gemini/gemini-cli"><img src="https://raw.githubusercontent.com/
|
|
108
|
-
<tr><td align="center" valign="middle" width="33%"><a href="https://www.augmentcode.com"><img src="https://raw.githubusercontent.com/
|
|
106
|
+
<tr><td align="center" valign="middle" width="33%"><a href="https://zed.dev"><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/zed.svg" alt="Build app with Zed" height="32"></a></td><td align="center" valign="middle" width="33%"><a href="https://aider.chat/"><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/aider.svg" alt="Build app with Aider" height="32"></a></td><td align="center" valign="middle" width="33%"><a href="https://coder.com"><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/coder.svg" alt="Build app with Coder" height="32"></a></td></tr>
|
|
107
|
+
<tr><td align="center" valign="middle" width="33%"><a href="https://github.com/google-gemini/gemini-cli"><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/gemini-cli.svg" alt="Build app with Gemini CLI" height="32"></a></td><td align="center" valign="middle" width="33%"><a href="https://antigravity.google/"><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/antigravity.svg" alt="Build app with Antigravity" height="32"></a></td><td align="center" valign="middle" width="33%"><a href="https://codeanywhere.com"><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/codeanywhere.svg" alt="Build app with Codeanywhere" height="32"></a></td></tr>
|
|
108
|
+
<tr><td align="center" valign="middle" width="33%"><a href="https://www.augmentcode.com"><img src="https://raw.githubusercontent.com/flisk-sh/tdk-cli-starter/main/.github/buttons/augment-code.svg" alt="Build app with Augment Code" height="32"></a></td></tr>
|
|
109
109
|
</table>
|
|
110
110
|
|
|
111
111
|
</details>
|
|
@@ -139,8 +139,8 @@ Docker runs the containers. Tilt watches services and live-updates containers wh
|
|
|
139
139
|
|
|
140
140
|
> [!IMPORTANT]
|
|
141
141
|
> Get Flisk from the [flisk-sh/flisk](https://github.com/flisk-sh/flisk) repository, the
|
|
142
|
-
> [
|
|
143
|
-
> [official website](https://
|
|
142
|
+
> [`@flisk-sh/flisk`](https://www.npmjs.com/package/@flisk-sh/flisk) npm package, or the
|
|
143
|
+
> [official website](https://flisk.sh/). Follow the installation links from these official sources.
|
|
144
144
|
> A similar repository name or copied README does not establish that a download is official.
|
|
145
145
|
|
|
146
146
|
<p align="center"><strong><a href="#quick-start">Quick start</a> · <a href="#why-tdk-cli">Why Flisk</a> · <a href="#examples">Examples</a> · <a href="#installation">Installation</a> · <a href="#faq">FAQ</a> · <a href="#docs">Documentation</a></strong></p>
|
|
@@ -196,7 +196,7 @@ Teams that run `flisk up` on their own code (listed with their consent in [ADOPT
|
|
|
196
196
|
- [MakeOffer](https://www.linkedin.com/company/makeofferio), Flisk 1.3.180
|
|
197
197
|
- [Red Moon Digital](https://redmoon.digital/), Flisk 1.3.81
|
|
198
198
|
|
|
199
|
-
Using Flisk too? [Tell us](https://github.com/flisk-sh/flisk/issues/new?template=we-use-
|
|
199
|
+
Using Flisk too? [Tell us](https://github.com/flisk-sh/flisk/issues/new?template=we-use-tdk.yml) or [add a row to ADOPTERS.md](ADOPTERS.md).
|
|
200
200
|
|
|
201
201
|
If Flisk saves you time, a ⭐ on [this repo](https://github.com/flisk-sh/flisk) helps other developers find it.
|
|
202
202
|
|
|
@@ -207,7 +207,7 @@ There are two ways to get started. Both end with `flisk up <stack>`.
|
|
|
207
207
|
| | Guided scaffolder | Core CLI (manual) |
|
|
208
208
|
| --- | --- | --- |
|
|
209
209
|
| Best for | A first run: pick your services and get a ready project | Full control, or adding Flisk to an existing folder |
|
|
210
|
-
| Package | [
|
|
210
|
+
| Package | [`create-microservices`](https://github.com/flisk-sh/create-microservices#readme) | [`@flisk-sh/flisk`](https://www.npmjs.com/package/@flisk-sh/flisk) (this repo) |
|
|
211
211
|
|
|
212
212
|
### Option A: guided scaffolder (recommended for beginners)
|
|
213
213
|
|
|
@@ -222,13 +222,13 @@ Run these commands from the directory where you want the new project folder to b
|
|
|
222
222
|
|
|
223
223
|
```bash
|
|
224
224
|
npm install -g @flisk-sh/flisk
|
|
225
|
-
npm init
|
|
225
|
+
npm init create-microservices my-project
|
|
226
226
|
cd my-project
|
|
227
227
|
flisk up main
|
|
228
228
|
```
|
|
229
229
|
|
|
230
230
|
- `npm install -g @flisk-sh/flisk` installs the `flisk` command. Skip it if `flisk --version` already works.
|
|
231
|
-
- `npm init
|
|
231
|
+
- `npm init create-microservices my-project` asks how many services to create, then each service's name and type (`backend`, `frontend`, `worker`, or `mcp`).
|
|
232
232
|
- `flisk up main` starts the stack. `main` is the default stack name; if you pass `--stack <name>` to the scaffolder, use that name instead. The scaffolder prints the exact `flisk up` command when it finishes.
|
|
233
233
|
|
|
234
234
|
The scaffolder creates the project configuration and a skeleton for each service you selected, using Flisk CLI Core. It does not start any containers; `flisk up` does that.
|
|
@@ -236,13 +236,13 @@ The scaffolder creates the project configuration and a skeleton for each service
|
|
|
236
236
|
To skip the prompts and get a default `api` (backend) and `web` (frontend):
|
|
237
237
|
|
|
238
238
|
```bash
|
|
239
|
-
npm init
|
|
239
|
+
npm init create-microservices my-project -- --yes
|
|
240
240
|
```
|
|
241
241
|
|
|
242
|
-
For service types, all options, and non-interactive usage, see the [
|
|
242
|
+
For service types, all options, and non-interactive usage, see the [`create-microservices` README](https://github.com/flisk-sh/create-microservices#readme).
|
|
243
243
|
|
|
244
244
|
> [!NOTE]
|
|
245
|
-
> Two similarly named packages exist. [`create-
|
|
245
|
+
> Two similarly named packages exist. [`create-flisk`](https://github.com/flisk-sh/create-flisk) is a landing-page app and does not scaffold projects. [`create-microservices`](https://github.com/flisk-sh/create-microservices#readme) is the project scaffolder used above.
|
|
246
246
|
|
|
247
247
|
### Option B: core CLI (manual)
|
|
248
248
|
|
|
@@ -294,7 +294,7 @@ You do not need to write the nginx config, Dockerfile, or a `docker-compose.yml`
|
|
|
294
294
|
|
|
295
295
|
If Helm, Compose, or your existing Tilt setup already gives you a working local environment, keep using it. Flisk CLI is for engineers managing several services who want a clear local service contract and one command to start the stack.
|
|
296
296
|
|
|
297
|
-
See [how Flisk compares to alternative dev tools](docs/comparison.md), [how Flisk CLI works alongside Helm](https://
|
|
297
|
+
See [how Flisk compares to alternative dev tools](docs/comparison.md), [how Flisk CLI works alongside Helm](https://flisk.sh/docs/with-helm/), the [service schema](engine/schemas/service-schema.json), and the [project configuration schema](engine/schemas/project-schema.json).
|
|
298
298
|
|
|
299
299
|
## Terminal UI
|
|
300
300
|
|
|
@@ -328,7 +328,7 @@ Runnable examples show Flisk on real stacks. Start with the smallest one:
|
|
|
328
328
|
|
|
329
329
|
## Use Flisk with your AI agent
|
|
330
330
|
|
|
331
|
-
The repository ships agent skills for common Flisk work, including `
|
|
331
|
+
The repository ships agent skills for common Flisk work, including `tdk-doctor` (environment checks) and `tdk-troubleshoot` (fixing `flisk` and Tilt errors), under [`.agents/skills`](.agents/skills). Agents working in this repo also follow [AGENTS.md](AGENTS.md). Use these skills to let your agent check your setup and explain failures instead of guessing at Docker or Tilt configuration.
|
|
332
332
|
|
|
333
333
|
## Installation
|
|
334
334
|
|
|
@@ -337,7 +337,7 @@ Install the CLI from npm (requires Node.js 22.12+) or use the prebuilt binary (n
|
|
|
337
337
|
```bash
|
|
338
338
|
npm install -g @flisk-sh/flisk
|
|
339
339
|
# or install the prebuilt binary
|
|
340
|
-
curl -fsSL https://
|
|
340
|
+
curl -fsSL https://flisk.sh/install.sh | sh
|
|
341
341
|
```
|
|
342
342
|
|
|
343
343
|
Public npm is the recommended default. To install through GitHub Packages instead, configure registry authentication as described in [GitHub Packages installation](docs/github-packages.md).
|
|
@@ -358,7 +358,7 @@ Set `TDK_DEBUG=1` before running `flisk up --verbose` to include Starlark debug
|
|
|
358
358
|
- [CLI command cheat sheet](cli/README.md#cheat-sheet)
|
|
359
359
|
- [Mega cheat sheet: every command and flag](docs/cheat-sheet.md)
|
|
360
360
|
- [Documentation index](docs/README.md)
|
|
361
|
-
- [Pilot Flisk on a real repository](docs/adopt-
|
|
361
|
+
- [Pilot Flisk on a real repository](docs/adopt-tdk.md)
|
|
362
362
|
- [Running AI agents in Flisk](docs/agents/ai-agents.md)
|
|
363
363
|
- [FAQ for agencies and multi-client teams](docs/faq-teams.md)
|
|
364
364
|
- [Working alongside Helm](docs/with-helm.md)
|
|
@@ -383,18 +383,18 @@ Set `TDK_DEBUG=1` before running `flisk up --verbose` to include Starlark debug
|
|
|
383
383
|
- [Show HN draft](docs/drafts/show-hn.md)
|
|
384
384
|
- [Architecture and repository map](docs/project-overview.md)
|
|
385
385
|
- [Scale fixture measurements and caveats](docs/benchmarks/scale-bench.md)
|
|
386
|
-
- [Benchmark report: warm and cold start charts, history](https://
|
|
386
|
+
- [Benchmark report: warm and cold start charts, history](https://flisk-sh.github.io/flisk/) (updated on every change to `main` that affects start-up)
|
|
387
387
|
- [How to run the start-time benchmark](scripts/benchmark/README.md#tdk-up-warm-start-benchmark)
|
|
388
388
|
|
|
389
389
|
## History
|
|
390
390
|
|
|
391
|
-
Flisk development began on 21 April 2026. The archived, read-only [
|
|
392
|
-
repository records its [first commit](https://github.com/
|
|
391
|
+
Flisk development began on 21 April 2026. The archived, read-only [flisk-sh/tdk](https://github.com/flisk-sh/tdk)
|
|
392
|
+
repository records its [first commit](https://github.com/flisk-sh/tdk/commit/1714637637196ed54cbfa18534230a782c05ab36)
|
|
393
393
|
("Initial commit: Flisk specs, generators, CLI, and standards") from that day. A separate `tdk-cli` history spanning 21 April to
|
|
394
394
|
18 September 2026 was [imported into this repository](https://github.com/flisk-sh/flisk/pull/670) as 306 filtered
|
|
395
395
|
commits. Those commits are now ancestors of `main`; the import did not change the source tree.
|
|
396
396
|
|
|
397
|
-
This `flisk` repository was created on 19 September 2026, and the
|
|
397
|
+
This `flisk` repository was created on 19 September 2026, and the `@flisk-sh/flisk` npm package was first
|
|
398
398
|
published on 21 September 2026. Those dates describe the current repository and package, not the start of Flisk development.
|
|
399
399
|
|
|
400
400
|
## Requirements and support
|
|
@@ -413,11 +413,11 @@ On native Windows, `flisk --version`, `flisk doctor`, and `flisk up --dry-run` a
|
|
|
413
413
|
|
|
414
414
|
Core stays free. Premium is a separate key for the extras above; no key required to run `flisk up`.
|
|
415
415
|
|
|
416
|
-
**Ecosystem map:** examples, articles, related tools, and notes live in [awesome-tdk-framework](https://github.com/
|
|
416
|
+
**Ecosystem map:** examples, articles, related tools, and notes live in [awesome-tdk-framework](https://github.com/flisk-sh/awesome-tdk-framework). Star this repo (`flisk`) if the CLI is what you run; use the awesome list to browse the rest.
|
|
417
417
|
|
|
418
418
|
<p align="center">
|
|
419
419
|
|
|
420
|
-
**Share:** [X](https://twitter.com/intent/tweet?text=I%20just%20used%
|
|
420
|
+
**Share:** [X](https://twitter.com/intent/tweet?text=I%20just%20used%20Flisk%20CLI%20to%20start%20my%20local%20services%20with%20one%20command%2C%20and%20it%27s%20great%21%20It%27s%20free%20and%20open%20source.%20Check%20it%20out%3A&url=https%3A%2F%2Fgithub.com%2Fflisk-sh%2Fflisk) · [Bluesky](https://bsky.app/intent/compose?text=I%20just%20used%20Flisk%20CLI%20to%20start%20my%20local%20services%20with%20one%20command%2C%20and%20it%27s%20great%21%20It%27s%20free%20and%20open%20source.%20Check%20it%20out%3A%20https%3A%2F%2Fgithub.com%2Fflisk-sh%2Fflisk) · [Threads](https://www.threads.net/intent/post?text=I%20just%20used%20Flisk%20CLI%20to%20start%20my%20local%20services%20with%20one%20command%2C%20and%20it%27s%20great%21%20It%27s%20free%20and%20open%20source.%20Check%20it%20out%3A%20https%3A%2F%2Fgithub.com%2Fflisk-sh%2Fflisk) · [Mastodon](https://mastodon.social/share?text=I%20just%20used%20Flisk%20CLI%20to%20start%20my%20local%20services%20with%20one%20command%2C%20and%20it%27s%20great%21%20It%27s%20free%20and%20open%20source.%20Check%20it%20out%3A%20https%3A%2F%2Fgithub.com%2Fflisk-sh%2Fflisk) · [Reddit](https://www.reddit.com/submit?title=Flisk%20CLI%3A%20start%20local%20services%20with%20one%20command&url=https%3A%2F%2Fgithub.com%2Fflisk-sh%2Fflisk) · [Hacker News](https://news.ycombinator.com/submitlink?u=https%3A%2F%2Fgithub.com%2Fflisk-sh%2Fflisk&t=Flisk%20CLI%3A%20start%20local%20services%20with%20one%20command) · [Facebook](https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fgithub.com%2Fflisk-sh%2Fflisk) · [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fgithub.com%2Fflisk-sh%2Fflisk&mini=true&title=Flisk%20CLI%3A%20start%20local%20services%20with%20one%20command&summary=I%20just%20used%20Flisk%20CLI%20to%20start%20my%20local%20services%20with%20one%20command%2C%20and%20it%27s%20great%21%20It%27s%20free%20and%20open%20source.) · [Telegram](https://t.me/share/url?url=https%3A%2F%2Fgithub.com%2Fflisk-sh%2Fflisk&text=I%20just%20used%20Flisk%20CLI%20to%20start%20my%20local%20services%20with%20one%20command%2C%20and%20it%27s%20great%21%20It%27s%20free%20and%20open%20source.%20Check%20it%20out%3A) · [WhatsApp](https://wa.me/?text=I%20just%20used%20Flisk%20CLI%20to%20start%20my%20local%20services%20with%20one%20command%2C%20and%20it%27s%20great%21%20It%27s%20free%20and%20open%20source.%20Check%20it%20out%3A%20https%3A%2F%2Fgithub.com%2Fflisk-sh%2Fflisk) · [Email](mailto:?subject=Flisk%20CLI%3A%20start%20local%20services%20with%20one%20command&body=I%20just%20used%20Flisk%20CLI%20to%20start%20my%20local%20services%20with%20one%20command%2C%20and%20it%27s%20great%21%20It%27s%20free%20and%20open%20source.%20Check%20it%20out%3A%20https%3A%2F%2Fgithub.com%2Fflisk-sh%2Fflisk)
|
|
421
421
|
|
|
422
422
|
</p>
|
|
423
423
|
|
package/Tiltfile
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# =============================================================================
|
|
2
|
-
# 🎯
|
|
2
|
+
# 🎯 TDK CLI - Combined Tilt Development Kit
|
|
3
3
|
# =============================================================================
|
|
4
4
|
# This is the unified Tiltfile entry point for tdk-cli.
|
|
5
5
|
# It combines: engine, discovery, specs, and ext into one repository.
|
|
6
6
|
#
|
|
7
7
|
# Usage:
|
|
8
|
-
# v1alpha1.extension_repo(name='tdk-cli', url='https://github.com/
|
|
8
|
+
# v1alpha1.extension_repo(name='tdk-cli', url='https://github.com/flisk-sh/flisk')
|
|
9
9
|
# load('ext://tdk-cli', 'Utils', 'Manifest', ...)
|
|
10
10
|
# =============================================================================
|
|
11
11
|
|
package/cli/dist/cli.js
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
// Copyright (c) 2026 Flisk Landscape contributors
|
|
3
3
|
// SPDX-License-Identifier: MIT
|
|
4
|
+
import { existsSync } from "node:fs";
|
|
5
|
+
import { resolve } from "node:path";
|
|
6
|
+
import { cwd } from "node:process";
|
|
4
7
|
import { showHelp } from "./commands/help.js";
|
|
5
8
|
import { createProgram } from "./program.js";
|
|
9
|
+
import { ensureGlobalInstall } from "./utils/cli-command.js";
|
|
6
10
|
import { formatColdPreflight, runColdPreflight } from "./utils/cold-preflight.js";
|
|
7
11
|
import { unknownHelpTarget } from "./utils/help-command.js";
|
|
8
12
|
const program = createProgram();
|
|
@@ -10,9 +14,43 @@ const program = createProgram();
|
|
|
10
14
|
if (process.argv.length === 2) {
|
|
11
15
|
const result = await runColdPreflight();
|
|
12
16
|
console.log(formatColdPreflight(result));
|
|
17
|
+
await ensureGlobalInstall();
|
|
13
18
|
console.log("\nCommands: flisk doctor | flisk project --yes | flisk --help");
|
|
19
|
+
console.log("\nOne command from scratch (installs, clones, boots and opens the browser):");
|
|
20
|
+
console.log(" npx @flisk-sh/flisk demo");
|
|
21
|
+
console.log(" npx @flisk-sh/flisk restaurant --project=my-stack");
|
|
14
22
|
process.exit(result.ok ? 0 : 1);
|
|
15
23
|
}
|
|
24
|
+
// One command from scratch: flisk <template> | flisk --template <name> --project <dir>
|
|
25
|
+
// It clones a starter, installs the CLI globally, boots the stack and opens the frontend.
|
|
26
|
+
const templateArg = readOptionValue(process.argv, "--template") ?? (await bareTemplateArg(process.argv));
|
|
27
|
+
const projectArg = readOptionValue(process.argv, "--project");
|
|
28
|
+
if (templateArg) {
|
|
29
|
+
const { cloneProjectTemplate } = await import("./commands/project.js");
|
|
30
|
+
const { assertMachineReadyOrExit, detectRuntimePrerequisites, formatRuntimeNextSteps } = await import("./utils/cold-preflight.js");
|
|
31
|
+
const { PROJECT_TEMPLATES } = await import("./utils/project-templates.js");
|
|
32
|
+
await assertMachineReadyOrExit({ scope: "scaffold" });
|
|
33
|
+
const runtimeNextSteps = formatRuntimeNextSteps(detectRuntimePrerequisites());
|
|
34
|
+
await cloneProjectTemplate(templateArg, projectArg, runtimeNextSteps);
|
|
35
|
+
const install = ensureGlobalInstall();
|
|
36
|
+
if (install === "installed") {
|
|
37
|
+
console.log("\n\u2714 flisk is installed globally, so `flisk` works from any folder.");
|
|
38
|
+
}
|
|
39
|
+
const destination = resolve(cwd(), projectArg || templateArg);
|
|
40
|
+
const binPath = process.argv[1];
|
|
41
|
+
if (binPath && existsSync(destination)) {
|
|
42
|
+
const { runStack, findFrontendUrl } = await import("./utils/one-command.js");
|
|
43
|
+
const { openUrl } = await import("./utils/url-actions.js");
|
|
44
|
+
console.log(`\n\u{1F680} Starting the stack in ${destination}...\n`);
|
|
45
|
+
const result = await runStack(binPath, destination);
|
|
46
|
+
const url = findFrontendUrl(result.output);
|
|
47
|
+
if (url) {
|
|
48
|
+
console.log(`\n\u{1F310} Opening ${url}`);
|
|
49
|
+
await openUrl(url);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
process.exit(0);
|
|
53
|
+
}
|
|
16
54
|
if (process.argv[2] === "--doctor")
|
|
17
55
|
process.argv[2] = "doctor";
|
|
18
56
|
if (process.argv.length === 3 && ["-h", "--help", "help"].includes(process.argv[2])) {
|
|
@@ -27,3 +65,26 @@ if (unknownHelp) {
|
|
|
27
65
|
});
|
|
28
66
|
}
|
|
29
67
|
program.parse();
|
|
68
|
+
/** Reads `--name value` and `--name=value` out of the raw arguments. */
|
|
69
|
+
function readOptionValue(args, name) {
|
|
70
|
+
const prefix = `${name}=`;
|
|
71
|
+
for (let index = 0; index < args.length; index += 1) {
|
|
72
|
+
const arg = args[index];
|
|
73
|
+
if (arg.startsWith(prefix))
|
|
74
|
+
return arg.slice(prefix.length);
|
|
75
|
+
if (arg === name)
|
|
76
|
+
return args[index + 1];
|
|
77
|
+
}
|
|
78
|
+
return undefined;
|
|
79
|
+
}
|
|
80
|
+
/** A bare template name (`flisk restaurant`) is the short form of `--template restaurant`. */
|
|
81
|
+
async function bareTemplateArg(args) {
|
|
82
|
+
const { PROJECT_TEMPLATES } = await import("./utils/project-templates.js");
|
|
83
|
+
for (const arg of args.slice(2)) {
|
|
84
|
+
if (arg.startsWith("-"))
|
|
85
|
+
continue;
|
|
86
|
+
if (arg in PROJECT_TEMPLATES)
|
|
87
|
+
return arg;
|
|
88
|
+
}
|
|
89
|
+
return undefined;
|
|
90
|
+
}
|
|
@@ -8,7 +8,7 @@ import { fileURLToPath } from "node:url";
|
|
|
8
8
|
import { expect } from "vitest";
|
|
9
9
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
10
10
|
export const repoRoot = resolve(__dirname, "../../../..");
|
|
11
|
-
export const cliBin = join(repoRoot, "cli", "bin", "
|
|
11
|
+
export const cliBin = join(repoRoot, "cli", "bin", "tdk.js");
|
|
12
12
|
export function runTdk(args, cwd, input) {
|
|
13
13
|
return execFileSync(process.execPath, [cliBin, ...args], {
|
|
14
14
|
cwd,
|
|
@@ -36,7 +36,7 @@ export function runTdkAllowFailure(args, cwd) {
|
|
|
36
36
|
* generate its own.
|
|
37
37
|
*/
|
|
38
38
|
export function copyProject(source) {
|
|
39
|
-
const target = mkdtempSync(join(tmpdir(), "
|
|
39
|
+
const target = mkdtempSync(join(tmpdir(), "tdk-project-copy-"));
|
|
40
40
|
cpSync(source, target, { recursive: true });
|
|
41
41
|
return target;
|
|
42
42
|
}
|