Skip to content

Commit fc9c835

Browse files
domenkozarclaude
andcommitted
Add revision field to secretspec.toml format
This change introduces a revision field to track the specification version, ensuring forward compatibility as the format evolves. All secretspec.toml files now require revision = "1.0" in the [project] section. - Add revision field to ProjectInfo struct with default value "1.0" - Add validation to ensure only revision "1.0" is accepted - Update all test fixtures and examples to include revision = "1.0" - Update README.md documentation to show revision in examples - Ensure secretspec init command generates files with revision field 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 9cea5a5 commit fc9c835

File tree

13 files changed

+41
-3
lines changed

13 files changed

+41
-3
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ Each project has a `secretspec.toml` file that declares the required secrets:
7878
```toml
7979
[project]
8080
name = "my-app" # Inferred from current directory name when using `secretspec init`
81+
revision = "1.0"
8182

8283
[secrets.DATABASE_URL]
8384
description = "PostgreSQL connection string"

examples/codegen_example/secretspec.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
[project]
22
name = "example-app"
3+
revision = "1.0"
34

45
[secrets.DATABASE_URL]
56
description = "PostgreSQL connection string"

secretspec-derive/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -315,7 +315,7 @@ pub fn define_secrets(input: TokenStream) -> TokenStream {
315315
}
316316

317317
/// Load with specific provider and profile, returns profile-specific types
318-
pub fn load_profile(provider: Provider, profile: Profile) -> Result<SecretSpecProfile, secretspec::SecretSpecError> {
318+
pub fn load_with_profile(provider: Provider, profile: Profile) -> Result<SecretSpecProfile, secretspec::SecretSpecError> {
319319
let spec = secretspec::SecretSpec::load()?;
320320
let provider_str = match provider {
321321
Provider::Keyring => "keyring",

secretspec-derive/src/tests.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ mod tests {
2828
let config: ProjectConfig = toml::from_str(&format!(
2929
r#"[project]
3030
name = "test"
31+
revision = "1.0"
3132
{}"#,
3233
toml_str
3334
))
@@ -61,6 +62,7 @@ name = "test"
6162
let config: ProjectConfig = toml::from_str(&format!(
6263
r#"[project]
6364
name = "test"
65+
revision = "1.0"
6466
{}"#,
6567
toml_str
6668
))
@@ -94,6 +96,7 @@ name = "test"
9496
let config: ProjectConfig = toml::from_str(&format!(
9597
r#"[project]
9698
name = "test"
99+
revision = "1.0"
97100
{}"#,
98101
toml_str
99102
))
@@ -139,6 +142,7 @@ name = "test"
139142
let config: ProjectConfig = toml::from_str(&format!(
140143
r#"[project]
141144
name = "test"
145+
revision = "1.0"
142146
{}"#,
143147
toml_str
144148
))
@@ -174,6 +178,7 @@ name = "test"
174178
let config: ProjectConfig = toml::from_str(&format!(
175179
r#"[project]
176180
name = "test"
181+
revision = "1.0"
177182
{}"#,
178183
toml_str
179184
))

secretspec-derive/tests/fixtures/basic.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
[project]
22
name = "test-project"
3+
revision = "1.0"
34

45
[secrets.API_KEY]
56
description = "API key for external service"

secretspec-derive/tests/fixtures/complex.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
[project]
22
name = "complex-project"
3+
revision = "1.0"
34

45
# Always required, no default
56
[secrets.ALWAYS_REQUIRED]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
[project]
22
name = "empty-project"
3+
revision = "1.0"
34

45
[secrets]
56
# No secrets defined

secretspec-derive/tests/fixtures/profiles.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
[project]
22
name = "profile-test"
3+
revision = "1.0"
34

45
[secrets.API_KEY]
56
description = "API key"

secretspec-derive/tests/snapshot_tests.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ fn test_basic_generation_snapshot() {
3232
let toml_content = r#"
3333
[project]
3434
name = "test"
35+
revision = "1.0"
3536
3637
[secrets.API_KEY]
3738
required = true
@@ -49,6 +50,7 @@ fn test_profile_generation_snapshot() {
4950
let toml_content = r#"
5051
[project]
5152
name = "test"
53+
revision = "1.0"
5254
5355
[secrets.API_KEY]
5456
required = true

secretspec-derive/tests/ui/valid_generation_embedded.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
[project]
22
name = "test-project"
3+
revision = "1.0"
34

45
[secrets.API_KEY]
56
description = "API key for external service"

0 commit comments

Comments
 (0)