Skip to content

Commit 67426cc

Browse files
ptrthomasclaude
andcommitted
add future TODOs for central manifest and rust-native init command
- Move init command back to JAR-delegated (not yet implemented in Rust) - Add TODO for central manifest at karate.sh/manifest.json - Add TODO for rust-native init with project types and templates - Reorganize future enhancements section Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 9fd25d1 commit 67426cc

1 file changed

Lines changed: 67 additions & 1 deletion

File tree

docs/spec.md

Lines changed: 67 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -807,14 +807,80 @@ npm bin/karate → Rust CLI → JRE/JAR (self-managed)
807807

808808
# **12. Future Enhancements (Post-MVP)**
809809

810+
## **12.1 Central Manifest at karate.sh**
811+
812+
Host a central manifest at `https://karate.sh/manifest.json` that provides:
813+
814+
* Download locations for all Karate releases (OSS and commercial)
815+
* Version discovery for Karate JAR, JRE, and plugins
816+
* Checksums for integrity verification
817+
* Support for commercial/non-open-source tools (Xplorer, MCP server, etc.)
818+
819+
This enables the CLI to resolve downloads from a single authoritative source rather than hardcoded GitHub URLs.
820+
821+
## **12.2 Rust-Native `init` Command**
822+
823+
Move `karate init` from JAR-delegated to Rust-native. The command scaffolds project structure *before* Java is involved, making it unsuitable for JAR delegation.
824+
825+
```
826+
karate init [name] [--type <type>] [--template <template>]
827+
```
828+
829+
**Arguments:**
830+
* `name` — Project directory name (default: current directory)
831+
832+
**Flags:**
833+
* `--type <type>` — Project type: `standalone`, `maven`, `gradle` (skips interactive prompt)
834+
* `--template <template>` — Template name (e.g., `api`, `openapi`, `spring`)
835+
* `--force` — Overwrite existing files
836+
837+
**Interactive flow:**
838+
```
839+
$ karate init my-project
840+
841+
? Project type:
842+
> standalone (just Karate, no build tool)
843+
maven (Java project with pom.xml)
844+
gradle (Java project with build.gradle)
845+
846+
? Template:
847+
> api (basic API testing)
848+
openapi (OpenAPI/Swagger integration)
849+
spring (Spring Boot integration)
850+
851+
Creating project: my-project/
852+
├── karate.json
853+
├── src/test/features/
854+
│ └── example.feature
855+
└── karate-config.js
856+
857+
Done! Run tests with: cd my-project && karate run
858+
```
859+
860+
**Project type details:**
861+
862+
| Type | Output | Use case |
863+
|------|--------|----------|
864+
| `standalone` | `karate.json`, features only | Quick start, non-Java teams, LLM agents |
865+
| `maven` | `pom.xml` with karate dependency | Java teams, CI integration |
866+
| `gradle` | `build.gradle` with karate dependency | Java teams preferring Gradle |
867+
868+
**Extended templates (future):**
869+
* `karate init --template openapi` — Generate tests from OpenAPI spec
870+
* `karate init --template spring` — Spring Boot integration with test harness
871+
* `karate init --template graphql` — GraphQL testing scaffold
872+
* Custom templates from git repos: `karate init --template https://github.com/...`
873+
874+
## **12.3 Other Enhancements**
875+
810876
* `karate lock` → freeze exact versions + checksums in project
811877
* Shell completions (bash, zsh, fish, PowerShell)
812-
* Templated project scaffolds (`karate init --template spring-openapi`)
813878
* "Agent mode" improvements for LLM-based automation
814879
* Docker images pre-baked with launcher + runtime
815880
* Local manifest override for air-gapped networks
816881
* Telemetry (opt-in) with auto GitHub issue creation for crashes
817882
* System JRE detection and preference
883+
* Deprecate Maven archetype in favor of `karate init --type maven`
818884

819885
---
820886

0 commit comments

Comments
 (0)