Fix Infisical v4 query params, convert flags to switches, fix changelog regex
- InfisicalSecretsClient: use projectId / includeImports (camelCase) per Infisical v4 OpenAPI
- Get-InfisicalSecrets / Get-InfisicalSecret: change [bool] flag parameters to [switch]
- DesignSpec.md: updated 14.3 / 14.4 examples to match new switch syntax
- build.ps1: anchor Update-Changelog regex to the literal '## Unreleased' line and limit replacement to 1 to stop exponential duplication of carried-forward markers
- Manifest bumped to 2026.06.03.0032 (commit c866760105)
This commit is contained in:
@@ -6,6 +6,12 @@ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) loos
|
||||
|
||||
## Unreleased
|
||||
|
||||
## 2026.06.03.0032
|
||||
|
||||
- Build produced from commit c86676010532.
|
||||
|
||||
## Unreleased (carried forward)
|
||||
|
||||
## 2026.06.02.1907
|
||||
|
||||
- Build produced from commit fa65c18bc171.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
@{
|
||||
RootModule = 'PSInfisicalAPI.psm1'
|
||||
ModuleVersion = '2026.06.02.1907'
|
||||
ModuleVersion = '2026.06.03.0032'
|
||||
GUID = 'b8a2f3d4-7c51-4d2f-9e6a-1f0c8b3d4e51'
|
||||
Author = 'Grace Solutions'
|
||||
CompanyName = 'Grace Solutions'
|
||||
@@ -27,7 +27,7 @@
|
||||
LicenseUri = 'https://www.gnu.org/licenses/agpl-3.0.html'
|
||||
ProjectUri = 'https://prod.git.gracesolution.info/gsadmin/PSInfisicalAPI'
|
||||
ReleaseNotes = 'See CHANGELOG.md in the project repository for release history.'
|
||||
CommitHash = 'fa65c18bc171'
|
||||
CommitHash = 'c86676010532'
|
||||
}
|
||||
}
|
||||
}
|
||||
Binary file not shown.
@@ -133,7 +133,9 @@ function Update-Changelog {
|
||||
if ($existing -match [Regex]::Escape($marker)) { return }
|
||||
|
||||
$insertion = "## $Version`r`n`r`n- Build produced from commit $CommitHash.`r`n`r`n"
|
||||
$updated = $existing -replace '## Unreleased', "## Unreleased`r`n`r`n$insertion## Unreleased (carried forward)"
|
||||
$unreleasedRegex = [regex]::new('(?m)^## Unreleased\r?$')
|
||||
if (-not $unreleasedRegex.IsMatch($existing)) { return }
|
||||
$updated = $unreleasedRegex.Replace($existing, "## Unreleased`r`n`r`n$insertion## Unreleased (carried forward)", 1)
|
||||
[System.IO.File]::WriteAllText($ChangelogFile.FullName, $updated, [System.Text.UTF8Encoding]::new($false))
|
||||
}
|
||||
|
||||
|
||||
+12
-12
@@ -954,10 +954,10 @@ Get-InfisicalSecrets `
|
||||
[-Environment <string>] `
|
||||
[-SecretPath <string>] `
|
||||
[-Recursive] `
|
||||
[-IncludeImports <bool>] `
|
||||
[-IncludeImports] `
|
||||
[-IncludePersonalOverrides] `
|
||||
[-ExpandSecretReferences <bool>] `
|
||||
[-ViewSecretValue <bool>] `
|
||||
[-ExpandSecretReferences] `
|
||||
[-ViewSecretValue] `
|
||||
[-MetadataFilter <hashtable>] `
|
||||
[-TagSlugs <string[]>]
|
||||
```
|
||||
@@ -969,9 +969,9 @@ ProjectId: Current connection ProjectId
|
||||
Environment: Current connection Environment
|
||||
SecretPath: Current connection DefaultSecretPath or /
|
||||
Recursive: false
|
||||
IncludeImports: true
|
||||
ExpandSecretReferences: true
|
||||
ViewSecretValue: true
|
||||
IncludeImports: false
|
||||
ExpandSecretReferences: false
|
||||
ViewSecretValue: false
|
||||
```
|
||||
|
||||
## Behavior
|
||||
@@ -1020,9 +1020,9 @@ Get-InfisicalSecret `
|
||||
[-SecretPath <string>] `
|
||||
[-Version <int>] `
|
||||
[-Type <InfisicalSecretType>] `
|
||||
[-ViewSecretValue <bool>] `
|
||||
[-ExpandSecretReferences <bool>] `
|
||||
[-IncludeImports <bool>]
|
||||
[-ViewSecretValue] `
|
||||
[-ExpandSecretReferences] `
|
||||
[-IncludeImports]
|
||||
```
|
||||
|
||||
## Parameter Attributes
|
||||
@@ -1040,9 +1040,9 @@ ProjectId: Current connection ProjectId
|
||||
Environment: Current connection Environment
|
||||
SecretPath: Current connection DefaultSecretPath or /
|
||||
Type: Shared
|
||||
ViewSecretValue: true
|
||||
ExpandSecretReferences: true
|
||||
IncludeImports: true
|
||||
ViewSecretValue: false
|
||||
ExpandSecretReferences: false
|
||||
IncludeImports: false
|
||||
```
|
||||
|
||||
## Behavior
|
||||
|
||||
@@ -18,9 +18,9 @@ namespace PSInfisicalAPI.Cmdlets
|
||||
[Parameter] public string SecretPath { get; set; }
|
||||
[Parameter] public int? Version { get; set; }
|
||||
[Parameter] public InfisicalSecretType Type { get; set; } = InfisicalSecretType.Shared;
|
||||
[Parameter] public bool ViewSecretValue { get; set; } = true;
|
||||
[Parameter] public bool ExpandSecretReferences { get; set; } = true;
|
||||
[Parameter] public bool IncludeImports { get; set; } = true;
|
||||
[Parameter] public SwitchParameter ViewSecretValue { get; set; }
|
||||
[Parameter] public SwitchParameter ExpandSecretReferences { get; set; }
|
||||
[Parameter] public SwitchParameter IncludeImports { get; set; }
|
||||
|
||||
protected override void ProcessRecord()
|
||||
{
|
||||
@@ -36,9 +36,9 @@ namespace PSInfisicalAPI.Cmdlets
|
||||
SecretPath = SecretPath,
|
||||
Version = Version,
|
||||
Type = Type.ToString(),
|
||||
ViewSecretValue = ViewSecretValue,
|
||||
ExpandSecretReferences = ExpandSecretReferences,
|
||||
IncludeImports = IncludeImports
|
||||
ViewSecretValue = ViewSecretValue.IsPresent,
|
||||
ExpandSecretReferences = ExpandSecretReferences.IsPresent,
|
||||
IncludeImports = IncludeImports.IsPresent
|
||||
};
|
||||
|
||||
InfisicalSecretsClient client = new InfisicalSecretsClient(HttpClient, Logger);
|
||||
|
||||
@@ -16,10 +16,10 @@ namespace PSInfisicalAPI.Cmdlets
|
||||
[Parameter] public string Environment { get; set; }
|
||||
[Parameter] public string SecretPath { get; set; }
|
||||
[Parameter] public SwitchParameter Recursive { get; set; }
|
||||
[Parameter] public bool IncludeImports { get; set; } = true;
|
||||
[Parameter] public SwitchParameter IncludeImports { get; set; }
|
||||
[Parameter] public SwitchParameter IncludePersonalOverrides { get; set; }
|
||||
[Parameter] public bool ExpandSecretReferences { get; set; } = true;
|
||||
[Parameter] public bool ViewSecretValue { get; set; } = true;
|
||||
[Parameter] public SwitchParameter ExpandSecretReferences { get; set; }
|
||||
[Parameter] public SwitchParameter ViewSecretValue { get; set; }
|
||||
[Parameter] public Hashtable MetadataFilter { get; set; }
|
||||
[Parameter] public string[] TagSlugs { get; set; }
|
||||
|
||||
@@ -35,10 +35,10 @@ namespace PSInfisicalAPI.Cmdlets
|
||||
Environment = Environment,
|
||||
SecretPath = SecretPath,
|
||||
Recursive = Recursive.IsPresent,
|
||||
IncludeImports = IncludeImports,
|
||||
IncludeImports = IncludeImports.IsPresent,
|
||||
IncludePersonalOverrides = IncludePersonalOverrides.IsPresent,
|
||||
ExpandSecretReferences = ExpandSecretReferences,
|
||||
ViewSecretValue = ViewSecretValue,
|
||||
ExpandSecretReferences = ExpandSecretReferences.IsPresent,
|
||||
ViewSecretValue = ViewSecretValue.IsPresent,
|
||||
MetadataFilter = ToStringDictionary(MetadataFilter),
|
||||
TagSlugs = TagSlugs
|
||||
};
|
||||
|
||||
@@ -35,11 +35,11 @@ namespace PSInfisicalAPI.Secrets
|
||||
InfisicalEndpointDefinition definition = InfisicalEndpointRegistry.Get(InfisicalEndpointNames.ListSecrets);
|
||||
|
||||
List<KeyValuePair<string, string>> queryParameters = new List<KeyValuePair<string, string>>();
|
||||
AddIfNotNull(queryParameters, "workspaceId", FirstNonEmpty(query.ProjectId, connection.ProjectId));
|
||||
AddIfNotNull(queryParameters, "projectId", FirstNonEmpty(query.ProjectId, connection.ProjectId));
|
||||
AddIfNotNull(queryParameters, "environment", FirstNonEmpty(query.Environment, connection.Environment));
|
||||
AddIfNotNull(queryParameters, "secretPath", FirstNonEmpty(query.SecretPath, connection.DefaultSecretPath, "/"));
|
||||
queryParameters.Add(new KeyValuePair<string, string>("recursive", query.Recursive ? "true" : "false"));
|
||||
if (query.IncludeImports.HasValue) { queryParameters.Add(new KeyValuePair<string, string>("include_imports", query.IncludeImports.Value ? "true" : "false")); }
|
||||
if (query.IncludeImports.HasValue) { queryParameters.Add(new KeyValuePair<string, string>("includeImports", query.IncludeImports.Value ? "true" : "false")); }
|
||||
if (query.IncludePersonalOverrides) { queryParameters.Add(new KeyValuePair<string, string>("includePersonalOverrides", "true")); }
|
||||
if (query.ExpandSecretReferences.HasValue) { queryParameters.Add(new KeyValuePair<string, string>("expandSecretReferences", query.ExpandSecretReferences.Value ? "true" : "false")); }
|
||||
if (query.ViewSecretValue.HasValue) { queryParameters.Add(new KeyValuePair<string, string>("viewSecretValue", query.ViewSecretValue.Value ? "true" : "false")); }
|
||||
@@ -93,14 +93,14 @@ namespace PSInfisicalAPI.Secrets
|
||||
Dictionary<string, string> pathParameters = new Dictionary<string, string> { { "secretName", query.SecretName } };
|
||||
|
||||
List<KeyValuePair<string, string>> queryParameters = new List<KeyValuePair<string, string>>();
|
||||
AddIfNotNull(queryParameters, "workspaceId", FirstNonEmpty(query.ProjectId, connection.ProjectId));
|
||||
AddIfNotNull(queryParameters, "projectId", FirstNonEmpty(query.ProjectId, connection.ProjectId));
|
||||
AddIfNotNull(queryParameters, "environment", FirstNonEmpty(query.Environment, connection.Environment));
|
||||
AddIfNotNull(queryParameters, "secretPath", FirstNonEmpty(query.SecretPath, connection.DefaultSecretPath, "/"));
|
||||
AddIfNotNull(queryParameters, "type", string.IsNullOrEmpty(query.Type) ? "shared" : query.Type.ToLowerInvariant());
|
||||
if (query.Version.HasValue) { queryParameters.Add(new KeyValuePair<string, string>("version", query.Version.Value.ToString(CultureInfo.InvariantCulture))); }
|
||||
if (query.ViewSecretValue.HasValue) { queryParameters.Add(new KeyValuePair<string, string>("viewSecretValue", query.ViewSecretValue.Value ? "true" : "false")); }
|
||||
if (query.ExpandSecretReferences.HasValue) { queryParameters.Add(new KeyValuePair<string, string>("expandSecretReferences", query.ExpandSecretReferences.Value ? "true" : "false")); }
|
||||
if (query.IncludeImports.HasValue) { queryParameters.Add(new KeyValuePair<string, string>("include_imports", query.IncludeImports.Value ? "true" : "false")); }
|
||||
if (query.IncludeImports.HasValue) { queryParameters.Add(new KeyValuePair<string, string>("includeImports", query.IncludeImports.Value ? "true" : "false")); }
|
||||
|
||||
Uri uri = InfisicalUriBuilder.Build(connection.BaseUri, definition, pathParameters, queryParameters);
|
||||
InfisicalHttpResponse response = ExecuteAuthorized(connection, definition, "RetrieveSecret", uri, null);
|
||||
|
||||
Reference in New Issue
Block a user