From 8c9dd5e632c668bdcb4ad0b39b6caa09c77e9cd9 Mon Sep 17 00:00:00 2001 From: Wisaroot Lertthaweedech Date: Mon, 20 Oct 2025 22:36:51 +0700 Subject: [PATCH 01/63] docs: update CLAUDE.md and delete cursor rules --- .cursor/rules/cli-implementation.mdc | 217 ------- .cursor/rules/dev-workflow.mdc | 100 ---- .cursor/rules/docker-git-testing.mdc | 307 ---------- .cursor/rules/source-code-lookup.mdc | 23 - .cursor/rules/testing-standards.mdc | 266 --------- CLAUDE.md | 542 ++++++++++++++++-- .../version_old_backup/basic.rs | 18 - .../version_old_backup/c_flag.rs | 205 ------- .../version_old_backup/command_utils.rs | 28 - .../version_old_backup/end_to_end.rs | 450 --------------- .../version_old_backup/errors.rs | 527 ----------------- .../version_old_backup/formats.rs | 30 - .../version_old_backup/git_states.rs | 55 -- .../version_old_backup/mod.rs | 13 - .../version_old_backup/schemas.rs | 36 -- .../version_old_backup/sources.rs | 37 -- .../version_old_backup/zerv_format.rs | 182 ------ 17 files changed, 485 insertions(+), 2551 deletions(-) delete mode 100644 .cursor/rules/cli-implementation.mdc delete mode 100644 .cursor/rules/dev-workflow.mdc delete mode 100644 .cursor/rules/docker-git-testing.mdc delete mode 100644 .cursor/rules/source-code-lookup.mdc delete mode 100644 .cursor/rules/testing-standards.mdc delete mode 100644 tests/integration_tests/version_old_backup/basic.rs delete mode 100644 tests/integration_tests/version_old_backup/c_flag.rs delete mode 100644 tests/integration_tests/version_old_backup/command_utils.rs delete mode 100644 tests/integration_tests/version_old_backup/end_to_end.rs delete mode 100644 tests/integration_tests/version_old_backup/errors.rs delete mode 100644 tests/integration_tests/version_old_backup/formats.rs delete mode 100644 tests/integration_tests/version_old_backup/git_states.rs delete mode 100644 tests/integration_tests/version_old_backup/mod.rs delete mode 100644 tests/integration_tests/version_old_backup/schemas.rs delete mode 100644 tests/integration_tests/version_old_backup/sources.rs delete mode 100644 tests/integration_tests/version_old_backup/zerv_format.rs diff --git a/.cursor/rules/cli-implementation.mdc b/.cursor/rules/cli-implementation.mdc deleted file mode 100644 index 751a030..0000000 --- a/.cursor/rules/cli-implementation.mdc +++ /dev/null @@ -1,217 +0,0 @@ ---- -description: CLI implementation standards for zerv including core commands, pipeline architecture, argument structures, and format validation patterns -globs: **/*.rs,**/src/cli/**/*.rs,**/tests/**/*.rs -alwaysApply: true ---- - -# CLI Implementation Standards - -## Core Commands - -### `zerv version [OPTIONS]` - -Main version processing pipeline with composable operations. - -### `zerv check [OPTIONS]` - -Validation-only command for version strings. - -## Pipeline Architecture - -``` -Input → Version Object → Zerv Object → Transform → Output Version Object → Display -``` - -## Key Implementation Patterns - -### Version Command Args Structure - -```rust -#[derive(Parser)] -struct VersionArgs { - version: Option, - #[arg(long, default_value = "git")] - source: String, - #[arg(long, default_value = "zerv-default")] - schema: String, - #[arg(long)] - schema_ron: Option, - #[arg(long)] - output_format: Option, -} -``` - -### Check Command Args Structure - -```rust -#[derive(Parser)] -struct CheckArgs { - version: String, - #[arg(long)] - format: Option, // pep440, semver, auto-detect (default) -} -``` - -### Core Pipeline Function - -```rust -pub fn run_version_pipeline(args: VersionArgs) -> Result { - // 1. Get VCS data - let vcs_data = detect_vcs(current_dir())?.get_vcs_data()?; - - // 2. Convert to ZervVars - let vars = vcs_data_to_zerv_vars(vcs_data)?; - - // 3. Apply schema and output format - match args.output_format.as_deref() { - Some("pep440") => Ok(PEP440::from_zerv(&vars)?.to_string()), - Some("semver") => Ok(SemVer::from_zerv(&vars)?.to_string()), - _ => Ok(vars.to_string()), - } -} -``` - -## State-Based Versioning Tiers - -**Tier 1** (Tagged, clean): `major.minor.patch` -**Tier 2** (Distance, clean): `major.minor.patch.post+branch.` -**Tier 3** (Dirty): `major.minor.patch.dev+branch.` - -## Format Flag Validation Pattern - -```rust -// Error if conflicting format flags used -if args.format.is_some() && (args.input_format.is_some() || args.output_format.is_some()) { - return Err(ZervError::ConflictingFlags( - "Cannot use --format with --input-format or --output-format".to_string() - )); -} -``` - -## Check Command Auto-Detection Pattern - -```rust -fn run_check_command(args: CheckArgs) -> Result<()> { - match args.format.as_deref() { - Some("pep440") => { - PEP440::parse(&args.version)?; - println!("✓ Valid PEP440 version"); - } - Some("semver") => { - SemVer::parse(&args.version)?; - println!("✓ Valid SemVer version"); - } - None => { - // Auto-detect format - let pep440_valid = PEP440::parse(&args.version).is_ok(); - let semver_valid = SemVer::parse(&args.version).is_ok(); - - match (pep440_valid, semver_valid) { - (true, false) => println!("✓ Valid PEP440 version"), - (false, true) => println!("✓ Valid SemVer version"), - (true, true) => { - println!("✓ Valid PEP440 version"); - println!("✓ Valid SemVer version"); - } - (false, false) => return Err(ZervError::InvalidVersion(args.version)), - } - } - Some(format) => return Err(ZervError::UnknownFormat(format.to_string())), - } - Ok(()) -} -``` - -## Essential CLI Options - -### Input Sources - -- `--source git` (default) - Auto-detect Git -- `--source string ` - Parse version string - -### Schema Control - -- `--schema zerv-default` (default) - Tier-aware schema -- `--schema-ron ` - Custom RON schema - -### Output Control - -- `--output-format ` - Target format: pep440, semver -- `--output-template