diff --git a/content/en/schema/latest/policy/manifest/config.json b/content/en/schema/latest/policy/manifest/config.json index 1037048a..c8ae8980 100644 --- a/content/en/schema/latest/policy/manifest/config.json +++ b/content/en/schema/latest/policy/manifest/config.json @@ -136,6 +136,100 @@ "type": "object", "description": "Spec defines the parameters which can be provided to the argocd builder." }, + "bazel": { + "$schema": "http://json-schema.org/draft-04/schema", + "properties": { + "rootdir": { + "type": "string", + "description": "`rootdir` defines the root directory used to recursively search for `MODULE.bazel` files" + }, + "ignore": { + "items": { + "properties": { + "path": { + "type": "string", + "description": "`path` specifies a `MODULE.bazel` path pattern, the pattern requires to match all of name, not just a substring." + }, + "modules": { + "additionalProperties": { + "type": "string" + }, + "type": "object", + "description": "`modules` specifies a map of modules, the key is module name as seen in the `MODULE.bazel`,\nthe value is an optional semver version constraint.\n\nexamples:\n```\n- modules:\n # Ignoring module updates for this module\n rules_go:\n # Ignore module updates for this version\n gazelle: \"1.x\"\n```" + } + }, + "additionalProperties": false, + "type": "object", + "description": "MatchingRule allows specifying rules to identify manifests" + }, + "type": "array", + "description": "`ignore` specifies rule to ignore Bazel module updates." + }, + "only": { + "items": { + "properties": { + "path": { + "type": "string", + "description": "`path` specifies a `MODULE.bazel` path pattern, the pattern requires to match all of name, not just a substring." + }, + "modules": { + "additionalProperties": { + "type": "string" + }, + "type": "object", + "description": "`modules` specifies a map of modules, the key is module name as seen in the `MODULE.bazel`,\nthe value is an optional semver version constraint.\n\nexamples:\n```\n- modules:\n # Ignoring module updates for this module\n rules_go:\n # Ignore module updates for this version\n gazelle: \"1.x\"\n```" + } + }, + "additionalProperties": false, + "type": "object", + "description": "MatchingRule allows specifying rules to identify manifests" + }, + "type": "array", + "description": "`only` specify required rule to restrict Bazel module updates." + }, + "versionfilter": { + "properties": { + "kind": { + "type": "string", + "description": "specifies the version kind such as semver, regex, or latest" + }, + "pattern": { + "type": "string", + "description": "specifies the version pattern according the version kind\nfor semver, it is a semver constraint\nfor regex, it is a regex pattern\nfor time, it is a date format" + }, + "strict": { + "type": "boolean", + "description": "strict enforce strict versioning rule.\nOnly used for semantic versioning at this time" + }, + "regex": { + "type": "string", + "description": "specifies the regex pattern, used for regex/semver and regex/time.\nOutput of the first capture group will be used." + }, + "replaceall": { + "properties": { + "pattern": { + "type": "string", + "description": "Pattern specifies the regex pattern to match for replacement" + }, + "replacement": { + "type": "string", + "description": "Replacement specifies the replacement string (supports $1, $2, etc. for captured groups)" + } + }, + "additionalProperties": false, + "type": "object", + "description": "replaceAll applies a regex replacement to version strings before filtering.\nThis is useful for transforming versions (e.g., curl-8_15_0 to curl-8.15.0) before regex extraction." + } + }, + "additionalProperties": false, + "type": "object", + "description": "`versionfilter` provides parameters to specify the version pattern to use when generating manifest.\n\nkind - semver\n\tversionfilter of kind `semver` uses semantic versioning as version filtering\n\tpattern accepts one of:\n\t\t`patch` - patch only update patch version\n\t\t`minor` - minor only update minor version\n\t\t`major` - major only update major versions\n\t\t`a version constraint` such as `\u003e= 1.0.0`\n\nkind - regex\n\tversionfilter of kind `regex` uses regular expression as version filtering\n\tpattern accepts a valid regular expression\n\nexample:\n```\n\tversionfilter:\n\t\tkind: semver\n\t\tpattern: minor\n```" + } + }, + "additionalProperties": false, + "type": "object", + "description": "Spec defines the Bazel autodiscovery parameters." + }, "cargo": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { @@ -2639,6 +2733,10 @@ "type": "string", "description": "`token` specifies the token to use for Git authentication when accessing private repositories.\nWorks with any Git provider (GitHub, GitLab, Bitbucket, Gitea, etc.)\n\ncompatible:\n * autodiscovery\n\ndefault:\n When not specified: No authentication (suitable for public repositories)\n\nremark:\n Must be explicitly set for private repositories.\n Use template functions to read from environment: token: \"{{ requiredEnv \\\"GITLAB_TOKEN\\\" }}\"\n\nexample:\n token: \"ghp_xxxxxxxxxxxx\"\n token: \"glpat-xxxxxxxxxxxx\"\n token: \"{{ requiredEnv \\\"GITLAB_TOKEN\\\" }}\"" }, + "username": { + "type": "string", + "description": "`username` specifies the username to use for Git authentication when accessing private repositories.\nWorks with any Git provider (GitHub, GitLab, Bitbucket, Gitea, etc.)\n\ncompatible:\n * autodiscovery\n\ndefault:\n When not specified: \"oauth2\" (matches GitHub SCM plugin, required for go-git HTTP BasicAuth)\n\nremark:\n For token-based auth, the username is typically a placeholder (token identifies the user).\n Common values: \"oauth2\" (default), \"x-access-token\", \"git\", or actual username.\n Use template functions to read from environment: username: \"{{ requiredEnv \\\"GIT_USERNAME\\\" }}\"\n\nexample:\n username: \"git\"\n username: \"oauth2\"\n username: \"{{ requiredEnv \\\"GIT_USERNAME\\\" }}\"" + }, "versionfilter": { "properties": { "kind": { @@ -2805,6 +2903,134 @@ "additionalProperties": false, "type": "object", "description": "Spec defines the Updatecli parameters." + }, + "woodpecker": { + "$schema": "http://json-schema.org/draft-04/schema", + "properties": { + "digest": { + "type": "boolean", + "description": "digest provides parameters to specify if the generated manifest should use a digest on top of the tag." + }, + "rootdir": { + "type": "string", + "description": "rootDir defines the root directory used to recursively search for Woodpecker workflow files\nIf rootDir is not provided, the current working directory will be used.\nIf rootDir is provided as an absolute path, scmID will be ignored.\nIf rootDir is not provided but a scmid is, then rootDir will be set to the git repository root directory." + }, + "ignore": { + "items": { + "properties": { + "path": { + "type": "string", + "description": "Path specifies a Woodpecker workflow path pattern, the pattern requires to match all of name, not just a substring." + }, + "images": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Images specifies a list of docker images" + } + }, + "additionalProperties": false, + "type": "object", + "description": "MatchingRule allows to specify rules to identify manifests" + }, + "type": "array", + "description": "ignore allows to specify rule to ignore autodiscovery a specific Woodpecker workflow based on a rule" + }, + "only": { + "items": { + "properties": { + "path": { + "type": "string", + "description": "Path specifies a Woodpecker workflow path pattern, the pattern requires to match all of name, not just a substring." + }, + "images": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Images specifies a list of docker images" + } + }, + "additionalProperties": false, + "type": "object", + "description": "MatchingRule allows to specify rules to identify manifests" + }, + "type": "array", + "description": "only allows to specify rule to only autodiscover manifest for a specific Woodpecker workflow based on a rule" + }, + "auths": { + "additionalProperties": { + "properties": { + "username": { + "type": "string", + "description": "username specifies the container registry username to use for authentication.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tby default credentials are fetch from the local environment such as `~/.docker/config.json`.\n\n\t\tremark:\n\t\t\tNot compatible with token" + }, + "password": { + "type": "string", + "description": "password specifies the container registry password to use for authentication. Not compatible with token\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tby default credentials are fetch from the local environment such as `~/.docker/config.json`.\n\n\t\tremark:\n\t\t\tNot compatible with token" + }, + "token": { + "type": "string", + "description": "token specifies the container registry token to use for authentication.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tby default credentials are fetch from the local environment such as `~/.docker/config.json`.\n\n\t\tremark:\n\t\t\tNot compatible with username/password" + } + }, + "additionalProperties": false, + "type": "object", + "description": "InlineKeyChain defines a keychain with OCI registry credentials" + }, + "type": "object", + "description": "auths provides a map of registry credentials where the key is the registry URL without scheme\nif empty, updatecli relies on OCI credentials such as the one used by Docker.\n\nexample:\n\n---\nauths:\n \"ghcr.io\":\n token: \"xxx\"\n \"index.docker.io\":\n username: \"admin\"\n password: \"password\"\n---" + }, + "filematch": { + "items": { + "type": "string" + }, + "type": "array", + "description": "FileMatch allows to override default Woodpecker workflow file matching.\nDefault [\".woodpecker.yml\", \".woodpecker.yaml\", \".woodpecker/*.yml\", \".woodpecker/*.yaml\", \".woodpecker/**/*.yml\", \".woodpecker/**/*.yaml\"]" + }, + "versionfilter": { + "properties": { + "kind": { + "type": "string", + "description": "specifies the version kind such as semver, regex, or latest" + }, + "pattern": { + "type": "string", + "description": "specifies the version pattern according the version kind\nfor semver, it is a semver constraint\nfor regex, it is a regex pattern\nfor time, it is a date format" + }, + "strict": { + "type": "boolean", + "description": "strict enforce strict versioning rule.\nOnly used for semantic versioning at this time" + }, + "regex": { + "type": "string", + "description": "specifies the regex pattern, used for regex/semver and regex/time.\nOutput of the first capture group will be used." + }, + "replaceall": { + "properties": { + "pattern": { + "type": "string", + "description": "Pattern specifies the regex pattern to match for replacement" + }, + "replacement": { + "type": "string", + "description": "Replacement specifies the replacement string (supports $1, $2, etc. for captured groups)" + } + }, + "additionalProperties": false, + "type": "object", + "description": "replaceAll applies a regex replacement to version strings before filtering.\nThis is useful for transforming versions (e.g., curl-8_15_0 to curl-8.15.0) before regex extraction." + } + }, + "additionalProperties": false, + "type": "object", + "description": "versionfilter provides parameters to specify the version pattern used when generating manifest.\n\nMore information available at\nhttps://www.updatecli.io/docs/core/versionfilter/\n\nkind - semver\n versionfilter of kind `semver` uses semantic versioning as version filtering\n pattern accepts one of:\n `patch` - patch only update patch version\n `minor` - minor only update minor version\n `major` - major only update major versions\n `a version constraint` such as `\u003e= 1.0.0`\n\nkind - regex\nversionfilter of kind `regex` uses regular expression as version filtering\npattern accepts a valid regular expression\n\nexample:\n```\n versionfilter:\n kind: semver\n pattern: minor\n```\n\nMore version filter available at https://www.updatecli.io/docs/core/versionfilter/" + } + }, + "additionalProperties": false, + "type": "object", + "description": "Spec is a struct filled from Updatecli manifest data and shouldn't be modified at runtime unless For Fields that requires it, we can use the struct Woodpecker Spec defines the parameters which can be provided to the Woodpecker autodiscovery plugin." } }, "type": "object", @@ -3303,6 +3529,10 @@ "type": "string", "description": "Title is the parsed commit message title (not configurable via YAML).\n The title is automatically generated from the target name or description." }, + "deprecatedtitle": { + "type": "string", + "description": "DeprecatedTitle is deprecated and will be ignored.\n The commit title is now always generated from the target name or description." + }, "body": { "type": "string", "description": "body defines the commit body of the commit message as defined by the\n conventional commit specification. More information on\n -\u003e https://www.conventionalcommits.org/en/\n\n default:\n none" @@ -3324,6 +3554,10 @@ "type": "string", "description": "\"directory\" defines the local path where the git repository is cloned.\n\n compatible:\n * scm\n\n remark:\n Unless you know what you are doing, it is recommended to use the default value.\n The reason is that Updatecli may automatically clean up the directory after a pipeline execution.\n\n default:\n The default value is based on your local temporary directory like: (on Linux)\n /tmp/updatecli/bitbucket/\u003cowner\u003e/\u003crepository\u003e" }, + "depth": { + "type": "integer", + "description": "Depth defines the depth used when cloning the git repository.\n\nDefault: disabled (full clone)\n\nRemark:\n When using a shallow clone (depth greater than 0), Updatecli is not able to retrieve the full git history.\n This may cause some issues when Updatecli tries to push changes to the remote repository.\n In that case, you may need to set the force option to true to force push changes to the remote repository." + }, "email": { "type": "string", "description": "\"email\" defines the email used to commit changes.\n\n compatible:\n * scm\n\n default:\n default set to your global git configuration" @@ -3430,6 +3664,10 @@ "type": "string", "description": "\"email\" defines the email used to commit changes.\n\n\tcompatible:\n\t * scm\n\n\tdefault:\n\t\tdefault set to your global git configuration" }, + "depth": { + "type": "integer", + "description": "Depth defines the depth used when cloning the git repository.\n\nDefault: disabled (full clone)\n\nRemark:\n When using a shallow clone (depth greater than 0), Updatecli is not able to retrieve the full git history.\n This may cause some issues when Updatecli tries to push changes to the remote repository.\n In that case, you may need to set the force option to true to force push changes to the remote repository." + }, "directory": { "type": "string", "description": "\"directory\" defines the local path where the git repository is cloned.\n\n\tcompatible:\n\t * scm\n\n\tremark:\n\t Unless you know what you are doing, it is highly recommended to use the default value.\n\t The reason is that Updatecli may automatically clean up the directory after a pipeline execution.\n\n\tdefault:\n\t The default value is based on your local temporary directory like /tmp/updatecli/\u003curl\u003e on Linux" @@ -3456,6 +3694,10 @@ "type": "string", "description": "Title is the parsed commit message title (not configurable via YAML).\n The title is automatically generated from the target name or description." }, + "deprecatedtitle": { + "type": "string", + "description": "DeprecatedTitle is deprecated and will be ignored.\n The commit title is now always generated from the target name or description." + }, "body": { "type": "string", "description": "body defines the commit body of the commit message as defined by the\n conventional commit specification. More information on\n -\u003e https://www.conventionalcommits.org/en/\n\n default:\n none" @@ -3552,6 +3794,10 @@ "type": "string", "description": "Title is the parsed commit message title (not configurable via YAML).\n The title is automatically generated from the target name or description." }, + "deprecatedtitle": { + "type": "string", + "description": "DeprecatedTitle is deprecated and will be ignored.\n The commit title is now always generated from the target name or description." + }, "body": { "type": "string", "description": "body defines the commit body of the commit message as defined by the\n conventional commit specification. More information on\n -\u003e https://www.conventionalcommits.org/en/\n\n default:\n none" @@ -3573,6 +3819,10 @@ "type": "string", "description": "\"directory\" defines the local path where the git repository is cloned.\n\n compatible:\n * scm\n\n remark:\n Unless you know what you are doing, it is recommended to use the default value.\n The reason is that Updatecli may automatically clean up the directory after a pipeline execution.\n\n default:\n The default value is based on your local temporary directory like: (on Linux)\n /tmp/updatecli/github/\u003cowner\u003e/\u003crepository\u003e" }, + "depth": { + "type": "integer", + "description": "Depth defines the depth used when cloning the git repository.\n\nDefault: disabled (full clone)\n\nRemark:\n When using a shallow clone (depth greater than 0), Updatecli is not able to retrieve the full git history.\n This may cause some issues when Updatecli tries to push changes to the remote repository.\n In that case, you may need to set the force option to true to force push changes to the remote repository." + }, "email": { "type": "string", "description": "\"email\" defines the email used to commit changes.\n\n compatible:\n * scm\n\n default:\n default set to your global git configuration" @@ -3672,6 +3922,10 @@ "type": "string", "description": "\"directory\" defines the local path where the git repository is cloned.\n\ncompatible:\n * scm\n\nremark:\n Unless you know what you are doing, it is recommended to use the default value.\n The reason is that Updatecli may automatically clean up the directory after a pipeline execution.\n\ndefault:\n The default value is based on your local temporary directory like: (on Linux)\n /tmp/updatecli/github/\u003cowner\u003e/\u003crepository\u003e" }, + "depth": { + "type": "integer", + "description": "Depth defines the depth used when cloning the git repository.\n\nDefault: disabled (full clone)\n\nRemark:\n When using a shallow clone (depth greater than 0), Updatecli is not able to retrieve the full git history.\n This may cause some issues when Updatecli tries to push changes to the remote repository.\n In that case, you may need to set the force option to true to force push changes to the remote repository." + }, "email": { "type": "string", "description": "\"email\" defines the email used to commit changes.\n\ncompatible:\n * scm\n\ndefault:\n default set to your global git configuration" @@ -3737,6 +3991,10 @@ "type": "string", "description": "Title is the parsed commit message title (not configurable via YAML).\n The title is automatically generated from the target name or description." }, + "deprecatedtitle": { + "type": "string", + "description": "DeprecatedTitle is deprecated and will be ignored.\n The commit title is now always generated from the target name or description." + }, "body": { "type": "string", "description": "body defines the commit body of the commit message as defined by the\n conventional commit specification. More information on\n -\u003e https://www.conventionalcommits.org/en/\n\n default:\n none" @@ -3901,6 +4159,10 @@ "type": "string", "description": "Title is the parsed commit message title (not configurable via YAML).\n The title is automatically generated from the target name or description." }, + "deprecatedtitle": { + "type": "string", + "description": "DeprecatedTitle is deprecated and will be ignored.\n The commit title is now always generated from the target name or description." + }, "body": { "type": "string", "description": "body defines the commit body of the commit message as defined by the\n conventional commit specification. More information on\n -\u003e https://www.conventionalcommits.org/en/\n\n default:\n none" @@ -4013,6 +4275,10 @@ "type": "string", "description": "Title is the parsed commit message title (not configurable via YAML).\n The title is automatically generated from the target name or description." }, + "deprecatedtitle": { + "type": "string", + "description": "DeprecatedTitle is deprecated and will be ignored.\n The commit title is now always generated from the target name or description." + }, "body": { "type": "string", "description": "body defines the commit body of the commit message as defined by the\n conventional commit specification. More information on\n -\u003e https://www.conventionalcommits.org/en/\n\n default:\n none" @@ -4034,6 +4300,10 @@ "type": "string", "description": "\"directory\" defines the local path where the git repository is cloned.\n\n\tcompatible:\n\t * scm\n\n\tremark:\n Unless you know what you are doing, it is recommended to use the default value.\n\t The reason is that Updatecli may automatically clean up the directory after a pipeline execution.\n\n\tdefault:\n\t The default value is based on your local temporary directory like: (on Linux)\n\t /tmp/updatecli/gitlab/\u003cowner\u003e/\u003crepository\u003e" }, + "depth": { + "type": "integer", + "description": "Depth defines the depth used when cloning the git repository.\n\nDefault: disabled (full clone)\n\nRemark:\n When using a shallow clone (depth greater than 0), Updatecli is not able to retrieve the full git history.\n This may cause some issues when Updatecli tries to push changes to the remote repository.\n In that case, you may need to set the force option to true to force push changes to the remote repository." + }, "email": { "type": "string", "description": "\"email\" defines the email used to commit changes.\n\n compatible:\n * scm\n\n default:\n default set to your global git configuration" @@ -4158,6 +4428,10 @@ "type": "string", "description": "Title is the parsed commit message title (not configurable via YAML).\n The title is automatically generated from the target name or description." }, + "deprecatedtitle": { + "type": "string", + "description": "DeprecatedTitle is deprecated and will be ignored.\n The commit title is now always generated from the target name or description." + }, "body": { "type": "string", "description": "body defines the commit body of the commit message as defined by the\n conventional commit specification. More information on\n -\u003e https://www.conventionalcommits.org/en/\n\n default:\n none" @@ -4179,6 +4453,10 @@ "type": "string", "description": "\"directory\" defines the local path where the git repository is cloned.\n\n compatible:\n * scm\n\n remark:\n Unless you know what you are doing, it is recommended to use the default value.\n The reason is that Updatecli may automatically clean up the directory after a pipeline execution.\n\n default:\n The default value is based on your local temporary directory like: (on Linux)\n /tmp/updatecli/stash/\u003cowner\u003e/\u003crepository\u003e" }, + "depth": { + "type": "integer", + "description": "Depth defines the depth used when cloning the git repository.\n\nDefault: disabled (full clone)\n\nRemark:\n When using a shallow clone (depth greater than 0), Updatecli is not able to retrieve the full git history.\n This may cause some issues when Updatecli tries to push changes to the remote repository.\n In that case, you may need to set the force option to true to force push changes to the remote repository." + }, "email": { "type": "string", "description": "\"email\" defines the email used to commit changes.\n\n compatible:\n * scm\n\n default:\n default set to your global git configuration" @@ -4460,6 +4738,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -4479,7 +4758,7 @@ }, "kind": { "enum": [ - "cargopackage" + "bazelmod" ] }, "transformers": { @@ -4616,93 +4895,22 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "registry": { - "properties": { - "auth": { - "properties": { - "token": { - "type": "string", - "description": "[A][S][C] Token specifies the cargo registry token to use for authentication." - }, - "headerformat": { - "type": "string", - "description": "[A][S][C] HeaderFormat specifies the cargo registry header format to use for authentication (defaults to `Bearer`)." - } - }, - "additionalProperties": false, - "type": "object", - "description": "[A][S][C] Auth specifies the cargo registry auth to use for authentication." - }, - "url": { - "type": "string", - "description": "[A][S][C] URL specifies the cargo registry URL to use for authentication." - }, - "rootdir": { - "type": "string", - "description": "[A][S][C] RootDir specifies the cargo registry root directory to use as FS index." - }, - "scmid": { - "type": "string", - "description": "[A] SCMID specifies the cargo registry scmId to use as FS index." - } - }, - "additionalProperties": false, - "type": "object", - "description": "[S][C] Registry specifies the registry to use" - }, - "package": { + "file": { "type": "string", - "description": "[S][C] Package specifies the name of the package" + "description": "File specifies the path to the MODULE.bazel file\n\ncompatible:\n * source\n * condition\n * target\n\nexample:\n * MODULE.bazel\n * path/to/MODULE.bazel" }, - "version": { + "module": { "type": "string", - "description": "[C] Defines a specific package version" - }, - "versionfilter": { - "properties": { - "kind": { - "type": "string", - "description": "specifies the version kind such as semver, regex, or latest" - }, - "pattern": { - "type": "string", - "description": "specifies the version pattern according the version kind\nfor semver, it is a semver constraint\nfor regex, it is a regex pattern\nfor time, it is a date format" - }, - "strict": { - "type": "boolean", - "description": "strict enforce strict versioning rule.\nOnly used for semantic versioning at this time" - }, - "regex": { - "type": "string", - "description": "specifies the regex pattern, used for regex/semver and regex/time.\nOutput of the first capture group will be used." - }, - "replaceall": { - "properties": { - "pattern": { - "type": "string", - "description": "Pattern specifies the regex pattern to match for replacement" - }, - "replacement": { - "type": "string", - "description": "Replacement specifies the replacement string (supports $1, $2, etc. for captured groups)" - } - }, - "additionalProperties": false, - "type": "object", - "description": "replaceAll applies a regex replacement to version strings before filtering.\nThis is useful for transforming versions (e.g., curl-8_15_0 to curl-8.15.0) before regex extraction." - } - }, - "additionalProperties": false, - "type": "object", - "description": "[S] VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." + "description": "Module specifies the Bazel module name to target\n\ncompatible:\n * source\n * condition\n * target\n\nexample:\n * rules_go\n * gazelle\n * protobuf" } }, "additionalProperties": false, "type": "object", "required": [ - "package" + "file", + "module" ], - "description": "Spec defines a specification for a \"cargopackage\" resource parsed from an updatecli manifest file" + "description": "Spec defines a specification for a \"bazelmod\" resource parsed from an updatecli manifest file" }, "scmid": { "type": "string", @@ -4712,6 +4920,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -4731,7 +4940,7 @@ }, "kind": { "enum": [ - "csv" + "bazelregistry" ] }, "transformers": { @@ -4868,36 +5077,9 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "file": { - "type": "string", - "description": "[s][c][t] File specifies the csv file" - }, - "files": { - "items": { - "type": "string" - }, - "type": "array", - "description": "[c][t] Files specifies a list of Json file to manipulate" - }, - "key": { - "type": "string", - "description": "[s][c][t] Key specifies the csv query" - }, - "query": { - "type": "string", - "description": "[s][c][t] Query allows to used advanced query. Override the parameter key" - }, - "value": { + "module": { "type": "string", - "description": "[s][c][t] Key specifies the csv value, default to source output" - }, - "comma": { - "type": "integer", - "description": "[s][c][t] Comma specifies the csv separator character, default \",\"" - }, - "comment": { - "type": "integer", - "description": "[s][c][t] Comma specifies the csv comment character, default \"#\"" + "description": "Module specifies the Bazel module name to query from the registry\n\ncompatible:\n * source\n * condition\n\nexample:\n * rules_go\n * rules_python\n * gazelle" }, "versionfilter": { "properties": { @@ -4935,11 +5117,19 @@ }, "additionalProperties": false, "type": "object", - "description": "[s]VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." + "description": "VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest.\n\ncompatible:\n * source\n\ndefault:\n kind: latest" + }, + "url": { + "type": "string", + "description": "URL specifies the custom registry URL (defaults to Bazel Central Registry)\n\ncompatible:\n * source\n * condition\n\ndefault:\n https://raw.githubusercontent.com/bazelbuild/bazel-central-registry/main/modules/{module}/metadata.json\n\nexample:\n * https://raw.githubusercontent.com/bazelbuild/bazel-central-registry/main/modules/{module}/metadata.json\n * https://mycompany.com/bazel-registry/modules/{module}/metadata.json\n\nremarks:\n * The URL must contain {module} placeholder which will be replaced with the module name\n * If not specified, defaults to the official Bazel Central Registry" } }, "additionalProperties": false, - "type": "object" + "type": "object", + "required": [ + "module" + ], + "description": "Spec defines a specification for a \"bazelregistry\" resource parsed from an updatecli manifest file" }, "scmid": { "type": "string", @@ -4949,6 +5139,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -4968,7 +5159,7 @@ }, "kind": { "enum": [ - "dockerdigest" + "cargopackage" ] }, "transformers": { @@ -5105,42 +5296,93 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "architecture": { - "type": "string", - "description": "architecture specifies the container image architecture such as `amd64`\n\ncompatible:\n\t* source\n\t* condition\n\ndefault: amd64" - }, - "image": { - "type": "string", - "description": "image specifies the container image such as `updatecli/updatecli`\n\nexample: `updatecli/updatecli`\n\ncompatible:\n\t* source\n\t* condition" - }, - "tag": { - "type": "string", - "description": "tag specifies the container image tag such as `latest`\n\ncompatible:\n\t* source\n\t* condition" - }, - "digest": { - "type": "string", - "description": "digest specifies the container image digest such as `sha256:ce782db15ab5491c6c6178da8431b3db66988ccd11512034946a9667846952a6`\n\ncompatible:\n\t* condition\n\ndefault:\n\tWhen used from a condition, the default value is set to the linked source output." - }, - "username": { - "type": "string", - "description": "username specifies the container registry username to use for authentication.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tby default credentials are fetch from the local environment such as `~/.docker/config.json`.\n\n\t\tremark:\n\t\t\tNot compatible with token" + "registry": { + "properties": { + "auth": { + "properties": { + "token": { + "type": "string", + "description": "[A][S][C] Token specifies the cargo registry token to use for authentication." + }, + "headerformat": { + "type": "string", + "description": "[A][S][C] HeaderFormat specifies the cargo registry header format to use for authentication (defaults to `Bearer`)." + } + }, + "additionalProperties": false, + "type": "object", + "description": "[A][S][C] Auth specifies the cargo registry auth to use for authentication." + }, + "url": { + "type": "string", + "description": "[A][S][C] URL specifies the cargo registry URL to use for authentication." + }, + "rootdir": { + "type": "string", + "description": "[A][S][C] RootDir specifies the cargo registry root directory to use as FS index." + }, + "scmid": { + "type": "string", + "description": "[A] SCMID specifies the cargo registry scmId to use as FS index." + } + }, + "additionalProperties": false, + "type": "object", + "description": "[S][C] Registry specifies the registry to use" }, - "password": { + "package": { "type": "string", - "description": "password specifies the container registry password to use for authentication. Not compatible with token\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tby default credentials are fetch from the local environment such as `~/.docker/config.json`.\n\n\t\tremark:\n\t\t\tNot compatible with token" + "description": "[S][C] Package specifies the name of the package" }, - "token": { + "version": { "type": "string", - "description": "token specifies the container registry token to use for authentication.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tby default credentials are fetch from the local environment such as `~/.docker/config.json`.\n\n\t\tremark:\n\t\t\tNot compatible with username/password" + "description": "[C] Defines a specific package version" }, - "hidetag": { - "type": "boolean", - "description": "hideTag specifies if the tag should be hidden from the digest\n\ncompatible:\n\t* source\n\ndefault:\n\tfalse" + "versionfilter": { + "properties": { + "kind": { + "type": "string", + "description": "specifies the version kind such as semver, regex, or latest" + }, + "pattern": { + "type": "string", + "description": "specifies the version pattern according the version kind\nfor semver, it is a semver constraint\nfor regex, it is a regex pattern\nfor time, it is a date format" + }, + "strict": { + "type": "boolean", + "description": "strict enforce strict versioning rule.\nOnly used for semantic versioning at this time" + }, + "regex": { + "type": "string", + "description": "specifies the regex pattern, used for regex/semver and regex/time.\nOutput of the first capture group will be used." + }, + "replaceall": { + "properties": { + "pattern": { + "type": "string", + "description": "Pattern specifies the regex pattern to match for replacement" + }, + "replacement": { + "type": "string", + "description": "Replacement specifies the replacement string (supports $1, $2, etc. for captured groups)" + } + }, + "additionalProperties": false, + "type": "object", + "description": "replaceAll applies a regex replacement to version strings before filtering.\nThis is useful for transforming versions (e.g., curl-8_15_0 to curl-8.15.0) before regex extraction." + } + }, + "additionalProperties": false, + "type": "object", + "description": "[S] VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." } }, "additionalProperties": false, "type": "object", - "description": "Spec defines a specification for a \"dockerdigest\" resource parsed from an updatecli manifest file" + "required": [ + "package" + ], + "description": "Spec defines a specification for a \"cargopackage\" resource parsed from an updatecli manifest file" }, "scmid": { "type": "string", @@ -5150,6 +5392,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -5169,7 +5412,7 @@ }, "kind": { "enum": [ - "dockerfile" + "csv" ] }, "transformers": { @@ -5308,64 +5551,111 @@ "properties": { "file": { "type": "string", - "description": "file specifies the dockerimage file path to use and is incompatible with Files\n\ndefault: \"\"\n\ncompatible:\n\t* source\n\t* condition\n\t* target\n\n remark:\n File is not compatible with Files. Only one of the two should be specified." + "description": "[s][c][t] File specifies the csv file" }, "files": { "items": { "type": "string" }, "type": "array", - "description": "Files specifies the dockerimage file path(s) to use and is incompatible with File\n\ndefault: []\n\ncompatible:\n\t* source\n\t* condition\n\t* target\n\n remark:\n Files is not compatible with File. Only one of the two should be specified." + "description": "[c][t] Files specifies a list of Json file to manipulate" }, - "instruction": { - "description": "Instruction specifies a DockerImage instruction such as ENV\nInstruction can be specified as a simple string or as a map with keyword and matcher keys.\n\ncompatible:\n\t* source\n\t* condition\n\t* target\n\n default: empty\n\n example:\n ```yaml\n instruction:\n keyword: \"FROM\"\n matcher: \"alpine\"\n ```" + "key": { + "type": "string", + "description": "[s][c][t] Key specifies the csv query" }, - "value": { + "query": { "type": "string", - "description": "Value specifies the value for a specified Dockerfile instruction.\n\ncompatible:\n\t* source\n\t* condition\n\t* target\n\ndefault: source output" + "description": "[s][c][t] Query allows to used advanced query. Override the parameter key" }, - "stage": { + "value": { "type": "string", - "description": "Stage can be used to further refined the scope\nFor Sources:\n- If not defined, the last stage will be considered\nFor Condition and Targets:\n- If not defined, all stages will be considered" - } - }, - "additionalProperties": false, - "type": "object", - "description": "Spec defines a specification for a \"dockerfile\" resource parsed from an updatecli manifest file" - }, - "scmid": { - "type": "string", - "description": "scmid specifies the scm configuration key associated to the current resource" - } - }, - "additionalProperties": false, - "type": "object", - "required": [ - "kind" - ] - }, - { - "$schema": "http://json-schema.org/draft-04/schema", - "properties": { - "dependson": { - "items": { - "type": "string" - }, - "type": "array", - "description": "\"dependson\" allows to specify the order of execution of resources.\nIt accepts a list of rules like \"(resourceType#)resourceId(:booleanOperator)\".\n\nThe resourceType is optional and can be one of \"condition\", \"source\" or \"target\"\nBy default the resourceType is the current resource type\n\nThe resourceId is the name of the resource to depend on\n\nThe booleanOperator is optional and can be \"AND\" or \"OR\"\n\nexamples:\n dependson:\n * condition#myCondition:and\n * source#mySource\n\nremarks:\n * The parameters \"sourceid\" and \"conditionsids\" affect the order of resource execution.\n * To avoid circular dependencies, the depended resource may need to remove any conditionids or set \"disablesourceinput to true\"." - }, - "name": { - "type": "string", - "description": "name specifies the resource name" - }, - "kind": { - "enum": [ - "dockerimage" - ] - }, - "transformers": { - "items": { - "properties": { + "description": "[s][c][t] Key specifies the csv value, default to source output" + }, + "comma": { + "type": "integer", + "description": "[s][c][t] Comma specifies the csv separator character, default \",\"" + }, + "comment": { + "type": "integer", + "description": "[s][c][t] Comma specifies the csv comment character, default \"#\"" + }, + "versionfilter": { + "properties": { + "kind": { + "type": "string", + "description": "specifies the version kind such as semver, regex, or latest" + }, + "pattern": { + "type": "string", + "description": "specifies the version pattern according the version kind\nfor semver, it is a semver constraint\nfor regex, it is a regex pattern\nfor time, it is a date format" + }, + "strict": { + "type": "boolean", + "description": "strict enforce strict versioning rule.\nOnly used for semantic versioning at this time" + }, + "regex": { + "type": "string", + "description": "specifies the regex pattern, used for regex/semver and regex/time.\nOutput of the first capture group will be used." + }, + "replaceall": { + "properties": { + "pattern": { + "type": "string", + "description": "Pattern specifies the regex pattern to match for replacement" + }, + "replacement": { + "type": "string", + "description": "Replacement specifies the replacement string (supports $1, $2, etc. for captured groups)" + } + }, + "additionalProperties": false, + "type": "object", + "description": "replaceAll applies a regex replacement to version strings before filtering.\nThis is useful for transforming versions (e.g., curl-8_15_0 to curl-8.15.0) before regex extraction." + } + }, + "additionalProperties": false, + "type": "object", + "description": "[s]VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." + } + }, + "additionalProperties": false, + "type": "object" + }, + "scmid": { + "type": "string", + "description": "scmid specifies the scm configuration key associated to the current resource" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "name", + "kind" + ] + }, + { + "$schema": "http://json-schema.org/draft-04/schema", + "properties": { + "dependson": { + "items": { + "type": "string" + }, + "type": "array", + "description": "\"dependson\" allows to specify the order of execution of resources.\nIt accepts a list of rules like \"(resourceType#)resourceId(:booleanOperator)\".\n\nThe resourceType is optional and can be one of \"condition\", \"source\" or \"target\"\nBy default the resourceType is the current resource type\n\nThe resourceId is the name of the resource to depend on\n\nThe booleanOperator is optional and can be \"AND\" or \"OR\"\n\nexamples:\n dependson:\n * condition#myCondition:and\n * source#mySource\n\nremarks:\n * The parameters \"sourceid\" and \"conditionsids\" affect the order of resource execution.\n * To avoid circular dependencies, the depended resource may need to remove any conditionids or set \"disablesourceinput to true\"." + }, + "name": { + "type": "string", + "description": "name specifies the resource name" + }, + "kind": { + "enum": [ + "dockerdigest" + ] + }, + "transformers": { + "items": { + "properties": { "addprefix": { "type": "string", "description": "AddPrefix adds a prefix to the transformer input value" @@ -5497,24 +5787,21 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "architectures": { - "items": { - "type": "string" - }, - "type": "array", - "description": "architectures specifies a list of architectures to check container images for (conditions only)\n\ncompatible:\n * condition\n * source\n\nexample: windows/amd64, linux/arm64, linux/arm64/v8\n\ndefault: linux/amd64\n\nremark:\n If an architecture is undefined, Updatecli retrieves the digest of the image index\n which can be used regardless of the architecture.\n But if an architecture is specified then Updatecli retrieves a specific image digest.\n More information on https://github.com/updatecli/updatecli/issues/1603" - }, "architecture": { "type": "string", - "description": "architecture specifies the container image architecture such as `amd64`\n\ncompatible:\n * condition\n * source\n\nexample: windows/amd64, linux/arm64, linux/arm64/v8\n\ndefault: linux/amd64\n\nremark:\n If an architecture is undefined, Updatecli retrieves the digest of the image index\n which can be used regardless of the architecture.\n But if an architecture is specified then Updatecli retrieves a specific image digest.\n More information on https://github.com/updatecli/updatecli/issues/1603" + "description": "architecture specifies the container image architecture such as `amd64`\n\ncompatible:\n\t* source\n\t* condition\n\ndefault: amd64" }, "image": { "type": "string", - "description": "image specifies the container image such as `updatecli/updatecli`\n\ncompatible:\n * condition\n * source" + "description": "image specifies the container image such as `updatecli/updatecli`\n\nexample: `updatecli/updatecli`\n\ncompatible:\n\t* source\n\t* condition" }, "tag": { "type": "string", - "description": "tag specifies the container image tag such as `latest`\n\ncompatible:\n * condition\n\ndefault: latest" + "description": "tag specifies the container image tag such as `latest`\n\ncompatible:\n\t* source\n\t* condition" + }, + "digest": { + "type": "string", + "description": "digest specifies the container image digest such as `sha256:ce782db15ab5491c6c6178da8431b3db66988ccd11512034946a9667846952a6`\n\ncompatible:\n\t* condition\n\ndefault:\n\tWhen used from a condition, the default value is set to the linked source output." }, "username": { "type": "string", @@ -5528,52 +5815,17 @@ "type": "string", "description": "token specifies the container registry token to use for authentication.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tby default credentials are fetch from the local environment such as `~/.docker/config.json`.\n\n\t\tremark:\n\t\t\tNot compatible with username/password" }, - "versionfilter": { - "properties": { - "kind": { - "type": "string", - "description": "specifies the version kind such as semver, regex, or latest" - }, - "pattern": { - "type": "string", - "description": "specifies the version pattern according the version kind\nfor semver, it is a semver constraint\nfor regex, it is a regex pattern\nfor time, it is a date format" - }, - "strict": { - "type": "boolean", - "description": "strict enforce strict versioning rule.\nOnly used for semantic versioning at this time" - }, - "regex": { - "type": "string", - "description": "specifies the regex pattern, used for regex/semver and regex/time.\nOutput of the first capture group will be used." - }, - "replaceall": { - "properties": { - "pattern": { - "type": "string", - "description": "Pattern specifies the regex pattern to match for replacement" - }, - "replacement": { - "type": "string", - "description": "Replacement specifies the replacement string (supports $1, $2, etc. for captured groups)" - } - }, - "additionalProperties": false, - "type": "object", - "description": "replaceAll applies a regex replacement to version strings before filtering.\nThis is useful for transforming versions (e.g., curl-8_15_0 to curl-8.15.0) before regex extraction." - } - }, - "additionalProperties": false, - "type": "object", - "description": "versionfilter provides parameters to specify version pattern and its type like regex, semver, or just latest.\n\ncompatible:\n * source\n\ndefault:\n kind: latest" - }, - "tagfilter": { - "type": "string", - "description": "tagfilter allows to restrict tags retrieved from a remote registry by using a regular expression.\n\ncompatible:\n * source\n\nexample: ^v\\d*(\\.\\d*){2}-alpine$\n\ndefault: none" + "hidetag": { + "type": "boolean", + "description": "hideTag specifies if the tag should be hidden from the digest\n\ncompatible:\n\t* source\n\ndefault:\n\tfalse" } }, "additionalProperties": false, "type": "object", - "description": "Spec defines a specification for a \"dockerimage\" resource parsed from an updatecli manifest file" + "required": [ + "image" + ], + "description": "Spec defines a specification for a \"dockerdigest\" resource parsed from an updatecli manifest file" }, "scmid": { "type": "string", @@ -5583,6 +5835,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -5602,7 +5855,7 @@ }, "kind": { "enum": [ - "file" + "dockerfile" ] }, "transformers": { @@ -5741,43 +5994,30 @@ "properties": { "file": { "type": "string", - "description": "`file` contains the file path\n\n compatible:\n * source\n * condition\n * target\n\n remarks:\n * `file` is incompatible with `files`\n * feel free to look at searchpattern attribute to search for files matching a pattern" + "description": "file specifies the dockerimage file path to use and is incompatible with Files\n\ndefault: \"\"\n\ncompatible:\n\t* source\n\t* condition\n\t* target\n\n remark:\n File is not compatible with Files. Only one of the two should be specified." }, "files": { "items": { "type": "string" }, "type": "array", - "description": "`files` contains the file path(s)\n\n compatible:\n * condition\n * target\n\n remarks:\n * `files` is incompatible with `file`\n * feel free to look at searchpattern attribute to search for files matching a pattern" - }, - "line": { - "type": "integer", - "description": "`line` contains the line of the file(s) to manipulate\n\n compatible:\n * source\n * condition\n * target" - }, - "content": { - "type": "string", - "description": "`content` specifies the content to manipulate\n\n compatible:\n * source\n * condition\n * target" + "description": "Files specifies the dockerimage file path(s) to use and is incompatible with File\n\ndefault: []\n\ncompatible:\n\t* source\n\t* condition\n\t* target\n\n remark:\n Files is not compatible with File. Only one of the two should be specified." }, - "forcecreate": { - "type": "boolean", - "description": "`forcecreate` defines if nonexistent file(s) should be created\n\n compatible:\n * target" + "instruction": { + "description": "Instruction specifies a DockerImage instruction such as ENV\nInstruction can be specified as a simple string or as a map with keyword and matcher keys.\n\ncompatible:\n\t* source\n\t* condition\n\t* target\n\n default: empty\n\n example:\n ```yaml\n instruction:\n keyword: \"FROM\"\n matcher: \"alpine\"\n ```" }, - "matchpattern": { + "value": { "type": "string", - "description": "`matchpattern` specifies the regexp pattern to match on the file(s)\n\n compatible:\n * source\n * condition\n * target\n\n remarks:\n * For targets: Capture groups (parentheses) in the pattern automatically extract\n the current value for changelog generation\n * Without capture groups, changelogs show generic \"unknown\" version changes\n * With capture groups, changelogs show actual version changes (e.g., \"1.24.5\" → \"1.25.1\")\n * Example: `\"version\":\\s*\"([\\d\\.]+)\"` captures version numbers for changelogs\n * Supports full Go regexp syntax" + "description": "Value specifies the value for a specified Dockerfile instruction.\n\ncompatible:\n\t* source\n\t* condition\n\t* target\n\ndefault: source output" }, - "replacepattern": { + "stage": { "type": "string", - "description": "`replacepattern` specifies the regexp replace pattern to apply on the file(s) content\n\n compatible:\n * source\n * condition\n * target" - }, - "searchpattern": { - "type": "boolean", - "description": "`searchpattern` defines if the MatchPattern should be applied on the file(s) path\n\n If set to true, it modifies the behavior of the `file` and `files` attributes to search for files matching the pattern instead of searching for files with the exact name.\n When looking for file path pattern, it requires pattern to match all of name, not just a substring.\n\n The pattern syntax is:\n\n ```\n pattern:\n { term }\n term:\n '*' matches any sequence of non-Separator characters\n '?' matches any single non-Separator character\n '[' [ '^' ] { character-range } ']'\n character class (must be non-empty)\n c matches character c (c != '*', '?', '\\\\', '[')\n '\\\\' c matches character c\n\n character-range:\n c matches character c (c != '\\\\', '-', ']')\n '\\\\' c matches character c\n lo '-' hi matches character c for lo \u003c= c \u003c= hi\n ```" + "description": "Stage can be used to further refined the scope\nFor Sources:\n- If not defined, the last stage will be considered\nFor Condition and Targets:\n- If not defined, all stages will be considered" } }, "additionalProperties": false, "type": "object", - "description": "Spec defines a specification for a \"file\" resource parsed from an updatecli manifest file" + "description": "Spec defines a specification for a \"dockerfile\" resource parsed from an updatecli manifest file" }, "scmid": { "type": "string", @@ -5787,6 +6027,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -5806,7 +6047,7 @@ }, "kind": { "enum": [ - "gitbranch" + "dockerimage" ] }, "transformers": { @@ -5943,9 +6184,36 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "path": { + "architectures": { + "items": { + "type": "string" + }, + "type": "array", + "description": "architectures specifies a list of architectures to check container images for (conditions only)\n\ncompatible:\n * condition\n * source\n\nexample: windows/amd64, linux/arm64, linux/arm64/v8\n\ndefault: linux/amd64\n\nremark:\n If an architecture is undefined, Updatecli retrieves the digest of the image index\n which can be used regardless of the architecture.\n But if an architecture is specified then Updatecli retrieves a specific image digest.\n More information on https://github.com/updatecli/updatecli/issues/1603" + }, + "architecture": { "type": "string", - "description": "path contains the git repository path" + "description": "architecture specifies the container image architecture such as `amd64`\n\ncompatible:\n * condition\n * source\n\nexample: windows/amd64, linux/arm64, linux/arm64/v8\n\ndefault: linux/amd64\n\nremark:\n If an architecture is undefined, Updatecli retrieves the digest of the image index\n which can be used regardless of the architecture.\n But if an architecture is specified then Updatecli retrieves a specific image digest.\n More information on https://github.com/updatecli/updatecli/issues/1603" + }, + "image": { + "type": "string", + "description": "image specifies the container image such as `updatecli/updatecli`\n\ncompatible:\n * condition\n * source" + }, + "tag": { + "type": "string", + "description": "tag specifies the container image tag such as `latest`\n\ncompatible:\n * condition\n\ndefault: latest" + }, + "username": { + "type": "string", + "description": "username specifies the container registry username to use for authentication.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tby default credentials are fetch from the local environment such as `~/.docker/config.json`.\n\n\t\tremark:\n\t\t\tNot compatible with token" + }, + "password": { + "type": "string", + "description": "password specifies the container registry password to use for authentication. Not compatible with token\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tby default credentials are fetch from the local environment such as `~/.docker/config.json`.\n\n\t\tremark:\n\t\t\tNot compatible with token" + }, + "token": { + "type": "string", + "description": "token specifies the container registry token to use for authentication.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tby default credentials are fetch from the local environment such as `~/.docker/config.json`.\n\n\t\tremark:\n\t\t\tNot compatible with username/password" }, "versionfilter": { "properties": { @@ -5983,39 +6251,16 @@ }, "additionalProperties": false, "type": "object", - "description": "VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest.\n\n compatible:\n * source\n * condition\n * target" - }, - "branch": { - "type": "string", - "description": "branch specifies the branch name\n\n compatible:\n * source\n * condition\n * target" - }, - "sourcebranch": { - "type": "string", - "description": "\"url\" specifies the git url to use for fetching Git Tags.\n\n\tcompatible:\n\t * source\n\t * condition\n\t * target\n\n\texample:\n\t * git@github.com:updatecli/updatecli.git\n\t * https://github.com/updatecli/updatecli.git\n\n\tremarks:\n\t\twhen using the ssh protocol, the user must have the right to clone the repository\n\t\tbased on its local ssh configuration" - }, - "url": { - "type": "string", - "description": "\"sourcebranch\" defines the branch name used as a source to create the new Git branch.\n\ncompatible:\n * target\n\nremark:\n * sourcebranch is required when the scmid is not defined." - }, - "username": { - "type": "string", - "description": "\"username\" specifies the username when using the HTTP protocol\n\n\tcompatible\n\t * source\n\t * condition\n\t * target" - }, - "password": { - "type": "string", - "description": "\"password\" specifies the password when using the HTTP protocol\n\n\tcompatible:\n\t * source\n\t * condition\n\t * target" + "description": "versionfilter provides parameters to specify version pattern and its type like regex, semver, or just latest.\n\ncompatible:\n * source\n\ndefault:\n kind: latest" }, - "key": { + "tagfilter": { "type": "string", - "description": "\"key\" of the tag object to retrieve.\n\n Accepted values: ['name','hash'].\n\n Default: 'name'\n Compatible:\n * source" + "description": "tagfilter allows to restrict tags retrieved from a remote registry by using a regular expression.\n\ncompatible:\n * source\n\nexample: ^v\\d*(\\.\\d*){2}-alpine$\n\ndefault: none" } }, "additionalProperties": false, "type": "object", - "required": [ - "url" - ], - "description": "Spec defines a specification for a \"gitbranch\" resource parsed from an updatecli manifest file" + "description": "Spec defines a specification for a \"dockerimage\" resource parsed from an updatecli manifest file" }, "scmid": { "type": "string", @@ -6025,6 +6270,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -6044,7 +6290,7 @@ }, "kind": { "enum": [ - "gitea/branch" + "file" ] }, "transformers": { @@ -6181,77 +6427,53 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "url": { + "file": { "type": "string", - "description": "\"url\" defines the Gitea url to interact with" + "description": "`file` contains the file path\n\n compatible:\n * source\n * condition\n * target\n\n remarks:\n * `file` is incompatible with `files`\n * feel free to look at searchpattern attribute to search for files matching a pattern" }, - "username": { - "type": "string", - "description": "\"username\" defines the username used to authenticate with Gitea API" + "files": { + "items": { + "type": "string" + }, + "type": "array", + "description": "`files` contains the file path(s)\n\n compatible:\n * condition\n * target\n\n remarks:\n * `files` is incompatible with `file`\n * feel free to look at searchpattern attribute to search for files matching a pattern" }, - "token": { + "line": { + "type": "integer", + "description": "`line` contains the line of the file(s) to manipulate\n\n compatible:\n * source\n * condition\n * target" + }, + "content": { "type": "string", - "description": "\"token\" specifies the credential used to authenticate with Gitea API\n\n remark:\n A token is a sensitive information, it's recommended to not set this value directly in the configuration file\n but to use an environment variable or a SOPS file.\n\n The value can be set to `{{ requiredEnv \"GITEA_TOKEN\"}}` to retrieve the token from the environment variable `GITHUB_TOKEN`\n\t or `{{ .gitea.token }}` to retrieve the token from a SOPS file.\n\n\t For more information, about a SOPS file, please refer to the following documentation:\n https://github.com/getsops/sops" + "description": "`content` specifies the content to manipulate\n\n compatible:\n * source\n * condition\n * target" }, - "owner": { + "forcecreate": { + "type": "boolean", + "description": "`forcecreate` defines if nonexistent file(s) should be created\n\n compatible:\n * target" + }, + "matchpattern": { "type": "string", - "description": "[S][C] Owner specifies repository owner" + "description": "`matchpattern` specifies the regexp pattern to match on the file(s)\n\n compatible:\n * source\n * condition\n * target\n\n remarks:\n * For targets: Capture groups (parentheses) in the pattern automatically extract\n the current value for changelog generation\n * Without capture groups, changelogs show generic \"unknown\" version changes\n * With capture groups, changelogs show actual version changes (e.g., \"1.24.5\" → \"1.25.1\")\n * Example: `\"version\":\\s*\"([\\d\\.]+)\"` captures version numbers for changelogs\n * Supports full Go regexp syntax" }, - "repository": { + "replacepattern": { "type": "string", - "description": "[S][C] Repository specifies the name of a repository for a specific owner" + "description": "`replacepattern` specifies the regexp replace pattern to apply on the file(s) content\n\n compatible:\n * source\n * condition\n * target" }, - "versionfilter": { - "properties": { - "kind": { - "type": "string", - "description": "specifies the version kind such as semver, regex, or latest" - }, - "pattern": { - "type": "string", - "description": "specifies the version pattern according the version kind\nfor semver, it is a semver constraint\nfor regex, it is a regex pattern\nfor time, it is a date format" - }, - "strict": { - "type": "boolean", - "description": "strict enforce strict versioning rule.\nOnly used for semantic versioning at this time" - }, - "regex": { - "type": "string", - "description": "specifies the regex pattern, used for regex/semver and regex/time.\nOutput of the first capture group will be used." - }, - "replaceall": { - "properties": { - "pattern": { - "type": "string", - "description": "Pattern specifies the regex pattern to match for replacement" - }, - "replacement": { - "type": "string", - "description": "Replacement specifies the replacement string (supports $1, $2, etc. for captured groups)" - } - }, - "additionalProperties": false, - "type": "object", - "description": "replaceAll applies a regex replacement to version strings before filtering.\nThis is useful for transforming versions (e.g., curl-8_15_0 to curl-8.15.0) before regex extraction." - } - }, - "additionalProperties": false, - "type": "object", - "description": "[S] VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." + "searchpattern": { + "type": "boolean", + "description": "`searchpattern` defines if the MatchPattern should be applied on the file(s) path\n\n If set to true, it modifies the behavior of the `file` and `files` attributes to search for files matching the pattern instead of searching for files with the exact name.\n When looking for file path pattern, it requires pattern to match all of name, not just a substring.\n\n The pattern syntax is:\n\n ```\n pattern:\n { term }\n term:\n '*' matches any sequence of non-Separator characters\n '?' matches any single non-Separator character\n '[' [ '^' ] { character-range } ']'\n character class (must be non-empty)\n c matches character c (c != '*', '?', '\\\\', '[')\n '\\\\' c matches character c\n\n character-range:\n c matches character c (c != '\\\\', '-', ']')\n '\\\\' c matches character c\n lo '-' hi matches character c for lo \u003c= c \u003c= hi\n ```" }, - "branch": { + "template": { "type": "string", - "description": "[C] Branch specifies the branch name" + "description": "`template` specifies the path to a Go template file to render with source values\n\n compatible:\n * target\n\n remarks:\n * When using template, the source value is passed as `.source` in the template context\n * All Go template functions from sprig are available\n * The template file is read and rendered at execution time\n * `template` is mutually exclusive with `content`, `line`, `matchpattern`, and `replacepattern`\n\n example:\n template: \"path/to/template.tmpl\"" + }, + "templatedata": { + "type": "object", + "description": "`templateData` specifies additional data to pass to the template\n\n\tcompatible:\n\t * target\n\n\tremarks:\n\t * When using template, the data specified here is passed as additional fields in the template context\n\t * All Go template functions from sprig are available\n\t * The template file is read and rendered at execution time\n\t * `templateData` is optional\n\n\texample:\n\t templateData:\n\t key1: \"value1\"\n\t key2: \"value2\"" } }, "additionalProperties": false, "type": "object", - "required": [ - "url", - "owner", - "repository" - ], - "description": "Spec defines settings used to interact with Gitea release" + "description": "Spec defines a specification for a \"file\" resource parsed from an updatecli manifest file" }, "scmid": { "type": "string", @@ -6261,6 +6483,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -6280,7 +6503,7 @@ }, "kind": { "enum": [ - "gitea/release" + "gitbranch" ] }, "transformers": { @@ -6417,25 +6640,9 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "url": { - "type": "string", - "description": "\"url\" defines the Gitea url to interact with" - }, - "username": { - "type": "string", - "description": "\"username\" defines the username used to authenticate with Gitea API" - }, - "token": { - "type": "string", - "description": "\"token\" specifies the credential used to authenticate with Gitea API\n\n remark:\n A token is a sensitive information, it's recommended to not set this value directly in the configuration file\n but to use an environment variable or a SOPS file.\n\n The value can be set to `{{ requiredEnv \"GITEA_TOKEN\"}}` to retrieve the token from the environment variable `GITHUB_TOKEN`\n\t or `{{ .gitea.token }}` to retrieve the token from a SOPS file.\n\n\t For more information, about a SOPS file, please refer to the following documentation:\n https://github.com/getsops/sops" - }, - "owner": { - "type": "string", - "description": "[S][C][T] owner specifies the repository owner" - }, - "repository": { + "path": { "type": "string", - "description": "[S][C][T] repository specifies the name of a repository for a specific owner" + "description": "path contains the git repository path" }, "versionfilter": { "properties": { @@ -6473,41 +6680,43 @@ }, "additionalProperties": false, "type": "object", - "description": "[S] versionfilter provides parameters to specify version pattern and its type like regex, semver, or just latest." + "description": "VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest.\n\n compatible:\n * source\n * condition\n * target" }, - "title": { + "branch": { "type": "string", - "description": "[T] title defines the Gitea release title." + "description": "branch specifies the branch name\n\n compatible:\n * source\n * condition\n * target" }, - "tag": { + "depth": { + "type": "integer", + "description": "Depth is used to limit the number of commits fetched from the git repository.\n\ncompatible:\n * source\n * condition\n * target\n\n default: 0 (no limit)\n\nremark:\n * Updatecli won't be able to find branches that are not included in the fetched commits." + }, + "sourcebranch": { "type": "string", - "description": "[C][T] tag defines the Gitea release tag." + "description": "\"url\" specifies the git url to use for fetching Git Tags.\n\n\tcompatible:\n\t * source\n\t * condition\n\t * target\n\n\texample:\n\t * git@github.com:updatecli/updatecli.git\n\t * https://github.com/updatecli/updatecli.git\n\n\tremarks:\n\t\twhen using the ssh protocol, the user must have the right to clone the repository\n\t\tbased on its local ssh configuration" }, - "commitish": { + "url": { "type": "string", - "description": "[T] commitish defines the commit-ish such as `main`" + "description": "\"sourcebranch\" defines the branch name used as a source to create the new Git branch.\n\ncompatible:\n * target\n\nremark:\n * sourcebranch is required when the scmid is not defined." }, - "description": { + "username": { "type": "string", - "description": "[T] description defines if the new release description" + "description": "\"username\" specifies the username when using the HTTP protocol\n\n\tcompatible\n\t * source\n\t * condition\n\t * target" }, - "draft": { - "type": "boolean", - "description": "[T] draft defines if the release is a draft release" + "password": { + "type": "string", + "description": "\"password\" specifies the password when using the HTTP protocol\n\n\tcompatible:\n\t * source\n\t * condition\n\t * target" }, - "prerelease": { - "type": "boolean", - "description": "[T] prerelease defines if the release is a pre-release release" + "key": { + "type": "string", + "description": "\"key\" of the tag object to retrieve.\n\n Accepted values: ['name','hash'].\n\n Default: 'name'\n Compatible:\n * source" } }, "additionalProperties": false, "type": "object", "required": [ - "url", - "owner", - "repository" + "url" ], - "description": "Spec defines settings used to interact with Gitea release" + "description": "Spec defines a specification for a \"gitbranch\" resource parsed from an updatecli manifest file" }, "scmid": { "type": "string", @@ -6517,6 +6726,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -6536,7 +6746,7 @@ }, "kind": { "enum": [ - "gitea/tag" + "gitea/branch" ] }, "transformers": { @@ -6729,11 +6939,11 @@ }, "additionalProperties": false, "type": "object", - "description": "[S][C] VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." + "description": "[S] VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." }, - "tag": { + "branch": { "type": "string", - "description": "[S] Tag defines the Gitea tag ." + "description": "[C] Branch specifies the branch name" } }, "additionalProperties": false, @@ -6753,6 +6963,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -6772,7 +6983,7 @@ }, "kind": { "enum": [ - "githubrelease" + "gitea/release" ] }, "transformers": { @@ -6909,25 +7120,25 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "owner": { + "url": { "type": "string", - "description": "owner defines repository owner to interact with.\n\nrequired: true\n\ncompatible:\n * source\n * condition" + "description": "\"url\" defines the Gitea url to interact with" }, - "repository": { + "username": { "type": "string", - "description": "repository defines the repository name to interact with.\n\nrequired: true\n\ncompatible:\n * source\n * condition" + "description": "\"username\" defines the username used to authenticate with Gitea API" }, "token": { "type": "string", - "description": "token defines the GitHub personal access token used to authenticate with.\n\nmore information on https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens\n\nrequired: true\n\ncompatible:\n * source\n * condition" + "description": "\"token\" specifies the credential used to authenticate with Gitea API\n\n remark:\n A token is a sensitive information, it's recommended to not set this value directly in the configuration file\n but to use an environment variable or a SOPS file.\n\n The value can be set to `{{ requiredEnv \"GITEA_TOKEN\"}}` to retrieve the token from the environment variable `GITHUB_TOKEN`\n\t or `{{ .gitea.token }}` to retrieve the token from a SOPS file.\n\n\t For more information, about a SOPS file, please refer to the following documentation:\n https://github.com/getsops/sops" }, - "url": { + "owner": { "type": "string", - "description": "URL defines the default github url in case of GitHub enterprise.\n\ndefault: https://github.com\n\ncompatible:\n * source\n * condition" + "description": "[S][C][T] owner specifies the repository owner" }, - "username": { + "repository": { "type": "string", - "description": "username defines the username used to authenticate with GitHub API.\n\ncompatible:\n * source\n * condition" + "description": "[S][C][T] repository specifies the name of a repository for a specific owner" }, "versionfilter": { "properties": { @@ -6965,74 +7176,41 @@ }, "additionalProperties": false, "type": "object", - "description": "versionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest.\n\ndefault: latest\n\ncompatible:\n * source" + "description": "[S] versionfilter provides parameters to specify version pattern and its type like regex, semver, or just latest." }, - "typefilter": { - "properties": { - "draft": { - "type": "boolean", - "description": "\"Draft\" enable/disable GitHub draft release" - }, - "prerelease": { - "type": "boolean", - "description": "\"PreRelease\" enable/disable GitHub PreRelease" - }, - "release": { - "type": "boolean", - "description": "\"Release\" enable/disable GitHub release" - }, - "latest": { - "type": "boolean", - "description": "\"Latest\" if set to true will only filter the release flag as latest." - } - }, - "additionalProperties": false, - "type": "object", - "description": "typeFilter specifies the GitHub Release type to retrieve before applying the versionfilter rule\n\ndefault:\n * draft: false\n * prerelease: false\n * release: true\n * latest: false\n\ncompatible:\n * source\n\t* condition" + "title": { + "type": "string", + "description": "[T] title defines the Gitea release title." }, "tag": { "type": "string", - "description": "tag allows to check for a specific release tag, release tag hash, or release title depending on a the parameter key.\n\ncompatible:\n * condition\n\ndefault: source input" + "description": "[C][T] tag defines the Gitea release tag." }, - "key": { + "commitish": { "type": "string", - "description": "\"key\" defines the GitHub release information we are looking for.\nIt accepts one of the following inputs:\n * \"name\": returns the \"latest\" tag name\n * \"hash\": returns the commit associated with the latest tag name\n * \"title\": returns the latest release title\n\naccepted values:\n * taghash\n * tagname\n * title\n * hash (deprecated)\n * name (deprecated)\n\ndefault: 'tagname'\n\ncompatible:\n * source\n * condition" + "description": "[T] commitish defines the commit-ish such as `main`" }, - "app": { - "properties": { - "clientid": { - "type": "string", - "description": "ClientID represents the GitHub App client ID" - }, - "privatekey": { - "type": "string", - "description": "PrivateKey represents a PEM encoded private key\nIt is recommended to use PrivateKeyPath instead of PrivateKey\nto avoid putting sensitive information in the configuration file\nIf both PrivateKey and PrivateKeyPath are set, PrivateKey takes precedence" - }, - "privatekeypath": { - "type": "string", - "description": "PrivateKeyPath represents the path to a PEM encoded private key\nIf both PrivateKey and PrivateKeyPath are set, PrivateKey takes precedence\nIt is recommended to use an environment variable to set the PrivateKeyPath value\ne.g. PrivateKeyPath: {{ requiredEnv \"GITHUB_APP_PRIVATE_KEY_PATH\" }}\nto avoid putting sensitive information in the configuration file" - }, - "installationid": { - "type": "string", - "description": "InstallationID represents the GitHub App installation ID\nIt is the same ID that you can find in the GitHub endpoint:\nhttps://github.com/settings/installation/\u003cID\u003e" - }, - "expirationtime": { - "type": "string", - "description": "Expiration represents the token expiration time in seconds\nThe token is used during the entire execution of updatecli\nand should be valid for the entire duration of the run\nThe minimum value is 600 seconds (10 minutes)\n\nDefault: 3600 (1 hour)" - } - }, - "additionalProperties": false, - "type": "object", - "description": "\"app\" specifies the GitHub App credentials used to authenticate with GitHub API.\nIt is not compatible with the \"token\" and \"username\" fields.\nIt is recommended to use the GitHub App authentication method for better security and granular permissions.\nFor more information, please refer to the following documentation:" + "description": { + "type": "string", + "description": "[T] description defines if the new release description" + }, + "draft": { + "type": "boolean", + "description": "[T] draft defines if the release is a draft release" + }, + "prerelease": { + "type": "boolean", + "description": "[T] prerelease defines if the release is a pre-release release" } }, "additionalProperties": false, "type": "object", "required": [ + "url", "owner", "repository" ], - "description": "Spec defines a specification for a \"gittag\" resource parsed from an updatecli manifest file" + "description": "Spec defines settings used to interact with Gitea release" }, "scmid": { "type": "string", @@ -7042,6 +7220,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -7061,7 +7240,7 @@ }, "kind": { "enum": [ - "gitlab/branch" + "gitea/tag" ] }, "transformers": { @@ -7200,15 +7379,15 @@ "properties": { "url": { "type": "string", - "description": "\"url\" defines the GitLab url to interact with\n\n default:\n \"gitlab.com\"" + "description": "\"url\" defines the Gitea url to interact with" }, "username": { "type": "string", - "description": "\"username\" defines the username used to authenticate with GitLab" + "description": "\"username\" defines the username used to authenticate with Gitea API" }, "token": { "type": "string", - "description": "\"token\" defines the credential used to authenticate with GitLab\n\n remark:\n A token is a sensitive information, it's recommended to not set this value directly in the configuration file\n but to use an environment variable or a SOPS file.\n\n The value can be set to `{{ requiredEnv \"GITLAB_TOKEN\"}}` to retrieve the token from the environment variable `GITLAB_TOKEN`\n\t or `{{ .gitlab.token }}` to retrieve the token from a SOPS file.\n\n\t For more information, about a SOPS file, please refer to the following documentation:\n https://github.com/getsops/sops" + "description": "\"token\" specifies the credential used to authenticate with Gitea API\n\n remark:\n A token is a sensitive information, it's recommended to not set this value directly in the configuration file\n but to use an environment variable or a SOPS file.\n\n The value can be set to `{{ requiredEnv \"GITEA_TOKEN\"}}` to retrieve the token from the environment variable `GITHUB_TOKEN`\n\t or `{{ .gitea.token }}` to retrieve the token from a SOPS file.\n\n\t For more information, about a SOPS file, please refer to the following documentation:\n https://github.com/getsops/sops" }, "owner": { "type": "string", @@ -7254,20 +7433,21 @@ }, "additionalProperties": false, "type": "object", - "description": "[S] VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." + "description": "[S][C] VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." }, - "branch": { + "tag": { "type": "string", - "description": "[C] Branch specifies the branch name" + "description": "[S] Tag defines the Gitea tag ." } }, "additionalProperties": false, "type": "object", "required": [ + "url", "owner", "repository" ], - "description": "Spec defines settings used to interact with GitLab release" + "description": "Spec defines settings used to interact with Gitea release" }, "scmid": { "type": "string", @@ -7277,6 +7457,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -7296,7 +7477,7 @@ }, "kind": { "enum": [ - "gitlab/release" + "githubrelease" ] }, "transformers": { @@ -7433,25 +7614,25 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "url": { + "owner": { "type": "string", - "description": "\"url\" defines the GitLab url to interact with\n\n default:\n \"gitlab.com\"" + "description": "owner defines repository owner to interact with.\n\nrequired: true\n\ncompatible:\n * source\n * condition" }, - "username": { + "repository": { "type": "string", - "description": "\"username\" defines the username used to authenticate with GitLab" + "description": "repository defines the repository name to interact with.\n\nrequired: true\n\ncompatible:\n * source\n * condition" }, "token": { "type": "string", - "description": "\"token\" defines the credential used to authenticate with GitLab\n\n remark:\n A token is a sensitive information, it's recommended to not set this value directly in the configuration file\n but to use an environment variable or a SOPS file.\n\n The value can be set to `{{ requiredEnv \"GITLAB_TOKEN\"}}` to retrieve the token from the environment variable `GITLAB_TOKEN`\n\t or `{{ .gitlab.token }}` to retrieve the token from a SOPS file.\n\n\t For more information, about a SOPS file, please refer to the following documentation:\n https://github.com/getsops/sops" + "description": "token defines the GitHub personal access token used to authenticate with.\n\nmore information on https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens\n\nrequired: true\n\ncompatible:\n * source\n * condition" }, - "owner": { + "url": { "type": "string", - "description": "[S][C][T] Owner specifies repository owner" + "description": "URL defines the default github url in case of GitHub enterprise.\n\ndefault: https://github.com\n\ncompatible:\n * source\n * condition" }, - "repository": { + "username": { "type": "string", - "description": "[S][C][T]Repository specifies the name of a repository for a specific owner" + "description": "username defines the username used to authenticate with GitHub API.\n\ncompatible:\n * source\n * condition" }, "versionfilter": { "properties": { @@ -7489,31 +7670,65 @@ }, "additionalProperties": false, "type": "object", - "description": "[S] VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." + "description": "versionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest.\n\ndefault: latest\n\ncompatible:\n * source" }, - "title": { - "type": "string", - "description": "[T] Title defines the GitLab release title." + "typefilter": { + "properties": { + "draft": { + "type": "boolean", + "description": "\"Draft\" enable/disable GitHub draft release" + }, + "prerelease": { + "type": "boolean", + "description": "\"PreRelease\" enable/disable GitHub PreRelease" + }, + "release": { + "type": "boolean", + "description": "\"Release\" enable/disable GitHub release" + }, + "latest": { + "type": "boolean", + "description": "\"Latest\" if set to true will only filter the release flag as latest." + } + }, + "additionalProperties": false, + "type": "object", + "description": "typeFilter specifies the GitHub Release type to retrieve before applying the versionfilter rule\n\ndefault:\n * draft: false\n * prerelease: false\n * release: true\n * latest: false\n\ncompatible:\n * source\n\t* condition" }, "tag": { "type": "string", - "description": "[C][T] Tag defines the GitLab release tag." - }, - "commitish": { - "type": "string", - "description": "[T] Commitish defines the commit-ish such as `main`" + "description": "tag allows to check for a specific release tag, release tag hash, or release title depending on a the parameter key.\n\ncompatible:\n * condition\n\ndefault: source input" }, - "description": { + "key": { "type": "string", - "description": "[T] Description defines if the new release description" - }, - "draft": { - "type": "boolean", - "description": "[T] Draft defines if the release is a draft release" + "description": "\"key\" defines the GitHub release information we are looking for.\nIt accepts one of the following inputs:\n * \"name\": returns the \"latest\" tag name\n * \"hash\": returns the commit associated with the latest tag name\n * \"title\": returns the latest release title\n\naccepted values:\n * taghash\n * tagname\n * title\n * hash (deprecated)\n * name (deprecated)\n\ndefault: 'tagname'\n\ncompatible:\n * source\n * condition" }, - "prerelease": { - "type": "boolean", - "description": "[T] Prerelease defines if the release is a pre-release release" + "app": { + "properties": { + "clientid": { + "type": "string", + "description": "ClientID represents the GitHub App client ID" + }, + "privatekey": { + "type": "string", + "description": "PrivateKey represents a PEM encoded private key\nIt is recommended to use PrivateKeyPath instead of PrivateKey\nto avoid putting sensitive information in the configuration file\nIf both PrivateKey and PrivateKeyPath are set, PrivateKey takes precedence" + }, + "privatekeypath": { + "type": "string", + "description": "PrivateKeyPath represents the path to a PEM encoded private key\nIf both PrivateKey and PrivateKeyPath are set, PrivateKey takes precedence\nIt is recommended to use an environment variable to set the PrivateKeyPath value\ne.g. PrivateKeyPath: {{ requiredEnv \"GITHUB_APP_PRIVATE_KEY_PATH\" }}\nto avoid putting sensitive information in the configuration file" + }, + "installationid": { + "type": "string", + "description": "InstallationID represents the GitHub App installation ID\nIt is the same ID that you can find in the GitHub endpoint:\nhttps://github.com/settings/installation/\u003cID\u003e" + }, + "expirationtime": { + "type": "string", + "description": "Expiration represents the token expiration time in seconds\nThe token is used during the entire execution of updatecli\nand should be valid for the entire duration of the run\nThe minimum value is 600 seconds (10 minutes)\n\nDefault: 3600 (1 hour)" + } + }, + "additionalProperties": false, + "type": "object", + "description": "\"app\" specifies the GitHub App credentials used to authenticate with GitHub API.\nIt is not compatible with the \"token\" and \"username\" fields.\nIt is recommended to use the GitHub App authentication method for better security and granular permissions.\nFor more information, please refer to the following documentation:" } }, "additionalProperties": false, @@ -7522,7 +7737,7 @@ "owner", "repository" ], - "description": "Spec defines settings used to interact with GitLab release" + "description": "Spec defines a specification for a \"gittag\" resource parsed from an updatecli manifest file" }, "scmid": { "type": "string", @@ -7532,6 +7747,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -7551,7 +7767,7 @@ }, "kind": { "enum": [ - "gitlab/tag" + "gitlab/branch" ] }, "transformers": { @@ -7744,11 +7960,11 @@ }, "additionalProperties": false, "type": "object", - "description": "[S][C] VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." + "description": "[S] VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." }, - "tag": { + "branch": { "type": "string", - "description": "[S] Tag defines the GitLab tag ." + "description": "[C] Branch specifies the branch name" } }, "additionalProperties": false, @@ -7767,6 +7983,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -7786,7 +8003,7 @@ }, "kind": { "enum": [ - "gittag" + "gitlab/release" ] }, "transformers": { @@ -7923,9 +8140,25 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "path": { + "url": { "type": "string", - "description": "Path contains the git repository path" + "description": "\"url\" defines the GitLab url to interact with\n\n default:\n \"gitlab.com\"" + }, + "username": { + "type": "string", + "description": "\"username\" defines the username used to authenticate with GitLab" + }, + "token": { + "type": "string", + "description": "\"token\" defines the credential used to authenticate with GitLab\n\n remark:\n A token is a sensitive information, it's recommended to not set this value directly in the configuration file\n but to use an environment variable or a SOPS file.\n\n The value can be set to `{{ requiredEnv \"GITLAB_TOKEN\"}}` to retrieve the token from the environment variable `GITLAB_TOKEN`\n\t or `{{ .gitlab.token }}` to retrieve the token from a SOPS file.\n\n\t For more information, about a SOPS file, please refer to the following documentation:\n https://github.com/getsops/sops" + }, + "owner": { + "type": "string", + "description": "[S][C][T] Owner specifies repository owner" + }, + "repository": { + "type": "string", + "description": "[S][C][T]Repository specifies the name of a repository for a specific owner" }, "versionfilter": { "properties": { @@ -7963,39 +8196,40 @@ }, "additionalProperties": false, "type": "object", - "description": "VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest.\n\n compatible:\n * source\n * condition\n * target" + "description": "[S] VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." }, - "message": { + "title": { "type": "string", - "description": "Message associated to the git tag\n\n compatible:\n * target" + "description": "[T] Title defines the GitLab release title." }, - "key": { + "tag": { "type": "string", - "description": "\"key\" of the tag object to retrieve.\n\n Accepted values: ['name','hash'].\n\n Default: 'name'\n Compatible:\n * source" + "description": "[C][T] Tag defines the GitLab release tag." }, - "url": { + "commitish": { "type": "string", - "description": "\"url\" specifies the git url to use for fetching Git Tags.\n\n\tcompatible:\n\t * source\n\t * condition\n\t * target\n\n\texample:\n\t * git@github.com:updatecli/updatecli.git\n\t * https://github.com/updatecli/updatecli.git\n\n\tremarks:\n\t when using the ssh protocol, the user must have the right to clone the repository\n\t based on its local ssh configuration\n\n it's possible to specify git tags without cloning the repository by using the `lsremote` option,\n in that case the URL is required and the tags will be retrieved from the remote repository directly without cloning it." + "description": "[T] Commitish defines the commit-ish such as `main`" }, - "username": { + "description": { "type": "string", - "description": "\"username\" specifies the username when using the HTTP protocol\n\n\tcompatible\n\t * source\n\t * condition\n\t * target" + "description": "[T] Description defines if the new release description" }, - "password": { - "type": "string", - "description": "\"password\" specifies the password when using the HTTP protocol\n\n\tcompatible:\n\t * source\n\t * condition\n\t * target" + "draft": { + "type": "boolean", + "description": "[T] Draft defines if the release is a draft release" }, - "sourcebranch": { - "type": "string", - "description": "\"sourcebranch\" defines the branch name used as a source to create the new Git branch.\n\ncompatible:\n * target\n\nremark:\n * sourcebranch is required when the scmid is not defined.\n\ndefault: main" + "prerelease": { + "type": "boolean", + "description": "[T] Prerelease defines if the release is a pre-release release" } }, "additionalProperties": false, "type": "object", "required": [ - "url" + "owner", + "repository" ], - "description": "Spec defines a specification for a \"gittag\" resource parsed from an updatecli manifest file" + "description": "Spec defines settings used to interact with GitLab release" }, "scmid": { "type": "string", @@ -8005,6 +8239,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -8024,7 +8259,7 @@ }, "kind": { "enum": [ - "golang" + "gitlab/tag" ] }, "transformers": { @@ -8161,9 +8396,25 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "version": { + "url": { "type": "string", - "description": "[C] Version defines a specific golang version" + "description": "\"url\" defines the GitLab url to interact with\n\n default:\n \"gitlab.com\"" + }, + "username": { + "type": "string", + "description": "\"username\" defines the username used to authenticate with GitLab" + }, + "token": { + "type": "string", + "description": "\"token\" defines the credential used to authenticate with GitLab\n\n remark:\n A token is a sensitive information, it's recommended to not set this value directly in the configuration file\n but to use an environment variable or a SOPS file.\n\n The value can be set to `{{ requiredEnv \"GITLAB_TOKEN\"}}` to retrieve the token from the environment variable `GITLAB_TOKEN`\n\t or `{{ .gitlab.token }}` to retrieve the token from a SOPS file.\n\n\t For more information, about a SOPS file, please refer to the following documentation:\n https://github.com/getsops/sops" + }, + "owner": { + "type": "string", + "description": "[S][C] Owner specifies repository owner" + }, + "repository": { + "type": "string", + "description": "[S][C] Repository specifies the name of a repository for a specific owner" }, "versionfilter": { "properties": { @@ -8201,12 +8452,20 @@ }, "additionalProperties": false, "type": "object", - "description": "[S] VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." + "description": "[S][C] VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." + }, + "tag": { + "type": "string", + "description": "[S] Tag defines the GitLab tag ." } }, "additionalProperties": false, "type": "object", - "description": "Spec defines a specification for a \"Golang\" resource parsed from an updatecli manifest file" + "required": [ + "owner", + "repository" + ], + "description": "Spec defines settings used to interact with GitLab release" }, "scmid": { "type": "string", @@ -8216,6 +8475,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -8235,7 +8495,7 @@ }, "kind": { "enum": [ - "golang/gomod" + "gittag" ] }, "transformers": { @@ -8372,34 +8632,90 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "file": { + "path": { "type": "string", - "description": "File defines the go.mod file, default to \"go.mod\"\n\ncompatible:\n * source\n * condition\n\nremark:\n * scheme \"https://\", \"http://\", and \"file://\" are supported in path for source and condition" + "description": "Path contains the git repository path" }, - "module": { + "versionfilter": { + "properties": { + "kind": { + "type": "string", + "description": "specifies the version kind such as semver, regex, or latest" + }, + "pattern": { + "type": "string", + "description": "specifies the version pattern according the version kind\nfor semver, it is a semver constraint\nfor regex, it is a regex pattern\nfor time, it is a date format" + }, + "strict": { + "type": "boolean", + "description": "strict enforce strict versioning rule.\nOnly used for semantic versioning at this time" + }, + "regex": { + "type": "string", + "description": "specifies the regex pattern, used for regex/semver and regex/time.\nOutput of the first capture group will be used." + }, + "replaceall": { + "properties": { + "pattern": { + "type": "string", + "description": "Pattern specifies the regex pattern to match for replacement" + }, + "replacement": { + "type": "string", + "description": "Replacement specifies the replacement string (supports $1, $2, etc. for captured groups)" + } + }, + "additionalProperties": false, + "type": "object", + "description": "replaceAll applies a regex replacement to version strings before filtering.\nThis is useful for transforming versions (e.g., curl-8_15_0 to curl-8.15.0) before regex extraction." + } + }, + "additionalProperties": false, + "type": "object", + "description": "VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest.\n\n compatible:\n * source\n * condition\n * target" + }, + "tag": { "type": "string", - "description": "Module defines the module path\n\ncompatible:\n * source\n * condition\n\nremark:\n * scheme \"https://\", \"http://\", and \"file://\" are supported in path for source and condition" + "description": "Tag defines the git tag to check for exact match.\n\ncompatible:\n * condition\n\nWhen specified, the condition will check for an exact tag match\ninstead of using versionFilter pattern matching." }, - "indirect": { - "type": "boolean", - "description": "Indirect specifies if we manipulate an indirect dependency\n\ncompatible:\n * source\n * condition" + "message": { + "type": "string", + "description": "Message associated to the git tag\n\n compatible:\n * target" }, - "version": { + "key": { "type": "string", - "description": "Version Defines a specific golang version\n\ncompatible:\n * source\n * condition" + "description": "\"key\" of the tag object to retrieve.\n\n Accepted values: ['name','hash'].\n\n Default: 'name'\n Compatible:\n * source" }, - "replace": { - "type": "boolean", - "description": "Replace specifies if we manipulate a replaced dependency\n\ncompatible:\n * source\n * condition\n * target" + "url": { + "type": "string", + "description": "\"url\" specifies the git url to use for fetching Git Tags.\n\n\tcompatible:\n\t * source\n\t * condition\n\t * target\n\n\texample:\n\t * git@github.com:updatecli/updatecli.git\n\t * https://github.com/updatecli/updatecli.git\n\n\tremarks:\n\t when using the ssh protocol, the user must have the right to clone the repository\n\t based on its local ssh configuration\n\n it's possible to specify git tags without cloning the repository by using the `lsremote` option,\n in that case the URL is required and the tags will be retrieved from the remote repository directly without cloning it." }, - "replaceversion": { + "username": { "type": "string", - "description": "ReplaceVersion specifies the specific Go module version to replace\n\ncompatible:\n * source\n * condition\n * target\n\ndefault: unset, which will match any version of the module being replaced.\n\nExample:\n For the following Go replace instruction:\n moduleA v1.2.3 =\u003e moduleB v1.0.0\n - The 'module' field should be set to 'moduleA' (the module being replaced, left-hand side).\n - The value of ReplaceVersion should be 'v1.2.3', corresponding to the version of moduleA\n (the module being replaced, left-hand side)." + "description": "\"username\" specifies the username when using the HTTP protocol\n\n\tcompatible\n\t * source\n\t * condition\n\t * target" + }, + "password": { + "type": "string", + "description": "\"password\" specifies the password when using the HTTP protocol\n\n\tcompatible:\n\t * source\n\t * condition\n\t * target" + }, + "sourcebranch": { + "type": "string", + "description": "\"sourcebranch\" defines the branch name used as a source to create the new Git branch.\n\ncompatible:\n * target\n\nremark:\n * sourcebranch is required when the scmid is not defined.\n\ndefault: main" + }, + "lsremote": { + "type": "boolean" + }, + "depth": { + "type": "integer", + "description": "Depth is used to limit the number of commits fetched from the git repository.\n\ncompatible:\n * source\n * condition\n * target\n\n default: 0 (no limit)\n\nremark:\n * Updatecli won't be able to find tags that are not included in the fetched commits." } }, "additionalProperties": false, "type": "object", - "description": "Spec defines a specification for a \"Golang\" resource parsed from an updatecli manifest file" + "required": [ + "url" + ], + "description": "Spec defines a specification for a \"gittag\" resource parsed from an updatecli manifest file" }, "scmid": { "type": "string", @@ -8409,6 +8725,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -8428,7 +8745,7 @@ }, "kind": { "enum": [ - "golang/module" + "golang" ] }, "transformers": { @@ -8565,17 +8882,9 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "proxy": { - "type": "string", - "description": "Proxy may have the schemes https, http. file is not supported at this time. If a URL has no scheme, https is assumed\n[S][C] Proxy allows to override GO proxy similarly to GOPROXY environment variable." - }, - "module": { - "type": "string", - "description": "[S][C] Module specifies the name of the module" - }, "version": { "type": "string", - "description": "[C] Defines a specific package version" + "description": "[C] Version defines a specific golang version" }, "versionfilter": { "properties": { @@ -8618,10 +8927,7 @@ }, "additionalProperties": false, "type": "object", - "required": [ - "module" - ], - "description": "Spec defines a specification for a \"gomodule\" resource parsed from an updatecli manifest file" + "description": "Spec defines a specification for a \"Golang\" resource parsed from an updatecli manifest file" }, "scmid": { "type": "string", @@ -8631,6 +8937,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -8650,7 +8957,7 @@ }, "kind": { "enum": [ - "hcl" + "golang/gomod" ] }, "transformers": { @@ -8789,27 +9096,32 @@ "properties": { "file": { "type": "string", - "description": "\"file\" defines the hcl file path to interact with.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tremark:\n\t\t\t* \"file\" and \"files\" are mutually exclusive\n\t\t\t* protocols \"https://\", \"http://\", and \"file://\" are supported in path for source and condition" + "description": "File defines the go.mod file, default to \"go.mod\"\n\ncompatible:\n * source\n * condition\n\nremark:\n * scheme \"https://\", \"http://\", and \"file://\" are supported in path for source and condition" }, - "files": { - "items": { - "type": "string" - }, - "type": "array", - "description": "\"files\" defines the list of hcl files path to interact with.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tremark:\n\t\t\t* file and files are mutually exclusive\n\t\t\t* when using as a source only one file is supported\n\t\t\t* protocols \"https://\", \"http://\", and \"file://\" are supported in file path for source and condition" + "module": { + "type": "string", + "description": "Module defines the module path\n\ncompatible:\n * source\n * condition\n\nremark:\n * scheme \"https://\", \"http://\", and \"file://\" are supported in path for source and condition" }, - "path": { + "indirect": { + "type": "boolean", + "description": "Indirect specifies if we manipulate an indirect dependency\n\ncompatible:\n * source\n * condition" + }, + "version": { "type": "string", - "description": "\"path\" defines the hcl attribute path.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\texample:\n\t\t\t* path: resource.aws_instance.app_server.ami\n\t\t\t* path: resource.helm_release.prometheus.version\n\t\t\t* path: plugin.aws.version" + "description": "Version Defines a specific golang version\n\ncompatible:\n * source\n * condition" }, - "value": { + "replace": { + "type": "boolean", + "description": "Replace specifies if we manipulate a replaced dependency\n\ncompatible:\n * source\n * condition\n * target" + }, + "replaceversion": { "type": "string", - "description": "\"value\" is the value associated with a hcl path.\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tWhen used from a condition or a target, the default value is set to linked source output." + "description": "ReplaceVersion specifies the specific Go module version to replace\n\ncompatible:\n * source\n * condition\n * target\n\ndefault: unset, which will match any version of the module being replaced.\n\nExample:\n For the following Go replace instruction:\n moduleA v1.2.3 =\u003e moduleB v1.0.0\n - The 'module' field should be set to 'moduleA' (the module being replaced, left-hand side).\n - The value of ReplaceVersion should be 'v1.2.3', corresponding to the version of moduleA\n (the module being replaced, left-hand side)." } }, "additionalProperties": false, "type": "object", - "description": "\"hcl\" defines the specification for manipulating \"hcl\" files." + "description": "Spec defines a specification for a \"Golang\" resource parsed from an updatecli manifest file" }, "scmid": { "type": "string", @@ -8819,6 +9131,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -8838,7 +9151,7 @@ }, "kind": { "enum": [ - "helmchart" + "golang/module" ] }, "transformers": { @@ -8975,41 +9288,17 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "file": { - "type": "string", - "description": "file defines the Helm Chart file to update.\n\t\tthe path must be relative to chart root directory\n\t\tthe chart name is defined by the parameter \"name\"\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tdefault set to \"values.yaml\"" - }, - "key": { - "type": "string", - "description": "key defines the yamlpath query used for retrieving value from a YAML document\n\n\t\tcompatible:\n\t\t\t* target\n\n\t\texample:\n\t\t\t* key: $.image.tag\n\t\t\t* key: $.images[0].tag\n\n\t\tremark:\n\t\t\t* key is a simpler version of yamlpath accepts keys." - }, - "name": { - "type": "string", - "description": "name defines the Chart name path like 'stable/chart'.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\texample:\n\t\t\t* name: stable/chart\n\n\t\tremark:\n\t\t\t* when used with a scm, the name must be the relative path from the scm repository root directory\n\t\t\t with such as \"stable/chart\"" - }, - "skippackaging": { - "type": "boolean", - "description": "skippackaging defines if a Chart should be packaged or not.\n\n\t\tcompatible:\n\t\t\t* target\n\n\t\tdefault: false" - }, - "url": { + "proxy": { "type": "string", - "description": "url defines the Chart location URL.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\n\t\texample:\n\t\t\t* index.yaml\n\t\t\t* file://./index.yaml\n\t\t\t* https://github.com/updatecli/charts.git\n\t\t\t* oci://ghcr.io/olblak/charts/" + "description": "Proxy may have the schemes https, http. file is not supported at this time. If a URL has no scheme, https is assumed\n[S][C] Proxy allows to override GO proxy similarly to GOPROXY environment variable." }, - "value": { + "module": { "type": "string", - "description": "value is the value associated with a yamlpath query.\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target" + "description": "[S][C] Module specifies the name of the module" }, "version": { "type": "string", - "description": "version defines the Chart version. It is used by condition to check if a version exists on the registry.\n\n\t\tcompatible:\n\t\t\t* condition" - }, - "versionincrement": { - "type": "string", - "description": "versionIncrement defines if a Chart changes, triggers, or not, a Chart version update, accepted values is a comma separated list of \"none,major,minor,patch,auto\".\n\n\t\tcompatible:\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tdefault set to \"minor\"\n\n\t\tremark:\n\t\t\twhen multiple pipelines update the same chart, the versionIncrement will be applied multiple times.\n\t\t\tmore information on https://github.com/updatecli/updatecli/issues/693" - }, - "appversion": { - "type": "boolean", - "description": "AppVersion defines if a Chart changes, triggers, or not, a Chart AppVersion update.\n\t\tThe value is retrieved from the source input.\n\n\t\tcompatible:\n\t\t\t* target\n\n\t\tdefault\n\t\t\tfalse" + "description": "[C] Defines a specific package version" }, "versionfilter": { "properties": { @@ -9047,24 +9336,15 @@ }, "additionalProperties": false, "type": "object", - "description": "versionfilter provides parameters to specify version pattern and its type like 'regex', 'semver', or just 'latest'.\n\n\t\tcompatible:\n\t\t\t* source\n\n\t\tdefault:\n\t\t\tsemver\n\n\t\tremark:\n\t\t\t* Helm chart uses semver by default." - }, - "username": { - "type": "string", - "description": "username specifies the container registry username to use for authentication.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tby default credentials are fetch from the local environment such as `~/.docker/config.json`.\n\n\t\tremark:\n\t\t\tNot compatible with token" - }, - "password": { - "type": "string", - "description": "password specifies the container registry password to use for authentication. Not compatible with token\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tby default credentials are fetch from the local environment such as `~/.docker/config.json`.\n\n\t\tremark:\n\t\t\tNot compatible with token" - }, - "token": { - "type": "string", - "description": "token specifies the container registry token to use for authentication.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tby default credentials are fetch from the local environment such as `~/.docker/config.json`.\n\n\t\tremark:\n\t\t\tNot compatible with username/password" + "description": "[S] VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." } }, "additionalProperties": false, "type": "object", - "description": "Spec defines a specification for an \"helmchart\" resource parsed from an updatecli manifest file" + "required": [ + "module" + ], + "description": "Spec defines a specification for a \"gomodule\" resource parsed from an updatecli manifest file" }, "scmid": { "type": "string", @@ -9074,6 +9354,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -9093,7 +9374,7 @@ }, "kind": { "enum": [ - "http" + "hcl" ] }, "transformers": { @@ -9230,62 +9511,29 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "url": { - "type": "string", - "description": "[S][C] Specifies the URL of the HTTP request for this resource." - }, - "returnresponseheader": { + "file": { "type": "string", - "description": "[S] Specifies the header to return as source value (instead of the body)." + "description": "\"file\" defines the hcl file path to interact with.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tremark:\n\t\t\t* \"file\" and \"files\" are mutually exclusive\n\t\t\t* protocols \"https://\", \"http://\", and \"file://\" are supported in path for source and condition" }, - "request": { - "properties": { - "verb": { - "type": "string", - "description": "[S][C] Specifies a custom HTTP request verb. Defaults to \"GET\"." - }, - "body": { - "type": "string", - "description": "[S][C] Specifies a custom HTTP request body. Required with POST, PUT, PATCH." - }, - "headers": { - "additionalProperties": { - "type": "string" - }, - "type": "object", - "description": "[S][C] Specifies custom HTTP request headers. Defaults to an empty map." - }, - "nofollowredirects": { - "type": "boolean", - "description": "[S][C] Specifies whether or not to follow redirects. Default to false (e.g. follow HTTP redirections) unless spec.returnresponseheader is set to true (source only)." - } + "files": { + "items": { + "type": "string" }, - "additionalProperties": false, - "type": "object", - "description": "[S][C] Customizes the HTTP request to emit." + "type": "array", + "description": "\"files\" defines the list of hcl files path to interact with.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tremark:\n\t\t\t* file and files are mutually exclusive\n\t\t\t* when using as a source only one file is supported\n\t\t\t* protocols \"https://\", \"http://\", and \"file://\" are supported in file path for source and condition" }, - "responseasserts": { - "properties": { - "headers": { - "additionalProperties": { - "type": "string" - }, - "type": "object", - "description": "[C] Specifies a set of assertions on the HTTP response headers." - }, - "statuscode": { - "type": "integer", - "description": "[C] Specifies a custom assertion on the HTTP response status code." - } - }, - "additionalProperties": false, - "type": "object", - "description": "[C] Specifies a set of custom assertions on the HTTP response for the condition." + "path": { + "type": "string", + "description": "\"path\" defines the hcl attribute path.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\texample:\n\t\t\t* path: resource.aws_instance.app_server.ami\n\t\t\t* path: resource.helm_release.prometheus.version\n\t\t\t* path: plugin.aws.version" + }, + "value": { + "type": "string", + "description": "\"value\" is the value associated with a hcl path.\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tWhen used from a condition or a target, the default value is set to linked source output." } }, "additionalProperties": false, "type": "object", - "description": "Spec defines a specification for a \"http\" resource parsed from an updatecli manifest file." + "description": "\"hcl\" defines the specification for manipulating \"hcl\" files." }, "scmid": { "type": "string", @@ -9295,6 +9543,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -9314,7 +9563,7 @@ }, "kind": { "enum": [ - "jenkins" + "helmchart" ] }, "transformers": { @@ -9451,57 +9700,136 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "release": { + "file": { "type": "string", - "description": "[s][c] Defines the release name. It accepts \"stable\" or \"weekly\"" + "description": "file defines the Helm Chart file to update.\n\t\tthe path must be relative to chart root directory\n\t\tthe chart name is defined by the parameter \"name\"\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tdefault set to \"values.yaml\"" + }, + "key": { + "type": "string", + "description": "key defines the yamlpath query used for retrieving value from a YAML document\n\n\t\tcompatible:\n\t\t\t* target\n\n\t\texample:\n\t\t\t* key: $.image.tag\n\t\t\t* key: $.images[0].tag\n\n\t\tremark:\n\t\t\t* key is a simpler version of yamlpath accepts keys." + }, + "name": { + "type": "string", + "description": "name defines the Chart name path like 'stable/chart'.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\texample:\n\t\t\t* name: stable/chart\n\n\t\tremark:\n\t\t\t* when used with a scm, the name must be the relative path from the scm repository root directory\n\t\t\t with such as \"stable/chart\"" + }, + "skippackaging": { + "type": "boolean", + "description": "skippackaging defines if a Chart should be packaged or not.\n\n\t\tcompatible:\n\t\t\t* target\n\n\t\tdefault: false" + }, + "url": { + "type": "string", + "description": "url defines the Chart location URL.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\n\t\texample:\n\t\t\t* index.yaml\n\t\t\t* file://./index.yaml\n\t\t\t* https://github.com/updatecli/charts.git\n\t\t\t* oci://ghcr.io/olblak/charts/" + }, + "value": { + "type": "string", + "description": "value is the value associated with a yamlpath query.\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target" }, "version": { "type": "string", - "description": "[s][c] Defines a specific release version (condition only)" - } - }, - "additionalProperties": false, - "type": "object", - "description": "Spec defines a specification for a \"jenkins\" resource parsed from an updatecli manifest file" - }, - "scmid": { - "type": "string", - "description": "scmid specifies the scm configuration key associated to the current resource" - } - }, - "additionalProperties": false, - "type": "object", - "required": [ - "kind" - ] - }, - { - "$schema": "http://json-schema.org/draft-04/schema", - "properties": { - "dependson": { - "items": { - "type": "string" - }, - "type": "array", - "description": "\"dependson\" allows to specify the order of execution of resources.\nIt accepts a list of rules like \"(resourceType#)resourceId(:booleanOperator)\".\n\nThe resourceType is optional and can be one of \"condition\", \"source\" or \"target\"\nBy default the resourceType is the current resource type\n\nThe resourceId is the name of the resource to depend on\n\nThe booleanOperator is optional and can be \"AND\" or \"OR\"\n\nexamples:\n dependson:\n * condition#myCondition:and\n * source#mySource\n\nremarks:\n * The parameters \"sourceid\" and \"conditionsids\" affect the order of resource execution.\n * To avoid circular dependencies, the depended resource may need to remove any conditionids or set \"disablesourceinput to true\"." - }, - "name": { - "type": "string", - "description": "name specifies the resource name" - }, - "kind": { - "enum": [ - "json" - ] - }, - "transformers": { - "items": { - "properties": { - "addprefix": { - "type": "string", - "description": "AddPrefix adds a prefix to the transformer input value" - }, - "addsuffix": { + "description": "version defines the Chart version. It is used by condition to check if a version exists on the registry.\n\n\t\tcompatible:\n\t\t\t* condition" + }, + "versionincrement": { + "type": "string", + "description": "versionIncrement defines if a Chart changes, triggers, or not, a Chart version update, accepted values is a comma separated list of \"none,major,minor,patch,auto\".\n\n\t\tcompatible:\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tdefault set to \"minor\"\n\n\t\tremark:\n\t\t\twhen multiple pipelines update the same chart, the versionIncrement will be applied multiple times.\n\t\t\tmore information on https://github.com/updatecli/updatecli/issues/693" + }, + "appversion": { + "type": "boolean", + "description": "AppVersion defines if a Chart changes, triggers, or not, a Chart AppVersion update.\n\t\tThe value is retrieved from the source input.\n\n\t\tcompatible:\n\t\t\t* target\n\n\t\tdefault\n\t\t\tfalse" + }, + "versionfilter": { + "properties": { + "kind": { + "type": "string", + "description": "specifies the version kind such as semver, regex, or latest" + }, + "pattern": { + "type": "string", + "description": "specifies the version pattern according the version kind\nfor semver, it is a semver constraint\nfor regex, it is a regex pattern\nfor time, it is a date format" + }, + "strict": { + "type": "boolean", + "description": "strict enforce strict versioning rule.\nOnly used for semantic versioning at this time" + }, + "regex": { + "type": "string", + "description": "specifies the regex pattern, used for regex/semver and regex/time.\nOutput of the first capture group will be used." + }, + "replaceall": { + "properties": { + "pattern": { + "type": "string", + "description": "Pattern specifies the regex pattern to match for replacement" + }, + "replacement": { + "type": "string", + "description": "Replacement specifies the replacement string (supports $1, $2, etc. for captured groups)" + } + }, + "additionalProperties": false, + "type": "object", + "description": "replaceAll applies a regex replacement to version strings before filtering.\nThis is useful for transforming versions (e.g., curl-8_15_0 to curl-8.15.0) before regex extraction." + } + }, + "additionalProperties": false, + "type": "object", + "description": "versionfilter provides parameters to specify version pattern and its type like 'regex', 'semver', or just 'latest'.\n\n\t\tcompatible:\n\t\t\t* source\n\n\t\tdefault:\n\t\t\tsemver\n\n\t\tremark:\n\t\t\t* Helm chart uses semver by default." + }, + "username": { + "type": "string", + "description": "username specifies the container registry username to use for authentication.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tby default credentials are fetch from the local environment such as `~/.docker/config.json`.\n\n\t\tremark:\n\t\t\tNot compatible with token" + }, + "password": { + "type": "string", + "description": "password specifies the container registry password to use for authentication. Not compatible with token\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tby default credentials are fetch from the local environment such as `~/.docker/config.json`.\n\n\t\tremark:\n\t\t\tNot compatible with token" + }, + "token": { + "type": "string", + "description": "token specifies the container registry token to use for authentication.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tby default credentials are fetch from the local environment such as `~/.docker/config.json`.\n\n\t\tremark:\n\t\t\tNot compatible with username/password" + } + }, + "additionalProperties": false, + "type": "object", + "description": "Spec defines a specification for an \"helmchart\" resource parsed from an updatecli manifest file" + }, + "scmid": { + "type": "string", + "description": "scmid specifies the scm configuration key associated to the current resource" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "name", + "kind" + ] + }, + { + "$schema": "http://json-schema.org/draft-04/schema", + "properties": { + "dependson": { + "items": { + "type": "string" + }, + "type": "array", + "description": "\"dependson\" allows to specify the order of execution of resources.\nIt accepts a list of rules like \"(resourceType#)resourceId(:booleanOperator)\".\n\nThe resourceType is optional and can be one of \"condition\", \"source\" or \"target\"\nBy default the resourceType is the current resource type\n\nThe resourceId is the name of the resource to depend on\n\nThe booleanOperator is optional and can be \"AND\" or \"OR\"\n\nexamples:\n dependson:\n * condition#myCondition:and\n * source#mySource\n\nremarks:\n * The parameters \"sourceid\" and \"conditionsids\" affect the order of resource execution.\n * To avoid circular dependencies, the depended resource may need to remove any conditionids or set \"disablesourceinput to true\"." + }, + "name": { + "type": "string", + "description": "name specifies the resource name" + }, + "kind": { + "enum": [ + "http" + ] + }, + "transformers": { + "items": { + "properties": { + "addprefix": { + "type": "string", + "description": "AddPrefix adds a prefix to the transformer input value" + }, + "addsuffix": { "type": "string", "description": "AddSuffix adds a suffix to the transformer input value" }, @@ -9628,74 +9956,62 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "engine": { - "type": "string", - "description": "default:\n * \"dasel/v1\" is the default engine used to manipulate json files\n\naccepted values:\n * \"dasel/v1\" for dasel v1 engine\n * \"dasel/v2\" for dasel v2 engine\n * \"dasel\" for the latest dasel engine which is currently dasel v2" - }, - "file": { - "type": "string", - "description": "remark:\n * \"file\" and \"files\" are mutually exclusive\n * scheme \"https://\", \"http://\", and \"file://\" are supported in path for source and condition" - }, - "files": { - "items": { - "type": "string" - }, - "type": "array", - "description": "remark:\n * \"file\" and \"files\" are mutually exclusive\n * scheme \"https://\", \"http://\", and \"file://\" are supported in path for source and condition" - }, - "key": { - "type": "string", - "description": "key defines the Jsonpath key to manipulate.\n\ncompatible:\n * source\n\t* condition\n\t* target\n\nremark:\n\t* key is a simpler version of Jsonpath accepts keys.\n\t* key accepts Dasel query, more information on https://github.com/tomwright/dasel\n * key accepts values based on the engine used\n\nexample:\n\t* key: $.name\n\t* key: name\n\t* file: https://nodejs.org/dist/index.json\n\t key: .(lts!=false).version" - }, - "value": { + "url": { "type": "string", - "description": "value defines the Jsonpath key value to manipulate. Default to source output.\n\ncompatible:\n * condition\n\t* target\n\ndefault:\n\twhen used for a condition or a target, the default value is the output of the source." + "description": "[S][C] Specifies the URL of the HTTP request for this resource." }, - "query": { + "returnresponseheader": { "type": "string", - "description": "query defines the Jsonpath query to manipulate. It accepts advanced Dasel v1 query\nthis parameter is now deprecated in Dasel v2 and replaced by the parameter \"key\".\n\ncompatible:\n\t* source\n\t* condition\n\t* target\n\nexample:\n\t* query: .name\n\t* query: \".[*].tag_name\"\n\nremark:\n\t* query accepts Dasel query, more information on https://github.com/tomwright/dasel" + "description": "[S] Specifies the header to return as source value (instead of the body)." }, - "versionfilter": { + "request": { "properties": { - "kind": { + "verb": { "type": "string", - "description": "specifies the version kind such as semver, regex, or latest" + "description": "[S][C] Specifies a custom HTTP request verb. Defaults to \"GET\"." }, - "pattern": { + "body": { "type": "string", - "description": "specifies the version pattern according the version kind\nfor semver, it is a semver constraint\nfor regex, it is a regex pattern\nfor time, it is a date format" - }, - "strict": { - "type": "boolean", - "description": "strict enforce strict versioning rule.\nOnly used for semantic versioning at this time" + "description": "[S][C] Specifies a custom HTTP request body. Required with POST, PUT, PATCH." }, - "regex": { - "type": "string", - "description": "specifies the regex pattern, used for regex/semver and regex/time.\nOutput of the first capture group will be used." + "headers": { + "additionalProperties": { + "type": "string" + }, + "type": "object", + "description": "[S][C] Specifies custom HTTP request headers. Defaults to an empty map." }, - "replaceall": { - "properties": { - "pattern": { - "type": "string", - "description": "Pattern specifies the regex pattern to match for replacement" - }, - "replacement": { - "type": "string", - "description": "Replacement specifies the replacement string (supports $1, $2, etc. for captured groups)" - } + "nofollowredirects": { + "type": "boolean", + "description": "[S][C] Specifies whether or not to follow redirects. Default to false (e.g. follow HTTP redirections) unless spec.returnresponseheader is set to true (source only)." + } + }, + "additionalProperties": false, + "type": "object", + "description": "[S][C] Customizes the HTTP request to emit." + }, + "responseasserts": { + "properties": { + "headers": { + "additionalProperties": { + "type": "string" }, - "additionalProperties": false, "type": "object", - "description": "replaceAll applies a regex replacement to version strings before filtering.\nThis is useful for transforming versions (e.g., curl-8_15_0 to curl-8.15.0) before regex extraction." + "description": "[C] Specifies a set of assertions on the HTTP response headers." + }, + "statuscode": { + "type": "integer", + "description": "[C] Specifies a custom assertion on the HTTP response status code." } }, "additionalProperties": false, - "type": "object" + "type": "object", + "description": "[C] Specifies a set of custom assertions on the HTTP response for the condition." } }, "additionalProperties": false, "type": "object", - "description": "\"json\" defines the specification for manipulating \"json\" files." + "description": "Spec defines a specification for a \"http\" resource parsed from an updatecli manifest file." }, "scmid": { "type": "string", @@ -9705,6 +10021,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -9724,7 +10041,7 @@ }, "kind": { "enum": [ - "maven" + "jenkins" ] }, "transformers": { @@ -9861,75 +10178,18 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "url": { - "type": "string", - "description": "Deprecated, please specify the Maven url in the repository" - }, - "repository": { - "type": "string", - "description": "Specifies the maven repository url + name" - }, - "repositories": { - "items": { - "type": "string" - }, - "type": "array", - "description": "Repositories specifies a list of Maven repository where to look for version. Order matter, version is retrieve from the first repository with the last one being Maven Central." - }, - "groupid": { - "type": "string", - "description": "Specifies the maven artifact groupID" - }, - "artifactid": { + "release": { "type": "string", - "description": "Specifies the maven artifact artifactID" + "description": "[s][c] Defines the release name. It accepts \"stable\" or \"weekly\"" }, "version": { "type": "string", - "description": "Specifies the maven artifact version" - }, - "versionfilter": { - "properties": { - "kind": { - "type": "string", - "description": "specifies the version kind such as semver, regex, or latest" - }, - "pattern": { - "type": "string", - "description": "specifies the version pattern according the version kind\nfor semver, it is a semver constraint\nfor regex, it is a regex pattern\nfor time, it is a date format" - }, - "strict": { - "type": "boolean", - "description": "strict enforce strict versioning rule.\nOnly used for semantic versioning at this time" - }, - "regex": { - "type": "string", - "description": "specifies the regex pattern, used for regex/semver and regex/time.\nOutput of the first capture group will be used." - }, - "replaceall": { - "properties": { - "pattern": { - "type": "string", - "description": "Pattern specifies the regex pattern to match for replacement" - }, - "replacement": { - "type": "string", - "description": "Replacement specifies the replacement string (supports $1, $2, etc. for captured groups)" - } - }, - "additionalProperties": false, - "type": "object", - "description": "replaceAll applies a regex replacement to version strings before filtering.\nThis is useful for transforming versions (e.g., curl-8_15_0 to curl-8.15.0) before regex extraction." - } - }, - "additionalProperties": false, - "type": "object", - "description": "[S] VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." + "description": "[s][c] Defines a specific release version (condition only)" } }, "additionalProperties": false, "type": "object", - "description": "Spec defines a specification for a \"maven\" resource parsed from an updatecli manifest file" + "description": "Spec defines a specification for a \"jenkins\" resource parsed from an updatecli manifest file" }, "scmid": { "type": "string", @@ -9939,6 +10199,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -9958,7 +10219,7 @@ }, "kind": { "enum": [ - "npm" + "json" ] }, "transformers": { @@ -10095,21 +10356,32 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "name": { + "engine": { "type": "string", - "description": "Defines the specific npm package name" + "description": "default:\n * \"dasel/v1\" is the default engine used to manipulate json files\n\naccepted values:\n * \"dasel/v1\" for dasel v1 engine\n * \"dasel/v2\" for dasel v2 engine\n * \"dasel\" for the latest dasel engine which is currently dasel v2" }, - "version": { + "file": { "type": "string", - "description": "Defines a specific package version" + "description": "remark:\n * \"file\" and \"files\" are mutually exclusive\n * scheme \"https://\", \"http://\", and \"file://\" are supported in path for source and condition" }, - "url": { + "files": { + "items": { + "type": "string" + }, + "type": "array", + "description": "remark:\n * \"file\" and \"files\" are mutually exclusive\n * scheme \"https://\", \"http://\", and \"file://\" are supported in path for source and condition" + }, + "key": { "type": "string", - "description": "URL defines the registry url (defaults to `https://registry.npmjs.org/`)" + "description": "key defines the Jsonpath key to manipulate.\n\ncompatible:\n * source\n\t* condition\n\t* target\n\nremark:\n\t* key is a simpler version of Jsonpath accepts keys.\n\t* key accepts Dasel query, more information on https://github.com/tomwright/dasel\n * key accepts values based on the engine used\n\nexample:\n\t* key: $.name\n\t* key: name\n\t* file: https://nodejs.org/dist/index.json\n\t key: .(lts!=false).version" }, - "registrytoken": { + "value": { "type": "string", - "description": "RegistryToken defines the token to use when connection to the registry" + "description": "value defines the Jsonpath key value to manipulate. Default to source output.\n\ncompatible:\n * condition\n\t* target\n\ndefault:\n\twhen used for a condition or a target, the default value is the output of the source." + }, + "query": { + "type": "string", + "description": "query defines the Jsonpath query to manipulate. It accepts advanced Dasel v1 query\nthis parameter is now deprecated in Dasel v2 and replaced by the parameter \"key\".\n\ncompatible:\n\t* source\n\t* condition\n\t* target\n\nexample:\n\t* query: .name\n\t* query: \".[*].tag_name\"\n\nremark:\n\t* query accepts Dasel query, more information on https://github.com/tomwright/dasel" }, "versionfilter": { "properties": { @@ -10146,17 +10418,12 @@ } }, "additionalProperties": false, - "type": "object", - "description": "VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." - }, - "npmrcpath": { - "type": "string", - "description": "NpmrcPath defines the path to the .npmrc file" + "type": "object" } }, "additionalProperties": false, "type": "object", - "description": "Spec defines a specification for an Npm package parsed from an updatecli manifest file" + "description": "\"json\" defines the specification for manipulating \"json\" files." }, "scmid": { "type": "string", @@ -10166,6 +10433,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -10185,7 +10453,7 @@ }, "kind": { "enum": [ - "shell" + "maven" ] }, "transformers": { @@ -10322,129 +10590,75 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "command": { - "type": "string" + "url": { + "type": "string", + "description": "Deprecated, please specify the Maven url in the repository" }, - "environments": { + "repository": { + "type": "string", + "description": "Specifies the maven repository url + name" + }, + "repositories": { "items": { - "properties": { - "name": { - "type": "string", - "description": "Name defines the environment variable name" - }, - "value": { - "type": "string", - "description": "Value defines the environment variable value" - } - }, - "additionalProperties": false, - "type": "object", - "required": [ - "name" - ], - "description": "Environment is a struct containing information for an environment variable such as its name and its value" + "type": "string" }, "type": "array", - "description": "environments allows to pass environment variable(s) to the shell script.\n\n default:\n If environments is unset then it depends on the operating system.\n - Windows: [\"PATH\",\"\", \"PSModulePath\", \"PSModuleAnalysisCachePath\", \"\", \"PATHEXT\", \"\", \"TEMP\", \"\", \"HOME\", \"\", \"USERPROFILE\", \"\", \"PROFILE\"]\n - Darwin/Linux: [\"PATH\", \"\", \"HOME\", \"\", \"USER\", \"\", \"LOGNAME\", \"\", \"SHELL\", \"\", \"LANG\", \"\", \"LC_ALL\"]\n\nremark:\n For security reason, Updatecli doesn't pass the entire environment to the shell command but instead works\n with an allow list of environment variables." + "description": "Repositories specifies a list of Maven repository where to look for version. Order matter, version is retrieve from the first repository with the last one being Maven Central." }, - "changedif": { - "oneOf": [ - { - "$schema": "http://json-schema.org/draft-04/schema", - "properties": { - "kind": { - "enum": [ - "console/output" - ] - }, - "spec": true - }, - "additionalProperties": false, - "type": "object" + "groupid": { + "type": "string", + "description": "Specifies the maven artifact groupID" + }, + "artifactid": { + "type": "string", + "description": "Specifies the maven artifact artifactID" + }, + "version": { + "type": "string", + "description": "Specifies the maven artifact version" + }, + "versionfilter": { + "properties": { + "kind": { + "type": "string", + "description": "specifies the version kind such as semver, regex, or latest" }, - { - "$schema": "http://json-schema.org/draft-04/schema", - "properties": { - "kind": { - "enum": [ - "exitcode" - ] - }, - "spec": { - "$schema": "http://json-schema.org/draft-04/schema", - "properties": { - "warning": { - "type": "integer", - "description": "Warning defines the command exit code used by Updatecli to identify a change need. Default to 2 if no exitcode have been specified" - }, - "success": { - "type": "integer", - "description": "Success defines the command exit code used by Updatecli to identify no changes are needed. Default to 0 if no exitcode have been specified" - }, - "failure": { - "type": "integer", - "description": "Failure defines the command exit code used by Updatecli to identify that something went wrong. Default to 1 if no exitcode have been specified" - } - }, - "additionalProperties": false, - "type": "object", - "required": [ - "warning", - "success", - "failure" - ] - } - }, - "additionalProperties": false, - "type": "object" + "pattern": { + "type": "string", + "description": "specifies the version pattern according the version kind\nfor semver, it is a semver constraint\nfor regex, it is a regex pattern\nfor time, it is a date format" }, - { - "$schema": "http://json-schema.org/draft-04/schema", + "strict": { + "type": "boolean", + "description": "strict enforce strict versioning rule.\nOnly used for semantic versioning at this time" + }, + "regex": { + "type": "string", + "description": "specifies the regex pattern, used for regex/semver and regex/time.\nOutput of the first capture group will be used." + }, + "replaceall": { "properties": { - "kind": { - "enum": [ - "file/checksum" - ] + "pattern": { + "type": "string", + "description": "Pattern specifies the regex pattern to match for replacement" }, - "spec": { - "$schema": "http://json-schema.org/draft-04/schema", - "properties": { - "files": { - "items": { - "type": "string" - }, - "type": "array", - "description": "Files specifies the list of file that Updatecli monitors to identify state change" - } - }, - "additionalProperties": false, - "type": "object", - "required": [ - "files" - ] + "replacement": { + "type": "string", + "description": "Replacement specifies the replacement string (supports $1, $2, etc. for captured groups)" } }, "additionalProperties": false, - "type": "object" + "type": "object", + "description": "replaceAll applies a regex replacement to version strings before filtering.\nThis is useful for transforming versions (e.g., curl-8_15_0 to curl-8.15.0) before regex extraction." } - ], - "description": "ChangedIf defines how to interpret shell command execution.\nWhat a success means, what an error means, and what a warning would mean in the context of Updatecli.\n\nPlease note that in the context of Updatecli,\n - a success means nothing changed\n - a warning means something changed\n - an error means something went wrong\n\nChangedif can be of kind \"exitcode\", \"console/output\", or \"file/checksum\"\n\n \"console/output\" (default)\n Check the output of the command to identify if Updatecli should report a success, a warning, or an error.\n If a target returns anything to stdout, Updatecli interprets it as a something changed, otherwise it's a success.\n\n example:\n\n ---\n targets:\n default:\n name: 'doc: synchronize release note'\n kind: 'shell'\n disablesourceinput: true\n spec:\n command: 'releasepost --dry-run=\"$DRY_RUN\" --config {{ .config }} --clean'\n ---\n\n \"exitcode\":\n Check the exit code of the command to identify if Updatecli should report a success, a warning, or an error.\n\n example:\n\n ---\n targets:\n default:\n name: 'doc: synchronize release note'\n kind: 'shell'\n disablesourceinput: true\n spec:\n command: 'releasepost --dry-run=\"$DRY_RUN\" --config {{ .config }} --clean'\n environments:\n - name: 'GITHUB_TOKEN'\n - name: 'PATH'\n changedif:\n kind: 'exitcode'\n spec:\n warning: 0\n success: 1\n failure: 2\n ---\n\n \"file/checksum\":\n Check the checksum of file(s) to identify if Updatecli should report a success, a warning, or an error.\n\n example:\n\n ---\n targets:\n default:\n disablesourceinput: true\n name: Example of a shell command with a checksum success criteria\n kind: shell\n spec:\n command: |\n \t \t yq -i '.a.b[0].c = \"cool\"' file.yaml\n changedif:\n kind: file/checksum\n spec:\n files:\n - file.yaml\n ---" - }, - "shell": { - "type": "string", - "description": "Shell specifies which shell interpreter to use.\n\ndefault:\n Depends on the operating system:\n - Windows: \"powershell\"\n - Darwin/Linux: \"/bin/sh\"" - }, - "workdir": { - "type": "string", - "description": "workdir specifies the working directory path from where to execute the command. It defaults to the current context path (scm or current shell). Updatecli join the current path and the one specified in parameter if the parameter one contains a relative path.\n\ndefault: If a scmid is specified then the default" + }, + "additionalProperties": false, + "type": "object", + "description": "[S] VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." } }, "additionalProperties": false, "type": "object", - "required": [ - "command" - ], - "description": "Spec defines a specification for a \"shell\" resource parsed from an updatecli manifest file" + "description": "Spec defines a specification for a \"maven\" resource parsed from an updatecli manifest file" }, "scmid": { "type": "string", @@ -10454,6 +10668,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -10473,7 +10688,7 @@ }, "kind": { "enum": [ - "stash/branch" + "npm" ] }, "transformers": { @@ -10610,29 +10825,21 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "url": { - "type": "string", - "description": "\"url\" specifies the default stash url in case of Bitbucket Server" - }, - "username": { - "type": "string", - "description": "\"username\" specifies the username used to authenticate with Bitbucket Server API" - }, - "token": { + "name": { "type": "string", - "description": "\"token\" specifies the credential used to authenticate with Bitbucket Server API\n\n remark:\n A token is a sensitive information, it's recommended to not set this value directly in the configuration file\n but to use an environment variable or a SOPS file.\n\n The value can be set to `{{ requiredEnv \"BITBUCKET_TOKEN\"}}` to retrieve the token from the environment variable `BITBUCKET_TOKEN`\n\t or `{{ .bitbucket.token }}` to retrieve the token from a SOPS file.\n\n\t For more information, about a SOPS file, please refer to the following documentation:\n https://github.com/getsops/sops" + "description": "Defines the specific npm package name" }, - "password": { + "version": { "type": "string", - "description": "\"password\" specifies the credential used to authenticate with Bitbucket Server API, it must be combined with \"username\"\n\n remark:\n A token is a sensitive information, it's recommended to not set this value directly in the configuration file\n but to use an environment variable or a SOPS file.\n\n The value can be set to `{{ requiredEnv \"BITBUCKET_TOKEN\"}}` to retrieve the token from the environment variable `BITBUCKET_TOKEN`\n\t or `{{ .bitbucket.token }}` to retrieve the token from a SOPS file.\n\n\t For more information, about a SOPS file, please refer to the following documentation:\n https://github.com/getsops/sops" + "description": "Defines a specific package version" }, - "owner": { + "url": { "type": "string", - "description": "[S][C] Owner specifies repository owner" + "description": "URL defines the registry url (defaults to `https://registry.npmjs.org/`)" }, - "repository": { + "registrytoken": { "type": "string", - "description": "[S][C] Repository specifies the name of a repository for a specific owner" + "description": "RegistryToken defines the token to use when connection to the registry" }, "versionfilter": { "properties": { @@ -10670,21 +10877,16 @@ }, "additionalProperties": false, "type": "object", - "description": "[S] VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." + "description": "VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." }, - "branch": { + "npmrcpath": { "type": "string", - "description": "[C] Branch specifies the branch name" + "description": "NpmrcPath defines the path to the .npmrc file" } }, "additionalProperties": false, "type": "object", - "required": [ - "url", - "owner", - "repository" - ], - "description": "Spec defines settings used to interact with Bitbucket Server release" + "description": "Spec defines a specification for an Npm package parsed from an updatecli manifest file" }, "scmid": { "type": "string", @@ -10694,6 +10896,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -10713,7 +10916,7 @@ }, "kind": { "enum": [ - "stash/tag" + "shell" ] }, "transformers": { @@ -10850,81 +11053,1407 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "url": { - "type": "string", - "description": "\"url\" specifies the default stash url in case of Bitbucket Server" - }, - "username": { - "type": "string", - "description": "\"username\" specifies the username used to authenticate with Bitbucket Server API" - }, - "token": { - "type": "string", - "description": "\"token\" specifies the credential used to authenticate with Bitbucket Server API\n\n remark:\n A token is a sensitive information, it's recommended to not set this value directly in the configuration file\n but to use an environment variable or a SOPS file.\n\n The value can be set to `{{ requiredEnv \"BITBUCKET_TOKEN\"}}` to retrieve the token from the environment variable `BITBUCKET_TOKEN`\n\t or `{{ .bitbucket.token }}` to retrieve the token from a SOPS file.\n\n\t For more information, about a SOPS file, please refer to the following documentation:\n https://github.com/getsops/sops" - }, - "password": { - "type": "string", - "description": "\"password\" specifies the credential used to authenticate with Bitbucket Server API, it must be combined with \"username\"\n\n remark:\n A token is a sensitive information, it's recommended to not set this value directly in the configuration file\n but to use an environment variable or a SOPS file.\n\n The value can be set to `{{ requiredEnv \"BITBUCKET_TOKEN\"}}` to retrieve the token from the environment variable `BITBUCKET_TOKEN`\n\t or `{{ .bitbucket.token }}` to retrieve the token from a SOPS file.\n\n\t For more information, about a SOPS file, please refer to the following documentation:\n https://github.com/getsops/sops" + "command": { + "type": "string" }, - "owner": { + "environments": { + "items": { + "properties": { + "name": { + "type": "string", + "description": "Name defines the environment variable name" + }, + "value": { + "type": "string", + "description": "Value defines the environment variable value" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "name" + ], + "description": "Environment is a struct containing information for an environment variable such as its name and its value" + }, + "type": "array", + "description": "environments allows to pass environment variable(s) to the shell script.\n\n default:\n If environments is unset then it depends on the operating system.\n - Windows: [\"PATH\",\"\", \"PSModulePath\", \"PSModuleAnalysisCachePath\", \"\", \"PATHEXT\", \"\", \"TEMP\", \"\", \"HOME\", \"\", \"USERPROFILE\", \"\", \"PROFILE\"]\n - Darwin/Linux: [\"PATH\", \"\", \"HOME\", \"\", \"USER\", \"\", \"LOGNAME\", \"\", \"SHELL\", \"\", \"LANG\", \"\", \"LC_ALL\"]\n\nremark:\n For security reason, Updatecli doesn't pass the entire environment to the shell command but instead works\n with an allow list of environment variables." + }, + "changedif": { + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-04/schema", + "properties": { + "kind": { + "enum": [ + "console/output" + ] + }, + "spec": { + "$schema": "http://json-schema.org/draft-04/schema", + "properties": {}, + "additionalProperties": false, + "type": "object", + "description": "Spec is an empty struct used as a placeholder for the jsonschema." + } + }, + "additionalProperties": false, + "type": "object" + }, + { + "$schema": "http://json-schema.org/draft-04/schema", + "properties": { + "kind": { + "enum": [ + "exitcode" + ] + }, + "spec": { + "$schema": "http://json-schema.org/draft-04/schema", + "properties": { + "warning": { + "type": "integer", + "description": "Warning defines the command exit code used by Updatecli to identify a change need. Default to 2 if no exitcode have been specified" + }, + "success": { + "type": "integer", + "description": "Success defines the command exit code used by Updatecli to identify no changes are needed. Default to 0 if no exitcode have been specified" + }, + "failure": { + "type": "integer", + "description": "Failure defines the command exit code used by Updatecli to identify that something went wrong. Default to 1 if no exitcode have been specified" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "warning", + "success", + "failure" + ] + } + }, + "additionalProperties": false, + "type": "object" + }, + { + "$schema": "http://json-schema.org/draft-04/schema", + "properties": { + "kind": { + "enum": [ + "file/checksum" + ] + }, + "spec": { + "$schema": "http://json-schema.org/draft-04/schema", + "properties": { + "files": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Files specifies the list of file that Updatecli monitors to identify state change" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "files" + ] + } + }, + "additionalProperties": false, + "type": "object" + } + ], + "description": "ChangedIf defines how to interpret shell command execution.\nWhat a success means, what an error means, and what a warning would mean in the context of Updatecli.\n\nPlease note that in the context of Updatecli,\n - a success means nothing changed\n - a warning means something changed\n - an error means something went wrong\n\nChangedif can be of kind \"exitcode\", \"console/output\", or \"file/checksum\"\n\n \"console/output\" (default)\n Check the output of the command to identify if Updatecli should report a success, a warning, or an error.\n If a target returns anything to stdout, Updatecli interprets it as a something changed, otherwise it's a success.\n\n example:\n\n ---\n targets:\n default:\n name: 'doc: synchronize release note'\n kind: 'shell'\n disablesourceinput: true\n spec:\n command: 'releasepost --dry-run=\"$DRY_RUN\" --config {{ .config }} --clean'\n ---\n\n \"exitcode\":\n Check the exit code of the command to identify if Updatecli should report a success, a warning, or an error.\n\n example:\n\n ---\n targets:\n default:\n name: 'doc: synchronize release note'\n kind: 'shell'\n disablesourceinput: true\n spec:\n command: 'releasepost --dry-run=\"$DRY_RUN\" --config {{ .config }} --clean'\n environments:\n - name: 'GITHUB_TOKEN'\n - name: 'PATH'\n changedif:\n kind: 'exitcode'\n spec:\n warning: 0\n success: 1\n failure: 2\n ---\n\n \"file/checksum\":\n Check the checksum of file(s) to identify if Updatecli should report a success, a warning, or an error.\n\n example:\n\n ---\n targets:\n default:\n disablesourceinput: true\n name: Example of a shell command with a checksum success criteria\n kind: shell\n spec:\n command: |\n \t \t yq -i '.a.b[0].c = \"cool\"' file.yaml\n changedif:\n kind: file/checksum\n spec:\n files:\n - file.yaml\n ---" + }, + "shell": { + "type": "string", + "description": "Shell specifies which shell interpreter to use.\n\ndefault:\n Depends on the operating system:\n - Windows: \"powershell\"\n - Darwin/Linux: \"/bin/sh\"" + }, + "workdir": { + "type": "string", + "description": "workdir specifies the working directory path from where to execute the command. It defaults to the current context path (scm or current shell). Updatecli join the current path and the one specified in parameter if the parameter one contains a relative path.\n\ndefault: If a scmid is specified then the default" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "command" + ], + "description": "Spec defines a specification for a \"shell\" resource parsed from an updatecli manifest file" + }, + "scmid": { + "type": "string", + "description": "scmid specifies the scm configuration key associated to the current resource" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "name", + "kind" + ] + }, + { + "$schema": "http://json-schema.org/draft-04/schema", + "properties": { + "dependson": { + "items": { + "type": "string" + }, + "type": "array", + "description": "\"dependson\" allows to specify the order of execution of resources.\nIt accepts a list of rules like \"(resourceType#)resourceId(:booleanOperator)\".\n\nThe resourceType is optional and can be one of \"condition\", \"source\" or \"target\"\nBy default the resourceType is the current resource type\n\nThe resourceId is the name of the resource to depend on\n\nThe booleanOperator is optional and can be \"AND\" or \"OR\"\n\nexamples:\n dependson:\n * condition#myCondition:and\n * source#mySource\n\nremarks:\n * The parameters \"sourceid\" and \"conditionsids\" affect the order of resource execution.\n * To avoid circular dependencies, the depended resource may need to remove any conditionids or set \"disablesourceinput to true\"." + }, + "name": { + "type": "string", + "description": "name specifies the resource name" + }, + "kind": { + "enum": [ + "stash/branch" + ] + }, + "transformers": { + "items": { + "properties": { + "addprefix": { + "type": "string", + "description": "AddPrefix adds a prefix to the transformer input value" + }, + "addsuffix": { + "type": "string", + "description": "AddSuffix adds a suffix to the transformer input value" + }, + "trimprefix": { + "type": "string", + "description": "TrimPrefix removes a prefix to the transformer input value" + }, + "trimsuffix": { + "type": "string", + "description": "TrimSuffix removes the suffix from the transformer input value" + }, + "replacers": { + "items": { + "properties": { + "from": { + "type": "string", + "description": "From defines the source value which need to be replaced" + }, + "to": { + "type": "string", + "description": "To defines the \"to what\" a \"from\" value needs to be replaced" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "from", + "to" + ], + "description": "Replacer is struct used to feed strings.Replacer" + }, + "type": "array", + "description": "Replacers specifies a list of replacer instruction" + }, + "replacer": { + "properties": { + "from": { + "type": "string", + "description": "From defines the source value which need to be replaced" + }, + "to": { + "type": "string", + "description": "To defines the \"to what\" a \"from\" value needs to be replaced" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "from", + "to" + ], + "description": "Replacer specifies what value needs to be changed and how" + }, + "find": { + "type": "string", + "description": "Find searches for a specific value if it exists and return false if it doesn't" + }, + "findsubmatch": { + "properties": { + "pattern": { + "type": "string", + "description": "Pattern defines regular expression to use for retrieving a submatch" + }, + "captureindex": { + "type": "integer", + "description": "CaptureIndex defines which substring occurrence to retrieve. Note also that a value of `0` for `captureIndex` returns all submatches, and individual submatch indexes start at `1`." + }, + "capturepattern": { + "type": "string", + "description": "Uses the match group(s) to generate the output using \\0, \\1, \\2, etc" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "pattern" + ], + "description": "Find searches for a specific value if it exists then return the value using regular expression" + }, + "jsonmatch": { + "properties": { + "key": { + "type": "string" + }, + "nomatchresult": { + "type": "string", + "description": "If we don't find a match then return the following string or the input value" + }, + "joinmultiplematches": { + "type": "string", + "description": "If we find multiple matches, join them by this" + }, + "multiplematchselector": { + "type": "string", + "description": "If we find multiple matches, select the \"first\" or the \"last\"" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "key" + ] + }, + "semverinc": { + "type": "string", + "description": "SemvVerInc specifies a comma separated list semantic versioning component that needs to be upgraded." + }, + "quote": { + "type": "boolean", + "description": "Quote add quote around the value" + }, + "unquote": { + "type": "boolean", + "description": "Unquote remove quotes around the value" + } + }, + "additionalProperties": false, + "type": "object", + "description": "Transformer holds a transformer rule" + }, + "type": "array", + "description": "transformers defines how the default input value need to be transformed" + }, + "spec": { + "$schema": "http://json-schema.org/draft-04/schema", + "properties": { + "url": { + "type": "string", + "description": "\"url\" specifies the default stash url in case of Bitbucket Server" + }, + "username": { + "type": "string", + "description": "\"username\" specifies the username used to authenticate with Bitbucket Server API" + }, + "token": { + "type": "string", + "description": "\"token\" specifies the credential used to authenticate with Bitbucket Server API\n\n remark:\n A token is a sensitive information, it's recommended to not set this value directly in the configuration file\n but to use an environment variable or a SOPS file.\n\n The value can be set to `{{ requiredEnv \"BITBUCKET_TOKEN\"}}` to retrieve the token from the environment variable `BITBUCKET_TOKEN`\n\t or `{{ .bitbucket.token }}` to retrieve the token from a SOPS file.\n\n\t For more information, about a SOPS file, please refer to the following documentation:\n https://github.com/getsops/sops" + }, + "password": { + "type": "string", + "description": "\"password\" specifies the credential used to authenticate with Bitbucket Server API, it must be combined with \"username\"\n\n remark:\n A token is a sensitive information, it's recommended to not set this value directly in the configuration file\n but to use an environment variable or a SOPS file.\n\n The value can be set to `{{ requiredEnv \"BITBUCKET_TOKEN\"}}` to retrieve the token from the environment variable `BITBUCKET_TOKEN`\n\t or `{{ .bitbucket.token }}` to retrieve the token from a SOPS file.\n\n\t For more information, about a SOPS file, please refer to the following documentation:\n https://github.com/getsops/sops" + }, + "owner": { + "type": "string", + "description": "[S][C] Owner specifies repository owner" + }, + "repository": { + "type": "string", + "description": "[S][C] Repository specifies the name of a repository for a specific owner" + }, + "versionfilter": { + "properties": { + "kind": { + "type": "string", + "description": "specifies the version kind such as semver, regex, or latest" + }, + "pattern": { + "type": "string", + "description": "specifies the version pattern according the version kind\nfor semver, it is a semver constraint\nfor regex, it is a regex pattern\nfor time, it is a date format" + }, + "strict": { + "type": "boolean", + "description": "strict enforce strict versioning rule.\nOnly used for semantic versioning at this time" + }, + "regex": { + "type": "string", + "description": "specifies the regex pattern, used for regex/semver and regex/time.\nOutput of the first capture group will be used." + }, + "replaceall": { + "properties": { + "pattern": { + "type": "string", + "description": "Pattern specifies the regex pattern to match for replacement" + }, + "replacement": { + "type": "string", + "description": "Replacement specifies the replacement string (supports $1, $2, etc. for captured groups)" + } + }, + "additionalProperties": false, + "type": "object", + "description": "replaceAll applies a regex replacement to version strings before filtering.\nThis is useful for transforming versions (e.g., curl-8_15_0 to curl-8.15.0) before regex extraction." + } + }, + "additionalProperties": false, + "type": "object", + "description": "[S] VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." + }, + "branch": { + "type": "string", + "description": "[C] Branch specifies the branch name" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "url", + "owner", + "repository" + ], + "description": "Spec defines settings used to interact with Bitbucket Server release" + }, + "scmid": { + "type": "string", + "description": "scmid specifies the scm configuration key associated to the current resource" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "name", + "kind" + ] + }, + { + "$schema": "http://json-schema.org/draft-04/schema", + "properties": { + "dependson": { + "items": { + "type": "string" + }, + "type": "array", + "description": "\"dependson\" allows to specify the order of execution of resources.\nIt accepts a list of rules like \"(resourceType#)resourceId(:booleanOperator)\".\n\nThe resourceType is optional and can be one of \"condition\", \"source\" or \"target\"\nBy default the resourceType is the current resource type\n\nThe resourceId is the name of the resource to depend on\n\nThe booleanOperator is optional and can be \"AND\" or \"OR\"\n\nexamples:\n dependson:\n * condition#myCondition:and\n * source#mySource\n\nremarks:\n * The parameters \"sourceid\" and \"conditionsids\" affect the order of resource execution.\n * To avoid circular dependencies, the depended resource may need to remove any conditionids or set \"disablesourceinput to true\"." + }, + "name": { + "type": "string", + "description": "name specifies the resource name" + }, + "kind": { + "enum": [ + "stash/tag" + ] + }, + "transformers": { + "items": { + "properties": { + "addprefix": { + "type": "string", + "description": "AddPrefix adds a prefix to the transformer input value" + }, + "addsuffix": { + "type": "string", + "description": "AddSuffix adds a suffix to the transformer input value" + }, + "trimprefix": { + "type": "string", + "description": "TrimPrefix removes a prefix to the transformer input value" + }, + "trimsuffix": { + "type": "string", + "description": "TrimSuffix removes the suffix from the transformer input value" + }, + "replacers": { + "items": { + "properties": { + "from": { + "type": "string", + "description": "From defines the source value which need to be replaced" + }, + "to": { + "type": "string", + "description": "To defines the \"to what\" a \"from\" value needs to be replaced" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "from", + "to" + ], + "description": "Replacer is struct used to feed strings.Replacer" + }, + "type": "array", + "description": "Replacers specifies a list of replacer instruction" + }, + "replacer": { + "properties": { + "from": { + "type": "string", + "description": "From defines the source value which need to be replaced" + }, + "to": { + "type": "string", + "description": "To defines the \"to what\" a \"from\" value needs to be replaced" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "from", + "to" + ], + "description": "Replacer specifies what value needs to be changed and how" + }, + "find": { + "type": "string", + "description": "Find searches for a specific value if it exists and return false if it doesn't" + }, + "findsubmatch": { + "properties": { + "pattern": { + "type": "string", + "description": "Pattern defines regular expression to use for retrieving a submatch" + }, + "captureindex": { + "type": "integer", + "description": "CaptureIndex defines which substring occurrence to retrieve. Note also that a value of `0` for `captureIndex` returns all submatches, and individual submatch indexes start at `1`." + }, + "capturepattern": { + "type": "string", + "description": "Uses the match group(s) to generate the output using \\0, \\1, \\2, etc" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "pattern" + ], + "description": "Find searches for a specific value if it exists then return the value using regular expression" + }, + "jsonmatch": { + "properties": { + "key": { + "type": "string" + }, + "nomatchresult": { + "type": "string", + "description": "If we don't find a match then return the following string or the input value" + }, + "joinmultiplematches": { + "type": "string", + "description": "If we find multiple matches, join them by this" + }, + "multiplematchselector": { + "type": "string", + "description": "If we find multiple matches, select the \"first\" or the \"last\"" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "key" + ] + }, + "semverinc": { + "type": "string", + "description": "SemvVerInc specifies a comma separated list semantic versioning component that needs to be upgraded." + }, + "quote": { + "type": "boolean", + "description": "Quote add quote around the value" + }, + "unquote": { + "type": "boolean", + "description": "Unquote remove quotes around the value" + } + }, + "additionalProperties": false, + "type": "object", + "description": "Transformer holds a transformer rule" + }, + "type": "array", + "description": "transformers defines how the default input value need to be transformed" + }, + "spec": { + "$schema": "http://json-schema.org/draft-04/schema", + "properties": { + "url": { + "type": "string", + "description": "\"url\" specifies the default stash url in case of Bitbucket Server" + }, + "username": { + "type": "string", + "description": "\"username\" specifies the username used to authenticate with Bitbucket Server API" + }, + "token": { + "type": "string", + "description": "\"token\" specifies the credential used to authenticate with Bitbucket Server API\n\n remark:\n A token is a sensitive information, it's recommended to not set this value directly in the configuration file\n but to use an environment variable or a SOPS file.\n\n The value can be set to `{{ requiredEnv \"BITBUCKET_TOKEN\"}}` to retrieve the token from the environment variable `BITBUCKET_TOKEN`\n\t or `{{ .bitbucket.token }}` to retrieve the token from a SOPS file.\n\n\t For more information, about a SOPS file, please refer to the following documentation:\n https://github.com/getsops/sops" + }, + "password": { + "type": "string", + "description": "\"password\" specifies the credential used to authenticate with Bitbucket Server API, it must be combined with \"username\"\n\n remark:\n A token is a sensitive information, it's recommended to not set this value directly in the configuration file\n but to use an environment variable or a SOPS file.\n\n The value can be set to `{{ requiredEnv \"BITBUCKET_TOKEN\"}}` to retrieve the token from the environment variable `BITBUCKET_TOKEN`\n\t or `{{ .bitbucket.token }}` to retrieve the token from a SOPS file.\n\n\t For more information, about a SOPS file, please refer to the following documentation:\n https://github.com/getsops/sops" + }, + "owner": { + "type": "string", + "description": "[S][C] Owner specifies repository owner" + }, + "repository": { + "type": "string", + "description": "[S][C] Repository specifies the name of a repository for a specific owner" + }, + "versionfilter": { + "properties": { + "kind": { + "type": "string", + "description": "specifies the version kind such as semver, regex, or latest" + }, + "pattern": { + "type": "string", + "description": "specifies the version pattern according the version kind\nfor semver, it is a semver constraint\nfor regex, it is a regex pattern\nfor time, it is a date format" + }, + "strict": { + "type": "boolean", + "description": "strict enforce strict versioning rule.\nOnly used for semantic versioning at this time" + }, + "regex": { + "type": "string", + "description": "specifies the regex pattern, used for regex/semver and regex/time.\nOutput of the first capture group will be used." + }, + "replaceall": { + "properties": { + "pattern": { + "type": "string", + "description": "Pattern specifies the regex pattern to match for replacement" + }, + "replacement": { + "type": "string", + "description": "Replacement specifies the replacement string (supports $1, $2, etc. for captured groups)" + } + }, + "additionalProperties": false, + "type": "object", + "description": "replaceAll applies a regex replacement to version strings before filtering.\nThis is useful for transforming versions (e.g., curl-8_15_0 to curl-8.15.0) before regex extraction." + } + }, + "additionalProperties": false, + "type": "object", + "description": "[S][C] VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." + }, + "tag": { + "type": "string", + "description": "[S] Tag defines the Bitbucket tag ." + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "url", + "owner", + "repository" + ], + "description": "Spec defines settings used to interact with Bitbucket Server release" + }, + "scmid": { + "type": "string", + "description": "scmid specifies the scm configuration key associated to the current resource" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "name", + "kind" + ] + }, + { + "$schema": "http://json-schema.org/draft-04/schema", + "properties": { + "dependson": { + "items": { + "type": "string" + }, + "type": "array", + "description": "\"dependson\" allows to specify the order of execution of resources.\nIt accepts a list of rules like \"(resourceType#)resourceId(:booleanOperator)\".\n\nThe resourceType is optional and can be one of \"condition\", \"source\" or \"target\"\nBy default the resourceType is the current resource type\n\nThe resourceId is the name of the resource to depend on\n\nThe booleanOperator is optional and can be \"AND\" or \"OR\"\n\nexamples:\n dependson:\n * condition#myCondition:and\n * source#mySource\n\nremarks:\n * The parameters \"sourceid\" and \"conditionsids\" affect the order of resource execution.\n * To avoid circular dependencies, the depended resource may need to remove any conditionids or set \"disablesourceinput to true\"." + }, + "name": { + "type": "string", + "description": "name specifies the resource name" + }, + "kind": { + "enum": [ + "temurin" + ] + }, + "transformers": { + "items": { + "properties": { + "addprefix": { + "type": "string", + "description": "AddPrefix adds a prefix to the transformer input value" + }, + "addsuffix": { + "type": "string", + "description": "AddSuffix adds a suffix to the transformer input value" + }, + "trimprefix": { + "type": "string", + "description": "TrimPrefix removes a prefix to the transformer input value" + }, + "trimsuffix": { + "type": "string", + "description": "TrimSuffix removes the suffix from the transformer input value" + }, + "replacers": { + "items": { + "properties": { + "from": { + "type": "string", + "description": "From defines the source value which need to be replaced" + }, + "to": { + "type": "string", + "description": "To defines the \"to what\" a \"from\" value needs to be replaced" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "from", + "to" + ], + "description": "Replacer is struct used to feed strings.Replacer" + }, + "type": "array", + "description": "Replacers specifies a list of replacer instruction" + }, + "replacer": { + "properties": { + "from": { + "type": "string", + "description": "From defines the source value which need to be replaced" + }, + "to": { + "type": "string", + "description": "To defines the \"to what\" a \"from\" value needs to be replaced" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "from", + "to" + ], + "description": "Replacer specifies what value needs to be changed and how" + }, + "find": { + "type": "string", + "description": "Find searches for a specific value if it exists and return false if it doesn't" + }, + "findsubmatch": { + "properties": { + "pattern": { + "type": "string", + "description": "Pattern defines regular expression to use for retrieving a submatch" + }, + "captureindex": { + "type": "integer", + "description": "CaptureIndex defines which substring occurrence to retrieve. Note also that a value of `0` for `captureIndex` returns all submatches, and individual submatch indexes start at `1`." + }, + "capturepattern": { + "type": "string", + "description": "Uses the match group(s) to generate the output using \\0, \\1, \\2, etc" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "pattern" + ], + "description": "Find searches for a specific value if it exists then return the value using regular expression" + }, + "jsonmatch": { + "properties": { + "key": { + "type": "string" + }, + "nomatchresult": { + "type": "string", + "description": "If we don't find a match then return the following string or the input value" + }, + "joinmultiplematches": { + "type": "string", + "description": "If we find multiple matches, join them by this" + }, + "multiplematchselector": { + "type": "string", + "description": "If we find multiple matches, select the \"first\" or the \"last\"" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "key" + ] + }, + "semverinc": { + "type": "string", + "description": "SemvVerInc specifies a comma separated list semantic versioning component that needs to be upgraded." + }, + "quote": { + "type": "boolean", + "description": "Quote add quote around the value" + }, + "unquote": { + "type": "boolean", + "description": "Unquote remove quotes around the value" + } + }, + "additionalProperties": false, + "type": "object", + "description": "Transformer holds a transformer rule" + }, + "type": "array", + "description": "transformers defines how the default input value need to be transformed" + }, + "spec": { + "$schema": "http://json-schema.org/draft-04/schema", + "properties": { + "releaseline": { + "type": "string", + "description": "ReleaseLine specifies the line of Temurin release to retrieve.\n\ndefault: \"lts\"\n\nAllowed values:\n* \"lts\"\n* \"feature\"" + }, + "releasetype": { + "type": "string", + "description": "ReleaseType specifies the type of Temurin release to retrieve.\n\ndefault: \"ga\"\n\nAllowed values:\n* \"ga\" (General Availability)\n* \"ea\" (Early Availability, e.g. nightly builds)" + }, + "featureversion": { + "type": "integer", + "description": "FeatureVersion specifies the Major Java version to filter the Temurin release to retrieve.\n\ndefault: undefined\n\nAllowed values: integer number (8, 11, 17, 21, etc.)" + }, + "result": { + "type": "string", + "description": "Result specifies the type of value returned by the retrieved Temurin release.\n\ndefault: \"version\"\n\nAllowed values:\n* \"version\" (Version Name, e.g. the Temurin SCM release name)\n* \"installer_url\" (HTTP URL to the binary release/installer)\n* \"checksum_url\" (HTTP URL to the checksum file)\n* \"signature_url\" (HTTP URL to the signature file)" + }, + "architecture": { + "type": "string", + "description": "Architecture specifies the CPU architecture (as defined by the Temurin API - https://api.adoptium.net/q/swagger-ui/#/Types)\nto filter the Temurin release to retrieve.\n\ndefault: \"x64\"\n\nAllowed values:\n* \"x64\" (Intel/AMD 64 Bits)\n* \"x86\" (Intel/AMD 32 Bits)\n* \"ppc64\" (PowerPC 64 Bits)\n* \"ppc64le\" (PowerPC Little Endian 64 Bits)\n* \"s390x\" (IBM Z)\n* \"aarch64\" (ARM 64 Bits)\n* \"arm\" (ARM 32 Bits)\n* \"sparcv9\" (Sparc 64 Bits)\n* \"riscv64\" (RiscV 64 Bits)" + }, + "imagetype": { + "type": "string", + "description": "ImageType specifies the type of artifact to filter the Temurin release to retrieve.\n\ndefault: \"jdk\"\n\nAllowed values:\n* \"jdk\"\n* \"jre\"\n* \"testimage\"\n* \"debugimage\"\n* \"staticlibs\"\n* \"source\n* \"sbom\"" + }, + "operatingsystem": { + "type": "string", + "description": "OperatingSystem specifies the Operating System (as defined by the Temurin API - https://api.adoptium.net/q/swagger-ui/#/Types)\nto filter the Temurin release to retrieve.\n\ndefault: \"linux\"\n\nAllowed values:\n* \"linux\"\n* \"windows\"\n* \"mac\"\n* \"solaris\"\n* \"aix\"\n* \"alpine-linux\"" + }, + "specificversion": { + "type": "string", + "description": "SpecificVersion specifies the exact Temurin version to filter the Temurin release to retrieve.\nIgnores FeatureVersion when used.\n\ndefault: undefined\n\nAllowed values: string (can be a semantic version, a JDK version or a Temurin release name)" + }, + "project": { + "type": "string", + "description": "Project specifies the project to filter the Temurin release to retrieve.\n\ndefault: \"jdk\"\n\nAllowed values:\n* \"jdk\" (default)\n* \"valhalla\"\n* \"metropolis\"\n* \"jfr\"\n* \"shenandoah\"" + }, + "platforms": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Platforms is only valid within conditions. It specifies a collection of platforms as a filter for Temurin releases.\nEach platform must be a combination of an Operating System and a CPU architecture separated by the slash (`/`) character.\n\ndefault: empty list (e.g. no filtering per platform).\n\nAllowed values: Any combination of Operating System and Architecture as defined by the Temurin API (https://api.adoptium.net/q/swagger-ui/#/Types):\n* `linux/x64`\n* `linux/aarch64`\n* `linux/s390x`\n* `alpine-linux/x64`\n* `windows/x64`\n..." + } + }, + "additionalProperties": false, + "type": "object" + }, + "scmid": { + "type": "string", + "description": "scmid specifies the scm configuration key associated to the current resource" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "name", + "kind" + ] + }, + { + "$schema": "http://json-schema.org/draft-04/schema", + "properties": { + "dependson": { + "items": { + "type": "string" + }, + "type": "array", + "description": "\"dependson\" allows to specify the order of execution of resources.\nIt accepts a list of rules like \"(resourceType#)resourceId(:booleanOperator)\".\n\nThe resourceType is optional and can be one of \"condition\", \"source\" or \"target\"\nBy default the resourceType is the current resource type\n\nThe resourceId is the name of the resource to depend on\n\nThe booleanOperator is optional and can be \"AND\" or \"OR\"\n\nexamples:\n dependson:\n * condition#myCondition:and\n * source#mySource\n\nremarks:\n * The parameters \"sourceid\" and \"conditionsids\" affect the order of resource execution.\n * To avoid circular dependencies, the depended resource may need to remove any conditionids or set \"disablesourceinput to true\"." + }, + "name": { + "type": "string", + "description": "name specifies the resource name" + }, + "kind": { + "enum": [ + "terraform/file" + ] + }, + "transformers": { + "items": { + "properties": { + "addprefix": { + "type": "string", + "description": "AddPrefix adds a prefix to the transformer input value" + }, + "addsuffix": { + "type": "string", + "description": "AddSuffix adds a suffix to the transformer input value" + }, + "trimprefix": { + "type": "string", + "description": "TrimPrefix removes a prefix to the transformer input value" + }, + "trimsuffix": { + "type": "string", + "description": "TrimSuffix removes the suffix from the transformer input value" + }, + "replacers": { + "items": { + "properties": { + "from": { + "type": "string", + "description": "From defines the source value which need to be replaced" + }, + "to": { + "type": "string", + "description": "To defines the \"to what\" a \"from\" value needs to be replaced" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "from", + "to" + ], + "description": "Replacer is struct used to feed strings.Replacer" + }, + "type": "array", + "description": "Replacers specifies a list of replacer instruction" + }, + "replacer": { + "properties": { + "from": { + "type": "string", + "description": "From defines the source value which need to be replaced" + }, + "to": { + "type": "string", + "description": "To defines the \"to what\" a \"from\" value needs to be replaced" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "from", + "to" + ], + "description": "Replacer specifies what value needs to be changed and how" + }, + "find": { + "type": "string", + "description": "Find searches for a specific value if it exists and return false if it doesn't" + }, + "findsubmatch": { + "properties": { + "pattern": { + "type": "string", + "description": "Pattern defines regular expression to use for retrieving a submatch" + }, + "captureindex": { + "type": "integer", + "description": "CaptureIndex defines which substring occurrence to retrieve. Note also that a value of `0` for `captureIndex` returns all submatches, and individual submatch indexes start at `1`." + }, + "capturepattern": { + "type": "string", + "description": "Uses the match group(s) to generate the output using \\0, \\1, \\2, etc" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "pattern" + ], + "description": "Find searches for a specific value if it exists then return the value using regular expression" + }, + "jsonmatch": { + "properties": { + "key": { + "type": "string" + }, + "nomatchresult": { + "type": "string", + "description": "If we don't find a match then return the following string or the input value" + }, + "joinmultiplematches": { + "type": "string", + "description": "If we find multiple matches, join them by this" + }, + "multiplematchselector": { + "type": "string", + "description": "If we find multiple matches, select the \"first\" or the \"last\"" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "key" + ] + }, + "semverinc": { + "type": "string", + "description": "SemvVerInc specifies a comma separated list semantic versioning component that needs to be upgraded." + }, + "quote": { + "type": "boolean", + "description": "Quote add quote around the value" + }, + "unquote": { + "type": "boolean", + "description": "Unquote remove quotes around the value" + } + }, + "additionalProperties": false, + "type": "object", + "description": "Transformer holds a transformer rule" + }, + "type": "array", + "description": "transformers defines how the default input value need to be transformed" + }, + "spec": { + "$schema": "http://json-schema.org/draft-04/schema", + "properties": { + "file": { + "type": "string", + "description": "\"file\" defines the hcl file path to interact with.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tremark:\n\t\t\t* \"file\" and \"files\" are mutually exclusive\n\t\t\t* protocols \"https://\", \"http://\", and \"file://\" are supported in path for source and condition" + }, + "files": { + "items": { + "type": "string" + }, + "type": "array", + "description": "\"files\" defines the list of hcl files path to interact with.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tremark:\n\t\t\t* file and files are mutually exclusive\n\t\t\t* when using as a source only one file is supported\n\t\t\t* protocols \"https://\", \"http://\", and \"file://\" are supported in file path for source and condition" + }, + "path": { + "type": "string", + "description": "\"path\" defines the hcl attribute path.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\texample:\n\t\t\t* path: resource.aws_instance.app_server.ami\n\t\t\t* path: resource.helm_release.prometheus.version\n\t\t\t* path: plugin.aws.version" + }, + "value": { + "type": "string", + "description": "\"value\" is the value associated with a hcl path.\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tWhen used from a condition or a target, the default value is set to linked source output." + } + }, + "additionalProperties": false, + "type": "object", + "description": "\"hcl\" defines the specification for manipulating \"hcl\" files." + }, + "scmid": { + "type": "string", + "description": "scmid specifies the scm configuration key associated to the current resource" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "name", + "kind" + ] + }, + { + "$schema": "http://json-schema.org/draft-04/schema", + "properties": { + "dependson": { + "items": { + "type": "string" + }, + "type": "array", + "description": "\"dependson\" allows to specify the order of execution of resources.\nIt accepts a list of rules like \"(resourceType#)resourceId(:booleanOperator)\".\n\nThe resourceType is optional and can be one of \"condition\", \"source\" or \"target\"\nBy default the resourceType is the current resource type\n\nThe resourceId is the name of the resource to depend on\n\nThe booleanOperator is optional and can be \"AND\" or \"OR\"\n\nexamples:\n dependson:\n * condition#myCondition:and\n * source#mySource\n\nremarks:\n * The parameters \"sourceid\" and \"conditionsids\" affect the order of resource execution.\n * To avoid circular dependencies, the depended resource may need to remove any conditionids or set \"disablesourceinput to true\"." + }, + "name": { + "type": "string", + "description": "name specifies the resource name" + }, + "kind": { + "enum": [ + "terraform/lock" + ] + }, + "transformers": { + "items": { + "properties": { + "addprefix": { + "type": "string", + "description": "AddPrefix adds a prefix to the transformer input value" + }, + "addsuffix": { + "type": "string", + "description": "AddSuffix adds a suffix to the transformer input value" + }, + "trimprefix": { + "type": "string", + "description": "TrimPrefix removes a prefix to the transformer input value" + }, + "trimsuffix": { + "type": "string", + "description": "TrimSuffix removes the suffix from the transformer input value" + }, + "replacers": { + "items": { + "properties": { + "from": { + "type": "string", + "description": "From defines the source value which need to be replaced" + }, + "to": { + "type": "string", + "description": "To defines the \"to what\" a \"from\" value needs to be replaced" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "from", + "to" + ], + "description": "Replacer is struct used to feed strings.Replacer" + }, + "type": "array", + "description": "Replacers specifies a list of replacer instruction" + }, + "replacer": { + "properties": { + "from": { + "type": "string", + "description": "From defines the source value which need to be replaced" + }, + "to": { + "type": "string", + "description": "To defines the \"to what\" a \"from\" value needs to be replaced" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "from", + "to" + ], + "description": "Replacer specifies what value needs to be changed and how" + }, + "find": { + "type": "string", + "description": "Find searches for a specific value if it exists and return false if it doesn't" + }, + "findsubmatch": { + "properties": { + "pattern": { + "type": "string", + "description": "Pattern defines regular expression to use for retrieving a submatch" + }, + "captureindex": { + "type": "integer", + "description": "CaptureIndex defines which substring occurrence to retrieve. Note also that a value of `0` for `captureIndex` returns all submatches, and individual submatch indexes start at `1`." + }, + "capturepattern": { + "type": "string", + "description": "Uses the match group(s) to generate the output using \\0, \\1, \\2, etc" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "pattern" + ], + "description": "Find searches for a specific value if it exists then return the value using regular expression" + }, + "jsonmatch": { + "properties": { + "key": { + "type": "string" + }, + "nomatchresult": { + "type": "string", + "description": "If we don't find a match then return the following string or the input value" + }, + "joinmultiplematches": { + "type": "string", + "description": "If we find multiple matches, join them by this" + }, + "multiplematchselector": { + "type": "string", + "description": "If we find multiple matches, select the \"first\" or the \"last\"" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "key" + ] + }, + "semverinc": { + "type": "string", + "description": "SemvVerInc specifies a comma separated list semantic versioning component that needs to be upgraded." + }, + "quote": { + "type": "boolean", + "description": "Quote add quote around the value" + }, + "unquote": { + "type": "boolean", + "description": "Unquote remove quotes around the value" + } + }, + "additionalProperties": false, + "type": "object", + "description": "Transformer holds a transformer rule" + }, + "type": "array", + "description": "transformers defines how the default input value need to be transformed" + }, + "spec": { + "$schema": "http://json-schema.org/draft-04/schema", + "properties": { + "file": { "type": "string", - "description": "[S][C] Owner specifies repository owner" + "description": "\"file\" defines the terraform lock file path to interact with.\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target\n\n\t\tremark:\n\t\t\t* \"file\" and \"files\" are mutually exclusive\n\t\t\t* protocols \"https://\", \"http://\", and \"file://\" are supported in path for condition" }, - "repository": { + "files": { + "items": { + "type": "string" + }, + "type": "array", + "description": "\"files\" defines the list of terraform lock files path to interact with.\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target\n\n\t\tremark:\n\t\t\t* file and files are mutually exclusive\n\t\t\t* when using as a condition only one file is supported\n\t\t\t* protocols \"https://\", \"http://\", and \"file://\" are supported in file path for condition" + }, + "value": { "type": "string", - "description": "[S][C] Repository specifies the name of a repository for a specific owner" + "description": "\"value\" is the value associated with a terraform provider.\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tWhen used from a condition or a target, the default value is set to linked source output." }, - "versionfilter": { - "properties": { - "kind": { - "type": "string", - "description": "specifies the version kind such as semver, regex, or latest" - }, - "pattern": { - "type": "string", - "description": "specifies the version pattern according the version kind\nfor semver, it is a semver constraint\nfor regex, it is a regex pattern\nfor time, it is a date format" - }, - "strict": { - "type": "boolean", - "description": "strict enforce strict versioning rule.\nOnly used for semantic versioning at this time" - }, - "regex": { - "type": "string", - "description": "specifies the regex pattern, used for regex/semver and regex/time.\nOutput of the first capture group will be used." - }, - "replaceall": { + "provider": { + "type": "string", + "description": "\"provider\" is the terraform provider you wish to update, supports with or without registry url.\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target" + }, + "platforms": { + "items": { + "type": "string" + }, + "type": "array", + "description": "\"platforms\" is the target platforms to request package checksums for.\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target" + }, + "skipconstraints": { + "type": "boolean", + "description": "\"skipconstraints\" will control whether the constraint in lock file is updated\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target\n\n\t\tNOTE: That turning this off can break the lockfile if version value source does not follow the constraints" + } + }, + "additionalProperties": false, + "type": "object", + "description": "\"terraform/lock\" defines the specification for manipulating .terraform-lock.hcl files." + }, + "scmid": { + "type": "string", + "description": "scmid specifies the scm configuration key associated to the current resource" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "name", + "kind" + ] + }, + { + "$schema": "http://json-schema.org/draft-04/schema", + "properties": { + "dependson": { + "items": { + "type": "string" + }, + "type": "array", + "description": "\"dependson\" allows to specify the order of execution of resources.\nIt accepts a list of rules like \"(resourceType#)resourceId(:booleanOperator)\".\n\nThe resourceType is optional and can be one of \"condition\", \"source\" or \"target\"\nBy default the resourceType is the current resource type\n\nThe resourceId is the name of the resource to depend on\n\nThe booleanOperator is optional and can be \"AND\" or \"OR\"\n\nexamples:\n dependson:\n * condition#myCondition:and\n * source#mySource\n\nremarks:\n * The parameters \"sourceid\" and \"conditionsids\" affect the order of resource execution.\n * To avoid circular dependencies, the depended resource may need to remove any conditionids or set \"disablesourceinput to true\"." + }, + "name": { + "type": "string", + "description": "name specifies the resource name" + }, + "kind": { + "enum": [ + "terraform/provider" + ] + }, + "transformers": { + "items": { + "properties": { + "addprefix": { + "type": "string", + "description": "AddPrefix adds a prefix to the transformer input value" + }, + "addsuffix": { + "type": "string", + "description": "AddSuffix adds a suffix to the transformer input value" + }, + "trimprefix": { + "type": "string", + "description": "TrimPrefix removes a prefix to the transformer input value" + }, + "trimsuffix": { + "type": "string", + "description": "TrimSuffix removes the suffix from the transformer input value" + }, + "replacers": { + "items": { "properties": { - "pattern": { + "from": { "type": "string", - "description": "Pattern specifies the regex pattern to match for replacement" + "description": "From defines the source value which need to be replaced" }, - "replacement": { + "to": { "type": "string", - "description": "Replacement specifies the replacement string (supports $1, $2, etc. for captured groups)" + "description": "To defines the \"to what\" a \"from\" value needs to be replaced" } }, "additionalProperties": false, "type": "object", - "description": "replaceAll applies a regex replacement to version strings before filtering.\nThis is useful for transforming versions (e.g., curl-8_15_0 to curl-8.15.0) before regex extraction." - } + "required": [ + "from", + "to" + ], + "description": "Replacer is struct used to feed strings.Replacer" + }, + "type": "array", + "description": "Replacers specifies a list of replacer instruction" + }, + "replacer": { + "properties": { + "from": { + "type": "string", + "description": "From defines the source value which need to be replaced" + }, + "to": { + "type": "string", + "description": "To defines the \"to what\" a \"from\" value needs to be replaced" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "from", + "to" + ], + "description": "Replacer specifies what value needs to be changed and how" + }, + "find": { + "type": "string", + "description": "Find searches for a specific value if it exists and return false if it doesn't" + }, + "findsubmatch": { + "properties": { + "pattern": { + "type": "string", + "description": "Pattern defines regular expression to use for retrieving a submatch" + }, + "captureindex": { + "type": "integer", + "description": "CaptureIndex defines which substring occurrence to retrieve. Note also that a value of `0` for `captureIndex` returns all submatches, and individual submatch indexes start at `1`." + }, + "capturepattern": { + "type": "string", + "description": "Uses the match group(s) to generate the output using \\0, \\1, \\2, etc" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "pattern" + ], + "description": "Find searches for a specific value if it exists then return the value using regular expression" + }, + "jsonmatch": { + "properties": { + "key": { + "type": "string" + }, + "nomatchresult": { + "type": "string", + "description": "If we don't find a match then return the following string or the input value" + }, + "joinmultiplematches": { + "type": "string", + "description": "If we find multiple matches, join them by this" + }, + "multiplematchselector": { + "type": "string", + "description": "If we find multiple matches, select the \"first\" or the \"last\"" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "key" + ] + }, + "semverinc": { + "type": "string", + "description": "SemvVerInc specifies a comma separated list semantic versioning component that needs to be upgraded." + }, + "quote": { + "type": "boolean", + "description": "Quote add quote around the value" + }, + "unquote": { + "type": "boolean", + "description": "Unquote remove quotes around the value" + } + }, + "additionalProperties": false, + "type": "object", + "description": "Transformer holds a transformer rule" + }, + "type": "array", + "description": "transformers defines how the default input value need to be transformed" + }, + "spec": { + "$schema": "http://json-schema.org/draft-04/schema", + "properties": { + "file": { + "type": "string", + "description": "\"file\" defines the file path to interact with.\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target\n\n\t\tremark:\n\t\t\t* \"file\" and \"files\" are mutually exclusive\n\t\t\t* protocols \"https://\", \"http://\", and \"file://\" are supported in path for condition" + }, + "files": { + "items": { + "type": "string" }, - "additionalProperties": false, - "type": "object", - "description": "[S][C] VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." + "type": "array", + "description": "\"files\" defines the list of files path to interact with.\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target\n\n\t\tremark:\n\t\t\t* file and files are mutually exclusive\n\t\t\t* when using as a condition only one file is supported\n\t\t\t* protocols \"https://\", \"http://\", and \"file://\" are supported in file path for condition" }, - "tag": { + "value": { "type": "string", - "description": "[S] Tag defines the Bitbucket tag ." + "description": "\"value\" is the value associated with a terraform provider.\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tWhen used from a condition or a target, the default value is set to linked source output." + }, + "provider": { + "type": "string", + "description": "\"provider\" is the terraform provider you wish to update.\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target" } }, "additionalProperties": false, "type": "object", - "required": [ - "url", - "owner", - "repository" - ], - "description": "Spec defines settings used to interact with Bitbucket Server release" + "description": "\"terraform/provider\" defines the specification for manipulating providers in terraform files." }, "scmid": { "type": "string", @@ -10934,6 +12463,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -10953,7 +12483,7 @@ }, "kind": { "enum": [ - "temurin" + "terraform/registry" ] }, "transformers": { @@ -11090,48 +12620,71 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "releaseline": { - "type": "string", - "description": "ReleaseLine specifies the line of Temurin release to retrieve.\n\ndefault: \"lts\"\n\nAllowed values:\n* \"lts\"\n* \"feature\"" - }, - "releasetype": { + "type": { "type": "string", - "description": "ReleaseType specifies the type of Temurin release to retrieve.\n\ndefault: \"ga\"\n\nAllowed values:\n* \"ga\" (General Availability)\n* \"ea\" (Early Availability, e.g. nightly builds)" - }, - "featureversion": { - "type": "integer", - "description": "FeatureVersion specifies the Major Java version to filter the Temurin release to retrieve.\n\ndefault: undefined\n\nAllowed values: integer number (8, 11, 17, 21, etc.)" + "description": "\"type\" defines the type registry request to look up.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\n\t\tSupported values: module, provider" }, - "result": { + "hostname": { "type": "string", - "description": "Result specifies the type of value returned by the retrieved Temurin release.\n\ndefault: \"version\"\n\nAllowed values:\n* \"version\" (Version Name, e.g. the Temurin SCM release name)\n* \"installer_url\" (HTTP URL to the binary release/installer)\n* \"checksum_url\" (HTTP URL to the checksum file)\n* \"signature_url\" (HTTP URL to the signature file)" + "description": "\"hostname\" the hostname of the provider or module.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\n\t\tremark:\n\t\t\t* Optional\n\t\t\t* Not allowed with rawstring.\n\t\t\t* Applicable for module and provider." }, - "architecture": { + "namespace": { "type": "string", - "description": "Architecture specifies the CPU architecture (as defined by the Temurin API - https://api.adoptium.net/q/swagger-ui/#/Types)\nto filter the Temurin release to retrieve.\n\ndefault: \"x64\"\n\nAllowed values:\n* \"x64\" (Intel/AMD 64 Bits)\n* \"x86\" (Intel/AMD 32 Bits)\n* \"ppc64\" (PowerPC 64 Bits)\n* \"ppc64le\" (PowerPC Little Endian 64 Bits)\n* \"s390x\" (IBM Z)\n* \"aarch64\" (ARM 64 Bits)\n* \"arm\" (ARM 32 Bits)\n* \"sparcv9\" (Sparc 64 Bits)\n* \"riscv64\" (RiscV 64 Bits)" + "description": "\"namespace\" the namespace of the provider or module\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\n\t\tremark:\n\t\t\t* Required unless using rawstring\n\t\t\t* Not allowed with rawstring.\n\t\t\t* Applicable for module and provider." }, - "imagetype": { + "name": { "type": "string", - "description": "ImageType specifies the type of artifact to filter the Temurin release to retrieve.\n\ndefault: \"jdk\"\n\nAllowed values:\n* \"jdk\"\n* \"jre\"\n* \"testimage\"\n* \"debugimage\"\n* \"staticlibs\"\n* \"source\n* \"sbom\"" + "description": "\"name\" the name of the provider or module.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\n\t\tremark:\n\t\t\t* Required unless using rawstring\n\t\t\t* Not allowed with rawstring.\n\t\t\t* Applicable for module and provider." }, - "operatingsystem": { + "targetsystem": { "type": "string", - "description": "OperatingSystem specifies the Operating System (as defined by the Temurin API - https://api.adoptium.net/q/swagger-ui/#/Types)\nto filter the Temurin release to retrieve.\n\ndefault: \"linux\"\n\nAllowed values:\n* \"linux\"\n* \"windows\"\n* \"mac\"\n* \"solaris\"\n* \"aix\"\n* \"alpine-linux\"" + "description": "\"targetsystem\" the target system for the module in registry\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\n\t\tremark:\n\t\t\t* Required for type module unless using rawstring\n\t\t\t* Not allowed with rawstring\n\t\t\t* Applicable for module." }, - "specificversion": { + "rawstring": { "type": "string", - "description": "SpecificVersion specifies the exact Temurin version to filter the Temurin release to retrieve.\nIgnores FeatureVersion when used.\n\ndefault: undefined\n\nAllowed values: string (can be a semantic version, a JDK version or a Temurin release name)" + "description": "\"rawstring\" provider reference to registry in single string.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\n\t\tExamples:\n\t\t\t* hashicorp/kubernetes\n\t\t\t* registry.terraform.io/hashicorp/kubernetes\n\t\t\t* terraform-aws-modules/vpc/aws\n\t\t\t* app.terraform.io/terraform-aws-modules/vpc/aws\n\n\t\tremark:\n\t\t\t* Applicable for module and provider.\n\t\t\t* Not allowed with hostname, namespace, name, and targetsystem." }, - "project": { + "version": { "type": "string", - "description": "Project specifies the project to filter the Temurin release to retrieve.\n\ndefault: \"jdk\"\n\nAllowed values:\n* \"jdk\" (default)\n* \"valhalla\"\n* \"metropolis\"\n* \"jfr\"\n* \"shenandoah\"" + "description": "\"version\" defines a specific version to be used during condition check.\n\n\t\tcompatible:\n\t\t\t* condition" }, - "platforms": { - "items": { - "type": "string" + "versionfilter": { + "properties": { + "kind": { + "type": "string", + "description": "specifies the version kind such as semver, regex, or latest" + }, + "pattern": { + "type": "string", + "description": "specifies the version pattern according the version kind\nfor semver, it is a semver constraint\nfor regex, it is a regex pattern\nfor time, it is a date format" + }, + "strict": { + "type": "boolean", + "description": "strict enforce strict versioning rule.\nOnly used for semantic versioning at this time" + }, + "regex": { + "type": "string", + "description": "specifies the regex pattern, used for regex/semver and regex/time.\nOutput of the first capture group will be used." + }, + "replaceall": { + "properties": { + "pattern": { + "type": "string", + "description": "Pattern specifies the regex pattern to match for replacement" + }, + "replacement": { + "type": "string", + "description": "Replacement specifies the replacement string (supports $1, $2, etc. for captured groups)" + } + }, + "additionalProperties": false, + "type": "object", + "description": "replaceAll applies a regex replacement to version strings before filtering.\nThis is useful for transforming versions (e.g., curl-8_15_0 to curl-8.15.0) before regex extraction." + } }, - "type": "array", - "description": "Platforms is only valid within conditions. It specifies a collection of platforms as a filter for Temurin releases.\nEach platform must be a combination of an Operating System and a CPU architecture separated by the slash (`/`) character.\n\ndefault: empty list (e.g. no filtering per platform).\n\nAllowed values: Any combination of Operating System and Architecture as defined by the Temurin API (https://api.adoptium.net/q/swagger-ui/#/Types):\n* `linux/x64`\n* `linux/aarch64`\n* `linux/s390x`\n* `alpine-linux/x64`\n* `windows/x64`\n..." + "additionalProperties": false, + "type": "object", + "description": "\"versionfilter\" provides parameters to specify version pattern and its type like regex, semver, or just latest.\n\n\t\tcompatible:\n\t\t\t* source" } }, "additionalProperties": false, @@ -11145,6 +12698,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -11164,7 +12718,7 @@ }, "kind": { "enum": [ - "terraform/file" + "toml" ] }, "transformers": { @@ -11303,27 +12857,72 @@ "properties": { "file": { "type": "string", - "description": "\"file\" defines the hcl file path to interact with.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tremark:\n\t\t\t* \"file\" and \"files\" are mutually exclusive\n\t\t\t* protocols \"https://\", \"http://\", and \"file://\" are supported in path for source and condition" + "description": "[s][c][t] File specifies the toml file to manipulate" }, "files": { "items": { "type": "string" }, "type": "array", - "description": "\"files\" defines the list of hcl files path to interact with.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tremark:\n\t\t\t* file and files are mutually exclusive\n\t\t\t* when using as a source only one file is supported\n\t\t\t* protocols \"https://\", \"http://\", and \"file://\" are supported in file path for source and condition" + "description": "[c][t] Files specifies a list of Json file to manipulate" }, - "path": { + "query": { "type": "string", - "description": "\"path\" defines the hcl attribute path.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\texample:\n\t\t\t* path: resource.aws_instance.app_server.ami\n\t\t\t* path: resource.helm_release.prometheus.version\n\t\t\t* path: plugin.aws.version" + "description": "[s][c][t] Query allows to used advanced query. Override the parameter key" + }, + "key": { + "type": "string", + "description": "[s][c][t] Key specifies the query to retrieve an information from a toml file" }, "value": { "type": "string", - "description": "\"value\" is the value associated with a hcl path.\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tWhen used from a condition or a target, the default value is set to linked source output." + "description": "[s][c][t] Value specifies the value for a specific key. Default to source output" + }, + "versionfilter": { + "properties": { + "kind": { + "type": "string", + "description": "specifies the version kind such as semver, regex, or latest" + }, + "pattern": { + "type": "string", + "description": "specifies the version pattern according the version kind\nfor semver, it is a semver constraint\nfor regex, it is a regex pattern\nfor time, it is a date format" + }, + "strict": { + "type": "boolean", + "description": "strict enforce strict versioning rule.\nOnly used for semantic versioning at this time" + }, + "regex": { + "type": "string", + "description": "specifies the regex pattern, used for regex/semver and regex/time.\nOutput of the first capture group will be used." + }, + "replaceall": { + "properties": { + "pattern": { + "type": "string", + "description": "Pattern specifies the regex pattern to match for replacement" + }, + "replacement": { + "type": "string", + "description": "Replacement specifies the replacement string (supports $1, $2, etc. for captured groups)" + } + }, + "additionalProperties": false, + "type": "object", + "description": "replaceAll applies a regex replacement to version strings before filtering.\nThis is useful for transforming versions (e.g., curl-8_15_0 to curl-8.15.0) before regex extraction." + } + }, + "additionalProperties": false, + "type": "object", + "description": "[s] VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." + }, + "createmissingkey": { + "type": "boolean", + "description": "[t] CreateMissingKey allows non-existing keys. If the key does not exist, the key is created if AllowsMissingKey\n\t is true, otherwise an error is raised (the default).\n\t Only supported if Key is used" } }, "additionalProperties": false, - "type": "object", - "description": "\"hcl\" defines the specification for manipulating \"hcl\" files." + "type": "object" }, "scmid": { "type": "string", @@ -11333,6 +12932,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -11352,7 +12952,7 @@ }, "kind": { "enum": [ - "terraform/lock" + "toolversions" ] }, "transformers": { @@ -11491,38 +13091,30 @@ "properties": { "file": { "type": "string", - "description": "\"file\" defines the terraform lock file path to interact with.\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target\n\n\t\tremark:\n\t\t\t* \"file\" and \"files\" are mutually exclusive\n\t\t\t* protocols \"https://\", \"http://\", and \"file://\" are supported in path for condition" + "description": "[s][c][t] File specifies the .tool-versions file to manipulate" }, "files": { "items": { "type": "string" }, "type": "array", - "description": "\"files\" defines the list of terraform lock files path to interact with.\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target\n\n\t\tremark:\n\t\t\t* file and files are mutually exclusive\n\t\t\t* when using as a condition only one file is supported\n\t\t\t* protocols \"https://\", \"http://\", and \"file://\" are supported in file path for condition" + "description": "[c][t] Files specifies a list of .tool-versions file to manipulate" }, - "value": { + "key": { "type": "string", - "description": "\"value\" is the value associated with a terraform provider.\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tWhen used from a condition or a target, the default value is set to linked source output." + "description": "[s][c][t] Key specifies the query to retrieve an information from a .tool-versions file" }, - "provider": { + "value": { "type": "string", - "description": "\"provider\" is the terraform provider you wish to update, supports with or without registry url.\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target" - }, - "platforms": { - "items": { - "type": "string" - }, - "type": "array", - "description": "\"platforms\" is the target platforms to request package checksums for.\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target" + "description": "[s][c][t] Value specifies the value for a specific key. Default to source output" }, - "skipconstraints": { + "createmissingkey": { "type": "boolean", - "description": "\"skipconstraints\" will control whether the constraint in lock file is updated\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target\n\n\t\tNOTE: That turning this off can break the lockfile if version value source does not follow the constraints" + "description": "[t] CreateMissingKey allows non-existing keys. If the key does not exist, the key is created if AllowsMissingKey\n\t is true, otherwise an error is raised (the default).\n\t Only supported if Key is used" } }, "additionalProperties": false, - "type": "object", - "description": "\"terraform/lock\" defines the specification for manipulating .terraform-lock.hcl files." + "type": "object" }, "scmid": { "type": "string", @@ -11532,6 +13124,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -11551,7 +13144,7 @@ }, "kind": { "enum": [ - "terraform/provider" + "xml" ] }, "transformers": { @@ -11690,27 +13283,20 @@ "properties": { "file": { "type": "string", - "description": "\"file\" defines the file path to interact with.\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target\n\n\t\tremark:\n\t\t\t* \"file\" and \"files\" are mutually exclusive\n\t\t\t* protocols \"https://\", \"http://\", and \"file://\" are supported in path for condition" - }, - "files": { - "items": { - "type": "string" - }, - "type": "array", - "description": "\"files\" defines the list of files path to interact with.\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target\n\n\t\tremark:\n\t\t\t* file and files are mutually exclusive\n\t\t\t* when using as a condition only one file is supported\n\t\t\t* protocols \"https://\", \"http://\", and \"file://\" are supported in file path for condition" + "description": "\"file\" define the xml file path to interact with.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tremark:\n\t\t\t* scheme \"https://\", \"http://\", and \"file://\" are supported in path for source and condition" }, - "value": { + "path": { "type": "string", - "description": "\"value\" is the value associated with a terraform provider.\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tWhen used from a condition or a target, the default value is set to linked source output." + "description": "\"path\" defines the xpath query used for retrieving value from a XML document\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\texample:\n\t\t\t* path: \"/project/parent/version\"\n\t\t\t* path: \"//breakfast_menu/food[0]/name\"\n\t\t\t* path: \"//book[@category='WEB']/title\"" }, - "provider": { + "value": { "type": "string", - "description": "\"provider\" is the terraform provider you wish to update.\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target" + "description": "\"value\" is the value associated with a xpath query.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\twhen used from a condition or a target, the default value is set to linked source output" } }, "additionalProperties": false, "type": "object", - "description": "\"terraform/provider\" defines the specification for manipulating providers in terraform files." + "description": "\"xml\" defines the specification for manipulating \"xml\" files." }, "scmid": { "type": "string", @@ -11720,6 +13306,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -11739,7 +13326,7 @@ }, "kind": { "enum": [ - "terraform/registry" + "yaml" ] }, "transformers": { @@ -11876,75 +13463,56 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "type": { + "documentindex": { + "type": "integer", + "description": "DocumentIndex defines the index of the document to interact with in a multi-document yaml file.\n\ncompatible:\n * source\n * condition\n * target\n\ndefault:\n empty\n\n remark:\n * when not set in the context of a source, the value will be retrieve from the first documents matching query.\n * when not set in the context of a condition or a target, all documents will be evaluated by the query.\n * When not set in the context of a target, all documents will be updated by the query.\n\nexample:\n * documentindex: 0\n * documentindex: 1" + }, + "engine": { "type": "string", - "description": "\"type\" defines the type registry request to look up.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\n\t\tSupported values: module, provider" + "description": "\"engine\" defines the engine to use to manipulate the yaml file.\n\nThere is no one good Golang library to manipulate yaml files.\nAnd each one of them have has its pros and cons so we decided to allow this customization based on user's needs.\n\nremark:\n * Accepted value is one of \"yamlpath\", \"go-yaml\",\"default\" or nothing\n * go-yaml, \"default\" and \"\" are equivalent" }, - "hostname": { + "file": { "type": "string", - "description": "\"hostname\" the hostname of the provider or module.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\n\t\tremark:\n\t\t\t* Optional\n\t\t\t* Not allowed with rawstring.\n\t\t\t* Applicable for module and provider." + "description": "\"file\" defines the yaml file path to interact with.\n\ncompatible:\n * source\n * condition\n * target\n\nremark:\n * \"file\" and \"files\" are mutually exclusive\n * scheme \"https://\", \"http://\", and \"file://\" are supported in path for source and condition" }, - "namespace": { + "files": { + "items": { + "type": "string" + }, + "type": "array", + "description": "\"files\" defines the list of yaml files path to interact with.\n\ncompatible:\n * condition\n * target\n\nremark:\n * file and files are mutually exclusive\n * protocols \"https://\", \"http://\", and \"file://\" are supported in file path for source and condition" + }, + "key": { "type": "string", - "description": "\"namespace\" the namespace of the provider or module\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\n\t\tremark:\n\t\t\t* Required unless using rawstring\n\t\t\t* Not allowed with rawstring.\n\t\t\t* Applicable for module and provider." + "description": "\"key\" defines the yaml keypath.\n\ncompatible:\n * source\n * condition\n * target\n\nremark:\n * key is a simpler version of yamlpath accepts keys.\n\nexample using default engine:\n * key: $.name\n * key: $.agent.name\n * key: $.agents[0].name\n * key: $.agents[*].name\n * key: $.'agents.name'\n * key: $.repos[?(@.repository == 'website')].owner\" (require engine set to yamlpath)\n\nremark:\n field path with key/value is not supported at the moment.\n some help would be useful on https://github.com/goccy/go-yaml/issues/290" + }, + "keys": { + "items": { + "type": "string" + }, + "type": "array", + "description": "\"keys\" defines multiple yaml keypaths to update with the same value.\n\ncompatible:\n * target\n\nremark:\n * keys is mutually exclusive with key.\n * keys accepts the same syntax as key for each element.\n * all keys will be updated with the same value.\n * only available for target operations, not for source or condition.\n\nexample using default engine:\n * keys:\n - $.image.tag\n - $.sidecar.tag\n * keys:\n - $.agents[0].version\n - $.agents[1].version" }, - "name": { + "value": { "type": "string", - "description": "\"name\" the name of the provider or module.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\n\t\tremark:\n\t\t\t* Required unless using rawstring\n\t\t\t* Not allowed with rawstring.\n\t\t\t* Applicable for module and provider." + "description": "value is the value associated with a yaml key.\n\ncompatible:\n * source\n * condition\n * target\n\ndefault:\n\tWhen used from a condition or a target, the default value is set to the associated source output." }, - "targetsystem": { - "type": "string", - "description": "\"targetsystem\" the target system for the module in registry\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\n\t\tremark:\n\t\t\t* Required for type module unless using rawstring\n\t\t\t* Not allowed with rawstring\n\t\t\t* Applicable for module." + "keyonly": { + "type": "boolean", + "description": "keyonly allows to check only if a key exist and do not return an error otherwise\n\ncompatible:\n\t* condition\n\ndefault:\n\tfalse" }, - "rawstring": { - "type": "string", - "description": "\"rawstring\" provider reference to registry in single string.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\n\t\tExamples:\n\t\t\t* hashicorp/kubernetes\n\t\t\t* registry.terraform.io/hashicorp/kubernetes\n\t\t\t* terraform-aws-modules/vpc/aws\n\t\t\t* app.terraform.io/terraform-aws-modules/vpc/aws\n\n\t\tremark:\n\t\t\t* Applicable for module and provider.\n\t\t\t* Not allowed with hostname, namespace, name, and targetsystem." + "searchpattern": { + "type": "boolean", + "description": "searchpattern defines if the MatchPattern should be applied on the file(s) path\n\nIf set to true, it modifies the behavior of the `file` and `files` attributes to search for files matching the pattern instead of searching for files with the exact name.\nWhen looking for file path pattern, it requires pattern to match all of name, not just a substring.\n\nThe pattern syntax is:\n\n```\n pattern:\n { term }\n term:\n '*' matches any sequence of non-Separator characters\n '?' matches any single non-Separator character\n '[' [ '^' ] { character-range } ']'\n character class (must be non-empty)\n c matches character c (c != '*', '?', '\\\\', '[')\n '\\\\' c matches character c\n\n character-range:\n c matches character c (c != '\\\\', '-', ']')\n '\\\\' c matches character c\n lo '-' hi matches character c for lo \u003c= c \u003c= hi\n```" }, - "version": { + "comment": { "type": "string", - "description": "\"version\" defines a specific version to be used during condition check.\n\n\t\tcompatible:\n\t\t\t* condition" - }, - "versionfilter": { - "properties": { - "kind": { - "type": "string", - "description": "specifies the version kind such as semver, regex, or latest" - }, - "pattern": { - "type": "string", - "description": "specifies the version pattern according the version kind\nfor semver, it is a semver constraint\nfor regex, it is a regex pattern\nfor time, it is a date format" - }, - "strict": { - "type": "boolean", - "description": "strict enforce strict versioning rule.\nOnly used for semantic versioning at this time" - }, - "regex": { - "type": "string", - "description": "specifies the regex pattern, used for regex/semver and regex/time.\nOutput of the first capture group will be used." - }, - "replaceall": { - "properties": { - "pattern": { - "type": "string", - "description": "Pattern specifies the regex pattern to match for replacement" - }, - "replacement": { - "type": "string", - "description": "Replacement specifies the replacement string (supports $1, $2, etc. for captured groups)" - } - }, - "additionalProperties": false, - "type": "object", - "description": "replaceAll applies a regex replacement to version strings before filtering.\nThis is useful for transforming versions (e.g., curl-8_15_0 to curl-8.15.0) before regex extraction." - } - }, - "additionalProperties": false, - "type": "object", - "description": "\"versionfilter\" provides parameters to specify version pattern and its type like regex, semver, or just latest.\n\n\t\tcompatible:\n\t\t\t* source" + "description": "comment defines a comment to add after the value.\n\ndefault: empty\n\ncompatible:\n * target\n\nremarks:\n * Please note that the comment is added if the value is modified by Updatecli" } }, "additionalProperties": false, - "type": "object" + "type": "object", + "description": "\"yaml\" defines the specification for manipulating \"yaml\" files." }, "scmid": { "type": "string", @@ -11954,9 +13522,18 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] - }, + } + ] + }, + "type": "object", + "description": "\"sources\" defines the list of Updatecli source definition.\n\nexample:\n---\nsources:\n\t# Source to retrieve the latest version of nodejs\n nodejs:\n\t name: Get latest nodejs version\n\t kind: json\n\t spec:\n\t file: https://nodejs.org/dist/index.json\n\t key: .(lts!=false).version\n---" + }, + "conditions": { + "additionalProperties": { + "oneOf": [ { "$schema": "http://json-schema.org/draft-04/schema", "properties": { @@ -11973,7 +13550,7 @@ }, "kind": { "enum": [ - "toml" + "aws/ami" ] }, "transformers": { @@ -12110,83 +13687,72 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "file": { + "accesskey": { "type": "string", - "description": "[s][c][t] File specifies the toml file to manipulate" + "description": "accesskey specifies the aws access key which combined with `secretkey`, is one of the way to authenticate" }, - "files": { + "secretkey": { + "type": "string", + "description": "secretkey specifies the aws secret key which combined with `accesskey`, is one of the way to authenticate" + }, + "filters": { "items": { - "type": "string" + "properties": { + "name": { + "type": "string", + "description": "Name specifies a filter name." + }, + "values": { + "type": "string", + "description": "Values specifies a filter value for a specific filter name." + } + }, + "additionalProperties": false, + "type": "object", + "description": "Filter represents the updatecli configuration describing AMI filters." }, "type": "array", - "description": "[c][t] Files specifies a list of Json file to manipulate" - }, - "query": { - "type": "string", - "description": "[s][c][t] Query allows to used advanced query. Override the parameter key" + "description": "Filters specifies a list of AMI filters" }, - "key": { + "region": { "type": "string", - "description": "[s][c][t] Key specifies the query to retrieve an information from a toml file" + "description": "Region specifies the AWS region to use when looking for AMI" }, - "value": { + "endpoint": { "type": "string", - "description": "[s][c][t] Value specifies the value for a specific key. Default to source output" - }, - "versionfilter": { - "properties": { - "kind": { - "type": "string", - "description": "specifies the version kind such as semver, regex, or latest" - }, - "pattern": { - "type": "string", - "description": "specifies the version pattern according the version kind\nfor semver, it is a semver constraint\nfor regex, it is a regex pattern\nfor time, it is a date format" - }, - "strict": { - "type": "boolean", - "description": "strict enforce strict versioning rule.\nOnly used for semantic versioning at this time" - }, - "regex": { - "type": "string", - "description": "specifies the regex pattern, used for regex/semver and regex/time.\nOutput of the first capture group will be used." - }, - "replaceall": { - "properties": { - "pattern": { - "type": "string", - "description": "Pattern specifies the regex pattern to match for replacement" - }, - "replacement": { - "type": "string", - "description": "Replacement specifies the replacement string (supports $1, $2, etc. for captured groups)" - } - }, - "additionalProperties": false, - "type": "object", - "description": "replaceAll applies a regex replacement to version strings before filtering.\nThis is useful for transforming versions (e.g., curl-8_15_0 to curl-8.15.0) before regex extraction." - } - }, - "additionalProperties": false, - "type": "object", - "description": "[s] VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." + "description": "Endpoint specifies the AWS endpoint to use when looking for AMI" }, - "createmissingkey": { + "dryrun": { "type": "boolean", - "description": "[t] CreateMissingKey allows non-existing keys. If the key does not exist, the key is created if AllowsMissingKey\n\t is true, otherwise an error is raised (the default).\n\t Only supported if Key is used" + "description": "Dryrun allows to Check whether you have the required permissions for the action." + }, + "sortby": { + "type": "string", + "description": "Sortby specifies the order of AMI-ID that will be used to retrieve the last element such as `creationdateasc`" } }, "additionalProperties": false, - "type": "object" + "type": "object", + "description": "Spec contains the updatecli configuration provided by users." }, "scmid": { "type": "string", "description": "scmid specifies the scm configuration key associated to the current resource" + }, + "sourceid": { + "type": "string" + }, + "disablesourceinput": { + "type": "boolean" + }, + "failwhen": { + "type": "boolean" } }, "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -12206,7 +13772,7 @@ }, "kind": { "enum": [ - "toolversions" + "bazelmod" ] }, "transformers": { @@ -12345,39 +13911,39 @@ "properties": { "file": { "type": "string", - "description": "[s][c][t] File specifies the .tool-versions file to manipulate" - }, - "files": { - "items": { - "type": "string" - }, - "type": "array", - "description": "[c][t] Files specifies a list of .tool-versions file to manipulate" - }, - "key": { - "type": "string", - "description": "[s][c][t] Key specifies the query to retrieve an information from a .tool-versions file" + "description": "File specifies the path to the MODULE.bazel file\n\ncompatible:\n * source\n * condition\n * target\n\nexample:\n * MODULE.bazel\n * path/to/MODULE.bazel" }, - "value": { + "module": { "type": "string", - "description": "[s][c][t] Value specifies the value for a specific key. Default to source output" - }, - "createmissingkey": { - "type": "boolean", - "description": "[t] CreateMissingKey allows non-existing keys. If the key does not exist, the key is created if AllowsMissingKey\n\t is true, otherwise an error is raised (the default).\n\t Only supported if Key is used" + "description": "Module specifies the Bazel module name to target\n\ncompatible:\n * source\n * condition\n * target\n\nexample:\n * rules_go\n * gazelle\n * protobuf" } }, "additionalProperties": false, - "type": "object" + "type": "object", + "required": [ + "file", + "module" + ], + "description": "Spec defines a specification for a \"bazelmod\" resource parsed from an updatecli manifest file" }, "scmid": { "type": "string", "description": "scmid specifies the scm configuration key associated to the current resource" + }, + "sourceid": { + "type": "string" + }, + "disablesourceinput": { + "type": "boolean" + }, + "failwhen": { + "type": "boolean" } }, "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -12397,7 +13963,7 @@ }, "kind": { "enum": [ - "xml" + "bazelregistry" ] }, "transformers": { @@ -12519,46 +14085,93 @@ "type": "boolean", "description": "Quote add quote around the value" }, - "unquote": { - "type": "boolean", - "description": "Unquote remove quotes around the value" - } - }, - "additionalProperties": false, - "type": "object", - "description": "Transformer holds a transformer rule" - }, - "type": "array", - "description": "transformers defines how the default input value need to be transformed" - }, - "spec": { - "$schema": "http://json-schema.org/draft-04/schema", - "properties": { - "file": { - "type": "string", - "description": "\"file\" define the xml file path to interact with.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tremark:\n\t\t\t* scheme \"https://\", \"http://\", and \"file://\" are supported in path for source and condition" - }, - "path": { - "type": "string", - "description": "\"path\" defines the xpath query used for retrieving value from a XML document\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\texample:\n\t\t\t* path: \"/project/parent/version\"\n\t\t\t* path: \"//breakfast_menu/food[0]/name\"\n\t\t\t* path: \"//book[@category='WEB']/title\"" + "unquote": { + "type": "boolean", + "description": "Unquote remove quotes around the value" + } + }, + "additionalProperties": false, + "type": "object", + "description": "Transformer holds a transformer rule" + }, + "type": "array", + "description": "transformers defines how the default input value need to be transformed" + }, + "spec": { + "$schema": "http://json-schema.org/draft-04/schema", + "properties": { + "module": { + "type": "string", + "description": "Module specifies the Bazel module name to query from the registry\n\ncompatible:\n * source\n * condition\n\nexample:\n * rules_go\n * rules_python\n * gazelle" + }, + "versionfilter": { + "properties": { + "kind": { + "type": "string", + "description": "specifies the version kind such as semver, regex, or latest" + }, + "pattern": { + "type": "string", + "description": "specifies the version pattern according the version kind\nfor semver, it is a semver constraint\nfor regex, it is a regex pattern\nfor time, it is a date format" + }, + "strict": { + "type": "boolean", + "description": "strict enforce strict versioning rule.\nOnly used for semantic versioning at this time" + }, + "regex": { + "type": "string", + "description": "specifies the regex pattern, used for regex/semver and regex/time.\nOutput of the first capture group will be used." + }, + "replaceall": { + "properties": { + "pattern": { + "type": "string", + "description": "Pattern specifies the regex pattern to match for replacement" + }, + "replacement": { + "type": "string", + "description": "Replacement specifies the replacement string (supports $1, $2, etc. for captured groups)" + } + }, + "additionalProperties": false, + "type": "object", + "description": "replaceAll applies a regex replacement to version strings before filtering.\nThis is useful for transforming versions (e.g., curl-8_15_0 to curl-8.15.0) before regex extraction." + } + }, + "additionalProperties": false, + "type": "object", + "description": "VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest.\n\ncompatible:\n * source\n\ndefault:\n kind: latest" }, - "value": { + "url": { "type": "string", - "description": "\"value\" is the value associated with a xpath query.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\twhen used from a condition or a target, the default value is set to linked source output" + "description": "URL specifies the custom registry URL (defaults to Bazel Central Registry)\n\ncompatible:\n * source\n * condition\n\ndefault:\n https://raw.githubusercontent.com/bazelbuild/bazel-central-registry/main/modules/{module}/metadata.json\n\nexample:\n * https://raw.githubusercontent.com/bazelbuild/bazel-central-registry/main/modules/{module}/metadata.json\n * https://mycompany.com/bazel-registry/modules/{module}/metadata.json\n\nremarks:\n * The URL must contain {module} placeholder which will be replaced with the module name\n * If not specified, defaults to the official Bazel Central Registry" } }, "additionalProperties": false, "type": "object", - "description": "\"xml\" defines the specification for manipulating \"xml\" files." + "required": [ + "module" + ], + "description": "Spec defines a specification for a \"bazelregistry\" resource parsed from an updatecli manifest file" }, "scmid": { "type": "string", "description": "scmid specifies the scm configuration key associated to the current resource" + }, + "sourceid": { + "type": "string" + }, + "disablesourceinput": { + "type": "boolean" + }, + "failwhen": { + "type": "boolean" } }, "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -12578,7 +14191,7 @@ }, "kind": { "enum": [ - "yaml" + "cargopackage" ] }, "transformers": { @@ -12715,76 +14328,115 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "documentindex": { - "type": "integer", - "description": "DocumentIndex defines the index of the document to interact with in a multi-document yaml file.\n\ncompatible:\n * source\n * condition\n * target\n\ndefault:\n empty\n\n remark:\n * when not set in the context of a source, the value will be retrieve from the first documents matching query.\n * when not set in the context of a condition or a target, all documents will be evaluated by the query.\n * When not set in the context of a target, all documents will be updated by the query.\n\nexample:\n * documentindex: 0\n * documentindex: 1" - }, - "engine": { - "type": "string", - "description": "\"engine\" defines the engine to use to manipulate the yaml file.\n\nThere is no one good Golang library to manipulate yaml files.\nAnd each one of them have has its pros and cons so we decided to allow this customization based on user's needs.\n\nremark:\n * Accepted value is one of \"yamlpath\", \"go-yaml\",\"default\" or nothing\n * go-yaml, \"default\" and \"\" are equivalent" - }, - "file": { - "type": "string", - "description": "\"file\" defines the yaml file path to interact with.\n\ncompatible:\n * source\n * condition\n * target\n\nremark:\n * \"file\" and \"files\" are mutually exclusive\n * scheme \"https://\", \"http://\", and \"file://\" are supported in path for source and condition" - }, - "files": { - "items": { - "type": "string" + "registry": { + "properties": { + "auth": { + "properties": { + "token": { + "type": "string", + "description": "[A][S][C] Token specifies the cargo registry token to use for authentication." + }, + "headerformat": { + "type": "string", + "description": "[A][S][C] HeaderFormat specifies the cargo registry header format to use for authentication (defaults to `Bearer`)." + } + }, + "additionalProperties": false, + "type": "object", + "description": "[A][S][C] Auth specifies the cargo registry auth to use for authentication." + }, + "url": { + "type": "string", + "description": "[A][S][C] URL specifies the cargo registry URL to use for authentication." + }, + "rootdir": { + "type": "string", + "description": "[A][S][C] RootDir specifies the cargo registry root directory to use as FS index." + }, + "scmid": { + "type": "string", + "description": "[A] SCMID specifies the cargo registry scmId to use as FS index." + } }, - "type": "array", - "description": "\"files\" defines the list of yaml files path to interact with.\n\ncompatible:\n * condition\n * target\n\nremark:\n * file and files are mutually exclusive\n * protocols \"https://\", \"http://\", and \"file://\" are supported in file path for source and condition" + "additionalProperties": false, + "type": "object", + "description": "[S][C] Registry specifies the registry to use" }, - "key": { + "package": { "type": "string", - "description": "\"key\" defines the yaml keypath.\n\ncompatible:\n * source\n * condition\n * target\n\nremark:\n * key is a simpler version of yamlpath accepts keys.\n\nexample using default engine:\n * key: $.name\n * key: $.agent.name\n * key: $.agents[0].name\n * key: $.agents[*].name\n * key: $.'agents.name'\n * key: $.repos[?(@.repository == 'website')].owner\" (require engine set to yamlpath)\n\nremark:\n field path with key/value is not supported at the moment.\n some help would be useful on https://github.com/goccy/go-yaml/issues/290" - }, - "keys": { - "items": { - "type": "string" - }, - "type": "array", - "description": "\"keys\" defines multiple yaml keypaths to update with the same value.\n\ncompatible:\n * target\n\nremark:\n * keys is mutually exclusive with key.\n * keys accepts the same syntax as key for each element.\n * all keys will be updated with the same value.\n * only available for target operations, not for source or condition.\n\nexample using default engine:\n * keys:\n - $.image.tag\n - $.sidecar.tag\n * keys:\n - $.agents[0].version\n - $.agents[1].version" + "description": "[S][C] Package specifies the name of the package" }, - "value": { + "version": { "type": "string", - "description": "value is the value associated with a yaml key.\n\ncompatible:\n * source\n * condition\n * target\n\ndefault:\n\tWhen used from a condition or a target, the default value is set to the associated source output." - }, - "keyonly": { - "type": "boolean", - "description": "keyonly allows to check only if a key exist and do not return an error otherwise\n\ncompatible:\n\t* condition\n\ndefault:\n\tfalse" - }, - "searchpattern": { - "type": "boolean", - "description": "searchpattern defines if the MatchPattern should be applied on the file(s) path\n\nIf set to true, it modifies the behavior of the `file` and `files` attributes to search for files matching the pattern instead of searching for files with the exact name.\nWhen looking for file path pattern, it requires pattern to match all of name, not just a substring.\n\nThe pattern syntax is:\n\n```\n pattern:\n { term }\n term:\n '*' matches any sequence of non-Separator characters\n '?' matches any single non-Separator character\n '[' [ '^' ] { character-range } ']'\n character class (must be non-empty)\n c matches character c (c != '*', '?', '\\\\', '[')\n '\\\\' c matches character c\n\n character-range:\n c matches character c (c != '\\\\', '-', ']')\n '\\\\' c matches character c\n lo '-' hi matches character c for lo \u003c= c \u003c= hi\n```" + "description": "[C] Defines a specific package version" }, - "comment": { - "type": "string", - "description": "comment defines a comment to add after the value.\n\ndefault: empty\n\ncompatible:\n * target\n\nremarks:\n * Please note that the comment is added if the value is modified by Updatecli" + "versionfilter": { + "properties": { + "kind": { + "type": "string", + "description": "specifies the version kind such as semver, regex, or latest" + }, + "pattern": { + "type": "string", + "description": "specifies the version pattern according the version kind\nfor semver, it is a semver constraint\nfor regex, it is a regex pattern\nfor time, it is a date format" + }, + "strict": { + "type": "boolean", + "description": "strict enforce strict versioning rule.\nOnly used for semantic versioning at this time" + }, + "regex": { + "type": "string", + "description": "specifies the regex pattern, used for regex/semver and regex/time.\nOutput of the first capture group will be used." + }, + "replaceall": { + "properties": { + "pattern": { + "type": "string", + "description": "Pattern specifies the regex pattern to match for replacement" + }, + "replacement": { + "type": "string", + "description": "Replacement specifies the replacement string (supports $1, $2, etc. for captured groups)" + } + }, + "additionalProperties": false, + "type": "object", + "description": "replaceAll applies a regex replacement to version strings before filtering.\nThis is useful for transforming versions (e.g., curl-8_15_0 to curl-8.15.0) before regex extraction." + } + }, + "additionalProperties": false, + "type": "object", + "description": "[S] VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." } }, "additionalProperties": false, "type": "object", - "description": "\"yaml\" defines the specification for manipulating \"yaml\" files." + "required": [ + "package" + ], + "description": "Spec defines a specification for a \"cargopackage\" resource parsed from an updatecli manifest file" }, "scmid": { "type": "string", "description": "scmid specifies the scm configuration key associated to the current resource" + }, + "sourceid": { + "type": "string" + }, + "disablesourceinput": { + "type": "boolean" + }, + "failwhen": { + "type": "boolean" } }, "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] - } - ] - }, - "type": "object", - "description": "\"sources\" defines the list of Updatecli source definition.\n\nexample:\n---\nsources:\n\t# Source to retrieve the latest version of nodejs\n nodejs:\n\t name: Get latest nodejs version\n\t kind: json\n\t spec:\n\t file: https://nodejs.org/dist/index.json\n\t key: .(lts!=false).version\n---" - }, - "conditions": { - "additionalProperties": { - "oneOf": [ + }, { "$schema": "http://json-schema.org/draft-04/schema", "properties": { @@ -12801,7 +14453,7 @@ }, "kind": { "enum": [ - "aws/ami" + "csv" ] }, "transformers": { @@ -12938,53 +14590,78 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "accesskey": { + "file": { "type": "string", - "description": "accesskey specifies the aws access key which combined with `secretkey`, is one of the way to authenticate" + "description": "[s][c][t] File specifies the csv file" }, - "secretkey": { + "files": { + "items": { + "type": "string" + }, + "type": "array", + "description": "[c][t] Files specifies a list of Json file to manipulate" + }, + "key": { "type": "string", - "description": "secretkey specifies the aws secret key which combined with `accesskey`, is one of the way to authenticate" + "description": "[s][c][t] Key specifies the csv query" }, - "filters": { - "items": { - "properties": { - "name": { - "type": "string", - "description": "Name specifies a filter name." - }, - "values": { - "type": "string", - "description": "Values specifies a filter value for a specific filter name." - } + "query": { + "type": "string", + "description": "[s][c][t] Query allows to used advanced query. Override the parameter key" + }, + "value": { + "type": "string", + "description": "[s][c][t] Key specifies the csv value, default to source output" + }, + "comma": { + "type": "integer", + "description": "[s][c][t] Comma specifies the csv separator character, default \",\"" + }, + "comment": { + "type": "integer", + "description": "[s][c][t] Comma specifies the csv comment character, default \"#\"" + }, + "versionfilter": { + "properties": { + "kind": { + "type": "string", + "description": "specifies the version kind such as semver, regex, or latest" }, - "additionalProperties": false, - "type": "object", - "description": "Filter represents the updatecli configuration describing AMI filters." + "pattern": { + "type": "string", + "description": "specifies the version pattern according the version kind\nfor semver, it is a semver constraint\nfor regex, it is a regex pattern\nfor time, it is a date format" + }, + "strict": { + "type": "boolean", + "description": "strict enforce strict versioning rule.\nOnly used for semantic versioning at this time" + }, + "regex": { + "type": "string", + "description": "specifies the regex pattern, used for regex/semver and regex/time.\nOutput of the first capture group will be used." + }, + "replaceall": { + "properties": { + "pattern": { + "type": "string", + "description": "Pattern specifies the regex pattern to match for replacement" + }, + "replacement": { + "type": "string", + "description": "Replacement specifies the replacement string (supports $1, $2, etc. for captured groups)" + } + }, + "additionalProperties": false, + "type": "object", + "description": "replaceAll applies a regex replacement to version strings before filtering.\nThis is useful for transforming versions (e.g., curl-8_15_0 to curl-8.15.0) before regex extraction." + } }, - "type": "array", - "description": "Filters specifies a list of AMI filters" - }, - "region": { - "type": "string", - "description": "Region specifies the AWS region to use when looking for AMI" - }, - "endpoint": { - "type": "string", - "description": "Endpoint specifies the AWS endpoint to use when looking for AMI" - }, - "dryrun": { - "type": "boolean", - "description": "Dryrun allows to Check whether you have the required permissions for the action." - }, - "sortby": { - "type": "string", - "description": "Sortby specifies the order of AMI-ID that will be used to retrieve the last element such as `creationdateasc`" + "additionalProperties": false, + "type": "object", + "description": "[s]VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." } }, "additionalProperties": false, - "type": "object", - "description": "Spec contains the updatecli configuration provided by users." + "type": "object" }, "scmid": { "type": "string", @@ -13003,6 +14680,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -13022,7 +14700,7 @@ }, "kind": { "enum": [ - "cargopackage" + "dockerdigest" ] }, "transformers": { @@ -13159,93 +14837,45 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "registry": { - "properties": { - "auth": { - "properties": { - "token": { - "type": "string", - "description": "[A][S][C] Token specifies the cargo registry token to use for authentication." - }, - "headerformat": { - "type": "string", - "description": "[A][S][C] HeaderFormat specifies the cargo registry header format to use for authentication (defaults to `Bearer`)." - } - }, - "additionalProperties": false, - "type": "object", - "description": "[A][S][C] Auth specifies the cargo registry auth to use for authentication." - }, - "url": { - "type": "string", - "description": "[A][S][C] URL specifies the cargo registry URL to use for authentication." - }, - "rootdir": { - "type": "string", - "description": "[A][S][C] RootDir specifies the cargo registry root directory to use as FS index." - }, - "scmid": { - "type": "string", - "description": "[A] SCMID specifies the cargo registry scmId to use as FS index." - } - }, - "additionalProperties": false, - "type": "object", - "description": "[S][C] Registry specifies the registry to use" + "architecture": { + "type": "string", + "description": "architecture specifies the container image architecture such as `amd64`\n\ncompatible:\n\t* source\n\t* condition\n\ndefault: amd64" }, - "package": { + "image": { "type": "string", - "description": "[S][C] Package specifies the name of the package" + "description": "image specifies the container image such as `updatecli/updatecli`\n\nexample: `updatecli/updatecli`\n\ncompatible:\n\t* source\n\t* condition" }, - "version": { + "tag": { "type": "string", - "description": "[C] Defines a specific package version" + "description": "tag specifies the container image tag such as `latest`\n\ncompatible:\n\t* source\n\t* condition" }, - "versionfilter": { - "properties": { - "kind": { - "type": "string", - "description": "specifies the version kind such as semver, regex, or latest" - }, - "pattern": { - "type": "string", - "description": "specifies the version pattern according the version kind\nfor semver, it is a semver constraint\nfor regex, it is a regex pattern\nfor time, it is a date format" - }, - "strict": { - "type": "boolean", - "description": "strict enforce strict versioning rule.\nOnly used for semantic versioning at this time" - }, - "regex": { - "type": "string", - "description": "specifies the regex pattern, used for regex/semver and regex/time.\nOutput of the first capture group will be used." - }, - "replaceall": { - "properties": { - "pattern": { - "type": "string", - "description": "Pattern specifies the regex pattern to match for replacement" - }, - "replacement": { - "type": "string", - "description": "Replacement specifies the replacement string (supports $1, $2, etc. for captured groups)" - } - }, - "additionalProperties": false, - "type": "object", - "description": "replaceAll applies a regex replacement to version strings before filtering.\nThis is useful for transforming versions (e.g., curl-8_15_0 to curl-8.15.0) before regex extraction." - } - }, - "additionalProperties": false, - "type": "object", - "description": "[S] VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." + "digest": { + "type": "string", + "description": "digest specifies the container image digest such as `sha256:ce782db15ab5491c6c6178da8431b3db66988ccd11512034946a9667846952a6`\n\ncompatible:\n\t* condition\n\ndefault:\n\tWhen used from a condition, the default value is set to the linked source output." + }, + "username": { + "type": "string", + "description": "username specifies the container registry username to use for authentication.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tby default credentials are fetch from the local environment such as `~/.docker/config.json`.\n\n\t\tremark:\n\t\t\tNot compatible with token" + }, + "password": { + "type": "string", + "description": "password specifies the container registry password to use for authentication. Not compatible with token\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tby default credentials are fetch from the local environment such as `~/.docker/config.json`.\n\n\t\tremark:\n\t\t\tNot compatible with token" + }, + "token": { + "type": "string", + "description": "token specifies the container registry token to use for authentication.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tby default credentials are fetch from the local environment such as `~/.docker/config.json`.\n\n\t\tremark:\n\t\t\tNot compatible with username/password" + }, + "hidetag": { + "type": "boolean", + "description": "hideTag specifies if the tag should be hidden from the digest\n\ncompatible:\n\t* source\n\ndefault:\n\tfalse" } }, "additionalProperties": false, "type": "object", "required": [ - "package" + "image" ], - "description": "Spec defines a specification for a \"cargopackage\" resource parsed from an updatecli manifest file" + "description": "Spec defines a specification for a \"dockerdigest\" resource parsed from an updatecli manifest file" }, "scmid": { "type": "string", @@ -13264,6 +14894,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -13283,7 +14914,7 @@ }, "kind": { "enum": [ - "csv" + "dockerfile" ] }, "transformers": { @@ -13422,76 +15053,30 @@ "properties": { "file": { "type": "string", - "description": "[s][c][t] File specifies the csv file" + "description": "file specifies the dockerimage file path to use and is incompatible with Files\n\ndefault: \"\"\n\ncompatible:\n\t* source\n\t* condition\n\t* target\n\n remark:\n File is not compatible with Files. Only one of the two should be specified." }, "files": { "items": { "type": "string" }, "type": "array", - "description": "[c][t] Files specifies a list of Json file to manipulate" - }, - "key": { - "type": "string", - "description": "[s][c][t] Key specifies the csv query" + "description": "Files specifies the dockerimage file path(s) to use and is incompatible with File\n\ndefault: []\n\ncompatible:\n\t* source\n\t* condition\n\t* target\n\n remark:\n Files is not compatible with File. Only one of the two should be specified." }, - "query": { - "type": "string", - "description": "[s][c][t] Query allows to used advanced query. Override the parameter key" + "instruction": { + "description": "Instruction specifies a DockerImage instruction such as ENV\nInstruction can be specified as a simple string or as a map with keyword and matcher keys.\n\ncompatible:\n\t* source\n\t* condition\n\t* target\n\n default: empty\n\n example:\n ```yaml\n instruction:\n keyword: \"FROM\"\n matcher: \"alpine\"\n ```" }, "value": { "type": "string", - "description": "[s][c][t] Key specifies the csv value, default to source output" - }, - "comma": { - "type": "integer", - "description": "[s][c][t] Comma specifies the csv separator character, default \",\"" - }, - "comment": { - "type": "integer", - "description": "[s][c][t] Comma specifies the csv comment character, default \"#\"" + "description": "Value specifies the value for a specified Dockerfile instruction.\n\ncompatible:\n\t* source\n\t* condition\n\t* target\n\ndefault: source output" }, - "versionfilter": { - "properties": { - "kind": { - "type": "string", - "description": "specifies the version kind such as semver, regex, or latest" - }, - "pattern": { - "type": "string", - "description": "specifies the version pattern according the version kind\nfor semver, it is a semver constraint\nfor regex, it is a regex pattern\nfor time, it is a date format" - }, - "strict": { - "type": "boolean", - "description": "strict enforce strict versioning rule.\nOnly used for semantic versioning at this time" - }, - "regex": { - "type": "string", - "description": "specifies the regex pattern, used for regex/semver and regex/time.\nOutput of the first capture group will be used." - }, - "replaceall": { - "properties": { - "pattern": { - "type": "string", - "description": "Pattern specifies the regex pattern to match for replacement" - }, - "replacement": { - "type": "string", - "description": "Replacement specifies the replacement string (supports $1, $2, etc. for captured groups)" - } - }, - "additionalProperties": false, - "type": "object", - "description": "replaceAll applies a regex replacement to version strings before filtering.\nThis is useful for transforming versions (e.g., curl-8_15_0 to curl-8.15.0) before regex extraction." - } - }, - "additionalProperties": false, - "type": "object", - "description": "[s]VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." + "stage": { + "type": "string", + "description": "Stage can be used to further refined the scope\nFor Sources:\n- If not defined, the last stage will be considered\nFor Condition and Targets:\n- If not defined, all stages will be considered" } }, "additionalProperties": false, - "type": "object" + "type": "object", + "description": "Spec defines a specification for a \"dockerfile\" resource parsed from an updatecli manifest file" }, "scmid": { "type": "string", @@ -13510,6 +15095,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -13529,7 +15115,7 @@ }, "kind": { "enum": [ - "dockerdigest" + "dockerimage" ] }, "transformers": { @@ -13666,21 +15252,24 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { + "architectures": { + "items": { + "type": "string" + }, + "type": "array", + "description": "architectures specifies a list of architectures to check container images for (conditions only)\n\ncompatible:\n * condition\n * source\n\nexample: windows/amd64, linux/arm64, linux/arm64/v8\n\ndefault: linux/amd64\n\nremark:\n If an architecture is undefined, Updatecli retrieves the digest of the image index\n which can be used regardless of the architecture.\n But if an architecture is specified then Updatecli retrieves a specific image digest.\n More information on https://github.com/updatecli/updatecli/issues/1603" + }, "architecture": { "type": "string", - "description": "architecture specifies the container image architecture such as `amd64`\n\ncompatible:\n\t* source\n\t* condition\n\ndefault: amd64" + "description": "architecture specifies the container image architecture such as `amd64`\n\ncompatible:\n * condition\n * source\n\nexample: windows/amd64, linux/arm64, linux/arm64/v8\n\ndefault: linux/amd64\n\nremark:\n If an architecture is undefined, Updatecli retrieves the digest of the image index\n which can be used regardless of the architecture.\n But if an architecture is specified then Updatecli retrieves a specific image digest.\n More information on https://github.com/updatecli/updatecli/issues/1603" }, "image": { "type": "string", - "description": "image specifies the container image such as `updatecli/updatecli`\n\nexample: `updatecli/updatecli`\n\ncompatible:\n\t* source\n\t* condition" + "description": "image specifies the container image such as `updatecli/updatecli`\n\ncompatible:\n * condition\n * source" }, "tag": { "type": "string", - "description": "tag specifies the container image tag such as `latest`\n\ncompatible:\n\t* source\n\t* condition" - }, - "digest": { - "type": "string", - "description": "digest specifies the container image digest such as `sha256:ce782db15ab5491c6c6178da8431b3db66988ccd11512034946a9667846952a6`\n\ncompatible:\n\t* condition\n\ndefault:\n\tWhen used from a condition, the default value is set to the linked source output." + "description": "tag specifies the container image tag such as `latest`\n\ncompatible:\n * condition\n\ndefault: latest" }, "username": { "type": "string", @@ -13690,18 +15279,56 @@ "type": "string", "description": "password specifies the container registry password to use for authentication. Not compatible with token\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tby default credentials are fetch from the local environment such as `~/.docker/config.json`.\n\n\t\tremark:\n\t\t\tNot compatible with token" }, - "token": { + "token": { + "type": "string", + "description": "token specifies the container registry token to use for authentication.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tby default credentials are fetch from the local environment such as `~/.docker/config.json`.\n\n\t\tremark:\n\t\t\tNot compatible with username/password" + }, + "versionfilter": { + "properties": { + "kind": { + "type": "string", + "description": "specifies the version kind such as semver, regex, or latest" + }, + "pattern": { + "type": "string", + "description": "specifies the version pattern according the version kind\nfor semver, it is a semver constraint\nfor regex, it is a regex pattern\nfor time, it is a date format" + }, + "strict": { + "type": "boolean", + "description": "strict enforce strict versioning rule.\nOnly used for semantic versioning at this time" + }, + "regex": { + "type": "string", + "description": "specifies the regex pattern, used for regex/semver and regex/time.\nOutput of the first capture group will be used." + }, + "replaceall": { + "properties": { + "pattern": { + "type": "string", + "description": "Pattern specifies the regex pattern to match for replacement" + }, + "replacement": { + "type": "string", + "description": "Replacement specifies the replacement string (supports $1, $2, etc. for captured groups)" + } + }, + "additionalProperties": false, + "type": "object", + "description": "replaceAll applies a regex replacement to version strings before filtering.\nThis is useful for transforming versions (e.g., curl-8_15_0 to curl-8.15.0) before regex extraction." + } + }, + "additionalProperties": false, + "type": "object", + "description": "versionfilter provides parameters to specify version pattern and its type like regex, semver, or just latest.\n\ncompatible:\n * source\n\ndefault:\n kind: latest" + }, + "tagfilter": { "type": "string", - "description": "token specifies the container registry token to use for authentication.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tby default credentials are fetch from the local environment such as `~/.docker/config.json`.\n\n\t\tremark:\n\t\t\tNot compatible with username/password" - }, - "hidetag": { - "type": "boolean", - "description": "hideTag specifies if the tag should be hidden from the digest\n\ncompatible:\n\t* source\n\ndefault:\n\tfalse" + "description": "tagfilter allows to restrict tags retrieved from a remote registry by using a regular expression.\n\ncompatible:\n * source\n\nexample: ^v\\d*(\\.\\d*){2}-alpine$\n\ndefault: none" } }, "additionalProperties": false, "type": "object", - "description": "Spec defines a specification for a \"dockerdigest\" resource parsed from an updatecli manifest file" + "description": "Spec defines a specification for a \"dockerimage\" resource parsed from an updatecli manifest file" }, "scmid": { "type": "string", @@ -13720,6 +15347,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -13739,7 +15367,7 @@ }, "kind": { "enum": [ - "dockerfile" + "file" ] }, "transformers": { @@ -13878,30 +15506,51 @@ "properties": { "file": { "type": "string", - "description": "file specifies the dockerimage file path to use and is incompatible with Files\n\ndefault: \"\"\n\ncompatible:\n\t* source\n\t* condition\n\t* target\n\n remark:\n File is not compatible with Files. Only one of the two should be specified." + "description": "`file` contains the file path\n\n compatible:\n * source\n * condition\n * target\n\n remarks:\n * `file` is incompatible with `files`\n * feel free to look at searchpattern attribute to search for files matching a pattern" }, "files": { "items": { "type": "string" }, "type": "array", - "description": "Files specifies the dockerimage file path(s) to use and is incompatible with File\n\ndefault: []\n\ncompatible:\n\t* source\n\t* condition\n\t* target\n\n remark:\n Files is not compatible with File. Only one of the two should be specified." + "description": "`files` contains the file path(s)\n\n compatible:\n * condition\n * target\n\n remarks:\n * `files` is incompatible with `file`\n * feel free to look at searchpattern attribute to search for files matching a pattern" }, - "instruction": { - "description": "Instruction specifies a DockerImage instruction such as ENV\nInstruction can be specified as a simple string or as a map with keyword and matcher keys.\n\ncompatible:\n\t* source\n\t* condition\n\t* target\n\n default: empty\n\n example:\n ```yaml\n instruction:\n keyword: \"FROM\"\n matcher: \"alpine\"\n ```" + "line": { + "type": "integer", + "description": "`line` contains the line of the file(s) to manipulate\n\n compatible:\n * source\n * condition\n * target" }, - "value": { + "content": { "type": "string", - "description": "Value specifies the value for a specified Dockerfile instruction.\n\ncompatible:\n\t* source\n\t* condition\n\t* target\n\ndefault: source output" + "description": "`content` specifies the content to manipulate\n\n compatible:\n * source\n * condition\n * target" }, - "stage": { + "forcecreate": { + "type": "boolean", + "description": "`forcecreate` defines if nonexistent file(s) should be created\n\n compatible:\n * target" + }, + "matchpattern": { "type": "string", - "description": "Stage can be used to further refined the scope\nFor Sources:\n- If not defined, the last stage will be considered\nFor Condition and Targets:\n- If not defined, all stages will be considered" + "description": "`matchpattern` specifies the regexp pattern to match on the file(s)\n\n compatible:\n * source\n * condition\n * target\n\n remarks:\n * For targets: Capture groups (parentheses) in the pattern automatically extract\n the current value for changelog generation\n * Without capture groups, changelogs show generic \"unknown\" version changes\n * With capture groups, changelogs show actual version changes (e.g., \"1.24.5\" → \"1.25.1\")\n * Example: `\"version\":\\s*\"([\\d\\.]+)\"` captures version numbers for changelogs\n * Supports full Go regexp syntax" + }, + "replacepattern": { + "type": "string", + "description": "`replacepattern` specifies the regexp replace pattern to apply on the file(s) content\n\n compatible:\n * source\n * condition\n * target" + }, + "searchpattern": { + "type": "boolean", + "description": "`searchpattern` defines if the MatchPattern should be applied on the file(s) path\n\n If set to true, it modifies the behavior of the `file` and `files` attributes to search for files matching the pattern instead of searching for files with the exact name.\n When looking for file path pattern, it requires pattern to match all of name, not just a substring.\n\n The pattern syntax is:\n\n ```\n pattern:\n { term }\n term:\n '*' matches any sequence of non-Separator characters\n '?' matches any single non-Separator character\n '[' [ '^' ] { character-range } ']'\n character class (must be non-empty)\n c matches character c (c != '*', '?', '\\\\', '[')\n '\\\\' c matches character c\n\n character-range:\n c matches character c (c != '\\\\', '-', ']')\n '\\\\' c matches character c\n lo '-' hi matches character c for lo \u003c= c \u003c= hi\n ```" + }, + "template": { + "type": "string", + "description": "`template` specifies the path to a Go template file to render with source values\n\n compatible:\n * target\n\n remarks:\n * When using template, the source value is passed as `.source` in the template context\n * All Go template functions from sprig are available\n * The template file is read and rendered at execution time\n * `template` is mutually exclusive with `content`, `line`, `matchpattern`, and `replacepattern`\n\n example:\n template: \"path/to/template.tmpl\"" + }, + "templatedata": { + "type": "object", + "description": "`templateData` specifies additional data to pass to the template\n\n\tcompatible:\n\t * target\n\n\tremarks:\n\t * When using template, the data specified here is passed as additional fields in the template context\n\t * All Go template functions from sprig are available\n\t * The template file is read and rendered at execution time\n\t * `templateData` is optional\n\n\texample:\n\t templateData:\n\t key1: \"value1\"\n\t key2: \"value2\"" } }, "additionalProperties": false, "type": "object", - "description": "Spec defines a specification for a \"dockerfile\" resource parsed from an updatecli manifest file" + "description": "Spec defines a specification for a \"file\" resource parsed from an updatecli manifest file" }, "scmid": { "type": "string", @@ -13920,6 +15569,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -13939,7 +15589,7 @@ }, "kind": { "enum": [ - "dockerimage" + "gitbranch" ] }, "transformers": { @@ -14076,36 +15726,9 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "architectures": { - "items": { - "type": "string" - }, - "type": "array", - "description": "architectures specifies a list of architectures to check container images for (conditions only)\n\ncompatible:\n * condition\n * source\n\nexample: windows/amd64, linux/arm64, linux/arm64/v8\n\ndefault: linux/amd64\n\nremark:\n If an architecture is undefined, Updatecli retrieves the digest of the image index\n which can be used regardless of the architecture.\n But if an architecture is specified then Updatecli retrieves a specific image digest.\n More information on https://github.com/updatecli/updatecli/issues/1603" - }, - "architecture": { - "type": "string", - "description": "architecture specifies the container image architecture such as `amd64`\n\ncompatible:\n * condition\n * source\n\nexample: windows/amd64, linux/arm64, linux/arm64/v8\n\ndefault: linux/amd64\n\nremark:\n If an architecture is undefined, Updatecli retrieves the digest of the image index\n which can be used regardless of the architecture.\n But if an architecture is specified then Updatecli retrieves a specific image digest.\n More information on https://github.com/updatecli/updatecli/issues/1603" - }, - "image": { - "type": "string", - "description": "image specifies the container image such as `updatecli/updatecli`\n\ncompatible:\n * condition\n * source" - }, - "tag": { - "type": "string", - "description": "tag specifies the container image tag such as `latest`\n\ncompatible:\n * condition\n\ndefault: latest" - }, - "username": { - "type": "string", - "description": "username specifies the container registry username to use for authentication.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tby default credentials are fetch from the local environment such as `~/.docker/config.json`.\n\n\t\tremark:\n\t\t\tNot compatible with token" - }, - "password": { - "type": "string", - "description": "password specifies the container registry password to use for authentication. Not compatible with token\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tby default credentials are fetch from the local environment such as `~/.docker/config.json`.\n\n\t\tremark:\n\t\t\tNot compatible with token" - }, - "token": { + "path": { "type": "string", - "description": "token specifies the container registry token to use for authentication.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tby default credentials are fetch from the local environment such as `~/.docker/config.json`.\n\n\t\tremark:\n\t\t\tNot compatible with username/password" + "description": "path contains the git repository path" }, "versionfilter": { "properties": { @@ -14143,16 +15766,43 @@ }, "additionalProperties": false, "type": "object", - "description": "versionfilter provides parameters to specify version pattern and its type like regex, semver, or just latest.\n\ncompatible:\n * source\n\ndefault:\n kind: latest" + "description": "VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest.\n\n compatible:\n * source\n * condition\n * target" }, - "tagfilter": { + "branch": { "type": "string", - "description": "tagfilter allows to restrict tags retrieved from a remote registry by using a regular expression.\n\ncompatible:\n * source\n\nexample: ^v\\d*(\\.\\d*){2}-alpine$\n\ndefault: none" + "description": "branch specifies the branch name\n\n compatible:\n * source\n * condition\n * target" + }, + "depth": { + "type": "integer", + "description": "Depth is used to limit the number of commits fetched from the git repository.\n\ncompatible:\n * source\n * condition\n * target\n\n default: 0 (no limit)\n\nremark:\n * Updatecli won't be able to find branches that are not included in the fetched commits." + }, + "sourcebranch": { + "type": "string", + "description": "\"url\" specifies the git url to use for fetching Git Tags.\n\n\tcompatible:\n\t * source\n\t * condition\n\t * target\n\n\texample:\n\t * git@github.com:updatecli/updatecli.git\n\t * https://github.com/updatecli/updatecli.git\n\n\tremarks:\n\t\twhen using the ssh protocol, the user must have the right to clone the repository\n\t\tbased on its local ssh configuration" + }, + "url": { + "type": "string", + "description": "\"sourcebranch\" defines the branch name used as a source to create the new Git branch.\n\ncompatible:\n * target\n\nremark:\n * sourcebranch is required when the scmid is not defined." + }, + "username": { + "type": "string", + "description": "\"username\" specifies the username when using the HTTP protocol\n\n\tcompatible\n\t * source\n\t * condition\n\t * target" + }, + "password": { + "type": "string", + "description": "\"password\" specifies the password when using the HTTP protocol\n\n\tcompatible:\n\t * source\n\t * condition\n\t * target" + }, + "key": { + "type": "string", + "description": "\"key\" of the tag object to retrieve.\n\n Accepted values: ['name','hash'].\n\n Default: 'name'\n Compatible:\n * source" } }, "additionalProperties": false, "type": "object", - "description": "Spec defines a specification for a \"dockerimage\" resource parsed from an updatecli manifest file" + "required": [ + "url" + ], + "description": "Spec defines a specification for a \"gitbranch\" resource parsed from an updatecli manifest file" }, "scmid": { "type": "string", @@ -14171,6 +15821,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -14190,7 +15841,7 @@ }, "kind": { "enum": [ - "file" + "gitea/branch" ] }, "transformers": { @@ -14327,45 +15978,77 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "file": { + "url": { "type": "string", - "description": "`file` contains the file path\n\n compatible:\n * source\n * condition\n * target\n\n remarks:\n * `file` is incompatible with `files`\n * feel free to look at searchpattern attribute to search for files matching a pattern" - }, - "files": { - "items": { - "type": "string" - }, - "type": "array", - "description": "`files` contains the file path(s)\n\n compatible:\n * condition\n * target\n\n remarks:\n * `files` is incompatible with `file`\n * feel free to look at searchpattern attribute to search for files matching a pattern" - }, - "line": { - "type": "integer", - "description": "`line` contains the line of the file(s) to manipulate\n\n compatible:\n * source\n * condition\n * target" + "description": "\"url\" defines the Gitea url to interact with" }, - "content": { + "username": { "type": "string", - "description": "`content` specifies the content to manipulate\n\n compatible:\n * source\n * condition\n * target" + "description": "\"username\" defines the username used to authenticate with Gitea API" }, - "forcecreate": { - "type": "boolean", - "description": "`forcecreate` defines if nonexistent file(s) should be created\n\n compatible:\n * target" + "token": { + "type": "string", + "description": "\"token\" specifies the credential used to authenticate with Gitea API\n\n remark:\n A token is a sensitive information, it's recommended to not set this value directly in the configuration file\n but to use an environment variable or a SOPS file.\n\n The value can be set to `{{ requiredEnv \"GITEA_TOKEN\"}}` to retrieve the token from the environment variable `GITHUB_TOKEN`\n\t or `{{ .gitea.token }}` to retrieve the token from a SOPS file.\n\n\t For more information, about a SOPS file, please refer to the following documentation:\n https://github.com/getsops/sops" }, - "matchpattern": { + "owner": { "type": "string", - "description": "`matchpattern` specifies the regexp pattern to match on the file(s)\n\n compatible:\n * source\n * condition\n * target\n\n remarks:\n * For targets: Capture groups (parentheses) in the pattern automatically extract\n the current value for changelog generation\n * Without capture groups, changelogs show generic \"unknown\" version changes\n * With capture groups, changelogs show actual version changes (e.g., \"1.24.5\" → \"1.25.1\")\n * Example: `\"version\":\\s*\"([\\d\\.]+)\"` captures version numbers for changelogs\n * Supports full Go regexp syntax" + "description": "[S][C] Owner specifies repository owner" }, - "replacepattern": { + "repository": { "type": "string", - "description": "`replacepattern` specifies the regexp replace pattern to apply on the file(s) content\n\n compatible:\n * source\n * condition\n * target" + "description": "[S][C] Repository specifies the name of a repository for a specific owner" }, - "searchpattern": { - "type": "boolean", - "description": "`searchpattern` defines if the MatchPattern should be applied on the file(s) path\n\n If set to true, it modifies the behavior of the `file` and `files` attributes to search for files matching the pattern instead of searching for files with the exact name.\n When looking for file path pattern, it requires pattern to match all of name, not just a substring.\n\n The pattern syntax is:\n\n ```\n pattern:\n { term }\n term:\n '*' matches any sequence of non-Separator characters\n '?' matches any single non-Separator character\n '[' [ '^' ] { character-range } ']'\n character class (must be non-empty)\n c matches character c (c != '*', '?', '\\\\', '[')\n '\\\\' c matches character c\n\n character-range:\n c matches character c (c != '\\\\', '-', ']')\n '\\\\' c matches character c\n lo '-' hi matches character c for lo \u003c= c \u003c= hi\n ```" + "versionfilter": { + "properties": { + "kind": { + "type": "string", + "description": "specifies the version kind such as semver, regex, or latest" + }, + "pattern": { + "type": "string", + "description": "specifies the version pattern according the version kind\nfor semver, it is a semver constraint\nfor regex, it is a regex pattern\nfor time, it is a date format" + }, + "strict": { + "type": "boolean", + "description": "strict enforce strict versioning rule.\nOnly used for semantic versioning at this time" + }, + "regex": { + "type": "string", + "description": "specifies the regex pattern, used for regex/semver and regex/time.\nOutput of the first capture group will be used." + }, + "replaceall": { + "properties": { + "pattern": { + "type": "string", + "description": "Pattern specifies the regex pattern to match for replacement" + }, + "replacement": { + "type": "string", + "description": "Replacement specifies the replacement string (supports $1, $2, etc. for captured groups)" + } + }, + "additionalProperties": false, + "type": "object", + "description": "replaceAll applies a regex replacement to version strings before filtering.\nThis is useful for transforming versions (e.g., curl-8_15_0 to curl-8.15.0) before regex extraction." + } + }, + "additionalProperties": false, + "type": "object", + "description": "[S] VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." + }, + "branch": { + "type": "string", + "description": "[C] Branch specifies the branch name" } }, "additionalProperties": false, "type": "object", - "description": "Spec defines a specification for a \"file\" resource parsed from an updatecli manifest file" + "required": [ + "url", + "owner", + "repository" + ], + "description": "Spec defines settings used to interact with Gitea release" }, "scmid": { "type": "string", @@ -14384,6 +16067,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -14403,7 +16087,7 @@ }, "kind": { "enum": [ - "gitbranch" + "gitea/release" ] }, "transformers": { @@ -14540,9 +16224,25 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "path": { + "url": { "type": "string", - "description": "path contains the git repository path" + "description": "\"url\" defines the Gitea url to interact with" + }, + "username": { + "type": "string", + "description": "\"username\" defines the username used to authenticate with Gitea API" + }, + "token": { + "type": "string", + "description": "\"token\" specifies the credential used to authenticate with Gitea API\n\n remark:\n A token is a sensitive information, it's recommended to not set this value directly in the configuration file\n but to use an environment variable or a SOPS file.\n\n The value can be set to `{{ requiredEnv \"GITEA_TOKEN\"}}` to retrieve the token from the environment variable `GITHUB_TOKEN`\n\t or `{{ .gitea.token }}` to retrieve the token from a SOPS file.\n\n\t For more information, about a SOPS file, please refer to the following documentation:\n https://github.com/getsops/sops" + }, + "owner": { + "type": "string", + "description": "[S][C][T] owner specifies the repository owner" + }, + "repository": { + "type": "string", + "description": "[S][C][T] repository specifies the name of a repository for a specific owner" }, "versionfilter": { "properties": { @@ -14580,39 +16280,41 @@ }, "additionalProperties": false, "type": "object", - "description": "VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest.\n\n compatible:\n * source\n * condition\n * target" + "description": "[S] versionfilter provides parameters to specify version pattern and its type like regex, semver, or just latest." }, - "branch": { + "title": { "type": "string", - "description": "branch specifies the branch name\n\n compatible:\n * source\n * condition\n * target" + "description": "[T] title defines the Gitea release title." }, - "sourcebranch": { + "tag": { "type": "string", - "description": "\"url\" specifies the git url to use for fetching Git Tags.\n\n\tcompatible:\n\t * source\n\t * condition\n\t * target\n\n\texample:\n\t * git@github.com:updatecli/updatecli.git\n\t * https://github.com/updatecli/updatecli.git\n\n\tremarks:\n\t\twhen using the ssh protocol, the user must have the right to clone the repository\n\t\tbased on its local ssh configuration" + "description": "[C][T] tag defines the Gitea release tag." }, - "url": { + "commitish": { "type": "string", - "description": "\"sourcebranch\" defines the branch name used as a source to create the new Git branch.\n\ncompatible:\n * target\n\nremark:\n * sourcebranch is required when the scmid is not defined." + "description": "[T] commitish defines the commit-ish such as `main`" }, - "username": { + "description": { "type": "string", - "description": "\"username\" specifies the username when using the HTTP protocol\n\n\tcompatible\n\t * source\n\t * condition\n\t * target" + "description": "[T] description defines if the new release description" }, - "password": { - "type": "string", - "description": "\"password\" specifies the password when using the HTTP protocol\n\n\tcompatible:\n\t * source\n\t * condition\n\t * target" + "draft": { + "type": "boolean", + "description": "[T] draft defines if the release is a draft release" }, - "key": { - "type": "string", - "description": "\"key\" of the tag object to retrieve.\n\n Accepted values: ['name','hash'].\n\n Default: 'name'\n Compatible:\n * source" + "prerelease": { + "type": "boolean", + "description": "[T] prerelease defines if the release is a pre-release release" } }, "additionalProperties": false, "type": "object", "required": [ - "url" + "url", + "owner", + "repository" ], - "description": "Spec defines a specification for a \"gitbranch\" resource parsed from an updatecli manifest file" + "description": "Spec defines settings used to interact with Gitea release" }, "scmid": { "type": "string", @@ -14631,6 +16333,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -14650,7 +16353,7 @@ }, "kind": { "enum": [ - "gitea/branch" + "gitea/tag" ] }, "transformers": { @@ -14843,11 +16546,11 @@ }, "additionalProperties": false, "type": "object", - "description": "[S] VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." + "description": "[S][C] VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." }, - "branch": { + "tag": { "type": "string", - "description": "[C] Branch specifies the branch name" + "description": "[S] Tag defines the Gitea tag ." } }, "additionalProperties": false, @@ -14876,6 +16579,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -14895,7 +16599,7 @@ }, "kind": { "enum": [ - "gitea/release" + "githubrelease" ] }, "transformers": { @@ -15032,25 +16736,25 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "url": { + "owner": { "type": "string", - "description": "\"url\" defines the Gitea url to interact with" + "description": "owner defines repository owner to interact with.\n\nrequired: true\n\ncompatible:\n * source\n * condition" }, - "username": { + "repository": { "type": "string", - "description": "\"username\" defines the username used to authenticate with Gitea API" + "description": "repository defines the repository name to interact with.\n\nrequired: true\n\ncompatible:\n * source\n * condition" }, "token": { "type": "string", - "description": "\"token\" specifies the credential used to authenticate with Gitea API\n\n remark:\n A token is a sensitive information, it's recommended to not set this value directly in the configuration file\n but to use an environment variable or a SOPS file.\n\n The value can be set to `{{ requiredEnv \"GITEA_TOKEN\"}}` to retrieve the token from the environment variable `GITHUB_TOKEN`\n\t or `{{ .gitea.token }}` to retrieve the token from a SOPS file.\n\n\t For more information, about a SOPS file, please refer to the following documentation:\n https://github.com/getsops/sops" + "description": "token defines the GitHub personal access token used to authenticate with.\n\nmore information on https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens\n\nrequired: true\n\ncompatible:\n * source\n * condition" }, - "owner": { + "url": { "type": "string", - "description": "[S][C][T] owner specifies the repository owner" + "description": "URL defines the default github url in case of GitHub enterprise.\n\ndefault: https://github.com\n\ncompatible:\n * source\n * condition" }, - "repository": { + "username": { "type": "string", - "description": "[S][C][T] repository specifies the name of a repository for a specific owner" + "description": "username defines the username used to authenticate with GitHub API.\n\ncompatible:\n * source\n * condition" }, "versionfilter": { "properties": { @@ -15088,41 +16792,74 @@ }, "additionalProperties": false, "type": "object", - "description": "[S] versionfilter provides parameters to specify version pattern and its type like regex, semver, or just latest." + "description": "versionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest.\n\ndefault: latest\n\ncompatible:\n * source" }, - "title": { - "type": "string", - "description": "[T] title defines the Gitea release title." + "typefilter": { + "properties": { + "draft": { + "type": "boolean", + "description": "\"Draft\" enable/disable GitHub draft release" + }, + "prerelease": { + "type": "boolean", + "description": "\"PreRelease\" enable/disable GitHub PreRelease" + }, + "release": { + "type": "boolean", + "description": "\"Release\" enable/disable GitHub release" + }, + "latest": { + "type": "boolean", + "description": "\"Latest\" if set to true will only filter the release flag as latest." + } + }, + "additionalProperties": false, + "type": "object", + "description": "typeFilter specifies the GitHub Release type to retrieve before applying the versionfilter rule\n\ndefault:\n * draft: false\n * prerelease: false\n * release: true\n * latest: false\n\ncompatible:\n * source\n\t* condition" }, "tag": { "type": "string", - "description": "[C][T] tag defines the Gitea release tag." - }, - "commitish": { - "type": "string", - "description": "[T] commitish defines the commit-ish such as `main`" + "description": "tag allows to check for a specific release tag, release tag hash, or release title depending on a the parameter key.\n\ncompatible:\n * condition\n\ndefault: source input" }, - "description": { + "key": { "type": "string", - "description": "[T] description defines if the new release description" - }, - "draft": { - "type": "boolean", - "description": "[T] draft defines if the release is a draft release" + "description": "\"key\" defines the GitHub release information we are looking for.\nIt accepts one of the following inputs:\n * \"name\": returns the \"latest\" tag name\n * \"hash\": returns the commit associated with the latest tag name\n * \"title\": returns the latest release title\n\naccepted values:\n * taghash\n * tagname\n * title\n * hash (deprecated)\n * name (deprecated)\n\ndefault: 'tagname'\n\ncompatible:\n * source\n * condition" }, - "prerelease": { - "type": "boolean", - "description": "[T] prerelease defines if the release is a pre-release release" + "app": { + "properties": { + "clientid": { + "type": "string", + "description": "ClientID represents the GitHub App client ID" + }, + "privatekey": { + "type": "string", + "description": "PrivateKey represents a PEM encoded private key\nIt is recommended to use PrivateKeyPath instead of PrivateKey\nto avoid putting sensitive information in the configuration file\nIf both PrivateKey and PrivateKeyPath are set, PrivateKey takes precedence" + }, + "privatekeypath": { + "type": "string", + "description": "PrivateKeyPath represents the path to a PEM encoded private key\nIf both PrivateKey and PrivateKeyPath are set, PrivateKey takes precedence\nIt is recommended to use an environment variable to set the PrivateKeyPath value\ne.g. PrivateKeyPath: {{ requiredEnv \"GITHUB_APP_PRIVATE_KEY_PATH\" }}\nto avoid putting sensitive information in the configuration file" + }, + "installationid": { + "type": "string", + "description": "InstallationID represents the GitHub App installation ID\nIt is the same ID that you can find in the GitHub endpoint:\nhttps://github.com/settings/installation/\u003cID\u003e" + }, + "expirationtime": { + "type": "string", + "description": "Expiration represents the token expiration time in seconds\nThe token is used during the entire execution of updatecli\nand should be valid for the entire duration of the run\nThe minimum value is 600 seconds (10 minutes)\n\nDefault: 3600 (1 hour)" + } + }, + "additionalProperties": false, + "type": "object", + "description": "\"app\" specifies the GitHub App credentials used to authenticate with GitHub API.\nIt is not compatible with the \"token\" and \"username\" fields.\nIt is recommended to use the GitHub App authentication method for better security and granular permissions.\nFor more information, please refer to the following documentation:" } }, "additionalProperties": false, "type": "object", "required": [ - "url", "owner", "repository" ], - "description": "Spec defines settings used to interact with Gitea release" + "description": "Spec defines a specification for a \"gittag\" resource parsed from an updatecli manifest file" }, "scmid": { "type": "string", @@ -15141,6 +16878,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -15160,7 +16898,7 @@ }, "kind": { "enum": [ - "gitea/tag" + "gitlab/branch" ] }, "transformers": { @@ -15299,15 +17037,15 @@ "properties": { "url": { "type": "string", - "description": "\"url\" defines the Gitea url to interact with" + "description": "\"url\" defines the GitLab url to interact with\n\n default:\n \"gitlab.com\"" }, "username": { "type": "string", - "description": "\"username\" defines the username used to authenticate with Gitea API" + "description": "\"username\" defines the username used to authenticate with GitLab" }, "token": { "type": "string", - "description": "\"token\" specifies the credential used to authenticate with Gitea API\n\n remark:\n A token is a sensitive information, it's recommended to not set this value directly in the configuration file\n but to use an environment variable or a SOPS file.\n\n The value can be set to `{{ requiredEnv \"GITEA_TOKEN\"}}` to retrieve the token from the environment variable `GITHUB_TOKEN`\n\t or `{{ .gitea.token }}` to retrieve the token from a SOPS file.\n\n\t For more information, about a SOPS file, please refer to the following documentation:\n https://github.com/getsops/sops" + "description": "\"token\" defines the credential used to authenticate with GitLab\n\n remark:\n A token is a sensitive information, it's recommended to not set this value directly in the configuration file\n but to use an environment variable or a SOPS file.\n\n The value can be set to `{{ requiredEnv \"GITLAB_TOKEN\"}}` to retrieve the token from the environment variable `GITLAB_TOKEN`\n\t or `{{ .gitlab.token }}` to retrieve the token from a SOPS file.\n\n\t For more information, about a SOPS file, please refer to the following documentation:\n https://github.com/getsops/sops" }, "owner": { "type": "string", @@ -15353,21 +17091,20 @@ }, "additionalProperties": false, "type": "object", - "description": "[S][C] VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." + "description": "[S] VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." }, - "tag": { + "branch": { "type": "string", - "description": "[S] Tag defines the Gitea tag ." + "description": "[C] Branch specifies the branch name" } }, "additionalProperties": false, "type": "object", "required": [ - "url", "owner", "repository" ], - "description": "Spec defines settings used to interact with Gitea release" + "description": "Spec defines settings used to interact with GitLab release" }, "scmid": { "type": "string", @@ -15386,6 +17123,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -15405,7 +17143,7 @@ }, "kind": { "enum": [ - "githubrelease" + "gitlab/release" ] }, "transformers": { @@ -15542,25 +17280,25 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "owner": { + "url": { "type": "string", - "description": "owner defines repository owner to interact with.\n\nrequired: true\n\ncompatible:\n * source\n * condition" + "description": "\"url\" defines the GitLab url to interact with\n\n default:\n \"gitlab.com\"" }, - "repository": { + "username": { "type": "string", - "description": "repository defines the repository name to interact with.\n\nrequired: true\n\ncompatible:\n * source\n * condition" + "description": "\"username\" defines the username used to authenticate with GitLab" }, "token": { "type": "string", - "description": "token defines the GitHub personal access token used to authenticate with.\n\nmore information on https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens\n\nrequired: true\n\ncompatible:\n * source\n * condition" + "description": "\"token\" defines the credential used to authenticate with GitLab\n\n remark:\n A token is a sensitive information, it's recommended to not set this value directly in the configuration file\n but to use an environment variable or a SOPS file.\n\n The value can be set to `{{ requiredEnv \"GITLAB_TOKEN\"}}` to retrieve the token from the environment variable `GITLAB_TOKEN`\n\t or `{{ .gitlab.token }}` to retrieve the token from a SOPS file.\n\n\t For more information, about a SOPS file, please refer to the following documentation:\n https://github.com/getsops/sops" }, - "url": { + "owner": { "type": "string", - "description": "URL defines the default github url in case of GitHub enterprise.\n\ndefault: https://github.com\n\ncompatible:\n * source\n * condition" + "description": "[S][C][T] Owner specifies repository owner" }, - "username": { + "repository": { "type": "string", - "description": "username defines the username used to authenticate with GitHub API.\n\ncompatible:\n * source\n * condition" + "description": "[S][C][T]Repository specifies the name of a repository for a specific owner" }, "versionfilter": { "properties": { @@ -15598,65 +17336,31 @@ }, "additionalProperties": false, "type": "object", - "description": "versionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest.\n\ndefault: latest\n\ncompatible:\n * source" + "description": "[S] VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." }, - "typefilter": { - "properties": { - "draft": { - "type": "boolean", - "description": "\"Draft\" enable/disable GitHub draft release" - }, - "prerelease": { - "type": "boolean", - "description": "\"PreRelease\" enable/disable GitHub PreRelease" - }, - "release": { - "type": "boolean", - "description": "\"Release\" enable/disable GitHub release" - }, - "latest": { - "type": "boolean", - "description": "\"Latest\" if set to true will only filter the release flag as latest." - } - }, - "additionalProperties": false, - "type": "object", - "description": "typeFilter specifies the GitHub Release type to retrieve before applying the versionfilter rule\n\ndefault:\n * draft: false\n * prerelease: false\n * release: true\n * latest: false\n\ncompatible:\n * source\n\t* condition" + "title": { + "type": "string", + "description": "[T] Title defines the GitLab release title." }, "tag": { "type": "string", - "description": "tag allows to check for a specific release tag, release tag hash, or release title depending on a the parameter key.\n\ncompatible:\n * condition\n\ndefault: source input" + "description": "[C][T] Tag defines the GitLab release tag." }, - "key": { + "commitish": { "type": "string", - "description": "\"key\" defines the GitHub release information we are looking for.\nIt accepts one of the following inputs:\n * \"name\": returns the \"latest\" tag name\n * \"hash\": returns the commit associated with the latest tag name\n * \"title\": returns the latest release title\n\naccepted values:\n * taghash\n * tagname\n * title\n * hash (deprecated)\n * name (deprecated)\n\ndefault: 'tagname'\n\ncompatible:\n * source\n * condition" + "description": "[T] Commitish defines the commit-ish such as `main`" }, - "app": { - "properties": { - "clientid": { - "type": "string", - "description": "ClientID represents the GitHub App client ID" - }, - "privatekey": { - "type": "string", - "description": "PrivateKey represents a PEM encoded private key\nIt is recommended to use PrivateKeyPath instead of PrivateKey\nto avoid putting sensitive information in the configuration file\nIf both PrivateKey and PrivateKeyPath are set, PrivateKey takes precedence" - }, - "privatekeypath": { - "type": "string", - "description": "PrivateKeyPath represents the path to a PEM encoded private key\nIf both PrivateKey and PrivateKeyPath are set, PrivateKey takes precedence\nIt is recommended to use an environment variable to set the PrivateKeyPath value\ne.g. PrivateKeyPath: {{ requiredEnv \"GITHUB_APP_PRIVATE_KEY_PATH\" }}\nto avoid putting sensitive information in the configuration file" - }, - "installationid": { - "type": "string", - "description": "InstallationID represents the GitHub App installation ID\nIt is the same ID that you can find in the GitHub endpoint:\nhttps://github.com/settings/installation/\u003cID\u003e" - }, - "expirationtime": { - "type": "string", - "description": "Expiration represents the token expiration time in seconds\nThe token is used during the entire execution of updatecli\nand should be valid for the entire duration of the run\nThe minimum value is 600 seconds (10 minutes)\n\nDefault: 3600 (1 hour)" - } - }, - "additionalProperties": false, - "type": "object", - "description": "\"app\" specifies the GitHub App credentials used to authenticate with GitHub API.\nIt is not compatible with the \"token\" and \"username\" fields.\nIt is recommended to use the GitHub App authentication method for better security and granular permissions.\nFor more information, please refer to the following documentation:" + "description": { + "type": "string", + "description": "[T] Description defines if the new release description" + }, + "draft": { + "type": "boolean", + "description": "[T] Draft defines if the release is a draft release" + }, + "prerelease": { + "type": "boolean", + "description": "[T] Prerelease defines if the release is a pre-release release" } }, "additionalProperties": false, @@ -15665,7 +17369,7 @@ "owner", "repository" ], - "description": "Spec defines a specification for a \"gittag\" resource parsed from an updatecli manifest file" + "description": "Spec defines settings used to interact with GitLab release" }, "scmid": { "type": "string", @@ -15684,6 +17388,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -15703,7 +17408,7 @@ }, "kind": { "enum": [ - "gitlab/branch" + "gitlab/tag" ] }, "transformers": { @@ -15896,11 +17601,11 @@ }, "additionalProperties": false, "type": "object", - "description": "[S] VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." + "description": "[S][C] VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." }, - "branch": { + "tag": { "type": "string", - "description": "[C] Branch specifies the branch name" + "description": "[S] Tag defines the GitLab tag ." } }, "additionalProperties": false, @@ -15928,6 +17633,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -15947,7 +17653,7 @@ }, "kind": { "enum": [ - "gitlab/release" + "gittag" ] }, "transformers": { @@ -16084,25 +17790,9 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "url": { - "type": "string", - "description": "\"url\" defines the GitLab url to interact with\n\n default:\n \"gitlab.com\"" - }, - "username": { - "type": "string", - "description": "\"username\" defines the username used to authenticate with GitLab" - }, - "token": { - "type": "string", - "description": "\"token\" defines the credential used to authenticate with GitLab\n\n remark:\n A token is a sensitive information, it's recommended to not set this value directly in the configuration file\n but to use an environment variable or a SOPS file.\n\n The value can be set to `{{ requiredEnv \"GITLAB_TOKEN\"}}` to retrieve the token from the environment variable `GITLAB_TOKEN`\n\t or `{{ .gitlab.token }}` to retrieve the token from a SOPS file.\n\n\t For more information, about a SOPS file, please refer to the following documentation:\n https://github.com/getsops/sops" - }, - "owner": { - "type": "string", - "description": "[S][C][T] Owner specifies repository owner" - }, - "repository": { + "path": { "type": "string", - "description": "[S][C][T]Repository specifies the name of a repository for a specific owner" + "description": "Path contains the git repository path" }, "versionfilter": { "properties": { @@ -16140,40 +17830,50 @@ }, "additionalProperties": false, "type": "object", - "description": "[S] VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." + "description": "VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest.\n\n compatible:\n * source\n * condition\n * target" + }, + "tag": { + "type": "string", + "description": "Tag defines the git tag to check for exact match.\n\ncompatible:\n * condition\n\nWhen specified, the condition will check for an exact tag match\ninstead of using versionFilter pattern matching." + }, + "message": { + "type": "string", + "description": "Message associated to the git tag\n\n compatible:\n * target" }, - "title": { + "key": { "type": "string", - "description": "[T] Title defines the GitLab release title." + "description": "\"key\" of the tag object to retrieve.\n\n Accepted values: ['name','hash'].\n\n Default: 'name'\n Compatible:\n * source" }, - "tag": { + "url": { "type": "string", - "description": "[C][T] Tag defines the GitLab release tag." + "description": "\"url\" specifies the git url to use for fetching Git Tags.\n\n\tcompatible:\n\t * source\n\t * condition\n\t * target\n\n\texample:\n\t * git@github.com:updatecli/updatecli.git\n\t * https://github.com/updatecli/updatecli.git\n\n\tremarks:\n\t when using the ssh protocol, the user must have the right to clone the repository\n\t based on its local ssh configuration\n\n it's possible to specify git tags without cloning the repository by using the `lsremote` option,\n in that case the URL is required and the tags will be retrieved from the remote repository directly without cloning it." }, - "commitish": { + "username": { "type": "string", - "description": "[T] Commitish defines the commit-ish such as `main`" + "description": "\"username\" specifies the username when using the HTTP protocol\n\n\tcompatible\n\t * source\n\t * condition\n\t * target" }, - "description": { + "password": { "type": "string", - "description": "[T] Description defines if the new release description" + "description": "\"password\" specifies the password when using the HTTP protocol\n\n\tcompatible:\n\t * source\n\t * condition\n\t * target" }, - "draft": { - "type": "boolean", - "description": "[T] Draft defines if the release is a draft release" + "sourcebranch": { + "type": "string", + "description": "\"sourcebranch\" defines the branch name used as a source to create the new Git branch.\n\ncompatible:\n * target\n\nremark:\n * sourcebranch is required when the scmid is not defined.\n\ndefault: main" }, - "prerelease": { - "type": "boolean", - "description": "[T] Prerelease defines if the release is a pre-release release" + "lsremote": { + "type": "boolean" + }, + "depth": { + "type": "integer", + "description": "Depth is used to limit the number of commits fetched from the git repository.\n\ncompatible:\n * source\n * condition\n * target\n\n default: 0 (no limit)\n\nremark:\n * Updatecli won't be able to find tags that are not included in the fetched commits." } }, "additionalProperties": false, "type": "object", "required": [ - "owner", - "repository" + "url" ], - "description": "Spec defines settings used to interact with GitLab release" + "description": "Spec defines a specification for a \"gittag\" resource parsed from an updatecli manifest file" }, "scmid": { "type": "string", @@ -16192,6 +17892,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -16211,7 +17912,7 @@ }, "kind": { "enum": [ - "gitlab/tag" + "golang" ] }, "transformers": { @@ -16348,25 +18049,9 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "url": { - "type": "string", - "description": "\"url\" defines the GitLab url to interact with\n\n default:\n \"gitlab.com\"" - }, - "username": { - "type": "string", - "description": "\"username\" defines the username used to authenticate with GitLab" - }, - "token": { - "type": "string", - "description": "\"token\" defines the credential used to authenticate with GitLab\n\n remark:\n A token is a sensitive information, it's recommended to not set this value directly in the configuration file\n but to use an environment variable or a SOPS file.\n\n The value can be set to `{{ requiredEnv \"GITLAB_TOKEN\"}}` to retrieve the token from the environment variable `GITLAB_TOKEN`\n\t or `{{ .gitlab.token }}` to retrieve the token from a SOPS file.\n\n\t For more information, about a SOPS file, please refer to the following documentation:\n https://github.com/getsops/sops" - }, - "owner": { - "type": "string", - "description": "[S][C] Owner specifies repository owner" - }, - "repository": { + "version": { "type": "string", - "description": "[S][C] Repository specifies the name of a repository for a specific owner" + "description": "[C] Version defines a specific golang version" }, "versionfilter": { "properties": { @@ -16404,20 +18089,12 @@ }, "additionalProperties": false, "type": "object", - "description": "[S][C] VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." - }, - "tag": { - "type": "string", - "description": "[S] Tag defines the GitLab tag ." + "description": "[S] VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." } }, "additionalProperties": false, "type": "object", - "required": [ - "owner", - "repository" - ], - "description": "Spec defines settings used to interact with GitLab release" + "description": "Spec defines a specification for a \"Golang\" resource parsed from an updatecli manifest file" }, "scmid": { "type": "string", @@ -16436,6 +18113,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -16455,7 +18133,7 @@ }, "kind": { "enum": [ - "gittag" + "golang/gomod" ] }, "transformers": { @@ -16592,79 +18270,34 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "path": { - "type": "string", - "description": "Path contains the git repository path" - }, - "versionfilter": { - "properties": { - "kind": { - "type": "string", - "description": "specifies the version kind such as semver, regex, or latest" - }, - "pattern": { - "type": "string", - "description": "specifies the version pattern according the version kind\nfor semver, it is a semver constraint\nfor regex, it is a regex pattern\nfor time, it is a date format" - }, - "strict": { - "type": "boolean", - "description": "strict enforce strict versioning rule.\nOnly used for semantic versioning at this time" - }, - "regex": { - "type": "string", - "description": "specifies the regex pattern, used for regex/semver and regex/time.\nOutput of the first capture group will be used." - }, - "replaceall": { - "properties": { - "pattern": { - "type": "string", - "description": "Pattern specifies the regex pattern to match for replacement" - }, - "replacement": { - "type": "string", - "description": "Replacement specifies the replacement string (supports $1, $2, etc. for captured groups)" - } - }, - "additionalProperties": false, - "type": "object", - "description": "replaceAll applies a regex replacement to version strings before filtering.\nThis is useful for transforming versions (e.g., curl-8_15_0 to curl-8.15.0) before regex extraction." - } - }, - "additionalProperties": false, - "type": "object", - "description": "VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest.\n\n compatible:\n * source\n * condition\n * target" - }, - "message": { + "file": { "type": "string", - "description": "Message associated to the git tag\n\n compatible:\n * target" + "description": "File defines the go.mod file, default to \"go.mod\"\n\ncompatible:\n * source\n * condition\n\nremark:\n * scheme \"https://\", \"http://\", and \"file://\" are supported in path for source and condition" }, - "key": { + "module": { "type": "string", - "description": "\"key\" of the tag object to retrieve.\n\n Accepted values: ['name','hash'].\n\n Default: 'name'\n Compatible:\n * source" + "description": "Module defines the module path\n\ncompatible:\n * source\n * condition\n\nremark:\n * scheme \"https://\", \"http://\", and \"file://\" are supported in path for source and condition" }, - "url": { - "type": "string", - "description": "\"url\" specifies the git url to use for fetching Git Tags.\n\n\tcompatible:\n\t * source\n\t * condition\n\t * target\n\n\texample:\n\t * git@github.com:updatecli/updatecli.git\n\t * https://github.com/updatecli/updatecli.git\n\n\tremarks:\n\t when using the ssh protocol, the user must have the right to clone the repository\n\t based on its local ssh configuration\n\n it's possible to specify git tags without cloning the repository by using the `lsremote` option,\n in that case the URL is required and the tags will be retrieved from the remote repository directly without cloning it." + "indirect": { + "type": "boolean", + "description": "Indirect specifies if we manipulate an indirect dependency\n\ncompatible:\n * source\n * condition" }, - "username": { + "version": { "type": "string", - "description": "\"username\" specifies the username when using the HTTP protocol\n\n\tcompatible\n\t * source\n\t * condition\n\t * target" + "description": "Version Defines a specific golang version\n\ncompatible:\n * source\n * condition" }, - "password": { - "type": "string", - "description": "\"password\" specifies the password when using the HTTP protocol\n\n\tcompatible:\n\t * source\n\t * condition\n\t * target" + "replace": { + "type": "boolean", + "description": "Replace specifies if we manipulate a replaced dependency\n\ncompatible:\n * source\n * condition\n * target" }, - "sourcebranch": { + "replaceversion": { "type": "string", - "description": "\"sourcebranch\" defines the branch name used as a source to create the new Git branch.\n\ncompatible:\n * target\n\nremark:\n * sourcebranch is required when the scmid is not defined.\n\ndefault: main" + "description": "ReplaceVersion specifies the specific Go module version to replace\n\ncompatible:\n * source\n * condition\n * target\n\ndefault: unset, which will match any version of the module being replaced.\n\nExample:\n For the following Go replace instruction:\n moduleA v1.2.3 =\u003e moduleB v1.0.0\n - The 'module' field should be set to 'moduleA' (the module being replaced, left-hand side).\n - The value of ReplaceVersion should be 'v1.2.3', corresponding to the version of moduleA\n (the module being replaced, left-hand side)." } }, "additionalProperties": false, "type": "object", - "required": [ - "url" - ], - "description": "Spec defines a specification for a \"gittag\" resource parsed from an updatecli manifest file" + "description": "Spec defines a specification for a \"Golang\" resource parsed from an updatecli manifest file" }, "scmid": { "type": "string", @@ -16683,6 +18316,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -16702,7 +18336,7 @@ }, "kind": { "enum": [ - "golang" + "golang/module" ] }, "transformers": { @@ -16839,9 +18473,17 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { + "proxy": { + "type": "string", + "description": "Proxy may have the schemes https, http. file is not supported at this time. If a URL has no scheme, https is assumed\n[S][C] Proxy allows to override GO proxy similarly to GOPROXY environment variable." + }, + "module": { + "type": "string", + "description": "[S][C] Module specifies the name of the module" + }, "version": { "type": "string", - "description": "[C] Version defines a specific golang version" + "description": "[C] Defines a specific package version" }, "versionfilter": { "properties": { @@ -16884,7 +18526,10 @@ }, "additionalProperties": false, "type": "object", - "description": "Spec defines a specification for a \"Golang\" resource parsed from an updatecli manifest file" + "required": [ + "module" + ], + "description": "Spec defines a specification for a \"gomodule\" resource parsed from an updatecli manifest file" }, "scmid": { "type": "string", @@ -16903,6 +18548,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -16922,7 +18568,7 @@ }, "kind": { "enum": [ - "golang/gomod" + "hcl" ] }, "transformers": { @@ -17061,32 +18707,27 @@ "properties": { "file": { "type": "string", - "description": "File defines the go.mod file, default to \"go.mod\"\n\ncompatible:\n * source\n * condition\n\nremark:\n * scheme \"https://\", \"http://\", and \"file://\" are supported in path for source and condition" - }, - "module": { - "type": "string", - "description": "Module defines the module path\n\ncompatible:\n * source\n * condition\n\nremark:\n * scheme \"https://\", \"http://\", and \"file://\" are supported in path for source and condition" + "description": "\"file\" defines the hcl file path to interact with.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tremark:\n\t\t\t* \"file\" and \"files\" are mutually exclusive\n\t\t\t* protocols \"https://\", \"http://\", and \"file://\" are supported in path for source and condition" }, - "indirect": { - "type": "boolean", - "description": "Indirect specifies if we manipulate an indirect dependency\n\ncompatible:\n * source\n * condition" + "files": { + "items": { + "type": "string" + }, + "type": "array", + "description": "\"files\" defines the list of hcl files path to interact with.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tremark:\n\t\t\t* file and files are mutually exclusive\n\t\t\t* when using as a source only one file is supported\n\t\t\t* protocols \"https://\", \"http://\", and \"file://\" are supported in file path for source and condition" }, - "version": { + "path": { "type": "string", - "description": "Version Defines a specific golang version\n\ncompatible:\n * source\n * condition" - }, - "replace": { - "type": "boolean", - "description": "Replace specifies if we manipulate a replaced dependency\n\ncompatible:\n * source\n * condition\n * target" + "description": "\"path\" defines the hcl attribute path.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\texample:\n\t\t\t* path: resource.aws_instance.app_server.ami\n\t\t\t* path: resource.helm_release.prometheus.version\n\t\t\t* path: plugin.aws.version" }, - "replaceversion": { + "value": { "type": "string", - "description": "ReplaceVersion specifies the specific Go module version to replace\n\ncompatible:\n * source\n * condition\n * target\n\ndefault: unset, which will match any version of the module being replaced.\n\nExample:\n For the following Go replace instruction:\n moduleA v1.2.3 =\u003e moduleB v1.0.0\n - The 'module' field should be set to 'moduleA' (the module being replaced, left-hand side).\n - The value of ReplaceVersion should be 'v1.2.3', corresponding to the version of moduleA\n (the module being replaced, left-hand side)." + "description": "\"value\" is the value associated with a hcl path.\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tWhen used from a condition or a target, the default value is set to linked source output." } }, "additionalProperties": false, "type": "object", - "description": "Spec defines a specification for a \"Golang\" resource parsed from an updatecli manifest file" + "description": "\"hcl\" defines the specification for manipulating \"hcl\" files." }, "scmid": { "type": "string", @@ -17105,6 +18746,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -17124,7 +18766,7 @@ }, "kind": { "enum": [ - "golang/module" + "helmchart" ] }, "transformers": { @@ -17261,17 +18903,41 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "proxy": { + "file": { "type": "string", - "description": "Proxy may have the schemes https, http. file is not supported at this time. If a URL has no scheme, https is assumed\n[S][C] Proxy allows to override GO proxy similarly to GOPROXY environment variable." + "description": "file defines the Helm Chart file to update.\n\t\tthe path must be relative to chart root directory\n\t\tthe chart name is defined by the parameter \"name\"\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tdefault set to \"values.yaml\"" }, - "module": { + "key": { "type": "string", - "description": "[S][C] Module specifies the name of the module" + "description": "key defines the yamlpath query used for retrieving value from a YAML document\n\n\t\tcompatible:\n\t\t\t* target\n\n\t\texample:\n\t\t\t* key: $.image.tag\n\t\t\t* key: $.images[0].tag\n\n\t\tremark:\n\t\t\t* key is a simpler version of yamlpath accepts keys." + }, + "name": { + "type": "string", + "description": "name defines the Chart name path like 'stable/chart'.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\texample:\n\t\t\t* name: stable/chart\n\n\t\tremark:\n\t\t\t* when used with a scm, the name must be the relative path from the scm repository root directory\n\t\t\t with such as \"stable/chart\"" + }, + "skippackaging": { + "type": "boolean", + "description": "skippackaging defines if a Chart should be packaged or not.\n\n\t\tcompatible:\n\t\t\t* target\n\n\t\tdefault: false" + }, + "url": { + "type": "string", + "description": "url defines the Chart location URL.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\n\t\texample:\n\t\t\t* index.yaml\n\t\t\t* file://./index.yaml\n\t\t\t* https://github.com/updatecli/charts.git\n\t\t\t* oci://ghcr.io/olblak/charts/" + }, + "value": { + "type": "string", + "description": "value is the value associated with a yamlpath query.\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target" }, "version": { "type": "string", - "description": "[C] Defines a specific package version" + "description": "version defines the Chart version. It is used by condition to check if a version exists on the registry.\n\n\t\tcompatible:\n\t\t\t* condition" + }, + "versionincrement": { + "type": "string", + "description": "versionIncrement defines if a Chart changes, triggers, or not, a Chart version update, accepted values is a comma separated list of \"none,major,minor,patch,auto\".\n\n\t\tcompatible:\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tdefault set to \"minor\"\n\n\t\tremark:\n\t\t\twhen multiple pipelines update the same chart, the versionIncrement will be applied multiple times.\n\t\t\tmore information on https://github.com/updatecli/updatecli/issues/693" + }, + "appversion": { + "type": "boolean", + "description": "AppVersion defines if a Chart changes, triggers, or not, a Chart AppVersion update.\n\t\tThe value is retrieved from the source input.\n\n\t\tcompatible:\n\t\t\t* target\n\n\t\tdefault\n\t\t\tfalse" }, "versionfilter": { "properties": { @@ -17309,15 +18975,24 @@ }, "additionalProperties": false, "type": "object", - "description": "[S] VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." + "description": "versionfilter provides parameters to specify version pattern and its type like 'regex', 'semver', or just 'latest'.\n\n\t\tcompatible:\n\t\t\t* source\n\n\t\tdefault:\n\t\t\tsemver\n\n\t\tremark:\n\t\t\t* Helm chart uses semver by default." + }, + "username": { + "type": "string", + "description": "username specifies the container registry username to use for authentication.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tby default credentials are fetch from the local environment such as `~/.docker/config.json`.\n\n\t\tremark:\n\t\t\tNot compatible with token" + }, + "password": { + "type": "string", + "description": "password specifies the container registry password to use for authentication. Not compatible with token\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tby default credentials are fetch from the local environment such as `~/.docker/config.json`.\n\n\t\tremark:\n\t\t\tNot compatible with token" + }, + "token": { + "type": "string", + "description": "token specifies the container registry token to use for authentication.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tby default credentials are fetch from the local environment such as `~/.docker/config.json`.\n\n\t\tremark:\n\t\t\tNot compatible with username/password" } }, "additionalProperties": false, "type": "object", - "required": [ - "module" - ], - "description": "Spec defines a specification for a \"gomodule\" resource parsed from an updatecli manifest file" + "description": "Spec defines a specification for an \"helmchart\" resource parsed from an updatecli manifest file" }, "scmid": { "type": "string", @@ -17336,6 +19011,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -17355,7 +19031,7 @@ }, "kind": { "enum": [ - "hcl" + "http" ] }, "transformers": { @@ -17492,29 +19168,62 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "file": { + "url": { + "type": "string", + "description": "[S][C] Specifies the URL of the HTTP request for this resource." + }, + "returnresponseheader": { "type": "string", - "description": "\"file\" defines the hcl file path to interact with.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tremark:\n\t\t\t* \"file\" and \"files\" are mutually exclusive\n\t\t\t* protocols \"https://\", \"http://\", and \"file://\" are supported in path for source and condition" + "description": "[S] Specifies the header to return as source value (instead of the body)." }, - "files": { - "items": { - "type": "string" + "request": { + "properties": { + "verb": { + "type": "string", + "description": "[S][C] Specifies a custom HTTP request verb. Defaults to \"GET\"." + }, + "body": { + "type": "string", + "description": "[S][C] Specifies a custom HTTP request body. Required with POST, PUT, PATCH." + }, + "headers": { + "additionalProperties": { + "type": "string" + }, + "type": "object", + "description": "[S][C] Specifies custom HTTP request headers. Defaults to an empty map." + }, + "nofollowredirects": { + "type": "boolean", + "description": "[S][C] Specifies whether or not to follow redirects. Default to false (e.g. follow HTTP redirections) unless spec.returnresponseheader is set to true (source only)." + } }, - "type": "array", - "description": "\"files\" defines the list of hcl files path to interact with.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tremark:\n\t\t\t* file and files are mutually exclusive\n\t\t\t* when using as a source only one file is supported\n\t\t\t* protocols \"https://\", \"http://\", and \"file://\" are supported in file path for source and condition" - }, - "path": { - "type": "string", - "description": "\"path\" defines the hcl attribute path.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\texample:\n\t\t\t* path: resource.aws_instance.app_server.ami\n\t\t\t* path: resource.helm_release.prometheus.version\n\t\t\t* path: plugin.aws.version" + "additionalProperties": false, + "type": "object", + "description": "[S][C] Customizes the HTTP request to emit." }, - "value": { - "type": "string", - "description": "\"value\" is the value associated with a hcl path.\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tWhen used from a condition or a target, the default value is set to linked source output." + "responseasserts": { + "properties": { + "headers": { + "additionalProperties": { + "type": "string" + }, + "type": "object", + "description": "[C] Specifies a set of assertions on the HTTP response headers." + }, + "statuscode": { + "type": "integer", + "description": "[C] Specifies a custom assertion on the HTTP response status code." + } + }, + "additionalProperties": false, + "type": "object", + "description": "[C] Specifies a set of custom assertions on the HTTP response for the condition." } }, "additionalProperties": false, "type": "object", - "description": "\"hcl\" defines the specification for manipulating \"hcl\" files." + "description": "Spec defines a specification for a \"http\" resource parsed from an updatecli manifest file." }, "scmid": { "type": "string", @@ -17533,6 +19242,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -17552,7 +19262,7 @@ }, "kind": { "enum": [ - "helmchart" + "jenkins" ] }, "transformers": { @@ -17689,96 +19399,18 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "file": { - "type": "string", - "description": "file defines the Helm Chart file to update.\n\t\tthe path must be relative to chart root directory\n\t\tthe chart name is defined by the parameter \"name\"\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tdefault set to \"values.yaml\"" - }, - "key": { - "type": "string", - "description": "key defines the yamlpath query used for retrieving value from a YAML document\n\n\t\tcompatible:\n\t\t\t* target\n\n\t\texample:\n\t\t\t* key: $.image.tag\n\t\t\t* key: $.images[0].tag\n\n\t\tremark:\n\t\t\t* key is a simpler version of yamlpath accepts keys." - }, - "name": { - "type": "string", - "description": "name defines the Chart name path like 'stable/chart'.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\texample:\n\t\t\t* name: stable/chart\n\n\t\tremark:\n\t\t\t* when used with a scm, the name must be the relative path from the scm repository root directory\n\t\t\t with such as \"stable/chart\"" - }, - "skippackaging": { - "type": "boolean", - "description": "skippackaging defines if a Chart should be packaged or not.\n\n\t\tcompatible:\n\t\t\t* target\n\n\t\tdefault: false" - }, - "url": { - "type": "string", - "description": "url defines the Chart location URL.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\n\t\texample:\n\t\t\t* index.yaml\n\t\t\t* file://./index.yaml\n\t\t\t* https://github.com/updatecli/charts.git\n\t\t\t* oci://ghcr.io/olblak/charts/" - }, - "value": { + "release": { "type": "string", - "description": "value is the value associated with a yamlpath query.\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target" + "description": "[s][c] Defines the release name. It accepts \"stable\" or \"weekly\"" }, "version": { "type": "string", - "description": "version defines the Chart version. It is used by condition to check if a version exists on the registry.\n\n\t\tcompatible:\n\t\t\t* condition" - }, - "versionincrement": { - "type": "string", - "description": "versionIncrement defines if a Chart changes, triggers, or not, a Chart version update, accepted values is a comma separated list of \"none,major,minor,patch,auto\".\n\n\t\tcompatible:\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tdefault set to \"minor\"\n\n\t\tremark:\n\t\t\twhen multiple pipelines update the same chart, the versionIncrement will be applied multiple times.\n\t\t\tmore information on https://github.com/updatecli/updatecli/issues/693" - }, - "appversion": { - "type": "boolean", - "description": "AppVersion defines if a Chart changes, triggers, or not, a Chart AppVersion update.\n\t\tThe value is retrieved from the source input.\n\n\t\tcompatible:\n\t\t\t* target\n\n\t\tdefault\n\t\t\tfalse" - }, - "versionfilter": { - "properties": { - "kind": { - "type": "string", - "description": "specifies the version kind such as semver, regex, or latest" - }, - "pattern": { - "type": "string", - "description": "specifies the version pattern according the version kind\nfor semver, it is a semver constraint\nfor regex, it is a regex pattern\nfor time, it is a date format" - }, - "strict": { - "type": "boolean", - "description": "strict enforce strict versioning rule.\nOnly used for semantic versioning at this time" - }, - "regex": { - "type": "string", - "description": "specifies the regex pattern, used for regex/semver and regex/time.\nOutput of the first capture group will be used." - }, - "replaceall": { - "properties": { - "pattern": { - "type": "string", - "description": "Pattern specifies the regex pattern to match for replacement" - }, - "replacement": { - "type": "string", - "description": "Replacement specifies the replacement string (supports $1, $2, etc. for captured groups)" - } - }, - "additionalProperties": false, - "type": "object", - "description": "replaceAll applies a regex replacement to version strings before filtering.\nThis is useful for transforming versions (e.g., curl-8_15_0 to curl-8.15.0) before regex extraction." - } - }, - "additionalProperties": false, - "type": "object", - "description": "versionfilter provides parameters to specify version pattern and its type like 'regex', 'semver', or just 'latest'.\n\n\t\tcompatible:\n\t\t\t* source\n\n\t\tdefault:\n\t\t\tsemver\n\n\t\tremark:\n\t\t\t* Helm chart uses semver by default." - }, - "username": { - "type": "string", - "description": "username specifies the container registry username to use for authentication.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tby default credentials are fetch from the local environment such as `~/.docker/config.json`.\n\n\t\tremark:\n\t\t\tNot compatible with token" - }, - "password": { - "type": "string", - "description": "password specifies the container registry password to use for authentication. Not compatible with token\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tby default credentials are fetch from the local environment such as `~/.docker/config.json`.\n\n\t\tremark:\n\t\t\tNot compatible with token" - }, - "token": { - "type": "string", - "description": "token specifies the container registry token to use for authentication.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tby default credentials are fetch from the local environment such as `~/.docker/config.json`.\n\n\t\tremark:\n\t\t\tNot compatible with username/password" + "description": "[s][c] Defines a specific release version (condition only)" } }, "additionalProperties": false, "type": "object", - "description": "Spec defines a specification for an \"helmchart\" resource parsed from an updatecli manifest file" + "description": "Spec defines a specification for a \"jenkins\" resource parsed from an updatecli manifest file" }, "scmid": { "type": "string", @@ -17797,6 +19429,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -17816,7 +19449,7 @@ }, "kind": { "enum": [ - "http" + "json" ] }, "transformers": { @@ -17953,62 +19586,74 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "url": { + "engine": { "type": "string", - "description": "[S][C] Specifies the URL of the HTTP request for this resource." + "description": "default:\n * \"dasel/v1\" is the default engine used to manipulate json files\n\naccepted values:\n * \"dasel/v1\" for dasel v1 engine\n * \"dasel/v2\" for dasel v2 engine\n * \"dasel\" for the latest dasel engine which is currently dasel v2" }, - "returnresponseheader": { + "file": { "type": "string", - "description": "[S] Specifies the header to return as source value (instead of the body)." + "description": "remark:\n * \"file\" and \"files\" are mutually exclusive\n * scheme \"https://\", \"http://\", and \"file://\" are supported in path for source and condition" }, - "request": { + "files": { + "items": { + "type": "string" + }, + "type": "array", + "description": "remark:\n * \"file\" and \"files\" are mutually exclusive\n * scheme \"https://\", \"http://\", and \"file://\" are supported in path for source and condition" + }, + "key": { + "type": "string", + "description": "key defines the Jsonpath key to manipulate.\n\ncompatible:\n * source\n\t* condition\n\t* target\n\nremark:\n\t* key is a simpler version of Jsonpath accepts keys.\n\t* key accepts Dasel query, more information on https://github.com/tomwright/dasel\n * key accepts values based on the engine used\n\nexample:\n\t* key: $.name\n\t* key: name\n\t* file: https://nodejs.org/dist/index.json\n\t key: .(lts!=false).version" + }, + "value": { + "type": "string", + "description": "value defines the Jsonpath key value to manipulate. Default to source output.\n\ncompatible:\n * condition\n\t* target\n\ndefault:\n\twhen used for a condition or a target, the default value is the output of the source." + }, + "query": { + "type": "string", + "description": "query defines the Jsonpath query to manipulate. It accepts advanced Dasel v1 query\nthis parameter is now deprecated in Dasel v2 and replaced by the parameter \"key\".\n\ncompatible:\n\t* source\n\t* condition\n\t* target\n\nexample:\n\t* query: .name\n\t* query: \".[*].tag_name\"\n\nremark:\n\t* query accepts Dasel query, more information on https://github.com/tomwright/dasel" + }, + "versionfilter": { "properties": { - "verb": { + "kind": { "type": "string", - "description": "[S][C] Specifies a custom HTTP request verb. Defaults to \"GET\"." + "description": "specifies the version kind such as semver, regex, or latest" }, - "body": { + "pattern": { "type": "string", - "description": "[S][C] Specifies a custom HTTP request body. Required with POST, PUT, PATCH." - }, - "headers": { - "additionalProperties": { - "type": "string" - }, - "type": "object", - "description": "[S][C] Specifies custom HTTP request headers. Defaults to an empty map." + "description": "specifies the version pattern according the version kind\nfor semver, it is a semver constraint\nfor regex, it is a regex pattern\nfor time, it is a date format" }, - "nofollowredirects": { + "strict": { "type": "boolean", - "description": "[S][C] Specifies whether or not to follow redirects. Default to false (e.g. follow HTTP redirections) unless spec.returnresponseheader is set to true (source only)." - } - }, - "additionalProperties": false, - "type": "object", - "description": "[S][C] Customizes the HTTP request to emit." - }, - "responseasserts": { - "properties": { - "headers": { - "additionalProperties": { - "type": "string" + "description": "strict enforce strict versioning rule.\nOnly used for semantic versioning at this time" + }, + "regex": { + "type": "string", + "description": "specifies the regex pattern, used for regex/semver and regex/time.\nOutput of the first capture group will be used." + }, + "replaceall": { + "properties": { + "pattern": { + "type": "string", + "description": "Pattern specifies the regex pattern to match for replacement" + }, + "replacement": { + "type": "string", + "description": "Replacement specifies the replacement string (supports $1, $2, etc. for captured groups)" + } }, + "additionalProperties": false, "type": "object", - "description": "[C] Specifies a set of assertions on the HTTP response headers." - }, - "statuscode": { - "type": "integer", - "description": "[C] Specifies a custom assertion on the HTTP response status code." + "description": "replaceAll applies a regex replacement to version strings before filtering.\nThis is useful for transforming versions (e.g., curl-8_15_0 to curl-8.15.0) before regex extraction." } }, "additionalProperties": false, - "type": "object", - "description": "[C] Specifies a set of custom assertions on the HTTP response for the condition." + "type": "object" } }, "additionalProperties": false, "type": "object", - "description": "Spec defines a specification for a \"http\" resource parsed from an updatecli manifest file." + "description": "\"json\" defines the specification for manipulating \"json\" files." }, "scmid": { "type": "string", @@ -18027,6 +19672,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -18046,7 +19692,7 @@ }, "kind": { "enum": [ - "jenkins" + "maven" ] }, "transformers": { @@ -18183,18 +19829,75 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "release": { + "url": { + "type": "string", + "description": "Deprecated, please specify the Maven url in the repository" + }, + "repository": { + "type": "string", + "description": "Specifies the maven repository url + name" + }, + "repositories": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Repositories specifies a list of Maven repository where to look for version. Order matter, version is retrieve from the first repository with the last one being Maven Central." + }, + "groupid": { + "type": "string", + "description": "Specifies the maven artifact groupID" + }, + "artifactid": { "type": "string", - "description": "[s][c] Defines the release name. It accepts \"stable\" or \"weekly\"" + "description": "Specifies the maven artifact artifactID" }, "version": { "type": "string", - "description": "[s][c] Defines a specific release version (condition only)" + "description": "Specifies the maven artifact version" + }, + "versionfilter": { + "properties": { + "kind": { + "type": "string", + "description": "specifies the version kind such as semver, regex, or latest" + }, + "pattern": { + "type": "string", + "description": "specifies the version pattern according the version kind\nfor semver, it is a semver constraint\nfor regex, it is a regex pattern\nfor time, it is a date format" + }, + "strict": { + "type": "boolean", + "description": "strict enforce strict versioning rule.\nOnly used for semantic versioning at this time" + }, + "regex": { + "type": "string", + "description": "specifies the regex pattern, used for regex/semver and regex/time.\nOutput of the first capture group will be used." + }, + "replaceall": { + "properties": { + "pattern": { + "type": "string", + "description": "Pattern specifies the regex pattern to match for replacement" + }, + "replacement": { + "type": "string", + "description": "Replacement specifies the replacement string (supports $1, $2, etc. for captured groups)" + } + }, + "additionalProperties": false, + "type": "object", + "description": "replaceAll applies a regex replacement to version strings before filtering.\nThis is useful for transforming versions (e.g., curl-8_15_0 to curl-8.15.0) before regex extraction." + } + }, + "additionalProperties": false, + "type": "object", + "description": "[S] VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." } }, "additionalProperties": false, "type": "object", - "description": "Spec defines a specification for a \"jenkins\" resource parsed from an updatecli manifest file" + "description": "Spec defines a specification for a \"maven\" resource parsed from an updatecli manifest file" }, "scmid": { "type": "string", @@ -18213,6 +19916,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -18232,7 +19936,7 @@ }, "kind": { "enum": [ - "json" + "npm" ] }, "transformers": { @@ -18369,32 +20073,21 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "engine": { - "type": "string", - "description": "default:\n * \"dasel/v1\" is the default engine used to manipulate json files\n\naccepted values:\n * \"dasel/v1\" for dasel v1 engine\n * \"dasel/v2\" for dasel v2 engine\n * \"dasel\" for the latest dasel engine which is currently dasel v2" - }, - "file": { + "name": { "type": "string", - "description": "remark:\n * \"file\" and \"files\" are mutually exclusive\n * scheme \"https://\", \"http://\", and \"file://\" are supported in path for source and condition" - }, - "files": { - "items": { - "type": "string" - }, - "type": "array", - "description": "remark:\n * \"file\" and \"files\" are mutually exclusive\n * scheme \"https://\", \"http://\", and \"file://\" are supported in path for source and condition" + "description": "Defines the specific npm package name" }, - "key": { + "version": { "type": "string", - "description": "key defines the Jsonpath key to manipulate.\n\ncompatible:\n * source\n\t* condition\n\t* target\n\nremark:\n\t* key is a simpler version of Jsonpath accepts keys.\n\t* key accepts Dasel query, more information on https://github.com/tomwright/dasel\n * key accepts values based on the engine used\n\nexample:\n\t* key: $.name\n\t* key: name\n\t* file: https://nodejs.org/dist/index.json\n\t key: .(lts!=false).version" + "description": "Defines a specific package version" }, - "value": { + "url": { "type": "string", - "description": "value defines the Jsonpath key value to manipulate. Default to source output.\n\ncompatible:\n * condition\n\t* target\n\ndefault:\n\twhen used for a condition or a target, the default value is the output of the source." + "description": "URL defines the registry url (defaults to `https://registry.npmjs.org/`)" }, - "query": { + "registrytoken": { "type": "string", - "description": "query defines the Jsonpath query to manipulate. It accepts advanced Dasel v1 query\nthis parameter is now deprecated in Dasel v2 and replaced by the parameter \"key\".\n\ncompatible:\n\t* source\n\t* condition\n\t* target\n\nexample:\n\t* query: .name\n\t* query: \".[*].tag_name\"\n\nremark:\n\t* query accepts Dasel query, more information on https://github.com/tomwright/dasel" + "description": "RegistryToken defines the token to use when connection to the registry" }, "versionfilter": { "properties": { @@ -18431,12 +20124,17 @@ } }, "additionalProperties": false, - "type": "object" + "type": "object", + "description": "VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." + }, + "npmrcpath": { + "type": "string", + "description": "NpmrcPath defines the path to the .npmrc file" } }, "additionalProperties": false, "type": "object", - "description": "\"json\" defines the specification for manipulating \"json\" files." + "description": "Spec defines a specification for an Npm package parsed from an updatecli manifest file" }, "scmid": { "type": "string", @@ -18455,6 +20153,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -18474,7 +20173,7 @@ }, "kind": { "enum": [ - "maven" + "shell" ] }, "transformers": { @@ -18611,75 +20310,135 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "url": { - "type": "string", - "description": "Deprecated, please specify the Maven url in the repository" - }, - "repository": { - "type": "string", - "description": "Specifies the maven repository url + name" + "command": { + "type": "string" }, - "repositories": { + "environments": { "items": { - "type": "string" + "properties": { + "name": { + "type": "string", + "description": "Name defines the environment variable name" + }, + "value": { + "type": "string", + "description": "Value defines the environment variable value" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "name" + ], + "description": "Environment is a struct containing information for an environment variable such as its name and its value" }, "type": "array", - "description": "Repositories specifies a list of Maven repository where to look for version. Order matter, version is retrieve from the first repository with the last one being Maven Central." - }, - "groupid": { - "type": "string", - "description": "Specifies the maven artifact groupID" - }, - "artifactid": { - "type": "string", - "description": "Specifies the maven artifact artifactID" - }, - "version": { - "type": "string", - "description": "Specifies the maven artifact version" + "description": "environments allows to pass environment variable(s) to the shell script.\n\n default:\n If environments is unset then it depends on the operating system.\n - Windows: [\"PATH\",\"\", \"PSModulePath\", \"PSModuleAnalysisCachePath\", \"\", \"PATHEXT\", \"\", \"TEMP\", \"\", \"HOME\", \"\", \"USERPROFILE\", \"\", \"PROFILE\"]\n - Darwin/Linux: [\"PATH\", \"\", \"HOME\", \"\", \"USER\", \"\", \"LOGNAME\", \"\", \"SHELL\", \"\", \"LANG\", \"\", \"LC_ALL\"]\n\nremark:\n For security reason, Updatecli doesn't pass the entire environment to the shell command but instead works\n with an allow list of environment variables." }, - "versionfilter": { - "properties": { - "kind": { - "type": "string", - "description": "specifies the version kind such as semver, regex, or latest" - }, - "pattern": { - "type": "string", - "description": "specifies the version pattern according the version kind\nfor semver, it is a semver constraint\nfor regex, it is a regex pattern\nfor time, it is a date format" - }, - "strict": { - "type": "boolean", - "description": "strict enforce strict versioning rule.\nOnly used for semantic versioning at this time" + "changedif": { + "oneOf": [ + { + "$schema": "http://json-schema.org/draft-04/schema", + "properties": { + "kind": { + "enum": [ + "console/output" + ] + }, + "spec": { + "$schema": "http://json-schema.org/draft-04/schema", + "properties": {}, + "additionalProperties": false, + "type": "object", + "description": "Spec is an empty struct used as a placeholder for the jsonschema." + } + }, + "additionalProperties": false, + "type": "object" }, - "regex": { - "type": "string", - "description": "specifies the regex pattern, used for regex/semver and regex/time.\nOutput of the first capture group will be used." + { + "$schema": "http://json-schema.org/draft-04/schema", + "properties": { + "kind": { + "enum": [ + "exitcode" + ] + }, + "spec": { + "$schema": "http://json-schema.org/draft-04/schema", + "properties": { + "warning": { + "type": "integer", + "description": "Warning defines the command exit code used by Updatecli to identify a change need. Default to 2 if no exitcode have been specified" + }, + "success": { + "type": "integer", + "description": "Success defines the command exit code used by Updatecli to identify no changes are needed. Default to 0 if no exitcode have been specified" + }, + "failure": { + "type": "integer", + "description": "Failure defines the command exit code used by Updatecli to identify that something went wrong. Default to 1 if no exitcode have been specified" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "warning", + "success", + "failure" + ] + } + }, + "additionalProperties": false, + "type": "object" }, - "replaceall": { + { + "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "pattern": { - "type": "string", - "description": "Pattern specifies the regex pattern to match for replacement" + "kind": { + "enum": [ + "file/checksum" + ] }, - "replacement": { - "type": "string", - "description": "Replacement specifies the replacement string (supports $1, $2, etc. for captured groups)" + "spec": { + "$schema": "http://json-schema.org/draft-04/schema", + "properties": { + "files": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Files specifies the list of file that Updatecli monitors to identify state change" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "files" + ] } }, "additionalProperties": false, - "type": "object", - "description": "replaceAll applies a regex replacement to version strings before filtering.\nThis is useful for transforming versions (e.g., curl-8_15_0 to curl-8.15.0) before regex extraction." + "type": "object" } - }, - "additionalProperties": false, - "type": "object", - "description": "[S] VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." + ], + "description": "ChangedIf defines how to interpret shell command execution.\nWhat a success means, what an error means, and what a warning would mean in the context of Updatecli.\n\nPlease note that in the context of Updatecli,\n - a success means nothing changed\n - a warning means something changed\n - an error means something went wrong\n\nChangedif can be of kind \"exitcode\", \"console/output\", or \"file/checksum\"\n\n \"console/output\" (default)\n Check the output of the command to identify if Updatecli should report a success, a warning, or an error.\n If a target returns anything to stdout, Updatecli interprets it as a something changed, otherwise it's a success.\n\n example:\n\n ---\n targets:\n default:\n name: 'doc: synchronize release note'\n kind: 'shell'\n disablesourceinput: true\n spec:\n command: 'releasepost --dry-run=\"$DRY_RUN\" --config {{ .config }} --clean'\n ---\n\n \"exitcode\":\n Check the exit code of the command to identify if Updatecli should report a success, a warning, or an error.\n\n example:\n\n ---\n targets:\n default:\n name: 'doc: synchronize release note'\n kind: 'shell'\n disablesourceinput: true\n spec:\n command: 'releasepost --dry-run=\"$DRY_RUN\" --config {{ .config }} --clean'\n environments:\n - name: 'GITHUB_TOKEN'\n - name: 'PATH'\n changedif:\n kind: 'exitcode'\n spec:\n warning: 0\n success: 1\n failure: 2\n ---\n\n \"file/checksum\":\n Check the checksum of file(s) to identify if Updatecli should report a success, a warning, or an error.\n\n example:\n\n ---\n targets:\n default:\n disablesourceinput: true\n name: Example of a shell command with a checksum success criteria\n kind: shell\n spec:\n command: |\n \t \t yq -i '.a.b[0].c = \"cool\"' file.yaml\n changedif:\n kind: file/checksum\n spec:\n files:\n - file.yaml\n ---" + }, + "shell": { + "type": "string", + "description": "Shell specifies which shell interpreter to use.\n\ndefault:\n Depends on the operating system:\n - Windows: \"powershell\"\n - Darwin/Linux: \"/bin/sh\"" + }, + "workdir": { + "type": "string", + "description": "workdir specifies the working directory path from where to execute the command. It defaults to the current context path (scm or current shell). Updatecli join the current path and the one specified in parameter if the parameter one contains a relative path.\n\ndefault: If a scmid is specified then the default" } }, "additionalProperties": false, "type": "object", - "description": "Spec defines a specification for a \"maven\" resource parsed from an updatecli manifest file" + "required": [ + "command" + ], + "description": "Spec defines a specification for a \"shell\" resource parsed from an updatecli manifest file" }, "scmid": { "type": "string", @@ -18698,6 +20457,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -18717,7 +20477,7 @@ }, "kind": { "enum": [ - "npm" + "stash/branch" ] }, "transformers": { @@ -18854,21 +20614,29 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "name": { + "url": { + "type": "string", + "description": "\"url\" specifies the default stash url in case of Bitbucket Server" + }, + "username": { + "type": "string", + "description": "\"username\" specifies the username used to authenticate with Bitbucket Server API" + }, + "token": { "type": "string", - "description": "Defines the specific npm package name" + "description": "\"token\" specifies the credential used to authenticate with Bitbucket Server API\n\n remark:\n A token is a sensitive information, it's recommended to not set this value directly in the configuration file\n but to use an environment variable or a SOPS file.\n\n The value can be set to `{{ requiredEnv \"BITBUCKET_TOKEN\"}}` to retrieve the token from the environment variable `BITBUCKET_TOKEN`\n\t or `{{ .bitbucket.token }}` to retrieve the token from a SOPS file.\n\n\t For more information, about a SOPS file, please refer to the following documentation:\n https://github.com/getsops/sops" }, - "version": { + "password": { "type": "string", - "description": "Defines a specific package version" + "description": "\"password\" specifies the credential used to authenticate with Bitbucket Server API, it must be combined with \"username\"\n\n remark:\n A token is a sensitive information, it's recommended to not set this value directly in the configuration file\n but to use an environment variable or a SOPS file.\n\n The value can be set to `{{ requiredEnv \"BITBUCKET_TOKEN\"}}` to retrieve the token from the environment variable `BITBUCKET_TOKEN`\n\t or `{{ .bitbucket.token }}` to retrieve the token from a SOPS file.\n\n\t For more information, about a SOPS file, please refer to the following documentation:\n https://github.com/getsops/sops" }, - "url": { + "owner": { "type": "string", - "description": "URL defines the registry url (defaults to `https://registry.npmjs.org/`)" + "description": "[S][C] Owner specifies repository owner" }, - "registrytoken": { + "repository": { "type": "string", - "description": "RegistryToken defines the token to use when connection to the registry" + "description": "[S][C] Repository specifies the name of a repository for a specific owner" }, "versionfilter": { "properties": { @@ -18906,16 +20674,21 @@ }, "additionalProperties": false, "type": "object", - "description": "VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." + "description": "[S] VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." }, - "npmrcpath": { + "branch": { "type": "string", - "description": "NpmrcPath defines the path to the .npmrc file" + "description": "[C] Branch specifies the branch name" } }, "additionalProperties": false, "type": "object", - "description": "Spec defines a specification for an Npm package parsed from an updatecli manifest file" + "required": [ + "url", + "owner", + "repository" + ], + "description": "Spec defines settings used to interact with Bitbucket Server release" }, "scmid": { "type": "string", @@ -18934,6 +20707,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -18953,7 +20727,7 @@ }, "kind": { "enum": [ - "shell" + "stash/tag" ] }, "transformers": { @@ -19090,129 +20864,81 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "command": { - "type": "string" + "url": { + "type": "string", + "description": "\"url\" specifies the default stash url in case of Bitbucket Server" }, - "environments": { - "items": { - "properties": { - "name": { - "type": "string", - "description": "Name defines the environment variable name" - }, - "value": { - "type": "string", - "description": "Value defines the environment variable value" - } - }, - "additionalProperties": false, - "type": "object", - "required": [ - "name" - ], - "description": "Environment is a struct containing information for an environment variable such as its name and its value" - }, - "type": "array", - "description": "environments allows to pass environment variable(s) to the shell script.\n\n default:\n If environments is unset then it depends on the operating system.\n - Windows: [\"PATH\",\"\", \"PSModulePath\", \"PSModuleAnalysisCachePath\", \"\", \"PATHEXT\", \"\", \"TEMP\", \"\", \"HOME\", \"\", \"USERPROFILE\", \"\", \"PROFILE\"]\n - Darwin/Linux: [\"PATH\", \"\", \"HOME\", \"\", \"USER\", \"\", \"LOGNAME\", \"\", \"SHELL\", \"\", \"LANG\", \"\", \"LC_ALL\"]\n\nremark:\n For security reason, Updatecli doesn't pass the entire environment to the shell command but instead works\n with an allow list of environment variables." + "username": { + "type": "string", + "description": "\"username\" specifies the username used to authenticate with Bitbucket Server API" }, - "changedif": { - "oneOf": [ - { - "$schema": "http://json-schema.org/draft-04/schema", - "properties": { - "kind": { - "enum": [ - "console/output" - ] - }, - "spec": true - }, - "additionalProperties": false, - "type": "object" + "token": { + "type": "string", + "description": "\"token\" specifies the credential used to authenticate with Bitbucket Server API\n\n remark:\n A token is a sensitive information, it's recommended to not set this value directly in the configuration file\n but to use an environment variable or a SOPS file.\n\n The value can be set to `{{ requiredEnv \"BITBUCKET_TOKEN\"}}` to retrieve the token from the environment variable `BITBUCKET_TOKEN`\n\t or `{{ .bitbucket.token }}` to retrieve the token from a SOPS file.\n\n\t For more information, about a SOPS file, please refer to the following documentation:\n https://github.com/getsops/sops" + }, + "password": { + "type": "string", + "description": "\"password\" specifies the credential used to authenticate with Bitbucket Server API, it must be combined with \"username\"\n\n remark:\n A token is a sensitive information, it's recommended to not set this value directly in the configuration file\n but to use an environment variable or a SOPS file.\n\n The value can be set to `{{ requiredEnv \"BITBUCKET_TOKEN\"}}` to retrieve the token from the environment variable `BITBUCKET_TOKEN`\n\t or `{{ .bitbucket.token }}` to retrieve the token from a SOPS file.\n\n\t For more information, about a SOPS file, please refer to the following documentation:\n https://github.com/getsops/sops" + }, + "owner": { + "type": "string", + "description": "[S][C] Owner specifies repository owner" + }, + "repository": { + "type": "string", + "description": "[S][C] Repository specifies the name of a repository for a specific owner" + }, + "versionfilter": { + "properties": { + "kind": { + "type": "string", + "description": "specifies the version kind such as semver, regex, or latest" }, - { - "$schema": "http://json-schema.org/draft-04/schema", - "properties": { - "kind": { - "enum": [ - "exitcode" - ] - }, - "spec": { - "$schema": "http://json-schema.org/draft-04/schema", - "properties": { - "warning": { - "type": "integer", - "description": "Warning defines the command exit code used by Updatecli to identify a change need. Default to 2 if no exitcode have been specified" - }, - "success": { - "type": "integer", - "description": "Success defines the command exit code used by Updatecli to identify no changes are needed. Default to 0 if no exitcode have been specified" - }, - "failure": { - "type": "integer", - "description": "Failure defines the command exit code used by Updatecli to identify that something went wrong. Default to 1 if no exitcode have been specified" - } - }, - "additionalProperties": false, - "type": "object", - "required": [ - "warning", - "success", - "failure" - ] - } - }, - "additionalProperties": false, - "type": "object" + "pattern": { + "type": "string", + "description": "specifies the version pattern according the version kind\nfor semver, it is a semver constraint\nfor regex, it is a regex pattern\nfor time, it is a date format" }, - { - "$schema": "http://json-schema.org/draft-04/schema", + "strict": { + "type": "boolean", + "description": "strict enforce strict versioning rule.\nOnly used for semantic versioning at this time" + }, + "regex": { + "type": "string", + "description": "specifies the regex pattern, used for regex/semver and regex/time.\nOutput of the first capture group will be used." + }, + "replaceall": { "properties": { - "kind": { - "enum": [ - "file/checksum" - ] + "pattern": { + "type": "string", + "description": "Pattern specifies the regex pattern to match for replacement" }, - "spec": { - "$schema": "http://json-schema.org/draft-04/schema", - "properties": { - "files": { - "items": { - "type": "string" - }, - "type": "array", - "description": "Files specifies the list of file that Updatecli monitors to identify state change" - } - }, - "additionalProperties": false, - "type": "object", - "required": [ - "files" - ] + "replacement": { + "type": "string", + "description": "Replacement specifies the replacement string (supports $1, $2, etc. for captured groups)" } }, "additionalProperties": false, - "type": "object" + "type": "object", + "description": "replaceAll applies a regex replacement to version strings before filtering.\nThis is useful for transforming versions (e.g., curl-8_15_0 to curl-8.15.0) before regex extraction." } - ], - "description": "ChangedIf defines how to interpret shell command execution.\nWhat a success means, what an error means, and what a warning would mean in the context of Updatecli.\n\nPlease note that in the context of Updatecli,\n - a success means nothing changed\n - a warning means something changed\n - an error means something went wrong\n\nChangedif can be of kind \"exitcode\", \"console/output\", or \"file/checksum\"\n\n \"console/output\" (default)\n Check the output of the command to identify if Updatecli should report a success, a warning, or an error.\n If a target returns anything to stdout, Updatecli interprets it as a something changed, otherwise it's a success.\n\n example:\n\n ---\n targets:\n default:\n name: 'doc: synchronize release note'\n kind: 'shell'\n disablesourceinput: true\n spec:\n command: 'releasepost --dry-run=\"$DRY_RUN\" --config {{ .config }} --clean'\n ---\n\n \"exitcode\":\n Check the exit code of the command to identify if Updatecli should report a success, a warning, or an error.\n\n example:\n\n ---\n targets:\n default:\n name: 'doc: synchronize release note'\n kind: 'shell'\n disablesourceinput: true\n spec:\n command: 'releasepost --dry-run=\"$DRY_RUN\" --config {{ .config }} --clean'\n environments:\n - name: 'GITHUB_TOKEN'\n - name: 'PATH'\n changedif:\n kind: 'exitcode'\n spec:\n warning: 0\n success: 1\n failure: 2\n ---\n\n \"file/checksum\":\n Check the checksum of file(s) to identify if Updatecli should report a success, a warning, or an error.\n\n example:\n\n ---\n targets:\n default:\n disablesourceinput: true\n name: Example of a shell command with a checksum success criteria\n kind: shell\n spec:\n command: |\n \t \t yq -i '.a.b[0].c = \"cool\"' file.yaml\n changedif:\n kind: file/checksum\n spec:\n files:\n - file.yaml\n ---" - }, - "shell": { - "type": "string", - "description": "Shell specifies which shell interpreter to use.\n\ndefault:\n Depends on the operating system:\n - Windows: \"powershell\"\n - Darwin/Linux: \"/bin/sh\"" + }, + "additionalProperties": false, + "type": "object", + "description": "[S][C] VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." }, - "workdir": { + "tag": { "type": "string", - "description": "workdir specifies the working directory path from where to execute the command. It defaults to the current context path (scm or current shell). Updatecli join the current path and the one specified in parameter if the parameter one contains a relative path.\n\ndefault: If a scmid is specified then the default" + "description": "[S] Tag defines the Bitbucket tag ." } }, "additionalProperties": false, "type": "object", "required": [ - "command" + "url", + "owner", + "repository" ], - "description": "Spec defines a specification for a \"shell\" resource parsed from an updatecli manifest file" + "description": "Spec defines settings used to interact with Bitbucket Server release" }, "scmid": { "type": "string", @@ -19231,6 +20957,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -19250,7 +20977,7 @@ }, "kind": { "enum": [ - "stash/branch" + "temurin" ] }, "transformers": { @@ -19387,81 +21114,52 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "url": { - "type": "string", - "description": "\"url\" specifies the default stash url in case of Bitbucket Server" - }, - "username": { - "type": "string", - "description": "\"username\" specifies the username used to authenticate with Bitbucket Server API" - }, - "token": { - "type": "string", - "description": "\"token\" specifies the credential used to authenticate with Bitbucket Server API\n\n remark:\n A token is a sensitive information, it's recommended to not set this value directly in the configuration file\n but to use an environment variable or a SOPS file.\n\n The value can be set to `{{ requiredEnv \"BITBUCKET_TOKEN\"}}` to retrieve the token from the environment variable `BITBUCKET_TOKEN`\n\t or `{{ .bitbucket.token }}` to retrieve the token from a SOPS file.\n\n\t For more information, about a SOPS file, please refer to the following documentation:\n https://github.com/getsops/sops" - }, - "password": { - "type": "string", - "description": "\"password\" specifies the credential used to authenticate with Bitbucket Server API, it must be combined with \"username\"\n\n remark:\n A token is a sensitive information, it's recommended to not set this value directly in the configuration file\n but to use an environment variable or a SOPS file.\n\n The value can be set to `{{ requiredEnv \"BITBUCKET_TOKEN\"}}` to retrieve the token from the environment variable `BITBUCKET_TOKEN`\n\t or `{{ .bitbucket.token }}` to retrieve the token from a SOPS file.\n\n\t For more information, about a SOPS file, please refer to the following documentation:\n https://github.com/getsops/sops" - }, - "owner": { - "type": "string", - "description": "[S][C] Owner specifies repository owner" - }, - "repository": { - "type": "string", - "description": "[S][C] Repository specifies the name of a repository for a specific owner" - }, - "versionfilter": { - "properties": { - "kind": { - "type": "string", - "description": "specifies the version kind such as semver, regex, or latest" - }, - "pattern": { - "type": "string", - "description": "specifies the version pattern according the version kind\nfor semver, it is a semver constraint\nfor regex, it is a regex pattern\nfor time, it is a date format" - }, - "strict": { - "type": "boolean", - "description": "strict enforce strict versioning rule.\nOnly used for semantic versioning at this time" - }, - "regex": { - "type": "string", - "description": "specifies the regex pattern, used for regex/semver and regex/time.\nOutput of the first capture group will be used." - }, - "replaceall": { - "properties": { - "pattern": { - "type": "string", - "description": "Pattern specifies the regex pattern to match for replacement" - }, - "replacement": { - "type": "string", - "description": "Replacement specifies the replacement string (supports $1, $2, etc. for captured groups)" - } - }, - "additionalProperties": false, - "type": "object", - "description": "replaceAll applies a regex replacement to version strings before filtering.\nThis is useful for transforming versions (e.g., curl-8_15_0 to curl-8.15.0) before regex extraction." - } - }, - "additionalProperties": false, - "type": "object", - "description": "[S] VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." + "releaseline": { + "type": "string", + "description": "ReleaseLine specifies the line of Temurin release to retrieve.\n\ndefault: \"lts\"\n\nAllowed values:\n* \"lts\"\n* \"feature\"" }, - "branch": { + "releasetype": { "type": "string", - "description": "[C] Branch specifies the branch name" + "description": "ReleaseType specifies the type of Temurin release to retrieve.\n\ndefault: \"ga\"\n\nAllowed values:\n* \"ga\" (General Availability)\n* \"ea\" (Early Availability, e.g. nightly builds)" + }, + "featureversion": { + "type": "integer", + "description": "FeatureVersion specifies the Major Java version to filter the Temurin release to retrieve.\n\ndefault: undefined\n\nAllowed values: integer number (8, 11, 17, 21, etc.)" + }, + "result": { + "type": "string", + "description": "Result specifies the type of value returned by the retrieved Temurin release.\n\ndefault: \"version\"\n\nAllowed values:\n* \"version\" (Version Name, e.g. the Temurin SCM release name)\n* \"installer_url\" (HTTP URL to the binary release/installer)\n* \"checksum_url\" (HTTP URL to the checksum file)\n* \"signature_url\" (HTTP URL to the signature file)" + }, + "architecture": { + "type": "string", + "description": "Architecture specifies the CPU architecture (as defined by the Temurin API - https://api.adoptium.net/q/swagger-ui/#/Types)\nto filter the Temurin release to retrieve.\n\ndefault: \"x64\"\n\nAllowed values:\n* \"x64\" (Intel/AMD 64 Bits)\n* \"x86\" (Intel/AMD 32 Bits)\n* \"ppc64\" (PowerPC 64 Bits)\n* \"ppc64le\" (PowerPC Little Endian 64 Bits)\n* \"s390x\" (IBM Z)\n* \"aarch64\" (ARM 64 Bits)\n* \"arm\" (ARM 32 Bits)\n* \"sparcv9\" (Sparc 64 Bits)\n* \"riscv64\" (RiscV 64 Bits)" + }, + "imagetype": { + "type": "string", + "description": "ImageType specifies the type of artifact to filter the Temurin release to retrieve.\n\ndefault: \"jdk\"\n\nAllowed values:\n* \"jdk\"\n* \"jre\"\n* \"testimage\"\n* \"debugimage\"\n* \"staticlibs\"\n* \"source\n* \"sbom\"" + }, + "operatingsystem": { + "type": "string", + "description": "OperatingSystem specifies the Operating System (as defined by the Temurin API - https://api.adoptium.net/q/swagger-ui/#/Types)\nto filter the Temurin release to retrieve.\n\ndefault: \"linux\"\n\nAllowed values:\n* \"linux\"\n* \"windows\"\n* \"mac\"\n* \"solaris\"\n* \"aix\"\n* \"alpine-linux\"" + }, + "specificversion": { + "type": "string", + "description": "SpecificVersion specifies the exact Temurin version to filter the Temurin release to retrieve.\nIgnores FeatureVersion when used.\n\ndefault: undefined\n\nAllowed values: string (can be a semantic version, a JDK version or a Temurin release name)" + }, + "project": { + "type": "string", + "description": "Project specifies the project to filter the Temurin release to retrieve.\n\ndefault: \"jdk\"\n\nAllowed values:\n* \"jdk\" (default)\n* \"valhalla\"\n* \"metropolis\"\n* \"jfr\"\n* \"shenandoah\"" + }, + "platforms": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Platforms is only valid within conditions. It specifies a collection of platforms as a filter for Temurin releases.\nEach platform must be a combination of an Operating System and a CPU architecture separated by the slash (`/`) character.\n\ndefault: empty list (e.g. no filtering per platform).\n\nAllowed values: Any combination of Operating System and Architecture as defined by the Temurin API (https://api.adoptium.net/q/swagger-ui/#/Types):\n* `linux/x64`\n* `linux/aarch64`\n* `linux/s390x`\n* `alpine-linux/x64`\n* `windows/x64`\n..." } }, "additionalProperties": false, - "type": "object", - "required": [ - "url", - "owner", - "repository" - ], - "description": "Spec defines settings used to interact with Bitbucket Server release" + "type": "object" }, "scmid": { "type": "string", @@ -19480,6 +21178,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -19499,7 +21198,7 @@ }, "kind": { "enum": [ - "stash/tag" + "terraform/file" ] }, "transformers": { @@ -19636,81 +21335,29 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "url": { - "type": "string", - "description": "\"url\" specifies the default stash url in case of Bitbucket Server" - }, - "username": { - "type": "string", - "description": "\"username\" specifies the username used to authenticate with Bitbucket Server API" - }, - "token": { - "type": "string", - "description": "\"token\" specifies the credential used to authenticate with Bitbucket Server API\n\n remark:\n A token is a sensitive information, it's recommended to not set this value directly in the configuration file\n but to use an environment variable or a SOPS file.\n\n The value can be set to `{{ requiredEnv \"BITBUCKET_TOKEN\"}}` to retrieve the token from the environment variable `BITBUCKET_TOKEN`\n\t or `{{ .bitbucket.token }}` to retrieve the token from a SOPS file.\n\n\t For more information, about a SOPS file, please refer to the following documentation:\n https://github.com/getsops/sops" - }, - "password": { + "file": { "type": "string", - "description": "\"password\" specifies the credential used to authenticate with Bitbucket Server API, it must be combined with \"username\"\n\n remark:\n A token is a sensitive information, it's recommended to not set this value directly in the configuration file\n but to use an environment variable or a SOPS file.\n\n The value can be set to `{{ requiredEnv \"BITBUCKET_TOKEN\"}}` to retrieve the token from the environment variable `BITBUCKET_TOKEN`\n\t or `{{ .bitbucket.token }}` to retrieve the token from a SOPS file.\n\n\t For more information, about a SOPS file, please refer to the following documentation:\n https://github.com/getsops/sops" + "description": "\"file\" defines the hcl file path to interact with.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tremark:\n\t\t\t* \"file\" and \"files\" are mutually exclusive\n\t\t\t* protocols \"https://\", \"http://\", and \"file://\" are supported in path for source and condition" }, - "owner": { - "type": "string", - "description": "[S][C] Owner specifies repository owner" + "files": { + "items": { + "type": "string" + }, + "type": "array", + "description": "\"files\" defines the list of hcl files path to interact with.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tremark:\n\t\t\t* file and files are mutually exclusive\n\t\t\t* when using as a source only one file is supported\n\t\t\t* protocols \"https://\", \"http://\", and \"file://\" are supported in file path for source and condition" }, - "repository": { + "path": { "type": "string", - "description": "[S][C] Repository specifies the name of a repository for a specific owner" - }, - "versionfilter": { - "properties": { - "kind": { - "type": "string", - "description": "specifies the version kind such as semver, regex, or latest" - }, - "pattern": { - "type": "string", - "description": "specifies the version pattern according the version kind\nfor semver, it is a semver constraint\nfor regex, it is a regex pattern\nfor time, it is a date format" - }, - "strict": { - "type": "boolean", - "description": "strict enforce strict versioning rule.\nOnly used for semantic versioning at this time" - }, - "regex": { - "type": "string", - "description": "specifies the regex pattern, used for regex/semver and regex/time.\nOutput of the first capture group will be used." - }, - "replaceall": { - "properties": { - "pattern": { - "type": "string", - "description": "Pattern specifies the regex pattern to match for replacement" - }, - "replacement": { - "type": "string", - "description": "Replacement specifies the replacement string (supports $1, $2, etc. for captured groups)" - } - }, - "additionalProperties": false, - "type": "object", - "description": "replaceAll applies a regex replacement to version strings before filtering.\nThis is useful for transforming versions (e.g., curl-8_15_0 to curl-8.15.0) before regex extraction." - } - }, - "additionalProperties": false, - "type": "object", - "description": "[S][C] VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." + "description": "\"path\" defines the hcl attribute path.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\texample:\n\t\t\t* path: resource.aws_instance.app_server.ami\n\t\t\t* path: resource.helm_release.prometheus.version\n\t\t\t* path: plugin.aws.version" }, - "tag": { + "value": { "type": "string", - "description": "[S] Tag defines the Bitbucket tag ." + "description": "\"value\" is the value associated with a hcl path.\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tWhen used from a condition or a target, the default value is set to linked source output." } }, "additionalProperties": false, "type": "object", - "required": [ - "url", - "owner", - "repository" - ], - "description": "Spec defines settings used to interact with Bitbucket Server release" + "description": "\"hcl\" defines the specification for manipulating \"hcl\" files." }, "scmid": { "type": "string", @@ -19729,6 +21376,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -19748,7 +21396,7 @@ }, "kind": { "enum": [ - "temurin" + "terraform/lock" ] }, "transformers": { @@ -19885,52 +21533,40 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "releaseline": { - "type": "string", - "description": "ReleaseLine specifies the line of Temurin release to retrieve.\n\ndefault: \"lts\"\n\nAllowed values:\n* \"lts\"\n* \"feature\"" - }, - "releasetype": { - "type": "string", - "description": "ReleaseType specifies the type of Temurin release to retrieve.\n\ndefault: \"ga\"\n\nAllowed values:\n* \"ga\" (General Availability)\n* \"ea\" (Early Availability, e.g. nightly builds)" - }, - "featureversion": { - "type": "integer", - "description": "FeatureVersion specifies the Major Java version to filter the Temurin release to retrieve.\n\ndefault: undefined\n\nAllowed values: integer number (8, 11, 17, 21, etc.)" - }, - "result": { - "type": "string", - "description": "Result specifies the type of value returned by the retrieved Temurin release.\n\ndefault: \"version\"\n\nAllowed values:\n* \"version\" (Version Name, e.g. the Temurin SCM release name)\n* \"installer_url\" (HTTP URL to the binary release/installer)\n* \"checksum_url\" (HTTP URL to the checksum file)\n* \"signature_url\" (HTTP URL to the signature file)" - }, - "architecture": { - "type": "string", - "description": "Architecture specifies the CPU architecture (as defined by the Temurin API - https://api.adoptium.net/q/swagger-ui/#/Types)\nto filter the Temurin release to retrieve.\n\ndefault: \"x64\"\n\nAllowed values:\n* \"x64\" (Intel/AMD 64 Bits)\n* \"x86\" (Intel/AMD 32 Bits)\n* \"ppc64\" (PowerPC 64 Bits)\n* \"ppc64le\" (PowerPC Little Endian 64 Bits)\n* \"s390x\" (IBM Z)\n* \"aarch64\" (ARM 64 Bits)\n* \"arm\" (ARM 32 Bits)\n* \"sparcv9\" (Sparc 64 Bits)\n* \"riscv64\" (RiscV 64 Bits)" - }, - "imagetype": { + "file": { "type": "string", - "description": "ImageType specifies the type of artifact to filter the Temurin release to retrieve.\n\ndefault: \"jdk\"\n\nAllowed values:\n* \"jdk\"\n* \"jre\"\n* \"testimage\"\n* \"debugimage\"\n* \"staticlibs\"\n* \"source\n* \"sbom\"" + "description": "\"file\" defines the terraform lock file path to interact with.\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target\n\n\t\tremark:\n\t\t\t* \"file\" and \"files\" are mutually exclusive\n\t\t\t* protocols \"https://\", \"http://\", and \"file://\" are supported in path for condition" }, - "operatingsystem": { - "type": "string", - "description": "OperatingSystem specifies the Operating System (as defined by the Temurin API - https://api.adoptium.net/q/swagger-ui/#/Types)\nto filter the Temurin release to retrieve.\n\ndefault: \"linux\"\n\nAllowed values:\n* \"linux\"\n* \"windows\"\n* \"mac\"\n* \"solaris\"\n* \"aix\"\n* \"alpine-linux\"" + "files": { + "items": { + "type": "string" + }, + "type": "array", + "description": "\"files\" defines the list of terraform lock files path to interact with.\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target\n\n\t\tremark:\n\t\t\t* file and files are mutually exclusive\n\t\t\t* when using as a condition only one file is supported\n\t\t\t* protocols \"https://\", \"http://\", and \"file://\" are supported in file path for condition" }, - "specificversion": { + "value": { "type": "string", - "description": "SpecificVersion specifies the exact Temurin version to filter the Temurin release to retrieve.\nIgnores FeatureVersion when used.\n\ndefault: undefined\n\nAllowed values: string (can be a semantic version, a JDK version or a Temurin release name)" + "description": "\"value\" is the value associated with a terraform provider.\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tWhen used from a condition or a target, the default value is set to linked source output." }, - "project": { + "provider": { "type": "string", - "description": "Project specifies the project to filter the Temurin release to retrieve.\n\ndefault: \"jdk\"\n\nAllowed values:\n* \"jdk\" (default)\n* \"valhalla\"\n* \"metropolis\"\n* \"jfr\"\n* \"shenandoah\"" + "description": "\"provider\" is the terraform provider you wish to update, supports with or without registry url.\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target" }, "platforms": { "items": { "type": "string" }, "type": "array", - "description": "Platforms is only valid within conditions. It specifies a collection of platforms as a filter for Temurin releases.\nEach platform must be a combination of an Operating System and a CPU architecture separated by the slash (`/`) character.\n\ndefault: empty list (e.g. no filtering per platform).\n\nAllowed values: Any combination of Operating System and Architecture as defined by the Temurin API (https://api.adoptium.net/q/swagger-ui/#/Types):\n* `linux/x64`\n* `linux/aarch64`\n* `linux/s390x`\n* `alpine-linux/x64`\n* `windows/x64`\n..." + "description": "\"platforms\" is the target platforms to request package checksums for.\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target" + }, + "skipconstraints": { + "type": "boolean", + "description": "\"skipconstraints\" will control whether the constraint in lock file is updated\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target\n\n\t\tNOTE: That turning this off can break the lockfile if version value source does not follow the constraints" } }, "additionalProperties": false, - "type": "object" + "type": "object", + "description": "\"terraform/lock\" defines the specification for manipulating .terraform-lock.hcl files." }, "scmid": { "type": "string", @@ -19949,6 +21585,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -19968,7 +21605,7 @@ }, "kind": { "enum": [ - "terraform/file" + "terraform/provider" ] }, "transformers": { @@ -20107,27 +21744,27 @@ "properties": { "file": { "type": "string", - "description": "\"file\" defines the hcl file path to interact with.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tremark:\n\t\t\t* \"file\" and \"files\" are mutually exclusive\n\t\t\t* protocols \"https://\", \"http://\", and \"file://\" are supported in path for source and condition" + "description": "\"file\" defines the file path to interact with.\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target\n\n\t\tremark:\n\t\t\t* \"file\" and \"files\" are mutually exclusive\n\t\t\t* protocols \"https://\", \"http://\", and \"file://\" are supported in path for condition" }, "files": { "items": { "type": "string" }, "type": "array", - "description": "\"files\" defines the list of hcl files path to interact with.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tremark:\n\t\t\t* file and files are mutually exclusive\n\t\t\t* when using as a source only one file is supported\n\t\t\t* protocols \"https://\", \"http://\", and \"file://\" are supported in file path for source and condition" + "description": "\"files\" defines the list of files path to interact with.\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target\n\n\t\tremark:\n\t\t\t* file and files are mutually exclusive\n\t\t\t* when using as a condition only one file is supported\n\t\t\t* protocols \"https://\", \"http://\", and \"file://\" are supported in file path for condition" }, - "path": { + "value": { "type": "string", - "description": "\"path\" defines the hcl attribute path.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\texample:\n\t\t\t* path: resource.aws_instance.app_server.ami\n\t\t\t* path: resource.helm_release.prometheus.version\n\t\t\t* path: plugin.aws.version" + "description": "\"value\" is the value associated with a terraform provider.\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tWhen used from a condition or a target, the default value is set to linked source output." }, - "value": { + "provider": { "type": "string", - "description": "\"value\" is the value associated with a hcl path.\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tWhen used from a condition or a target, the default value is set to linked source output." + "description": "\"provider\" is the terraform provider you wish to update.\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target" } }, "additionalProperties": false, "type": "object", - "description": "\"hcl\" defines the specification for manipulating \"hcl\" files." + "description": "\"terraform/provider\" defines the specification for manipulating providers in terraform files." }, "scmid": { "type": "string", @@ -20146,6 +21783,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -20165,7 +21803,7 @@ }, "kind": { "enum": [ - "terraform/lock" + "terraform/registry" ] }, "transformers": { @@ -20302,40 +21940,75 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "file": { + "type": { "type": "string", - "description": "\"file\" defines the terraform lock file path to interact with.\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target\n\n\t\tremark:\n\t\t\t* \"file\" and \"files\" are mutually exclusive\n\t\t\t* protocols \"https://\", \"http://\", and \"file://\" are supported in path for condition" + "description": "\"type\" defines the type registry request to look up.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\n\t\tSupported values: module, provider" }, - "files": { - "items": { - "type": "string" - }, - "type": "array", - "description": "\"files\" defines the list of terraform lock files path to interact with.\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target\n\n\t\tremark:\n\t\t\t* file and files are mutually exclusive\n\t\t\t* when using as a condition only one file is supported\n\t\t\t* protocols \"https://\", \"http://\", and \"file://\" are supported in file path for condition" + "hostname": { + "type": "string", + "description": "\"hostname\" the hostname of the provider or module.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\n\t\tremark:\n\t\t\t* Optional\n\t\t\t* Not allowed with rawstring.\n\t\t\t* Applicable for module and provider." }, - "value": { + "namespace": { "type": "string", - "description": "\"value\" is the value associated with a terraform provider.\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tWhen used from a condition or a target, the default value is set to linked source output." + "description": "\"namespace\" the namespace of the provider or module\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\n\t\tremark:\n\t\t\t* Required unless using rawstring\n\t\t\t* Not allowed with rawstring.\n\t\t\t* Applicable for module and provider." }, - "provider": { + "name": { "type": "string", - "description": "\"provider\" is the terraform provider you wish to update, supports with or without registry url.\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target" + "description": "\"name\" the name of the provider or module.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\n\t\tremark:\n\t\t\t* Required unless using rawstring\n\t\t\t* Not allowed with rawstring.\n\t\t\t* Applicable for module and provider." }, - "platforms": { - "items": { - "type": "string" + "targetsystem": { + "type": "string", + "description": "\"targetsystem\" the target system for the module in registry\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\n\t\tremark:\n\t\t\t* Required for type module unless using rawstring\n\t\t\t* Not allowed with rawstring\n\t\t\t* Applicable for module." + }, + "rawstring": { + "type": "string", + "description": "\"rawstring\" provider reference to registry in single string.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\n\t\tExamples:\n\t\t\t* hashicorp/kubernetes\n\t\t\t* registry.terraform.io/hashicorp/kubernetes\n\t\t\t* terraform-aws-modules/vpc/aws\n\t\t\t* app.terraform.io/terraform-aws-modules/vpc/aws\n\n\t\tremark:\n\t\t\t* Applicable for module and provider.\n\t\t\t* Not allowed with hostname, namespace, name, and targetsystem." + }, + "version": { + "type": "string", + "description": "\"version\" defines a specific version to be used during condition check.\n\n\t\tcompatible:\n\t\t\t* condition" + }, + "versionfilter": { + "properties": { + "kind": { + "type": "string", + "description": "specifies the version kind such as semver, regex, or latest" + }, + "pattern": { + "type": "string", + "description": "specifies the version pattern according the version kind\nfor semver, it is a semver constraint\nfor regex, it is a regex pattern\nfor time, it is a date format" + }, + "strict": { + "type": "boolean", + "description": "strict enforce strict versioning rule.\nOnly used for semantic versioning at this time" + }, + "regex": { + "type": "string", + "description": "specifies the regex pattern, used for regex/semver and regex/time.\nOutput of the first capture group will be used." + }, + "replaceall": { + "properties": { + "pattern": { + "type": "string", + "description": "Pattern specifies the regex pattern to match for replacement" + }, + "replacement": { + "type": "string", + "description": "Replacement specifies the replacement string (supports $1, $2, etc. for captured groups)" + } + }, + "additionalProperties": false, + "type": "object", + "description": "replaceAll applies a regex replacement to version strings before filtering.\nThis is useful for transforming versions (e.g., curl-8_15_0 to curl-8.15.0) before regex extraction." + } }, - "type": "array", - "description": "\"platforms\" is the target platforms to request package checksums for.\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target" - }, - "skipconstraints": { - "type": "boolean", - "description": "\"skipconstraints\" will control whether the constraint in lock file is updated\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target\n\n\t\tNOTE: That turning this off can break the lockfile if version value source does not follow the constraints" + "additionalProperties": false, + "type": "object", + "description": "\"versionfilter\" provides parameters to specify version pattern and its type like regex, semver, or just latest.\n\n\t\tcompatible:\n\t\t\t* source" } }, "additionalProperties": false, - "type": "object", - "description": "\"terraform/lock\" defines the specification for manipulating .terraform-lock.hcl files." + "type": "object" }, "scmid": { "type": "string", @@ -20354,6 +22027,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -20373,7 +22047,7 @@ }, "kind": { "enum": [ - "terraform/provider" + "toml" ] }, "transformers": { @@ -20512,27 +22186,72 @@ "properties": { "file": { "type": "string", - "description": "\"file\" defines the file path to interact with.\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target\n\n\t\tremark:\n\t\t\t* \"file\" and \"files\" are mutually exclusive\n\t\t\t* protocols \"https://\", \"http://\", and \"file://\" are supported in path for condition" + "description": "[s][c][t] File specifies the toml file to manipulate" }, "files": { "items": { "type": "string" }, "type": "array", - "description": "\"files\" defines the list of files path to interact with.\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target\n\n\t\tremark:\n\t\t\t* file and files are mutually exclusive\n\t\t\t* when using as a condition only one file is supported\n\t\t\t* protocols \"https://\", \"http://\", and \"file://\" are supported in file path for condition" + "description": "[c][t] Files specifies a list of Json file to manipulate" }, - "value": { + "query": { "type": "string", - "description": "\"value\" is the value associated with a terraform provider.\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\tWhen used from a condition or a target, the default value is set to linked source output." + "description": "[s][c][t] Query allows to used advanced query. Override the parameter key" }, - "provider": { + "key": { "type": "string", - "description": "\"provider\" is the terraform provider you wish to update.\n\n\t\tcompatible:\n\t\t\t* condition\n\t\t\t* target" + "description": "[s][c][t] Key specifies the query to retrieve an information from a toml file" + }, + "value": { + "type": "string", + "description": "[s][c][t] Value specifies the value for a specific key. Default to source output" + }, + "versionfilter": { + "properties": { + "kind": { + "type": "string", + "description": "specifies the version kind such as semver, regex, or latest" + }, + "pattern": { + "type": "string", + "description": "specifies the version pattern according the version kind\nfor semver, it is a semver constraint\nfor regex, it is a regex pattern\nfor time, it is a date format" + }, + "strict": { + "type": "boolean", + "description": "strict enforce strict versioning rule.\nOnly used for semantic versioning at this time" + }, + "regex": { + "type": "string", + "description": "specifies the regex pattern, used for regex/semver and regex/time.\nOutput of the first capture group will be used." + }, + "replaceall": { + "properties": { + "pattern": { + "type": "string", + "description": "Pattern specifies the regex pattern to match for replacement" + }, + "replacement": { + "type": "string", + "description": "Replacement specifies the replacement string (supports $1, $2, etc. for captured groups)" + } + }, + "additionalProperties": false, + "type": "object", + "description": "replaceAll applies a regex replacement to version strings before filtering.\nThis is useful for transforming versions (e.g., curl-8_15_0 to curl-8.15.0) before regex extraction." + } + }, + "additionalProperties": false, + "type": "object", + "description": "[s] VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." + }, + "createmissingkey": { + "type": "boolean", + "description": "[t] CreateMissingKey allows non-existing keys. If the key does not exist, the key is created if AllowsMissingKey\n\t is true, otherwise an error is raised (the default).\n\t Only supported if Key is used" } }, "additionalProperties": false, - "type": "object", - "description": "\"terraform/provider\" defines the specification for manipulating providers in terraform files." + "type": "object" }, "scmid": { "type": "string", @@ -20551,6 +22270,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -20570,7 +22290,7 @@ }, "kind": { "enum": [ - "terraform/registry" + "toolversions" ] }, "transformers": { @@ -20707,71 +22427,28 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "type": { - "type": "string", - "description": "\"type\" defines the type registry request to look up.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\n\t\tSupported values: module, provider" - }, - "hostname": { - "type": "string", - "description": "\"hostname\" the hostname of the provider or module.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\n\t\tremark:\n\t\t\t* Optional\n\t\t\t* Not allowed with rawstring.\n\t\t\t* Applicable for module and provider." - }, - "namespace": { - "type": "string", - "description": "\"namespace\" the namespace of the provider or module\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\n\t\tremark:\n\t\t\t* Required unless using rawstring\n\t\t\t* Not allowed with rawstring.\n\t\t\t* Applicable for module and provider." - }, - "name": { + "file": { "type": "string", - "description": "\"name\" the name of the provider or module.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\n\t\tremark:\n\t\t\t* Required unless using rawstring\n\t\t\t* Not allowed with rawstring.\n\t\t\t* Applicable for module and provider." + "description": "[s][c][t] File specifies the .tool-versions file to manipulate" }, - "targetsystem": { - "type": "string", - "description": "\"targetsystem\" the target system for the module in registry\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\n\t\tremark:\n\t\t\t* Required for type module unless using rawstring\n\t\t\t* Not allowed with rawstring\n\t\t\t* Applicable for module." + "files": { + "items": { + "type": "string" + }, + "type": "array", + "description": "[c][t] Files specifies a list of .tool-versions file to manipulate" }, - "rawstring": { + "key": { "type": "string", - "description": "\"rawstring\" provider reference to registry in single string.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\n\t\tExamples:\n\t\t\t* hashicorp/kubernetes\n\t\t\t* registry.terraform.io/hashicorp/kubernetes\n\t\t\t* terraform-aws-modules/vpc/aws\n\t\t\t* app.terraform.io/terraform-aws-modules/vpc/aws\n\n\t\tremark:\n\t\t\t* Applicable for module and provider.\n\t\t\t* Not allowed with hostname, namespace, name, and targetsystem." + "description": "[s][c][t] Key specifies the query to retrieve an information from a .tool-versions file" }, - "version": { + "value": { "type": "string", - "description": "\"version\" defines a specific version to be used during condition check.\n\n\t\tcompatible:\n\t\t\t* condition" + "description": "[s][c][t] Value specifies the value for a specific key. Default to source output" }, - "versionfilter": { - "properties": { - "kind": { - "type": "string", - "description": "specifies the version kind such as semver, regex, or latest" - }, - "pattern": { - "type": "string", - "description": "specifies the version pattern according the version kind\nfor semver, it is a semver constraint\nfor regex, it is a regex pattern\nfor time, it is a date format" - }, - "strict": { - "type": "boolean", - "description": "strict enforce strict versioning rule.\nOnly used for semantic versioning at this time" - }, - "regex": { - "type": "string", - "description": "specifies the regex pattern, used for regex/semver and regex/time.\nOutput of the first capture group will be used." - }, - "replaceall": { - "properties": { - "pattern": { - "type": "string", - "description": "Pattern specifies the regex pattern to match for replacement" - }, - "replacement": { - "type": "string", - "description": "Replacement specifies the replacement string (supports $1, $2, etc. for captured groups)" - } - }, - "additionalProperties": false, - "type": "object", - "description": "replaceAll applies a regex replacement to version strings before filtering.\nThis is useful for transforming versions (e.g., curl-8_15_0 to curl-8.15.0) before regex extraction." - } - }, - "additionalProperties": false, - "type": "object", - "description": "\"versionfilter\" provides parameters to specify version pattern and its type like regex, semver, or just latest.\n\n\t\tcompatible:\n\t\t\t* source" + "createmissingkey": { + "type": "boolean", + "description": "[t] CreateMissingKey allows non-existing keys. If the key does not exist, the key is created if AllowsMissingKey\n\t is true, otherwise an error is raised (the default).\n\t Only supported if Key is used" } }, "additionalProperties": false, @@ -20794,6 +22471,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -20813,7 +22491,7 @@ }, "kind": { "enum": [ - "toml" + "xml" ] }, "transformers": { @@ -20952,72 +22630,20 @@ "properties": { "file": { "type": "string", - "description": "[s][c][t] File specifies the toml file to manipulate" - }, - "files": { - "items": { - "type": "string" - }, - "type": "array", - "description": "[c][t] Files specifies a list of Json file to manipulate" - }, - "query": { - "type": "string", - "description": "[s][c][t] Query allows to used advanced query. Override the parameter key" + "description": "\"file\" define the xml file path to interact with.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tremark:\n\t\t\t* scheme \"https://\", \"http://\", and \"file://\" are supported in path for source and condition" }, - "key": { + "path": { "type": "string", - "description": "[s][c][t] Key specifies the query to retrieve an information from a toml file" + "description": "\"path\" defines the xpath query used for retrieving value from a XML document\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\texample:\n\t\t\t* path: \"/project/parent/version\"\n\t\t\t* path: \"//breakfast_menu/food[0]/name\"\n\t\t\t* path: \"//book[@category='WEB']/title\"" }, "value": { "type": "string", - "description": "[s][c][t] Value specifies the value for a specific key. Default to source output" - }, - "versionfilter": { - "properties": { - "kind": { - "type": "string", - "description": "specifies the version kind such as semver, regex, or latest" - }, - "pattern": { - "type": "string", - "description": "specifies the version pattern according the version kind\nfor semver, it is a semver constraint\nfor regex, it is a regex pattern\nfor time, it is a date format" - }, - "strict": { - "type": "boolean", - "description": "strict enforce strict versioning rule.\nOnly used for semantic versioning at this time" - }, - "regex": { - "type": "string", - "description": "specifies the regex pattern, used for regex/semver and regex/time.\nOutput of the first capture group will be used." - }, - "replaceall": { - "properties": { - "pattern": { - "type": "string", - "description": "Pattern specifies the regex pattern to match for replacement" - }, - "replacement": { - "type": "string", - "description": "Replacement specifies the replacement string (supports $1, $2, etc. for captured groups)" - } - }, - "additionalProperties": false, - "type": "object", - "description": "replaceAll applies a regex replacement to version strings before filtering.\nThis is useful for transforming versions (e.g., curl-8_15_0 to curl-8.15.0) before regex extraction." - } - }, - "additionalProperties": false, - "type": "object", - "description": "[s] VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest." - }, - "createmissingkey": { - "type": "boolean", - "description": "[t] CreateMissingKey allows non-existing keys. If the key does not exist, the key is created if AllowsMissingKey\n\t is true, otherwise an error is raised (the default).\n\t Only supported if Key is used" + "description": "\"value\" is the value associated with a xpath query.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\twhen used from a condition or a target, the default value is set to linked source output" } }, "additionalProperties": false, - "type": "object" + "type": "object", + "description": "\"xml\" defines the specification for manipulating \"xml\" files." }, "scmid": { "type": "string", @@ -21036,6 +22662,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -21055,7 +22682,7 @@ }, "kind": { "enum": [ - "toolversions" + "yaml" ] }, "transformers": { @@ -21192,32 +22819,56 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { + "documentindex": { + "type": "integer", + "description": "DocumentIndex defines the index of the document to interact with in a multi-document yaml file.\n\ncompatible:\n * source\n * condition\n * target\n\ndefault:\n empty\n\n remark:\n * when not set in the context of a source, the value will be retrieve from the first documents matching query.\n * when not set in the context of a condition or a target, all documents will be evaluated by the query.\n * When not set in the context of a target, all documents will be updated by the query.\n\nexample:\n * documentindex: 0\n * documentindex: 1" + }, + "engine": { + "type": "string", + "description": "\"engine\" defines the engine to use to manipulate the yaml file.\n\nThere is no one good Golang library to manipulate yaml files.\nAnd each one of them have has its pros and cons so we decided to allow this customization based on user's needs.\n\nremark:\n * Accepted value is one of \"yamlpath\", \"go-yaml\",\"default\" or nothing\n * go-yaml, \"default\" and \"\" are equivalent" + }, "file": { "type": "string", - "description": "[s][c][t] File specifies the .tool-versions file to manipulate" + "description": "\"file\" defines the yaml file path to interact with.\n\ncompatible:\n * source\n * condition\n * target\n\nremark:\n * \"file\" and \"files\" are mutually exclusive\n * scheme \"https://\", \"http://\", and \"file://\" are supported in path for source and condition" }, "files": { "items": { "type": "string" }, "type": "array", - "description": "[c][t] Files specifies a list of .tool-versions file to manipulate" + "description": "\"files\" defines the list of yaml files path to interact with.\n\ncompatible:\n * condition\n * target\n\nremark:\n * file and files are mutually exclusive\n * protocols \"https://\", \"http://\", and \"file://\" are supported in file path for source and condition" }, "key": { "type": "string", - "description": "[s][c][t] Key specifies the query to retrieve an information from a .tool-versions file" + "description": "\"key\" defines the yaml keypath.\n\ncompatible:\n * source\n * condition\n * target\n\nremark:\n * key is a simpler version of yamlpath accepts keys.\n\nexample using default engine:\n * key: $.name\n * key: $.agent.name\n * key: $.agents[0].name\n * key: $.agents[*].name\n * key: $.'agents.name'\n * key: $.repos[?(@.repository == 'website')].owner\" (require engine set to yamlpath)\n\nremark:\n field path with key/value is not supported at the moment.\n some help would be useful on https://github.com/goccy/go-yaml/issues/290" + }, + "keys": { + "items": { + "type": "string" + }, + "type": "array", + "description": "\"keys\" defines multiple yaml keypaths to update with the same value.\n\ncompatible:\n * target\n\nremark:\n * keys is mutually exclusive with key.\n * keys accepts the same syntax as key for each element.\n * all keys will be updated with the same value.\n * only available for target operations, not for source or condition.\n\nexample using default engine:\n * keys:\n - $.image.tag\n - $.sidecar.tag\n * keys:\n - $.agents[0].version\n - $.agents[1].version" }, "value": { "type": "string", - "description": "[s][c][t] Value specifies the value for a specific key. Default to source output" + "description": "value is the value associated with a yaml key.\n\ncompatible:\n * source\n * condition\n * target\n\ndefault:\n\tWhen used from a condition or a target, the default value is set to the associated source output." + }, + "keyonly": { + "type": "boolean", + "description": "keyonly allows to check only if a key exist and do not return an error otherwise\n\ncompatible:\n\t* condition\n\ndefault:\n\tfalse" }, - "createmissingkey": { + "searchpattern": { "type": "boolean", - "description": "[t] CreateMissingKey allows non-existing keys. If the key does not exist, the key is created if AllowsMissingKey\n\t is true, otherwise an error is raised (the default).\n\t Only supported if Key is used" + "description": "searchpattern defines if the MatchPattern should be applied on the file(s) path\n\nIf set to true, it modifies the behavior of the `file` and `files` attributes to search for files matching the pattern instead of searching for files with the exact name.\nWhen looking for file path pattern, it requires pattern to match all of name, not just a substring.\n\nThe pattern syntax is:\n\n```\n pattern:\n { term }\n term:\n '*' matches any sequence of non-Separator characters\n '?' matches any single non-Separator character\n '[' [ '^' ] { character-range } ']'\n character class (must be non-empty)\n c matches character c (c != '*', '?', '\\\\', '[')\n '\\\\' c matches character c\n\n character-range:\n c matches character c (c != '\\\\', '-', ']')\n '\\\\' c matches character c\n lo '-' hi matches character c for lo \u003c= c \u003c= hi\n```" + }, + "comment": { + "type": "string", + "description": "comment defines a comment to add after the value.\n\ndefault: empty\n\ncompatible:\n * target\n\nremarks:\n * Please note that the comment is added if the value is modified by Updatecli" } }, "additionalProperties": false, - "type": "object" + "type": "object", + "description": "\"yaml\" defines the specification for manipulating \"yaml\" files." }, "scmid": { "type": "string", @@ -21236,9 +22887,18 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] - }, + } + ] + }, + "type": "object", + "description": "\"conditions\" defines the list of Updatecli condition definition.\n\nexample:\n---\nconditions:\n container:\n name: Check if Updatecli container image for tag \"v0.63.0\" exists\n kind: dockerimage\n spec:\n image: \"updatecli/updatecli:latest\"\n tag: \"v0.63.0\"\n---" + }, + "targets": { + "additionalProperties": { + "oneOf": [ { "$schema": "http://json-schema.org/draft-04/schema", "properties": { @@ -21255,7 +22915,7 @@ }, "kind": { "enum": [ - "xml" + "aws/ami" ] }, "transformers": { @@ -21392,40 +23052,81 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "file": { + "accesskey": { "type": "string", - "description": "\"file\" define the xml file path to interact with.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tremark:\n\t\t\t* scheme \"https://\", \"http://\", and \"file://\" are supported in path for source and condition" + "description": "accesskey specifies the aws access key which combined with `secretkey`, is one of the way to authenticate" }, - "path": { + "secretkey": { "type": "string", - "description": "\"path\" defines the xpath query used for retrieving value from a XML document\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\texample:\n\t\t\t* path: \"/project/parent/version\"\n\t\t\t* path: \"//breakfast_menu/food[0]/name\"\n\t\t\t* path: \"//book[@category='WEB']/title\"" + "description": "secretkey specifies the aws secret key which combined with `accesskey`, is one of the way to authenticate" }, - "value": { + "filters": { + "items": { + "properties": { + "name": { + "type": "string", + "description": "Name specifies a filter name." + }, + "values": { + "type": "string", + "description": "Values specifies a filter value for a specific filter name." + } + }, + "additionalProperties": false, + "type": "object", + "description": "Filter represents the updatecli configuration describing AMI filters." + }, + "type": "array", + "description": "Filters specifies a list of AMI filters" + }, + "region": { "type": "string", - "description": "\"value\" is the value associated with a xpath query.\n\n\t\tcompatible:\n\t\t\t* source\n\t\t\t* condition\n\t\t\t* target\n\n\t\tdefault:\n\t\t\twhen used from a condition or a target, the default value is set to linked source output" + "description": "Region specifies the AWS region to use when looking for AMI" + }, + "endpoint": { + "type": "string", + "description": "Endpoint specifies the AWS endpoint to use when looking for AMI" + }, + "dryrun": { + "type": "boolean", + "description": "Dryrun allows to Check whether you have the required permissions for the action." + }, + "sortby": { + "type": "string", + "description": "Sortby specifies the order of AMI-ID that will be used to retrieve the last element such as `creationdateasc`" } }, "additionalProperties": false, "type": "object", - "description": "\"xml\" defines the specification for manipulating \"xml\" files." + "description": "Spec contains the updatecli configuration provided by users." }, "scmid": { "type": "string", "description": "scmid specifies the scm configuration key associated to the current resource" }, - "sourceid": { - "type": "string" + "dependsonchange": { + "type": "boolean" }, "disablesourceinput": { "type": "boolean" }, - "failwhen": { + "sourceid": { + "type": "string" + }, + "deprecatedconditionids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "disableconditions": { "type": "boolean" } }, "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -21445,7 +23146,7 @@ }, "kind": { "enum": [ - "yaml" + "bazelmod" ] }, "transformers": { @@ -21582,85 +23283,53 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "documentindex": { - "type": "integer", - "description": "DocumentIndex defines the index of the document to interact with in a multi-document yaml file.\n\ncompatible:\n * source\n * condition\n * target\n\ndefault:\n empty\n\n remark:\n * when not set in the context of a source, the value will be retrieve from the first documents matching query.\n * when not set in the context of a condition or a target, all documents will be evaluated by the query.\n * When not set in the context of a target, all documents will be updated by the query.\n\nexample:\n * documentindex: 0\n * documentindex: 1" - }, - "engine": { - "type": "string", - "description": "\"engine\" defines the engine to use to manipulate the yaml file.\n\nThere is no one good Golang library to manipulate yaml files.\nAnd each one of them have has its pros and cons so we decided to allow this customization based on user's needs.\n\nremark:\n * Accepted value is one of \"yamlpath\", \"go-yaml\",\"default\" or nothing\n * go-yaml, \"default\" and \"\" are equivalent" - }, "file": { "type": "string", - "description": "\"file\" defines the yaml file path to interact with.\n\ncompatible:\n * source\n * condition\n * target\n\nremark:\n * \"file\" and \"files\" are mutually exclusive\n * scheme \"https://\", \"http://\", and \"file://\" are supported in path for source and condition" - }, - "files": { - "items": { - "type": "string" - }, - "type": "array", - "description": "\"files\" defines the list of yaml files path to interact with.\n\ncompatible:\n * condition\n * target\n\nremark:\n * file and files are mutually exclusive\n * protocols \"https://\", \"http://\", and \"file://\" are supported in file path for source and condition" - }, - "key": { - "type": "string", - "description": "\"key\" defines the yaml keypath.\n\ncompatible:\n * source\n * condition\n * target\n\nremark:\n * key is a simpler version of yamlpath accepts keys.\n\nexample using default engine:\n * key: $.name\n * key: $.agent.name\n * key: $.agents[0].name\n * key: $.agents[*].name\n * key: $.'agents.name'\n * key: $.repos[?(@.repository == 'website')].owner\" (require engine set to yamlpath)\n\nremark:\n field path with key/value is not supported at the moment.\n some help would be useful on https://github.com/goccy/go-yaml/issues/290" - }, - "keys": { - "items": { - "type": "string" - }, - "type": "array", - "description": "\"keys\" defines multiple yaml keypaths to update with the same value.\n\ncompatible:\n * target\n\nremark:\n * keys is mutually exclusive with key.\n * keys accepts the same syntax as key for each element.\n * all keys will be updated with the same value.\n * only available for target operations, not for source or condition.\n\nexample using default engine:\n * keys:\n - $.image.tag\n - $.sidecar.tag\n * keys:\n - $.agents[0].version\n - $.agents[1].version" - }, - "value": { - "type": "string", - "description": "value is the value associated with a yaml key.\n\ncompatible:\n * source\n * condition\n * target\n\ndefault:\n\tWhen used from a condition or a target, the default value is set to the associated source output." - }, - "keyonly": { - "type": "boolean", - "description": "keyonly allows to check only if a key exist and do not return an error otherwise\n\ncompatible:\n\t* condition\n\ndefault:\n\tfalse" + "description": "File specifies the path to the MODULE.bazel file\n\ncompatible:\n * source\n * condition\n * target\n\nexample:\n * MODULE.bazel\n * path/to/MODULE.bazel" }, - "searchpattern": { - "type": "boolean", - "description": "searchpattern defines if the MatchPattern should be applied on the file(s) path\n\nIf set to true, it modifies the behavior of the `file` and `files` attributes to search for files matching the pattern instead of searching for files with the exact name.\nWhen looking for file path pattern, it requires pattern to match all of name, not just a substring.\n\nThe pattern syntax is:\n\n```\n pattern:\n { term }\n term:\n '*' matches any sequence of non-Separator characters\n '?' matches any single non-Separator character\n '[' [ '^' ] { character-range } ']'\n character class (must be non-empty)\n c matches character c (c != '*', '?', '\\\\', '[')\n '\\\\' c matches character c\n\n character-range:\n c matches character c (c != '\\\\', '-', ']')\n '\\\\' c matches character c\n lo '-' hi matches character c for lo \u003c= c \u003c= hi\n```" - }, - "comment": { + "module": { "type": "string", - "description": "comment defines a comment to add after the value.\n\ndefault: empty\n\ncompatible:\n * target\n\nremarks:\n * Please note that the comment is added if the value is modified by Updatecli" + "description": "Module specifies the Bazel module name to target\n\ncompatible:\n * source\n * condition\n * target\n\nexample:\n * rules_go\n * gazelle\n * protobuf" } }, "additionalProperties": false, "type": "object", - "description": "\"yaml\" defines the specification for manipulating \"yaml\" files." + "required": [ + "file", + "module" + ], + "description": "Spec defines a specification for a \"bazelmod\" resource parsed from an updatecli manifest file" }, "scmid": { "type": "string", "description": "scmid specifies the scm configuration key associated to the current resource" }, - "sourceid": { - "type": "string" + "dependsonchange": { + "type": "boolean" }, "disablesourceinput": { "type": "boolean" }, - "failwhen": { + "sourceid": { + "type": "string" + }, + "deprecatedconditionids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "disableconditions": { "type": "boolean" } }, "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] - } - ] - }, - "type": "object", - "description": "\"conditions\" defines the list of Updatecli condition definition.\n\nexample:\n---\nconditions:\n container:\n name: Check if Updatecli container image for tag \"v0.63.0\" exists\n kind: dockerimage\n spec:\n image: \"updatecli/updatecli:latest\"\n tag: \"v0.63.0\"\n---" - }, - "targets": { - "additionalProperties": { - "oneOf": [ + }, { "$schema": "http://json-schema.org/draft-04/schema", "properties": { @@ -21677,7 +23346,7 @@ }, "kind": { "enum": [ - "aws/ami" + "bazelregistry" ] }, "transformers": { @@ -21814,53 +23483,59 @@ "spec": { "$schema": "http://json-schema.org/draft-04/schema", "properties": { - "accesskey": { - "type": "string", - "description": "accesskey specifies the aws access key which combined with `secretkey`, is one of the way to authenticate" - }, - "secretkey": { + "module": { "type": "string", - "description": "secretkey specifies the aws secret key which combined with `accesskey`, is one of the way to authenticate" + "description": "Module specifies the Bazel module name to query from the registry\n\ncompatible:\n * source\n * condition\n\nexample:\n * rules_go\n * rules_python\n * gazelle" }, - "filters": { - "items": { - "properties": { - "name": { - "type": "string", - "description": "Name specifies a filter name." - }, - "values": { - "type": "string", - "description": "Values specifies a filter value for a specific filter name." - } + "versionfilter": { + "properties": { + "kind": { + "type": "string", + "description": "specifies the version kind such as semver, regex, or latest" }, - "additionalProperties": false, - "type": "object", - "description": "Filter represents the updatecli configuration describing AMI filters." + "pattern": { + "type": "string", + "description": "specifies the version pattern according the version kind\nfor semver, it is a semver constraint\nfor regex, it is a regex pattern\nfor time, it is a date format" + }, + "strict": { + "type": "boolean", + "description": "strict enforce strict versioning rule.\nOnly used for semantic versioning at this time" + }, + "regex": { + "type": "string", + "description": "specifies the regex pattern, used for regex/semver and regex/time.\nOutput of the first capture group will be used." + }, + "replaceall": { + "properties": { + "pattern": { + "type": "string", + "description": "Pattern specifies the regex pattern to match for replacement" + }, + "replacement": { + "type": "string", + "description": "Replacement specifies the replacement string (supports $1, $2, etc. for captured groups)" + } + }, + "additionalProperties": false, + "type": "object", + "description": "replaceAll applies a regex replacement to version strings before filtering.\nThis is useful for transforming versions (e.g., curl-8_15_0 to curl-8.15.0) before regex extraction." + } }, - "type": "array", - "description": "Filters specifies a list of AMI filters" - }, - "region": { - "type": "string", - "description": "Region specifies the AWS region to use when looking for AMI" - }, - "endpoint": { - "type": "string", - "description": "Endpoint specifies the AWS endpoint to use when looking for AMI" - }, - "dryrun": { - "type": "boolean", - "description": "Dryrun allows to Check whether you have the required permissions for the action." + "additionalProperties": false, + "type": "object", + "description": "VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest.\n\ncompatible:\n * source\n\ndefault:\n kind: latest" }, - "sortby": { + "url": { "type": "string", - "description": "Sortby specifies the order of AMI-ID that will be used to retrieve the last element such as `creationdateasc`" + "description": "URL specifies the custom registry URL (defaults to Bazel Central Registry)\n\ncompatible:\n * source\n * condition\n\ndefault:\n https://raw.githubusercontent.com/bazelbuild/bazel-central-registry/main/modules/{module}/metadata.json\n\nexample:\n * https://raw.githubusercontent.com/bazelbuild/bazel-central-registry/main/modules/{module}/metadata.json\n * https://mycompany.com/bazel-registry/modules/{module}/metadata.json\n\nremarks:\n * The URL must contain {module} placeholder which will be replaced with the module name\n * If not specified, defaults to the official Bazel Central Registry" } }, "additionalProperties": false, "type": "object", - "description": "Spec contains the updatecli configuration provided by users." + "required": [ + "module" + ], + "description": "Spec defines a specification for a \"bazelregistry\" resource parsed from an updatecli manifest file" }, "scmid": { "type": "string", @@ -21888,6 +23563,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -22158,6 +23834,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -22413,6 +24090,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -22604,6 +24282,9 @@ }, "additionalProperties": false, "type": "object", + "required": [ + "image" + ], "description": "Spec defines a specification for a \"dockerdigest\" resource parsed from an updatecli manifest file" }, "scmid": { @@ -22632,6 +24313,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -22841,6 +24523,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -23101,6 +24784,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -23291,6 +24975,14 @@ "searchpattern": { "type": "boolean", "description": "`searchpattern` defines if the MatchPattern should be applied on the file(s) path\n\n If set to true, it modifies the behavior of the `file` and `files` attributes to search for files matching the pattern instead of searching for files with the exact name.\n When looking for file path pattern, it requires pattern to match all of name, not just a substring.\n\n The pattern syntax is:\n\n ```\n pattern:\n { term }\n term:\n '*' matches any sequence of non-Separator characters\n '?' matches any single non-Separator character\n '[' [ '^' ] { character-range } ']'\n character class (must be non-empty)\n c matches character c (c != '*', '?', '\\\\', '[')\n '\\\\' c matches character c\n\n character-range:\n c matches character c (c != '\\\\', '-', ']')\n '\\\\' c matches character c\n lo '-' hi matches character c for lo \u003c= c \u003c= hi\n ```" + }, + "template": { + "type": "string", + "description": "`template` specifies the path to a Go template file to render with source values\n\n compatible:\n * target\n\n remarks:\n * When using template, the source value is passed as `.source` in the template context\n * All Go template functions from sprig are available\n * The template file is read and rendered at execution time\n * `template` is mutually exclusive with `content`, `line`, `matchpattern`, and `replacepattern`\n\n example:\n template: \"path/to/template.tmpl\"" + }, + "templatedata": { + "type": "object", + "description": "`templateData` specifies additional data to pass to the template\n\n\tcompatible:\n\t * target\n\n\tremarks:\n\t * When using template, the data specified here is passed as additional fields in the template context\n\t * All Go template functions from sprig are available\n\t * The template file is read and rendered at execution time\n\t * `templateData` is optional\n\n\texample:\n\t templateData:\n\t key1: \"value1\"\n\t key2: \"value2\"" } }, "additionalProperties": false, @@ -23323,6 +25015,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -23525,6 +25218,10 @@ "type": "string", "description": "branch specifies the branch name\n\n compatible:\n * source\n * condition\n * target" }, + "depth": { + "type": "integer", + "description": "Depth is used to limit the number of commits fetched from the git repository.\n\ncompatible:\n * source\n * condition\n * target\n\n default: 0 (no limit)\n\nremark:\n * Updatecli won't be able to find branches that are not included in the fetched commits." + }, "sourcebranch": { "type": "string", "description": "\"url\" specifies the git url to use for fetching Git Tags.\n\n\tcompatible:\n\t * source\n\t * condition\n\t * target\n\n\texample:\n\t * git@github.com:updatecli/updatecli.git\n\t * https://github.com/updatecli/updatecli.git\n\n\tremarks:\n\t\twhen using the ssh protocol, the user must have the right to clone the repository\n\t\tbased on its local ssh configuration" @@ -23579,6 +25276,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -23833,6 +25531,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -24107,6 +25806,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -24361,6 +26061,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -24668,6 +26369,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -24921,6 +26623,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -25194,6 +26897,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -25447,6 +27151,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -25645,6 +27350,10 @@ "type": "object", "description": "VersionFilter provides parameters to specify version pattern and its type like regex, semver, or just latest.\n\n compatible:\n * source\n * condition\n * target" }, + "tag": { + "type": "string", + "description": "Tag defines the git tag to check for exact match.\n\ncompatible:\n * condition\n\nWhen specified, the condition will check for an exact tag match\ninstead of using versionFilter pattern matching." + }, "message": { "type": "string", "description": "Message associated to the git tag\n\n compatible:\n * target" @@ -25668,6 +27377,13 @@ "sourcebranch": { "type": "string", "description": "\"sourcebranch\" defines the branch name used as a source to create the new Git branch.\n\ncompatible:\n * target\n\nremark:\n * sourcebranch is required when the scmid is not defined.\n\ndefault: main" + }, + "lsremote": { + "type": "boolean" + }, + "depth": { + "type": "integer", + "description": "Depth is used to limit the number of commits fetched from the git repository.\n\ncompatible:\n * source\n * condition\n * target\n\n default: 0 (no limit)\n\nremark:\n * Updatecli won't be able to find tags that are not included in the fetched commits." } }, "additionalProperties": false, @@ -25703,6 +27419,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -25932,6 +27649,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -26143,6 +27861,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -26383,6 +28102,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -26589,6 +28309,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -26862,6 +28583,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -27101,6 +28823,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -27296,6 +29019,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -27547,6 +29271,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -27799,6 +29524,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -28044,6 +29770,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -28235,7 +29962,13 @@ "console/output" ] }, - "spec": true + "spec": { + "$schema": "http://json-schema.org/draft-04/schema", + "properties": {}, + "additionalProperties": false, + "type": "object", + "description": "Spec is an empty struct used as a placeholder for the jsonschema." + } }, "additionalProperties": false, "type": "object" @@ -28350,6 +30083,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -28608,6 +30342,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -28866,6 +30601,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -29095,6 +30831,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -29301,6 +31038,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -29518,6 +31256,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -29724,6 +31463,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -29976,6 +31716,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -30227,6 +31968,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -30436,6 +32178,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -30635,6 +32378,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] }, @@ -30868,6 +32612,7 @@ "additionalProperties": false, "type": "object", "required": [ + "name", "kind" ] } @@ -30879,6 +32624,13 @@ "version": { "type": "string", "description": "\"version\" defines the minimum Updatecli version compatible with the manifest" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object", + "description": "Labels contains user defined labels attached to the pipeline.\n\nLabels are arbitrary key/value pairs that can be used to categorize or\nselect pipelines. They are typically used for filtering pipelines when\nrunning Updatecli, for example to only run pipelines matching a given\nenvironment, operating system, or team.\n\nexample:\n---\nname: \"Update dependencies\"\nlabels:\n os: debian\n environment: staging\n team: backend\nsources:\n ...\n---" } }, "additionalProperties": false,