-
Notifications
You must be signed in to change notification settings - Fork 4.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add export-creds command to the CLI #7398
Conversation
This PR builds on the interface proposed in aws#6808 and implements the additional features proposed in aws#7388. From the original PRs, the additional features are: * Added support for an explicit `--format` args to control the output format. * Add support for env vars, powershell/windows vars, and a JSON format that's enables this command to be used as a `credential_process`. * Detect, and prevent infinite recursion when the credential process resolution results in the CLI calling itself with the same command. Closes aws#7388 Closes aws#5261
Codecov Report
@@ Coverage Diff @@
## v2 #7398 +/- ##
==========================================
+ Coverage 93.70% 93.72% +0.01%
==========================================
Files 351 352 +1
Lines 36175 36306 +131
Branches 5202 5221 +19
==========================================
+ Hits 33899 34028 +129
Misses 1652 1652
- Partials 624 626 +2
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here. |
There's a reasonable scenario where at least two levels of recursion is reasonable. Specifically if a user explicitly runs the `aws configure export-creds` command with a profile that uses a `credential_process` with a value of `aws configure export-creds --profile other-profile`. To handle this I've modified the env var to now track the stack of profiles seen and ensure there's no cycles given the current profile. I also added a final safeguard of a general recursion limit of 4. I figured that 2 levels has valid real world scenarios, we'll give one more level as a buffer, so fail at 4. I don't feel super strongly about the hard limit, my rationale being if a user wants to configure some long `export-creds` chain of 10, it's their configuration so let them, but I can't come up with a valid scenario where yuo'd want more than 4. However, I'd be cool with removing the hard limit if we don't think it's necessary.
Pushed an udpate to add more lenient recursion detection There's a reasonable scenario where at least two levels of recursion To handle this I've modified the env var to now track the stack of I also added a final safeguard of a general recursion limit of 4. I don't feel super strongly about the hard limit, my rationale being |
A couple of comments: As mentioned by @kyleknap over on the issue, The CLI tends towards verbosity, I think having I don't fully understand the recursive profile detection; is it specific to this command or should it be in the credential resolver or something instead? |
Building on this comment:
I'm wondering if it makes sense to just have a
but then you can then mutate this response to be YAML/text and use |
I think that makes sense. |
@@ -69,6 +69,10 @@ def display_credentials(self, credentials): | |||
) | |||
if credentials.token is not None: | |||
output += f'export AWS_SESSION_TOKEN={credentials.token}\n' | |||
if credentials.expiry_time is not None: | |||
output += ( | |||
f'export AWS_CREDENTIAL_EXPIRATION={credentials.expiry_time}\n' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I called this AWS_CREDENTIALS_EXPIRATION
with an S in aws-export-credentials, could we make it the same here? https://github.com/benkehoe/aws-export-credentials/blob/0c53fa6afd4123d7a28550919cea85163a067605/aws_export_credentials/aws_export_credentials.py#L228
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I was basing it off of what's already supported in botocore (boto/botocore#1187). Looks like it's also supported in javascript.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh dang, I missed that when I was implementing it! I'll change aws-export-credentials to conform to it, then.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Might be worth documenting in here as well: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is there a commensurate aws_credential_expiration
value allowed in the profile config? If not, should there be?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@benkehoe Thanks for pointing out that the environment variable is not documented there. We will follow up on this to get it documented.
For the a profile config version of AWS_CREDENTIAL_EXPIRATION
, the CLI/botocore does not have one. I don't think the other SDKs have one either. It could potentially make sense. We have had internal discussions about it before I believe and I think the biggest concern is around potentially reloading the shared config file and handling any edge cases in reloading the shared config file.
If this is something that you'd like to see, I'd say recommend opening a feature request in the shared SDK GitHub repository to get a discussion going around it: https://github.com/aws/aws-sdk
It happens if you're using the AWS CLI as a credential process (this command) and also running AWS CLI commands. In the base case you could have just this in your
So running any CLI command, e.g. I initially had it so you could never have the Running:
I can see supporting both, the only question I have is if it's
Yeah makes sense, I'll update. |
Could go explicit for both, something like |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good! Just left some comments. I also tried it out in powershell and Windows CMD and it was working well there too with regards to consuming their respective formats.
ARG_TABLE = [ | ||
{'name': 'format', | ||
'help_text': ( | ||
'The output format to display credentials.' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We should also probably clarify that the global arguments --output
and --query
do not have an effect on the format to avoid confusion.
"credential_process = aws configure export-credentials " | ||
"--profile other-profile\n" | ||
) | ||
return 2 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For this case, I'm wondering if we should match with some of the more granular return codes that we defined for v2: https://awscli.amazonaws.com/v2/documentation/api/latest/topic/return-codes.html. Specifically, this seems like it should be a 253
for configuration error, which we can propagate by raising a ConfigurationError
.
For the other error cases, they seem like 253
configuration errors as well based on the documentation? I don't think I have a strong opinion on the ones that are returning 1
, but I'm not sure if we should be using 2
as a return code as it is only isolated to S3 right now.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ended up using 253 for both. If you have no credentials configured at all and try to run a CLI command you get 253
, so it made sense to be consistent that if get_credentials()
returns None
, we have the same RC with this command.
"\n\nRecursive credential resolution process detected.\n" | ||
"Try setting an explicit '--profile' value in the " | ||
"'credential_process' configuration and ensure there " | ||
"are no cycles:\n\n" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
With regards to the error message, I'm wondering if we should include a note that the profile recursion cannot be deeper than X maximum? I'm mainly suggesting it as the error message is misleading if you do happen to have a non-cyclical credential process chain that is greater than or equal to four levels of recursion.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah ended up having separate error messages for each case, now you get:
$ aws configure export-credentials --profile cycle-a
Unable to retrieve credentials: Error when retrieving credentials from custom-process:
Unable to retrieve credentials: Error when retrieving credentials from custom-process:
Unable to retrieve credentials: Error when retrieving credentials from custom-process:
Unable to retrieve credentials: Error when retrieving credentials from custom-process:
Maximum recursive credential process resolution reached (4).
Profiles seen: cycle-a -> cycle-b -> cycle-c -> cycle-d
self.os_env['_AWS_CLI_PROFILE_CHAIN'] = 'foo,bar' | ||
self.session.get_config_variable.return_value = 'bar,baz' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could we limit the starting environment variable value to just one profile to start? Mainly given the maximum recursion depth is four, it seems ambiguous on whether it is failing due to encountering a previously visited profile or we are hitting the recursion maximum (if we assume that we are not properly escaping commas) especially since the error message does not discriminate between the two different cycle detection cases.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I ended up having separate error messages for each case so I updated the test to check that this is because of a cycle and not max recursion. The cycle error message now looks like this:
$ aws configure export-credentials --profile cycle-a
Unable to retrieve credentials: Error when retrieving credentials from custom-process:
Unable to retrieve credentials: Error when retrieving credentials from custom-process:
Unable to retrieve credentials: Error when retrieving credentials from custom-process:
Credential process resolution detected an infinite loop, profile cycle: cycle-a -> cycle-b -> cycle-c -> cycle-a
* Use consistant RCs for config/credential fetching errors * Have separate error messages for cycles vs max recursion
@kyleknap I believe I got everything, ready for another look. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good! 🚢
For reference related to this comment: #7398 (comment), I talked to @jamesls about it. We decided to pass on implementing this format for the initial implementation for the following reasons:
|
Adds support for the AWS_CREDENTIAL_EXPIRATION environment variable which was adopted as the standard way to set the expiration for temporary credentials. The existing AWS_SESSION_EXPIRATION environment variable is not dropped for backwards compatibility. See aws/aws-cli#7398
Adds support for the AWS_CREDENTIAL_EXPIRATION environment variable which was adopted as the standard way to set the expiration for temporary credentials. The existing AWS_SESSION_EXPIRATION environment variable is not dropped for backwards compatibility. See aws/aws-cli#7398
Adds support for the AWS_CREDENTIAL_EXPIRATION environment variable which was adopted as the standard way to set the expiration for temporary credentials. The existing AWS_SESSION_EXPIRATION environment variable is not dropped for backwards compatibility. See aws/aws-cli#7398
…iable (#5002) feat(aws): supports AWS_CREDENTIAL_EXPIRATION environment variable Adds support for the AWS_CREDENTIAL_EXPIRATION environment variable which was adopted as the standard way to set the expiration for temporary credentials. The existing AWS_SESSION_EXPIRATION environment variable is not dropped for backwards compatibility. See aws/aws-cli#7398
…iable (starship#5002) feat(aws): supports AWS_CREDENTIAL_EXPIRATION environment variable Adds support for the AWS_CREDENTIAL_EXPIRATION environment variable which was adopted as the standard way to set the expiration for temporary credentials. The existing AWS_SESSION_EXPIRATION environment variable is not dropped for backwards compatibility. See aws/aws-cli#7398
* build(deps): update clap crates * build(deps): update rust crate notify-rust to 4.7.1 * build(deps): update rust crate shadow-rs to 0.20.1 * build(deps): update rust crate git-features to 0.26.5 * build(deps): update rust crate notify-rust to 4.8.0 * docs(kubernetes): Remove extra backspace from regex in example (#4905) Remove extra backspace from regex in example In the example, `[\\w-]` would match a literal backspace `\`, the character `w` or a dash `-`. By removing the backspace, instead it matches any "word character" `\w` or a dash `-`. * docs(i18n): new Crowdin updates (#4877) * chore: use updated gitoxide crate names (#4913) * build(deps): update rust crate gix to 0.37.1 * build(deps): update rust crate toml_edit to 0.19.4 * docs(install): update nushell instructions in installation script (#4921) Improve Nushell installation instruction Consistently use `save -f` rather than `save`; the latter fails if the file already exists Signed-off-by: Michel Alexandre Salim <[email protected]> * build(deps): update rust crate clap_complete to 4.1.3 * build(deps): update rust crate gix to 0.37.2 * docs(i18n): new Crowdin updates (#4925) * chore(master): release 1.13.0 (#4730) * build(deps): update rust crate tempfile to 3.4.0 * fix: trigger release * chore(master): release 1.13.1 (#4937) * ci: set Node version for docs build * ci: allow docs to be manually published via workflow_dispatch * ci: remove unneeded dependency in publish job * ci: add caching for docs publishing step * build(deps): update rust crate schemars to 0.8.12 * build(deps): update dprint plugins * build(deps): update rust crate shadow-rs to 0.21.0 * build(deps): update clap crates * feat(release): handle chocolatey starship.portable and starship.install pkg publishing (#4723) Handles starship.install (MSI installer) and starship.portable and makes starship an empty meta-package that only depends on starship.install. MSI/installer packages seem to be preferred over zip-based installers on chocolatey. Proper virtual packages that allow choosing either a portable or install variant aren't implemented in chocolatey yet. * ci: replace `audit` with `deny` action (#4856) * build(deps): update rust crate clap to 4.1.8 * build(deps): update gitoxide crates * ci: use `reviewdog/action-suggester` for config-schema check (#4857) * ci: use `reviewdog/action-suggester` for config-schema check * increase workflow permissions * fix(preset): add output-flag to avoid encoding issues (#4926) * build(deps): update rust crate rayon to 1.7.0 * build(deps): update gitoxide crates * build(deps): update pest crates to 2.5.6 * build(deps): update rust crate serde_json to 1.0.94 * build(deps): update npm to ^1.9.9 * build(deps): update rust crate open to 3.4.0 * docs(character): use updated `vimcmd_symbol` instead of older `vicmd_symbol` variant (#4960) Fix typo in character example * build(deps): update rust crate serde to 1.0.153 * docs(install): fix typo and update indentation and whitespaces (#4941) * build(deps): update rust crate serde to 1.0.154 * build(deps): update rust crate gix to 0.40.0 * chore: fix clippy warnings for rust 1.68 (#4983) * fix(init): avoid cygpath for starship binary path (#4970) Update mod.rs * build(deps): update rust crate open to v4 (#4982) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * build(deps): update rust crate toml_edit to 0.19.5 * build(deps): update rust crate gix to 0.41.0 (#4984) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * build(deps): update rust crate serde to 1.0.155 * build(deps): update rust crate chrono to 0.4.24 * build(deps): update rust crate semver to 1.0.17 * build(deps): update rust crate quick-xml to 0.28.0 * Update sponsors * build(deps): update toml crates * build(deps): update rust crate nu-ansi-term to 0.47.0 * build(deps): update rust crate windows to 0.46.0 * build(deps): update rust crate serde to 1.0.156 * docs(preset): Add `hostname.ssh_symbol` to nerd font preset (#4991) docs(preset): Add missing ssh_symbol in nerd font * fix(fossil_branch): fossil checkout database file name on windows (#4978) fix(fossil_branch): use proper fossil checkout database file name on windows * build(deps): update gitoxide crates * build(deps): update rust crate toml_edit to 0.19.7 * build(deps): update clap crates * build(deps): update rust crate serde to 1.0.157 * build(deps): update rust crate quick-xml to 0.28.1 * build(deps): update rust crate clap to 4.1.11 * docs(preset): add missing config for Java to no-runtime-version (#5011) docs(preset): add missing Java to no-runtime-version * build(deps): update rust crate serde to 1.0.158 * feat(aws): Adds support for AWS_CREDENTIAL_EXPIRATION environment variable (#5002) feat(aws): supports AWS_CREDENTIAL_EXPIRATION environment variable Adds support for the AWS_CREDENTIAL_EXPIRATION environment variable which was adopted as the standard way to set the expiration for temporary credentials. The existing AWS_SESSION_EXPIRATION environment variable is not dropped for backwards compatibility. See aws/aws-cli#7398 * build(deps): update rust crate open to 4.0.1 * build(deps): update rust crate regex to 1.7.2 * chore: add spell checker to workflows (#4975) * chore: add spell checker to workflows * fix: update config schema * fix: revert for fennel.rs * build(deps): update rust crate toml_edit to 0.19.8 * build(deps): update crate-ci/typos action to v1.14.3 * build(deps): update rust crate clap to 4.1.13 * build(deps): update embarkstudios/cargo-deny-action action to v1.5.0 * build(deps): update rust crate gix to 0.43.0 * fix(gradle): add support for unstable Gradle versions (#5021) * build(deps): update rust crate serde_json to 1.0.95 * docs: Update nerd-font-symbols.toml pop_os! symbol (#5017) Update nerd-font-symbols.toml Use the specific pop_os! nerd symbol instead of the generic lollipop * build(deps): update clap crates * build(deps): update rust crate regex to 1.7.3 * build(deps): update rust crate serde to 1.0.159 * build(deps): update rust crate indexmap to 1.9.3 * build(deps): update clap crates to 4.2.0 * build(deps): update rust crate tempfile to 3.5.0 * build(deps): update rust crate windows to 0.47.0 * build(deps): update rust crate clap to 4.2.1 * build(deps): update rust crate gix to 0.43.1 * build(deps): update rust crate windows to 0.48.0 * fix(pulumi): Fix formatting on pulumi module when using version (#5038) Fix formatting on pulumi module when using version Sanitize `pulumi version` output to remove leading 'v' character and trailing newlines. * feat(fossil): detection of Fossil check-outs in subdirectories (#4910) * Move PathExt::device_id() outside modules module * Add upwards_sibling_scan-function * Fix Fossil check-out detection in subdirectories * Use shared upwards scanning function in hg_branch * Let the caller specify if they're looking for a file or a folder * fix merge --------- Co-authored-by: David Knaack <[email protected]> * feat(aws): add support for source_profile (#4859) feat(aws): add support for source_profile (#3834) Co-authored-by: @luiscamaral * feat(custom): add option to check if pwd is in a repo (#4822) * feat(custom): add option to check if pwd is in a repo * Apply suggestions from code review Co-authored-by: David Knaack <[email protected]> * change whenrepo to require_repo * chore: fix doc formatting --------- Co-authored-by: David Knaack <[email protected]> * build(deps): update rust crate terminal_size to 0.2.6 * build(deps): update rust crate process_control to 4.0.3 (#5046) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * build(deps): update pest crates to 2.5.7 (#5043) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * build(deps): update crate-ci/typos action to v1.14.4 * docs(presets): add azure and gcloud default symbols to plaintext preset (#5040) * chore(nu): use updated closure syntax (#5054) Update starship.nu to conform to Nushell changes Nushell recently made a change to require that all closures have an explicit parameter list, even if it's empty, in nushell/nushell#8290. This updates starship.nu to conform to this requirement. I have casually tested this against both the latest released version of Nushell, and the latest version on HEAD; the changed code works well (for me) on both. * build(deps): update crate-ci/typos action to v1.14.5 * build(deps): update embarkstudios/cargo-deny-action action to v1.5.1 * fix(java): wrong version number when using Android Studio JDK (#4966) The regular expression would get the revision number found in: with gcc Android (7284624, based on r416183b) so it would print "7284624". * build(deps): update dprint plugins * build(deps): update rust crate os_info to 3.7.0 (#5057) * build(deps): update rust crate os_info to 3.7.0 * add new os symbols --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * docs(i18n): new Crowdin updates (#4956) * chore(master): release 1.14.0 (#4948) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * fix: trigger release * fix: bootstrap manifest for release-please (#5087) * fix: update the release-please manifest * chore: fix release-please-manifest version * ci: Revert "fix: bootstrap manifest for release-please (#5087)" This reverts commit e392d14. * chore(master): release 1.14.1 (#5090) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * ci: add missing GH token to doc publishing flow * build(deps): update rust crate serde to 1.0.160 * docs: update snap instructions (#5007) As part of #4954, non-edge packages of Starship were removed from Snapcraft. This means the only way to install Starship is through the `edge` channel using `snap install --edge starship`. * fix(git_commit): resolve panic on 32-bit targets (#5095) * chore(choco): remove chocolatey dependency (#5078) * docs(i18n): new Crowdin updates (#5093) * New translations README.md (Ukrainian) * New translations README.md (Ukrainian) * New translations README.md (Ukrainian) * New translations README.md (Ukrainian) * New translations README.md (Ukrainian) * New translations README.md (Ukrainian) * New translations tokyo-night.md (Ukrainian) * New translations README.md (Ukrainian) * New translations README.md (Ukrainian) * New translations README.md (Ukrainian) * New translations README.md (Ukrainian) * New translations README.md (Ukrainian) * New translations README.md (Ukrainian) * New translations README.md (Ukrainian) * New translations README.md (Ukrainian) * New translations bracketed-segments.md (Ukrainian) * New translations nerd-font.md (Ukrainian) * New translations no-runtimes.md (Ukrainian) * New translations plain-text.md (Ukrainian) * New translations pure-preset.md (Ukrainian) * New translations pastel-powerline.md (Ukrainian) * New translations no-nerd-font.md (Ukrainian) * New translations no-empty-icons.md (Ukrainian) * New translations README.md (French) * New translations README.md (Russian) * New translations README.md (Spanish) * New translations README.md (Arabic) * New translations README.md (German) * New translations README.md (Italian) * New translations README.md (Japanese) * New translations README.md (Korean) * New translations README.md (Dutch) * New translations README.md (Polish) * New translations README.md (Portuguese) * New translations README.md (Turkish) * New translations README.md (Chinese Simplified) * New translations README.md (Chinese Traditional) * New translations README.md (Vietnamese) * New translations README.md (Portuguese, Brazilian) * New translations README.md (Indonesian) * New translations README.md (Sorani (Kurdish)) * New translations README.md (Ukrainian) * New translations README.md (Norwegian) * New translations README.md (Ukrainian) * New translations README.md (Ukrainian) * New translations README.md (Ukrainian) * New translations README.md (Ukrainian) * New translations README.md (Ukrainian) * New translations README.md (Ukrainian) * New translations README.md (Ukrainian) * New translations README.md (Ukrainian) * New translations README.md (Ukrainian) * New translations README.md (Ukrainian) * New translations README.md (Ukrainian) * New translations bracketed-segments.md (Ukrainian) * New translations nerd-font.md (Ukrainian) * New translations no-runtimes.md (Ukrainian) * New translations plain-text.md (Ukrainian) * New translations pure-preset.md (Ukrainian) * New translations pastel-powerline.md (Ukrainian) * New translations no-nerd-font.md (Ukrainian) * New translations no-empty-icons.md (Ukrainian) * New translations tokyo-night.md (Ukrainian) * New translations README.md (Ukrainian) * chore(master): release 1.14.2 (#5098) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * build(deps): update embarkstudios/cargo-deny-action action to v1.5.2 * build(deps): update rust crate quick-xml to 0.28.2 * build(deps): update rust crate serde_json to 1.0.96 * build(deps): update rust crate starship-battery to 0.8.0 (#5106) * build(deps): update rust crate gethostname to 0.4.2 * feat: add typechange to git_status module (#4829) Co-authored-by: David Knaack <[email protected]> * feat(azure): subscription name aliases (#4949) * From issue #4448, added `subscription_aliases` as a field for the Azure module Can be set in starship.toml with [azure.subscription_aliases] * Updated config file schema * Added entry into documentation * Update README.md * Formatted with dprint * feat(git_metrics): add option to ignore submodules (#5052) * add docs * update schema * ok, actually update schema * add test * fix lint * accidentally included my .devenv directory * feat: Add Solidity Module (#5047) * Adding documentation * Documentation and schema addition * Creating solidity config * Module for solidity lang * Updating all the files * Changing according to clippy * Fixing misspellings * Changes suggested by clippy * Updating schema , maybe fixing docs workflow error * Updating schema * Removing solcjs from default compiler list * Fallback test added and test string fixed * Fixing docs * Updating schema * Updating schema * Fixing docs * Updating schema * Updating schema * Typo fix * Update docs/config/README.md Co-authored-by: David Knaack <[email protected]> * Update src/utils.rs Co-authored-by: David Knaack <[email protected]> * Fix build commit --------- Co-authored-by: Anirban Halder <[email protected]> Co-authored-by: David Knaack <[email protected]> * build(deps): update crate-ci/typos action to v1.14.6 * build(deps): update rust crate clap to 4.2.2 * fix(config): Make print-config not panic without a config (#5001) * build(deps): update rust crate open to 4.0.2 * build(deps): update rust crate clap to 4.2.3 * build(deps): update rust crate gix-features to 0.29.0 * build(deps): update crate-ci/typos action to v1.14.8 * build(deps): update rust crate clap to 4.2.4 * build(deps): update rust crate dunce to 1.0.4 * build(deps): update rust crate regex to 1.8.0 * build(deps): update rust crate clap_complete to 4.2.1 * build(deps): update rust crate regex to 1.8.1 * docs(pwsh): use a more convenient method to update the window title (#5125) docs: fix PowerShell example to update the window title * fix(style): ensure nested style variables are processed during formatting (#5120) fix: ensure nested style variables are processed during formatting * refactor(Context): `set_config` method for `Context` (#5079) * add `set_config` method to `Context` * Made inline comment a doc comment * use `default_context()` for `set_config()` test * use `set_config()` in tests for `print.rs` * set root config w `set_config()` (`print.rs` test) * build(deps): update rust crate home to 0.5.5 * build(deps): update pest crates to 2.6.0 * build(deps): update rust crate open to 4.1.0 * build(deps): upgrade gitoxide to v0.44 for performance improvements during discovery (#5141) upgrade gitoxide to v0.44 for performance improvements during discovery Please note that there is a new `dot_git_only` option which would further speedup discovery. On even moderatly fast disks that probably not going to make a difference, but it will on incredibly slow (networked) disks. See helix-editor/helix#6867 for reference. * fix(snap): Update snapcraft.yaml to add personal-files interface (#5131) * build(deps): update rust crate clap to 4.2.5 * docs: add Ukranian to the project README (#5147) * Specify personal-file interface for snap * fix(presets): Added ($style) to format in module 'sudo' in Bracketed Segments Preset (#5146) * Fixed error in module 'sudo' There was no ($style) in format. When module enabled this lead to the error [WARN] - (starship::modules::sudo): Error in module `sudo` * Update docs/.vuepress/public/presets/toml/bracketed-segments.toml typo fix Co-authored-by: David Knaack <[email protected]> --------- Co-authored-by: David Knaack <[email protected]> * ci: remove actions-rs actions (#5115) * build(deps): update rust crate clap to 4.2.7 * build(deps): update crate-ci/typos action to v1.14.9 * build(deps): update rust crate serde to 1.0.162 * build(deps): update rust crate rust-ini to 0.19.0 (#5172) * build(deps): update rust crate rust-ini to 0.19.0 * add CC0-1.0 to allowed license list --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * build(deps): update rust crate versions to v5 (#5176) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * feat(aws): support aws sso with automatic authentication refresh (#5170) * feat(aws): support aws sso with automatic authentication refresh * docs(aws): add sso_session for profile detection * feat(gcloud): add `detect_env_vars` option (#5166) * feat(gcloud): add `detect_env_vars` option * regenerate config schema * docs: update CONTRIBUTING.md and README.md (#5153) * build(deps): update rust crate clap_complete to 4.2.2 * fix: update of presets and default configuration to reflect changes in Nerd Fonts 3.0 (#5162) * Updated nf-mdi-* to nf-md-* symbols The following symbols where changed - directory.read_only - memory_usage - meson - nim - os.symbols.Garuda - os.symbols.HardenedBSD - os.symbols.Illumos - os.symbols.OpenBSD - os.symbols.OracleLinux - os.symbols.Redox - os.symbols.Solus - os.symbols.Windows - package - rlang * Updated nf-mdi-* to nf-md-* symbols (for all other presets) The following symbols where changed for pastel-powerline: - directory.substitutions.Documents - nim for tokyo-night - directory.substitutions.Documents - golang * Updated nf-mdi-* to nf-md-* symbols for the default configuration in modules in src/configs/*.rs The following symbols where changed - azure - battery.full_symbol - battery.charging_symbol - battery.discharging_symbol - battery.unknown_symbol - battery.empty_symbol * Updated config-schema.json * Updated src/modules/*.rs docs/config/README.md and used `nerdfix` to check if I overlook anything * Fixed the battery discharging symbol in the tests --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: jtrv <[email protected]> * build(deps): disable unnecessary/unused regex features (#5175) This will reduce the binary size by ~400 kB. * build(deps): update rust crate serde to 1.0.163 * build(deps): update xalvarez/prevent-file-change-action action to v1.3.2 * build(deps): update rust crate clap_complete to 4.2.3 * build(deps): update rust crate gethostname to 0.4.3 * build(deps): update dprint plugins * build(deps): update toml crates * build(deps): update crate-ci/typos action to v1.14.10 * build(deps): update clap crates to 4.3.0 * build(deps): update crate-ci/typos action to v1.14.11 * build(deps): update rust crate regex to 1.8.2 * build(deps): update rust crate toml_edit to 0.19.10 * build(deps): update rust crate regex to 1.8.3 * build(deps): update rust crate shadow-rs to 0.22.0 * build(deps): update rust crate log to 0.4.18 * build(deps): update rust crate chrono to 0.4.25 * build(deps): update rust crate once_cell to 1.17.2 * build(deps): update rust crate chrono to 0.4.26 * refactor: simplify `shadow-rs` setup in `build.rs` (#5209) Update build.rs * feat(golang): adding `mod_version` variable (#5177) * feat(nodejs): Add `expected_version` variable (#5081) * add `expected_version` variable to `nodejs` * show comparison symbols with `expected_version` * documentation, formatting, more tests * Remapped `engines_version` to $version * Added better descriptions to docs * Update docs/config/README.md Co-authored-by: David Knaack <[email protected]> * Removed clone from `nodejs`, formatting * refactored function calls * rewrote `engines_version` formatter * Moved Lazy variables into maps --------- Co-authored-by: David Knaack <[email protected]> * build(deps): update crate-ci/typos action to v1.14.12 * build(deps): update clap crates to 4.3.1 * fix: bump libz-ng-sys (#5218) * build(deps): update rust crate clap to 4.3.2 * build(deps): update rust crate shadow-rs to 0.23.0 * build(deps): update rust crate regex to 1.8.4 * build(deps): update rust crate once_cell to 1.18.0 * Update GA measurement ID * build(deps): update rust crate nu-ansi-term to 0.48.0 * docs(i18n): new Crowdin updates (#5109) * Revert "Specify personal-file interface for snap" This reverts commit 2641a37. This was reverted due to errors in the snap publishing pipeline: interface 'starship-config' not found in base declaration declaration-snap-v2_plug_known (starship-config, starship-config) invalid plugs interface definition 'starship-config' lint-snap-v2_app_plugs_plug_reference (starship, starship-config) unknown interface 'starship-config' lint-snap-v2_plugs (starship-config, starship-config) * chore(master): release 1.15.0 (#5108) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Checkout before running gh commands in CI * Inline script for GA4 * build(deps): update gitoxide crates * build(deps): update rust crate tempfile to 3.6.0 * Update GA4 tag attribute * build(deps): update crate-ci/typos action to v1.15.0 * feat: update the nushell init file and make it valid module and overlay (#5188) * break long commands into multiple lines for readability * fix the format of closures We generally write `{|| ...}` instead of `{ || ...}`. * remove the `$"--opt=(val)"` structure when possible `starship` does not require to use `--opt=val` and so we do not need to do that with Nushell :) the only place where this is required is with `--status` because `$env.LAST_EXIT_CODE` can be negative and `starship` does not appear to *like* values of the form `-2`... so i left this line as it was. on the other hand, `$env.CMD_DURATION_MS` and `(term size).columns` should be fine 😌 * simplify the `config` mutation with new `?` syntax This is a new very handy feature of Nushell which gives a much simpler command combined with `default` and `merge`. * put all `let-env`s inside an `export-env` with `load-env` This commit has two reasons of existing: - i think it makes it a bit easier to read with less `let-env`s - it transforms the *script* into both a valid module and a valid overlay * bump the version to `0.78` in to docs * add a note about the init file being also a module to all docs * tweak the documentation * update the Nushell part of the install script * format the vuepress config file as previous commit 1175801 was not successful, let's try to make the CI happy manually 😌 * remove code quotes in the `config_cmd` of Nushell * format the style in the Nushell `warning` section * build(deps): update rust crate serde to 1.0.164 (#5231) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * build(deps): update rust crate starship-battery to 0.8.1 (#5232) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * feat(pwsh): Support vi command mode indicator (#5049) Support vi command mode in powershell * build(deps): update rust crate clap to 4.3.3 (#5235) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * build(deps): update rust crate gix to 0.46.0 * build(deps): update rust crate log to 0.4.19 (#5240) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore: fix typos (#5239) * chore: fix new clippy lints (#5241) * docs: Correct Arch Linux Repo Name (#5243) * Correct Arch Linux repo name * Revert changes to translated files. * build(deps): update rust crate quick-xml to 0.29.0 * build(deps): update reviewdog/action-suggester action to v1.6.1 * build(deps): update rust crate clap to 4.3.4 * build(deps): update rust crate serde_json to 1.0.97 * build(deps): update rust crate shadow-rs to 0.23.0 (#5250) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(bash): Clear out completed jobs before counting NUM_JOBS (#5253) Clear out completed jobs before counting NUM_JOBS * build(deps): update pest crates to 2.6.1 * redesign * jet link * screenshot * readme, config * clean trails whitespace * fmt * comment vicmd * mv pos, right prompt warn * right prompt prereq * reco and typo * resolve build check error * tidy * resolve build check error * resolve build check error * request changes * rm src contents * rm git_status.rs * tryint fix checks * PR review request: rm comments * PR review request: rm redundant default * PR review request: enable aws --------- Signed-off-by: Michel Alexandre Salim <[email protected]> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Tom Fenech <[email protected]> Co-authored-by: Matan Kushner <[email protected]> Co-authored-by: David Knaack <[email protected]> Co-authored-by: Michel Alexandre Salim <[email protected]> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Jan Dittrich <[email protected]> Co-authored-by: Zhizhen He <[email protected]> Co-authored-by: Swarnim Maheshwari <[email protected]> Co-authored-by: Guilhem Saurel <[email protected]> Co-authored-by: Stefan Cosma <[email protected]> Co-authored-by: Christian Meusel <[email protected]> Co-authored-by: Harry Hodge <[email protected]> Co-authored-by: Harsh Shandilya <[email protected]> Co-authored-by: Dave Parr <[email protected]> Co-authored-by: Ryan Sabatini <[email protected]> Co-authored-by: Vegard Skui <[email protected]> Co-authored-by: Cosimo Matteini <[email protected]> Co-authored-by: jliaoh <[email protected]> Co-authored-by: Matthew T <[email protected]> Co-authored-by: Samir Talwar <[email protected]> Co-authored-by: Aurélien Gâteau <[email protected]> Co-authored-by: Aki Kanellis <[email protected]> Co-authored-by: Chad Denyar <[email protected]> Co-authored-by: marcybell <[email protected]> Co-authored-by: Colton Donnelly <[email protected]> Co-authored-by: AnirbanHalder654322 <[email protected]> Co-authored-by: Anirban Halder <[email protected]> Co-authored-by: Dom Slee <[email protected]> Co-authored-by: Micky Brunetti <[email protected]> Co-authored-by: Andrew Pantuso <[email protected]> Co-authored-by: Sebastian Thiel <[email protected]> Co-authored-by: Scott Parkhill <[email protected]> Co-authored-by: Eldar Khurmamatov <[email protected]> Co-authored-by: kensasongko <[email protected]> Co-authored-by: Denis Cornehl <[email protected]> Co-authored-by: Mick Hohmann <[email protected]> Co-authored-by: jtrv <[email protected]> Co-authored-by: Jakub Jirutka <[email protected]> Co-authored-by: baoyachi. Aka Rust Hairy crabs <[email protected]> Co-authored-by: Antoine Stevan <[email protected]> Co-authored-by: Nemo157 <[email protected]> Co-authored-by: Dosenpfand <[email protected]> Co-authored-by: Ajeet D'Souza <[email protected]>
This PR builds on the interface proposed in #6808 and implements the additional features proposed in #7388.
From the original PRs, the additional features are:
--format
args to control the output format.credential_process
.Closes #7388
Closes #5261