From 9d77fbc28ffd4b4ee9884066b3c5704e7dc23890 Mon Sep 17 00:00:00 2001 From: jdx <216188+jdx@users.noreply.github.com> Date: Wed, 22 Apr 2026 15:53:03 -0500 Subject: [PATCH 1/5] ci: add musl Linux targets to release builds Alpine Linux and other musl-based distros can't run the glibc-linked binaries. Add x86_64-unknown-linux-musl and aarch64-unknown-linux-musl to the release matrix so users can install fnox on Alpine. Fixes #428 Co-Authored-By: Claude Opus 4.7 (1M context) --- .github/workflows/release.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f4e47a13..87e9379f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -37,6 +37,12 @@ jobs: - target: aarch64-unknown-linux-gnu os: ubuntu-latest build-tool: cross + - target: x86_64-unknown-linux-musl + os: ubuntu-latest + build-tool: cross + - target: aarch64-unknown-linux-musl + os: ubuntu-latest + build-tool: cross - target: x86_64-pc-windows-msvc os: windows-latest build-tool: cargo From c1f004ab163325003c44bc115299abf55810f064 Mon Sep 17 00:00:00 2001 From: jdx <216188+jdx@users.noreply.github.com> Date: Wed, 22 Apr 2026 16:22:42 -0500 Subject: [PATCH 2/5] ci: add libudev-dev pre-build for musl targets in Cross.toml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The musl targets need the same libudev-dev pre-build step as the GNU targets for ctap-hid-fido2 → hidapi to compile. Co-Authored-By: Claude Opus 4.7 (1M context) --- Cross.toml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Cross.toml b/Cross.toml index 6568d592..77c95de8 100644 --- a/Cross.toml +++ b/Cross.toml @@ -10,3 +10,16 @@ pre-build = [ "apt-get update", "apt-get install -y libudev-dev:$CROSS_DEB_ARCH", ] + +[target.x86_64-unknown-linux-musl] +pre-build = [ + "apt-get update", + "apt-get install -y libudev-dev", +] + +[target.aarch64-unknown-linux-musl] +pre-build = [ + "dpkg --add-architecture $CROSS_DEB_ARCH", + "apt-get update", + "apt-get install -y libudev-dev:$CROSS_DEB_ARCH", +] From 68a71588336333f5b8aadd3960bc8bdec464220b Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Wed, 22 Apr 2026 21:32:03 +0000 Subject: [PATCH 3/5] [autofix.ci] apply automated fixes --- docs/public/schema.json | 212 ++++++++++++++++++++-------------------- src/tui/app.rs | 30 +++--- src/tui/event.rs | 15 ++- 3 files changed, 124 insertions(+), 133 deletions(-) diff --git a/docs/public/schema.json b/docs/public/schema.json index 204e741a..6a4d2294 100644 --- a/docs/public/schema.json +++ b/docs/public/schema.json @@ -460,25 +460,22 @@ "auth_command": { "type": ["string", "null"] }, - "credential_id": { + "database": { "$ref": "#/$defs/StringOrSecretRef" }, - "pin": { + "keyfile": { "$ref": "#/$defs/OptionStringOrSecretRef" }, - "rp_id": { - "$ref": "#/$defs/StringOrSecretRef" - }, - "salt": { - "$ref": "#/$defs/StringOrSecretRef" + "password": { + "$ref": "#/$defs/OptionStringOrSecretRef" }, "type": { "type": "string", - "const": "fido2" + "const": "keepass" } }, "additionalProperties": false, - "required": ["type", "credential_id", "salt", "rp_id"] + "required": ["type", "database"] }, { "type": "object", @@ -523,22 +520,25 @@ "auth_command": { "type": ["string", "null"] }, - "key_file": { + "credential_id": { + "$ref": "#/$defs/StringOrSecretRef" + }, + "pin": { "$ref": "#/$defs/OptionStringOrSecretRef" }, - "recipients": { - "type": "array", - "items": { - "type": "string" - } + "rp_id": { + "$ref": "#/$defs/StringOrSecretRef" + }, + "salt": { + "$ref": "#/$defs/StringOrSecretRef" }, "type": { "type": "string", - "const": "age" + "const": "fido2" } }, "additionalProperties": false, - "required": ["type", "recipients"] + "required": ["type", "credential_id", "salt", "rp_id"] }, { "type": "object", @@ -546,22 +546,22 @@ "auth_command": { "type": ["string", "null"] }, - "database": { - "$ref": "#/$defs/StringOrSecretRef" - }, - "keyfile": { + "key_file": { "$ref": "#/$defs/OptionStringOrSecretRef" }, - "password": { - "$ref": "#/$defs/OptionStringOrSecretRef" + "recipients": { + "type": "array", + "items": { + "type": "string" + } }, "type": { "type": "string", - "const": "keepass" + "const": "age" } }, "additionalProperties": false, - "required": ["type", "database"] + "required": ["type", "recipients"] }, { "type": "object", @@ -586,28 +586,35 @@ { "type": "object", "properties": { - "api_key": { - "$ref": "#/$defs/OptionStringOrSecretRef" - }, "auth_command": { "type": ["string", "null"] }, - "base_url": { - "$ref": "#/$defs/StringOrSecretRef" + "backend": { + "anyOf": [ + { + "$ref": "#/$defs/BitwardenBackend" + }, + { + "type": "null" + } + ] }, - "password_list_id": { - "$ref": "#/$defs/StringOrSecretRef" + "collection": { + "$ref": "#/$defs/OptionStringOrSecretRef" }, - "type": { - "type": "string", - "const": "passwordstate" + "organization_id": { + "$ref": "#/$defs/OptionStringOrSecretRef" }, - "verify_ssl": { + "profile": { "$ref": "#/$defs/OptionStringOrSecretRef" + }, + "type": { + "type": "string", + "const": "bitwarden" } }, "additionalProperties": false, - "required": ["type", "base_url", "password_list_id"] + "required": ["type"] }, { "type": "object", @@ -629,31 +636,21 @@ { "type": "object", "properties": { - "auth_command": { - "type": ["string", "null"] - }, - "backend": { - "anyOf": [ - { - "$ref": "#/$defs/BitwardenBackend" - }, - { - "type": "null" - } - ] - }, - "collection": { + "account": { "$ref": "#/$defs/OptionStringOrSecretRef" }, - "organization_id": { - "$ref": "#/$defs/OptionStringOrSecretRef" + "auth_command": { + "type": ["string", "null"] }, - "profile": { + "token": { "$ref": "#/$defs/OptionStringOrSecretRef" }, "type": { "type": "string", - "const": "bitwarden" + "const": "1password" + }, + "vault": { + "$ref": "#/$defs/OptionStringOrSecretRef" } }, "additionalProperties": false, @@ -662,25 +659,28 @@ { "type": "object", "properties": { - "account": { + "api_key": { "$ref": "#/$defs/OptionStringOrSecretRef" }, "auth_command": { "type": ["string", "null"] }, - "token": { - "$ref": "#/$defs/OptionStringOrSecretRef" + "base_url": { + "$ref": "#/$defs/StringOrSecretRef" + }, + "password_list_id": { + "$ref": "#/$defs/StringOrSecretRef" }, "type": { "type": "string", - "const": "1password" + "const": "passwordstate" }, - "vault": { + "verify_ssl": { "$ref": "#/$defs/OptionStringOrSecretRef" } }, "additionalProperties": false, - "required": ["type"] + "required": ["type", "base_url", "password_list_id"] }, { "type": "object", @@ -705,6 +705,26 @@ "additionalProperties": false, "required": ["type"] }, + { + "type": "object", + "properties": { + "auth_command": { + "type": ["string", "null"] + }, + "key_name": { + "$ref": "#/$defs/StringOrSecretRef" + }, + "type": { + "type": "string", + "const": "azure-kms" + }, + "vault_url": { + "$ref": "#/$defs/StringOrSecretRef" + } + }, + "additionalProperties": false, + "required": ["type", "vault_url", "key_name"] + }, { "type": "object", "properties": { @@ -754,26 +774,6 @@ "additionalProperties": false, "required": ["type", "project", "location", "keyring", "key"] }, - { - "type": "object", - "properties": { - "auth_command": { - "type": ["string", "null"] - }, - "key_name": { - "$ref": "#/$defs/StringOrSecretRef" - }, - "type": { - "type": "string", - "const": "azure-kms" - }, - "vault_url": { - "$ref": "#/$defs/StringOrSecretRef" - } - }, - "additionalProperties": false, - "required": ["type", "vault_url", "key_name"] - }, { "type": "object", "properties": { @@ -829,22 +829,28 @@ { "type": "object", "properties": { + "address": { + "$ref": "#/$defs/OptionStringOrSecretRef" + }, "auth_command": { "type": ["string", "null"] }, - "prefix": { + "namespace": { + "$ref": "#/$defs/OptionStringOrSecretRef" + }, + "path": { + "$ref": "#/$defs/OptionStringOrSecretRef" + }, + "token": { "$ref": "#/$defs/OptionStringOrSecretRef" }, "type": { "type": "string", - "const": "azure-sm" - }, - "vault_url": { - "$ref": "#/$defs/StringOrSecretRef" + "const": "vault" } }, "additionalProperties": false, - "required": ["type", "vault_url"] + "required": ["type"] }, { "type": "object", @@ -855,16 +861,16 @@ "prefix": { "$ref": "#/$defs/OptionStringOrSecretRef" }, - "project": { - "$ref": "#/$defs/StringOrSecretRef" - }, "type": { "type": "string", - "const": "gcp-sm" + "const": "azure-sm" + }, + "vault_url": { + "$ref": "#/$defs/StringOrSecretRef" } }, "additionalProperties": false, - "required": ["type", "project"] + "required": ["type", "vault_url"] }, { "type": "object", @@ -895,41 +901,35 @@ "auth_command": { "type": ["string", "null"] }, - "profile": { + "prefix": { "$ref": "#/$defs/OptionStringOrSecretRef" }, - "project_id": { - "$ref": "#/$defs/OptionStringOrSecretRef" + "project": { + "$ref": "#/$defs/StringOrSecretRef" }, "type": { "type": "string", - "const": "bitwarden-sm" + "const": "gcp-sm" } }, "additionalProperties": false, - "required": ["type"] + "required": ["type", "project"] }, { "type": "object", "properties": { - "address": { - "$ref": "#/$defs/OptionStringOrSecretRef" - }, "auth_command": { "type": ["string", "null"] }, - "namespace": { - "$ref": "#/$defs/OptionStringOrSecretRef" - }, - "path": { + "profile": { "$ref": "#/$defs/OptionStringOrSecretRef" }, - "token": { + "project_id": { "$ref": "#/$defs/OptionStringOrSecretRef" }, "type": { "type": "string", - "const": "vault" + "const": "bitwarden-sm" } }, "additionalProperties": false, diff --git a/src/tui/app.rs b/src/tui/app.rs index c1e30a1a..757b8271 100644 --- a/src/tui/app.rs +++ b/src/tui/app.rs @@ -463,12 +463,11 @@ impl App { self.popup = Popup::ConfirmDelete(key.clone()); } } - KeyCode::Char('e') => { + KeyCode::Char('e') // Edit selected secret value - if self.focus == Focus::Secrets { + if self.focus == Focus::Secrets => { self.open_edit_secret(); } - } KeyCode::Char('s') => { // Set/create a new secret self.popup = Popup::SetSecret(SetState { @@ -636,17 +635,15 @@ impl App { self.resolved_values.insert(key.clone(), Some(value)); self.status_message = Some(format!("Updated {} (in memory only)", key)); } - KeyCode::Backspace => { - if state.cursor > 0 { + KeyCode::Backspace + if state.cursor > 0 => { Self::remove_char_at(&mut state.value, state.cursor - 1); state.cursor -= 1; } - } - KeyCode::Delete => { - if state.cursor < state.value.chars().count() { + KeyCode::Delete + if state.cursor < state.value.chars().count() => { Self::remove_char_at(&mut state.value, state.cursor); } - } KeyCode::Left => { state.cursor = state.cursor.saturating_sub(1); } @@ -714,8 +711,8 @@ impl App { self.resolved_values.insert(key.clone(), Some(value)); self.status_message = Some(format!("Set {} (in memory only)", key)); } - KeyCode::Backspace => { - if state.cursor > 0 { + KeyCode::Backspace + if state.cursor > 0 => { let field = match state.field { SetField::Key => &mut state.key, SetField::Value => &mut state.value, @@ -723,7 +720,6 @@ impl App { Self::remove_char_at(field, state.cursor - 1); state.cursor -= 1; } - } KeyCode::Delete => { let field = match state.field { SetField::Key => &mut state.key, @@ -768,20 +764,18 @@ impl App { } self.popup = Popup::None; } - KeyCode::Down | KeyCode::Char('j') => { - if !self.available_profiles.is_empty() { + KeyCode::Down | KeyCode::Char('j') + if !self.available_profiles.is_empty() => { self.profile_picker_index = (self.profile_picker_index + 1) % self.available_profiles.len(); } - } - KeyCode::Up | KeyCode::Char('k') => { - if !self.available_profiles.is_empty() { + KeyCode::Up | KeyCode::Char('k') + if !self.available_profiles.is_empty() => { self.profile_picker_index = self .profile_picker_index .checked_sub(1) .unwrap_or(self.available_profiles.len() - 1); } - } _ => {} } } diff --git a/src/tui/event.rs b/src/tui/event.rs index 6198804a..78469bb4 100644 --- a/src/tui/event.rs +++ b/src/tui/event.rs @@ -41,22 +41,19 @@ impl EventHandler { if event::poll(tick_rate).unwrap_or(false) { if let Ok(evt) = event::read() { match evt { - CrosstermEvent::Key(key) => { - if tx_clone.send(Event::Key(key)).is_err() { + CrosstermEvent::Key(key) + if tx_clone.send(Event::Key(key)).is_err() => { break; } - } - CrosstermEvent::Mouse(mouse) => { - if tx_clone.send(Event::Mouse(mouse)).is_err() { + CrosstermEvent::Mouse(mouse) + if tx_clone.send(Event::Mouse(mouse)).is_err() => { break; } - } - CrosstermEvent::Resize(_, _) => { + CrosstermEvent::Resize(_, _) // Terminal resize - send tick to trigger redraw - if tx_clone.send(Event::Tick).is_err() { + if tx_clone.send(Event::Tick).is_err() => { break; } - } _ => {} } } From 2dea47d6ef4cf07e035f09f748b20cdeeecc0375 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Wed, 22 Apr 2026 21:41:16 +0000 Subject: [PATCH 4/5] [autofix.ci] apply automated fixes (attempt 2/3) --- src/tui/app.rs | 55 +++++++++++++++++++++++--------------------------- 1 file changed, 25 insertions(+), 30 deletions(-) diff --git a/src/tui/app.rs b/src/tui/app.rs index 757b8271..7c19ecbe 100644 --- a/src/tui/app.rs +++ b/src/tui/app.rs @@ -635,15 +635,13 @@ impl App { self.resolved_values.insert(key.clone(), Some(value)); self.status_message = Some(format!("Updated {} (in memory only)", key)); } - KeyCode::Backspace - if state.cursor > 0 => { - Self::remove_char_at(&mut state.value, state.cursor - 1); - state.cursor -= 1; - } - KeyCode::Delete - if state.cursor < state.value.chars().count() => { - Self::remove_char_at(&mut state.value, state.cursor); - } + KeyCode::Backspace if state.cursor > 0 => { + Self::remove_char_at(&mut state.value, state.cursor - 1); + state.cursor -= 1; + } + KeyCode::Delete if state.cursor < state.value.chars().count() => { + Self::remove_char_at(&mut state.value, state.cursor); + } KeyCode::Left => { state.cursor = state.cursor.saturating_sub(1); } @@ -711,15 +709,14 @@ impl App { self.resolved_values.insert(key.clone(), Some(value)); self.status_message = Some(format!("Set {} (in memory only)", key)); } - KeyCode::Backspace - if state.cursor > 0 => { - let field = match state.field { - SetField::Key => &mut state.key, - SetField::Value => &mut state.value, - }; - Self::remove_char_at(field, state.cursor - 1); - state.cursor -= 1; - } + KeyCode::Backspace if state.cursor > 0 => { + let field = match state.field { + SetField::Key => &mut state.key, + SetField::Value => &mut state.value, + }; + Self::remove_char_at(field, state.cursor - 1); + state.cursor -= 1; + } KeyCode::Delete => { let field = match state.field { SetField::Key => &mut state.key, @@ -764,18 +761,16 @@ impl App { } self.popup = Popup::None; } - KeyCode::Down | KeyCode::Char('j') - if !self.available_profiles.is_empty() => { - self.profile_picker_index = - (self.profile_picker_index + 1) % self.available_profiles.len(); - } - KeyCode::Up | KeyCode::Char('k') - if !self.available_profiles.is_empty() => { - self.profile_picker_index = self - .profile_picker_index - .checked_sub(1) - .unwrap_or(self.available_profiles.len() - 1); - } + KeyCode::Down | KeyCode::Char('j') if !self.available_profiles.is_empty() => { + self.profile_picker_index = + (self.profile_picker_index + 1) % self.available_profiles.len(); + } + KeyCode::Up | KeyCode::Char('k') if !self.available_profiles.is_empty() => { + self.profile_picker_index = self + .profile_picker_index + .checked_sub(1) + .unwrap_or(self.available_profiles.len() - 1); + } _ => {} } } From 3d619dc44420aeeb5492ff5742f177e7eaf7ad6b Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Wed, 22 Apr 2026 21:50:22 +0000 Subject: [PATCH 5/5] [autofix.ci] apply automated fixes (attempt 3/3) --- docs/public/schema.json | 212 ++++++++++++++++++++-------------------- 1 file changed, 106 insertions(+), 106 deletions(-) diff --git a/docs/public/schema.json b/docs/public/schema.json index 6a4d2294..204e741a 100644 --- a/docs/public/schema.json +++ b/docs/public/schema.json @@ -460,22 +460,25 @@ "auth_command": { "type": ["string", "null"] }, - "database": { + "credential_id": { "$ref": "#/$defs/StringOrSecretRef" }, - "keyfile": { + "pin": { "$ref": "#/$defs/OptionStringOrSecretRef" }, - "password": { - "$ref": "#/$defs/OptionStringOrSecretRef" + "rp_id": { + "$ref": "#/$defs/StringOrSecretRef" + }, + "salt": { + "$ref": "#/$defs/StringOrSecretRef" }, "type": { "type": "string", - "const": "keepass" + "const": "fido2" } }, "additionalProperties": false, - "required": ["type", "database"] + "required": ["type", "credential_id", "salt", "rp_id"] }, { "type": "object", @@ -520,25 +523,22 @@ "auth_command": { "type": ["string", "null"] }, - "credential_id": { - "$ref": "#/$defs/StringOrSecretRef" - }, - "pin": { + "key_file": { "$ref": "#/$defs/OptionStringOrSecretRef" }, - "rp_id": { - "$ref": "#/$defs/StringOrSecretRef" - }, - "salt": { - "$ref": "#/$defs/StringOrSecretRef" + "recipients": { + "type": "array", + "items": { + "type": "string" + } }, "type": { "type": "string", - "const": "fido2" + "const": "age" } }, "additionalProperties": false, - "required": ["type", "credential_id", "salt", "rp_id"] + "required": ["type", "recipients"] }, { "type": "object", @@ -546,22 +546,22 @@ "auth_command": { "type": ["string", "null"] }, - "key_file": { + "database": { + "$ref": "#/$defs/StringOrSecretRef" + }, + "keyfile": { "$ref": "#/$defs/OptionStringOrSecretRef" }, - "recipients": { - "type": "array", - "items": { - "type": "string" - } + "password": { + "$ref": "#/$defs/OptionStringOrSecretRef" }, "type": { "type": "string", - "const": "age" + "const": "keepass" } }, "additionalProperties": false, - "required": ["type", "recipients"] + "required": ["type", "database"] }, { "type": "object", @@ -586,35 +586,28 @@ { "type": "object", "properties": { + "api_key": { + "$ref": "#/$defs/OptionStringOrSecretRef" + }, "auth_command": { "type": ["string", "null"] }, - "backend": { - "anyOf": [ - { - "$ref": "#/$defs/BitwardenBackend" - }, - { - "type": "null" - } - ] - }, - "collection": { - "$ref": "#/$defs/OptionStringOrSecretRef" - }, - "organization_id": { - "$ref": "#/$defs/OptionStringOrSecretRef" + "base_url": { + "$ref": "#/$defs/StringOrSecretRef" }, - "profile": { - "$ref": "#/$defs/OptionStringOrSecretRef" + "password_list_id": { + "$ref": "#/$defs/StringOrSecretRef" }, "type": { "type": "string", - "const": "bitwarden" + "const": "passwordstate" + }, + "verify_ssl": { + "$ref": "#/$defs/OptionStringOrSecretRef" } }, "additionalProperties": false, - "required": ["type"] + "required": ["type", "base_url", "password_list_id"] }, { "type": "object", @@ -636,21 +629,31 @@ { "type": "object", "properties": { - "account": { - "$ref": "#/$defs/OptionStringOrSecretRef" - }, "auth_command": { "type": ["string", "null"] }, - "token": { + "backend": { + "anyOf": [ + { + "$ref": "#/$defs/BitwardenBackend" + }, + { + "type": "null" + } + ] + }, + "collection": { "$ref": "#/$defs/OptionStringOrSecretRef" }, - "type": { - "type": "string", - "const": "1password" + "organization_id": { + "$ref": "#/$defs/OptionStringOrSecretRef" }, - "vault": { + "profile": { "$ref": "#/$defs/OptionStringOrSecretRef" + }, + "type": { + "type": "string", + "const": "bitwarden" } }, "additionalProperties": false, @@ -659,28 +662,25 @@ { "type": "object", "properties": { - "api_key": { + "account": { "$ref": "#/$defs/OptionStringOrSecretRef" }, "auth_command": { "type": ["string", "null"] }, - "base_url": { - "$ref": "#/$defs/StringOrSecretRef" - }, - "password_list_id": { - "$ref": "#/$defs/StringOrSecretRef" + "token": { + "$ref": "#/$defs/OptionStringOrSecretRef" }, "type": { "type": "string", - "const": "passwordstate" + "const": "1password" }, - "verify_ssl": { + "vault": { "$ref": "#/$defs/OptionStringOrSecretRef" } }, "additionalProperties": false, - "required": ["type", "base_url", "password_list_id"] + "required": ["type"] }, { "type": "object", @@ -705,26 +705,6 @@ "additionalProperties": false, "required": ["type"] }, - { - "type": "object", - "properties": { - "auth_command": { - "type": ["string", "null"] - }, - "key_name": { - "$ref": "#/$defs/StringOrSecretRef" - }, - "type": { - "type": "string", - "const": "azure-kms" - }, - "vault_url": { - "$ref": "#/$defs/StringOrSecretRef" - } - }, - "additionalProperties": false, - "required": ["type", "vault_url", "key_name"] - }, { "type": "object", "properties": { @@ -774,6 +754,26 @@ "additionalProperties": false, "required": ["type", "project", "location", "keyring", "key"] }, + { + "type": "object", + "properties": { + "auth_command": { + "type": ["string", "null"] + }, + "key_name": { + "$ref": "#/$defs/StringOrSecretRef" + }, + "type": { + "type": "string", + "const": "azure-kms" + }, + "vault_url": { + "$ref": "#/$defs/StringOrSecretRef" + } + }, + "additionalProperties": false, + "required": ["type", "vault_url", "key_name"] + }, { "type": "object", "properties": { @@ -829,28 +829,22 @@ { "type": "object", "properties": { - "address": { - "$ref": "#/$defs/OptionStringOrSecretRef" - }, "auth_command": { "type": ["string", "null"] }, - "namespace": { - "$ref": "#/$defs/OptionStringOrSecretRef" - }, - "path": { - "$ref": "#/$defs/OptionStringOrSecretRef" - }, - "token": { + "prefix": { "$ref": "#/$defs/OptionStringOrSecretRef" }, "type": { "type": "string", - "const": "vault" + "const": "azure-sm" + }, + "vault_url": { + "$ref": "#/$defs/StringOrSecretRef" } }, "additionalProperties": false, - "required": ["type"] + "required": ["type", "vault_url"] }, { "type": "object", @@ -861,16 +855,16 @@ "prefix": { "$ref": "#/$defs/OptionStringOrSecretRef" }, + "project": { + "$ref": "#/$defs/StringOrSecretRef" + }, "type": { "type": "string", - "const": "azure-sm" - }, - "vault_url": { - "$ref": "#/$defs/StringOrSecretRef" + "const": "gcp-sm" } }, "additionalProperties": false, - "required": ["type", "vault_url"] + "required": ["type", "project"] }, { "type": "object", @@ -901,35 +895,41 @@ "auth_command": { "type": ["string", "null"] }, - "prefix": { + "profile": { "$ref": "#/$defs/OptionStringOrSecretRef" }, - "project": { - "$ref": "#/$defs/StringOrSecretRef" + "project_id": { + "$ref": "#/$defs/OptionStringOrSecretRef" }, "type": { "type": "string", - "const": "gcp-sm" + "const": "bitwarden-sm" } }, "additionalProperties": false, - "required": ["type", "project"] + "required": ["type"] }, { "type": "object", "properties": { + "address": { + "$ref": "#/$defs/OptionStringOrSecretRef" + }, "auth_command": { "type": ["string", "null"] }, - "profile": { + "namespace": { "$ref": "#/$defs/OptionStringOrSecretRef" }, - "project_id": { + "path": { + "$ref": "#/$defs/OptionStringOrSecretRef" + }, + "token": { "$ref": "#/$defs/OptionStringOrSecretRef" }, "type": { "type": "string", - "const": "bitwarden-sm" + "const": "vault" } }, "additionalProperties": false,