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
Link Project to Repository or Team Command #8595
Conversation
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.
@benebsiny: wow! thank you for the contribution including tests! 🤗
While @williammartin captures his thoughts, I thought I'd do an initial once over for a few things that stood out to me. All in all, appreciate your efforts!
pkg/cmd/project/link/link.go
Outdated
if config.opts.repo != "" && config.opts.team != "" { | ||
return fmt.Errorf("specify only one repo or team") | ||
} else if config.opts.repo == "" && config.opts.team == "" { | ||
return fmt.Errorf("specify at least one repo or team") | ||
} |
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.
Formatting the flags to match other commands and rewording the latter case to avoid any confusion that multiple --repo
or --team
flags can be specified.
if config.opts.repo != "" && config.opts.team != "" { | |
return fmt.Errorf("specify only one repo or team") | |
} else if config.opts.repo == "" && config.opts.team == "" { | |
return fmt.Errorf("specify at least one repo or team") | |
} | |
if config.opts.repo != "" && config.opts.team != "" { | |
return fmt.Errorf("specify only one of `--repo` or `--team`") | |
} else if config.opts.repo == "" && config.opts.team == "" { | |
return fmt.Errorf("specify either `--repo` or `--team`") | |
} |
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.
Sorry I had a review in draft about this already. Preferably use cmdutil.MutuallyExclusive
in this case to ensure we are standardised and pass up a flag error.
linkCmd.Flags().StringVarP(&opts.repo, "repo", "R", "", "The repository to be linked to this project") | ||
linkCmd.Flags().StringVarP(&opts.team, "team", "T", "", "The team to be linked to this project") |
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.
Generally want to default to lowercase flags to avoid of extra keystrokes but also -R,--repo [HOST/]OWNER/REPO
is a standard flag on nearly every other command.
linkCmd.Flags().StringVarP(&opts.repo, "repo", "R", "", "The repository to be linked to this project") | |
linkCmd.Flags().StringVarP(&opts.team, "team", "T", "", "The team to be linked to this project") | |
linkCmd.Flags().StringVarP(&opts.repo, "repo", "r", "", "The repository to be linked to this project") | |
linkCmd.Flags().StringVarP(&opts.team, "team", "t", "", "The team to be linked to this project") |
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.
@andyfeller There is already a shorthand t
for --template
😱
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.
Ack, I went through this discovery as well, -R
and -T
are fine for me.
This comment was marked as spam.
This comment was marked as spam.
Sorry, something went wrong.
pkg/cmd/project/link/link.go
Outdated
} | ||
return printResults(config, query.LinkProjectV2ToTeam.Team.URL) | ||
} | ||
return fmt.Errorf("specify at least one repo or team") |
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.
If we are handling this in RunE
, then we can just return nil here:
return fmt.Errorf("specify at least one repo or team") | |
return nil |
pkg/cmd/project/link/link.go
Outdated
if config.opts.repo != "" { | ||
repo, err := api.GitHubRepo(c, ghrepo.New(owner.Login, config.opts.repo)) | ||
if err != nil { | ||
return err | ||
} | ||
config.opts.repoID = repo.ID | ||
|
||
query, variable := linkRepoArgs(config) | ||
err = config.client.Mutate("LinkProjectV2ToRepository", query, variable) | ||
if err != nil { | ||
return err | ||
} | ||
|
||
if config.opts.exporter != nil { | ||
return config.opts.exporter.Write(config.io, query.LinkProjectV2ToRepository.Repository) | ||
} | ||
return printResults(config, query.LinkProjectV2ToRepository.Repository.URL) | ||
|
||
} else if config.opts.team != "" { | ||
teams, err := api.OrganizationTeams(c, ghrepo.New(owner.Login, "")) | ||
if err != nil { | ||
return err | ||
} | ||
for _, team := range teams { | ||
if team.Slug == config.opts.team { | ||
config.opts.teamID = team.ID | ||
break | ||
} | ||
} | ||
if config.opts.teamID == "" { | ||
return fmt.Errorf("can't find team %s", config.opts.team) | ||
} | ||
|
||
query, variable := linkTeamArgs(config) | ||
err = config.client.Mutate("LinkProjectV2ToTeam", query, variable) | ||
if err != nil { | ||
return err | ||
} | ||
|
||
if config.opts.exporter != nil { | ||
return config.opts.exporter.Write(config.io, query.LinkProjectV2ToTeam.Team) | ||
} | ||
return printResults(config, query.LinkProjectV2ToTeam.Team.URL) | ||
} |
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.
Moving the bulk of these 2 conditional blocks to separate functions would help with comprehension and testing. Not a deal breaker but this is on the edge of a lot for a single function with multiple code paths.
This comment was marked as spam.
This comment was marked as spam.
Sorry, something went wrong.
pkg/cmd/project/unlink/unlink.go
Outdated
if config.opts.repo != "" && config.opts.team != "" { | ||
return fmt.Errorf("specify only one repo or team") | ||
} else if config.opts.repo == "" && config.opts.team == "" { | ||
return fmt.Errorf("specify at least one repo or team") | ||
} |
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.
Bringing this inline with the suggestion above:
if config.opts.repo != "" && config.opts.team != "" { | |
return fmt.Errorf("specify only one repo or team") | |
} else if config.opts.repo == "" && config.opts.team == "" { | |
return fmt.Errorf("specify at least one repo or team") | |
} | |
if config.opts.repo != "" && config.opts.team != "" { | |
return fmt.Errorf("specify only one of `--repo` or `--team`") | |
} else if config.opts.repo == "" && config.opts.team == "" { | |
return fmt.Errorf("specify either `--repo` or `--team`") | |
} |
linkCmd.Flags().StringVarP(&opts.repo, "repo", "R", "", "The repository to be unlinked from this project") | ||
linkCmd.Flags().StringVarP(&opts.team, "team", "T", "", "The team to be unlinked from this project") |
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.
linkCmd.Flags().StringVarP(&opts.repo, "repo", "R", "", "The repository to be unlinked from this project") | |
linkCmd.Flags().StringVarP(&opts.team, "team", "T", "", "The team to be unlinked from this project") | |
linkCmd.Flags().StringVarP(&opts.repo, "repo", "r", "", "The repository to be unlinked from this project") | |
linkCmd.Flags().StringVarP(&opts.team, "team", "t", "", "The team to be unlinked from this project") |
pkg/cmd/project/link/link.go
Outdated
teams, err := api.OrganizationTeams(c, ghrepo.New(owner.Login, "")) | ||
if err != nil { | ||
return err | ||
} | ||
for _, team := range teams { | ||
if team.Slug == config.opts.team { | ||
config.opts.teamID = team.ID | ||
break | ||
} | ||
} | ||
if config.opts.teamID == "" { | ||
return fmt.Errorf("can't find team %s", config.opts.team) | ||
} |
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.
It seems like there should be a better way to find 1 team based on slug in an organization 🤔
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've created a new API to retrieve the ID of a team directly.
…rieve the ID of a team
pkg/cmd/project/link/link.go
Outdated
config.opts.repoID = repo.ID | ||
|
||
query, variable := linkRepoArgs(config) | ||
err = config.client.Mutate("LinkProjectV2ToRepository", query, variable) |
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.
How would you feel about creating a LinkProjectToRepository
on to the client
? Looking at Mutate
it looks like it leaks the GQL implementation to the caller (the doc indicates some tech debt here and I agree).
The same for LinkProjectToTeam
and the Unlink
variants.
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.
@williammartin I moved the functions to the client
, take a look at the latest changes 🚀
…ods to `queries.go`
pkg/cmd/project/link/link_test.go
Outdated
httpReg := &httpmock.Registry{} | ||
defer httpReg.Verify(t) | ||
|
||
httpReg.Register( | ||
httpmock.GraphQL(`query RepositoryInfo\b`), | ||
httpmock.StringResponse(`{"data":{"repository":{"id": "repo-ID"}}}`), | ||
) | ||
httpClient := newTestClient(httpReg) |
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.
Can we get rid of this and do something like:
gock.New("https://api.github.com").
Post("/graphql").
MatchType("json").
JSON(map[string]interface{}{
"query": "query OrganizationTeam.*",
}).
Reply(200).
JSON(map[string]interface{}{
"data": map[string]interface{}{
"organization": map[string]interface{}{
"team": map[string]interface{}{
"id": "team-ID",
},
},
},
})
And then pass the http.DefaultClient
in the factory function below. I tried this out and it seems to work, but I want to give you a chance to look at it.
It seems like we should try to settle on just one form of http mocking.
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.
Same for the other tests in link
and unlink
of course.
pkg/cmd/project/link/link.go
Outdated
} | ||
|
||
func linkTeam(c *api.Client, owner *queries.Owner, config linkConfig) error { | ||
team, err := api.OrganizationTeam(c, ghrepo.New(owner.Login, ""), config.opts.team) |
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.
ghrepo.New(owner.Login, "")
doesn't look quite right to me. This is going to construct a new Repo
with the default host (github.com
). This host is then used in the OrganizationTeam
function as the URL to send the GQL query to. However, it's possible that we're supposed to be targeting an Enterprise Server installation e.g. ghe.io
.
I think instead what we should do here is make the signature: OrganizationTeam(client *Client, hostname string, org string, teamSlug string)
and pass exactly what is needed (note that I think we should do work to make this client.OrganizationTeam(org, teamSlug string)
but that's out of scope for now). I know you copied from the surrounding function signatures but tbh they are not good. There's absolutely no reason for a function that fetches teams for projects for an organization to take a repo
as an argument. This time it's leaking from the caller into the function because the callers happened to have a repo
to hand.
With that signature change, we need to find the host
that we should be using and I would suggest we use host, _ := cfg.Authentication().DefaultHost()
and pass that host
in, as exists in other functions like gh gist list
.
Let me know if this makes sense or not, it's kind of meta.
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 agree with you. My initial idea was to keep the parameters of functions in the same file as consistent as possible, even if it looks a bit odd. However, with the question you've raised, I think implementing it your way would be better
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.
@benebsiny I think you added a question and then deleted it cause I can't see it anymore but actually I think it was a really good question. Indeed I think for linkRepo
we also need to allow the opportunity for the repo to be on different hosts.
I also have a question, if I were in a repo say cli/cli
and I ran gh project link 1
would you expect it to work? What about GH_REPO=cli/cli gh project link 1
?
The reason I'm asking this is because other commands that work with a repo support this and the approach to solving linkRepo
above will vary based on this design decision.
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 think you added a question and then deleted it cause I can't see it anymore...
Yes, I asked the question, and I later found the answer (the answer is same as yours), so I deleted that question.
I also have a question, if I were in a repo say cli/cli and I ran gh project link 1 would you expect it to work?
I think it's really a good feature. I can implement it.
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.
Yeh so in that regard I think you should look at something like the issue
command and the EnableRepoOverride
function. Sorry I don't have time to provide more guidance right now but see how it is used for issue view
(or any other commands)
pkg/cmd/project/link/link.go
Outdated
return printResults(config, result.URL) | ||
} | ||
|
||
func printResults(config linkConfig, url string) error { |
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 something that you wanted to get out of the Team
or Repository
URL, or wanted to have scripted with the exporter? I'm not sure what the workflow is that would make this useful information to have and I'm always in favour of removing code unless we have a specific need.
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.
Just like other gh projects
commands, print out the URL upon successful execution. Should we refrain from printing anything after a successful execution?
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'm not sure. I think if we were to print something it should be like `"Linked X to Y" and "Unlinked X from Y". What do you think?
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.
It's good. It looks intuitive.
Fix the error regarding the printed error number when selecting the project number in interactive mode
@williammartin The support for directory-based repo and |
This is looking very close 🎉 . I've played around with the UX today and I think there's just a few things that could do with some love. Firstly, adding some text to the help description and example to both commands demonstrating that if no Secondly, I really don't think that the
I don't find it to be particularly useful information. It's also not necessarily the information they might want to see, maybe they want to see the project data rather than the repository or team? I don't think we should be tying our CLI UX to an individual query like this. If we remove this then we can also trim down our graphql data transfer because we no longer need to ask for the If people ask for this data to be machine readable in the future then we can easily add it back without handcuffing ourselves into supporting it forever now. Make sense? |
@williammartin It makes sense not to print the |
Yeh I think I would just remove |
@williammartin How about |
Sounds good |
…` and `--team` flag
@williammartin I've made some changes, checkout the latest updates. Thanks! |
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.
Sorry it's been a little while, I've been out sick.
I got a little confused by one thing, which is that:
➜ ./bin/gh project link --repo williammartin-test-org/test-repo --owner williammartin-test-org 1
GraphQL: Could not resolve to a Repository with the name 'williammartin-test-org/williammartin-test-org/test-repo'. (repository)
Doesn't work. I think you've made a design decision here that you shouldn't need to provide the org part because it can be inferred by the owner but I think we should be flexible in this case because it's how -R
is used everywhere else. If they provide org-A/repo
and --owner org-B
then they should get a useful error that this won't work (at least, right now).
If you're getting tired of making these little changes I'd be happy to do them for you but I also want to give you the opportunity to learn and own it yourself.
I'd also request as a minor thing that anywhere you use assert.NoError
or assert.Error
that you replace them with the require.NoError
and require.Error
equivalents. It's almost never useful to see the output of other assertions after an error and is often confusing.
@williammartin I have an idea. How about eliminating the use of (The comment that was just deleted) |
What I'm not sure about here is that all the other Do you think there is an issue with supporting both
I prefer this, but I don't mind. |
No, I can try to implement this feature |
@williammartin I have made some changes, take a look at the latest commit! |
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.
LGTM!
There is one minor thing which I would welcome a follow up for but I'm not going to block this PR on and that is the following case:
Given I in a cloned git repository my-org/my-repo
When I run gh project link --owner other-org
Then I would expect an error message that the orgs do not match
Thank you for all your hard work and back and forth here, and for improving the CLI!
I'm going to make an assumption here that Andy's original changes requested were addressed because it was a long time ago and they were addressed either with a different approach or pointing out reason for uppercase. |
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Update | Change | |---|---|---| | [aquaproj/aqua-registry](https://togithub.com/aquaproj/aqua-registry) | minor | `v4.146.0` -> `v4.150.0` | | [casey/just](https://togithub.com/casey/just) | minor | `1.24.0` -> `1.25.0` | | [cli/cli](https://togithub.com/cli/cli) | minor | `v2.44.1` -> `v2.45.0` | | [derailed/k9s](https://togithub.com/derailed/k9s) | minor | `v0.31.9` -> `v0.32.3` | | [eza-community/eza](https://togithub.com/eza-community/eza) | patch | `v0.18.5` -> `v0.18.6` | | [gruntwork-io/terragrunt](https://togithub.com/gruntwork-io/terragrunt) | patch | `v0.55.10` -> `v0.55.13` | | [hashicorp/packer](https://togithub.com/hashicorp/packer) | patch | `v1.10.1` -> `v1.10.2` | | [koalaman/shellcheck](https://togithub.com/koalaman/shellcheck) | minor | `v0.9.0` -> `v0.10.0` | | [sigoden/aichat](https://togithub.com/sigoden/aichat) | minor | `v0.13.0` -> `v0.14.0` | | [simulot/immich-go](https://togithub.com/simulot/immich-go) | minor | `0.10.0` -> `0.11.0` | | [snyk/cli](https://togithub.com/snyk/cli) | minor | `v1.1281.0` -> `v1.1283.0` | | [twpayne/chezmoi](https://togithub.com/twpayne/chezmoi) | patch | `v2.47.0` -> `v2.47.1` | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes <details> <summary>aquaproj/aqua-registry (aquaproj/aqua-registry)</summary> ### [`v4.150.0`](https://togithub.com/aquaproj/aqua-registry/releases/tag/v4.150.0) [Compare Source](https://togithub.com/aquaproj/aqua-registry/compare/v4.149.0...v4.150.0) [Issues](https://togithub.com/aquaproj/aqua-registry/issues?q=is%3Aissue+milestone%3Av4.150.0) | [Pull Requests](https://togithub.com/aquaproj/aqua-registry/pulls?q=is%3Apr+milestone%3Av4.150.0) | aquaproj/aqua-registry@v4.149.0...v4.150.0 #### 🎉 New Packages [#​20663](https://togithub.com/aquaproj/aqua-registry/issues/20663) [hellux/jotdown](https://togithub.com/hellux/jotdown): A Djot parser library [@​hituzi-no-sippo](https://togithub.com/hituzi-no-sippo) [#​20661](https://togithub.com/aquaproj/aqua-registry/issues/20661) [awslabs/soci-snapshotter](https://togithub.com/awslabs/soci-snapshotter) [@​ponkio-o](https://togithub.com/ponkio-o) #### Fixes [#​20706](https://togithub.com/aquaproj/aqua-registry/issues/20706) charmbracelet/mods: Follow up changes of mods v1.2.2 [charmbracelet/meta#140 ### [`v4.149.0`](https://togithub.com/aquaproj/aqua-registry/releases/tag/v4.149.0) [Compare Source](https://togithub.com/aquaproj/aqua-registry/compare/v4.148.0...v4.149.0) [Issues](https://togithub.com/aquaproj/aqua-registry/issues?q=is%3Aissue+milestone%3Av4.149.0) | [Pull Requests](https://togithub.com/aquaproj/aqua-registry/pulls?q=is%3Apr+milestone%3Av4.149.0) | aquaproj/aqua-registry@v4.148.0...v4.149.0 #### 🎉 New Packages [#​20629](https://togithub.com/aquaproj/aqua-registry/issues/20629) [AGWA/git-crypt](https://togithub.com/AGWA/git-crypt): Transparent file encryption in git [@​florianmutter](https://togithub.com/florianmutter) [#​20653](https://togithub.com/aquaproj/aqua-registry/issues/20653) [logdyhq/logdy-core](https://togithub.com/logdyhq/logdy-core): Web based real-time log viewer. Stream ANY content to a web UI with autogenerated filters. Parse any format with TypeScript #### Fixes [#​20651](https://togithub.com/aquaproj/aqua-registry/issues/20651) google/osv-scanner: Follow up changes of osv-scanner v1.7.0 [google/osv-scanner#831 [#​20652](https://togithub.com/aquaproj/aqua-registry/issues/20652) GoogleContainerTools/container-structure-test: Follow up changes of container-structure-test v1.17.0 https://github.com/GoogleContainerTools/container-structure-test/releases/tag/v1.17.0 > Important > Releases are no longer published to GCS, use the github release asset to access the binary. ### [`v4.148.0`](https://togithub.com/aquaproj/aqua-registry/releases/tag/v4.148.0) [Compare Source](https://togithub.com/aquaproj/aqua-registry/compare/v4.147.0...v4.148.0) [Issues](https://togithub.com/aquaproj/aqua-registry/issues?q=is%3Aissue+milestone%3Av4.148.0) | [Pull Requests](https://togithub.com/aquaproj/aqua-registry/pulls?q=is%3Apr+milestone%3Av4.148.0) | aquaproj/aqua-registry@v4.147.0...v4.148.0 ##### 🎉 New Packages [#​20520](https://togithub.com/aquaproj/aqua-registry/issues/20520) [freshautomations/stoml](https://togithub.com/freshautomations/stoml): Simple TOML parser for Bash [@​ponkio-o](https://togithub.com/ponkio-o) [#​20510](https://togithub.com/aquaproj/aqua-registry/issues/20510) [vmware/govmomi/govc](https://togithub.com/vmware/govmomi/tree/main/govc): a vSphere CLI built on top of govmomi [@​NikitaCOEUR](https://togithub.com/NikitaCOEUR) [#​20516](https://togithub.com/aquaproj/aqua-registry/issues/20516) [vmware/govmomi/vcsim](https://togithub.com/vmware/govmomi/blob/main/vcsim/README.md): A vCenter and ESXi API based simulator [@​NikitaCOEUR](https://togithub.com/NikitaCOEUR) ### [`v4.147.0`](https://togithub.com/aquaproj/aqua-registry/releases/tag/v4.147.0) [Compare Source](https://togithub.com/aquaproj/aqua-registry/compare/v4.146.0...v4.147.0) [Issues](https://togithub.com/aquaproj/aqua-registry/issues?q=is%3Aissue+milestone%3Av4.147.0) | [Pull Requests](https://togithub.com/aquaproj/aqua-registry/pulls?q=is%3Apr+milestone%3Av4.147.0) | aquaproj/aqua-registry@v4.146.0...v4.147.0 #### 🎉 New Packages [#​20479](https://togithub.com/aquaproj/aqua-registry/issues/20479) [antham/gommit](https://togithub.com/antham/gommit): Enforce git message commit consistency [@​NikitaCOEUR](https://togithub.com/NikitaCOEUR) [#​20468](https://togithub.com/aquaproj/aqua-registry/issues/20468) [apache/maven-mvnd](https://togithub.com/apache/maven-mvnd): Apache Maven Daemon [@​tadayosi](https://togithub.com/tadayosi) #### Fixes [#​20493](https://togithub.com/aquaproj/aqua-registry/issues/20493) kubescape/kubescape: Follow up changes of kubescape v3.0.4 </details> <details> <summary>casey/just (casey/just)</summary> ### [`v1.25.0`](https://togithub.com/casey/just/blob/HEAD/CHANGELOG.md#1250---2024-03-07) [Compare Source](https://togithub.com/casey/just/compare/1.24.0...1.25.0) ##### Added - Add `blake3` and `blake3_file` functions ([#​1860](https://togithub.com/casey/just/pull/1860) by [tgross35](https://togithub.com/tgross35)) ##### Misc - Fix readme typo ([#​1936](https://togithub.com/casey/just/pull/1936) by [Justintime50](https://togithub.com/Justintime50)) - Use unwrap_or_default ([#​1928](https://togithub.com/casey/just/pull/1928)) - Set codegen-units to 1 reduce release binary size ([#​1920](https://togithub.com/casey/just/pull/1920) by [amarao](https://togithub.com/amarao)) - Document openSUSE package ([#​1918](https://togithub.com/casey/just/pull/1918) by [sfalken](https://togithub.com/sfalken)) - Fix install.sh shellcheck warnings ([#​1912](https://togithub.com/casey/just/pull/1912) by [tgross35](https://togithub.com/tgross35)) </details> <details> <summary>cli/cli (cli/cli)</summary> ### [`v2.45.0`](https://togithub.com/cli/cli/releases/tag/v2.45.0): GitHub CLI 2.45.0 [Compare Source](https://togithub.com/cli/cli/compare/v2.44.1...v2.45.0) #### What's Changed - Resolve go compiler regression by [@​williammartin](https://togithub.com/williammartin) in [cli/cli#8716 - bug: fixed the msg returned for patching a repo variable by [@​dean-tate](https://togithub.com/dean-tate) in [cli/cli#8715 - Fix regression around commas in commit titles during `pr create` by [@​williammartin](https://togithub.com/williammartin) in [cli/cli#8768 - feat: Add `ref` option to `gh cache list` by [@​toshimaru](https://togithub.com/toshimaru) in [cli/cli#8711 - Make comments in the default config file more informative by [@​bartekpacia](https://togithub.com/bartekpacia) in [cli/cli#8756 - Link Project to Repository or Team Command by [@​benebsiny](https://togithub.com/benebsiny) in [cli/cli#8595 - Clarify helptext for search prs regarding archived repos by [@​stuart-leitch](https://togithub.com/stuart-leitch) in [cli/cli#8738 - Simplify install command for Debian & Ubuntu by [@​hongquan](https://togithub.com/hongquan) in [cli/cli#8693 - Support `project view --web` with TTY by [@​harveysanders](https://togithub.com/harveysanders) in [cli/cli#8773 - Bump cli/go-gh v2.6.0 for tenant using GH_TOKEN by [@​andyfeller](https://togithub.com/andyfeller) in [cli/cli#8787 #### New Contributors - [@​dean-tate](https://togithub.com/dean-tate) made their first contribution in [cli/cli#8715 - [@​bartekpacia](https://togithub.com/bartekpacia) made their first contribution in [cli/cli#8756 - [@​stuart-leitch](https://togithub.com/stuart-leitch) made their first contribution in [cli/cli#8738 - [@​hongquan](https://togithub.com/hongquan) made their first contribution in [cli/cli#8693 **Full Changelog**: cli/cli@v2.44.1...v2.45.0 </details> <details> <summary>derailed/k9s (derailed/k9s)</summary> ### [`v0.32.3`](https://togithub.com/derailed/k9s/releases/tag/v0.32.3) [Compare Source](https://togithub.com/derailed/k9s/compare/v0.32.2...v0.32.3) <img src="https://raw.githubusercontent.com/derailed/k9s/master/assets/k9s.png" align="center" width="800" height="auto"/> ### Release v0.32.3 #### Notes Thank you to all that contributed with flushing out issues and enhancements for K9s! I'll try to mark some of these issues as fixed. But if you don't mind grab the latest rev and see if we're happier with some of the fixes! If you've filed an issue please help me verify and close. Your support, kindness and awesome suggestions to make K9s better are, as ever, very much noted and appreciated! Also big thanks to all that have allocated their own time to help others on both slack and on this repo!! As you may know, K9s is not pimped out by corps with deep pockets, thus if you feel K9s is helping your Kubernetes journey, please consider joining our [sponsorship program](https://togithub.com/sponsors/derailed) and/or make some noise on social! [@​kitesurfer](https://twitter.com/kitesurfer) On Slack? Please join us [K9slackers](https://join.slack.com/t/k9sers/shared_invite/enQtOTA5MDEyNzI5MTU0LWQ1ZGI3MzliYzZhZWEyNzYxYzA3NjE0YTk1YmFmNzViZjIyNzhkZGI0MmJjYzhlNjdlMGJhYzE2ZGU1NjkyNTM) #### Maintenance Release! Look like v0.32.2 drop release bins are toast. So m'o aftermath ;( *** #### Videos Are In The Can! Please dial [K9s Channel](https://www.youtube.com/channel/UC897uwPygni4QIjkPCpgjmw) for up coming content... - [K9s v0.31.0 Configs+Sneak peek](https://youtu.be/X3444KfjguE) - [K9s v0.30.0 Sneak peek](https://youtu.be/mVBc1XneRJ4) - [Vulnerability Scans](https://youtu.be/ULkl0MsaidU) *** #### Resolved Issues - [#​2584](https://togithub.com/derailed/k9s/issues/2584) Transfer of file doesn't detect corruption (with feelings!) *** <img src="https://raw.githubusercontent.com/derailed/k9s/master/assets/imhotep_logo.png" width="32" height="auto"/> © 2024 Imhotep Software LLC. All materials licensed under [Apache v2.0](http://www.apache.org/licenses/LICENSE-2.0) ### [`v0.32.2`](https://togithub.com/derailed/k9s/releases/tag/v0.32.2) [Compare Source](https://togithub.com/derailed/k9s/compare/v0.32.1...v0.32.2) <img src="https://raw.githubusercontent.com/derailed/k9s/master/assets/k9s.png" align="center" width="800" height="auto"/> ### Release v0.32.2 #### Notes Thank you to all that contributed with flushing out issues and enhancements for K9s! I'll try to mark some of these issues as fixed. But if you don't mind grab the latest rev and see if we're happier with some of the fixes! If you've filed an issue please help me verify and close. Your support, kindness and awesome suggestions to make K9s better are, as ever, very much noted and appreciated! Also big thanks to all that have allocated their own time to help others on both slack and on this repo!! As you may know, K9s is not pimped out by corps with deep pockets, thus if you feel K9s is helping your Kubernetes journey, please consider joining our [sponsorship program](https://togithub.com/sponsors/derailed) and/or make some noise on social! [@​kitesurfer](https://twitter.com/kitesurfer) On Slack? Please join us [K9slackers](https://join.slack.com/t/k9sers/shared_invite/enQtOTA5MDEyNzI5MTU0LWQ1ZGI3MzliYzZhZWEyNzYxYzA3NjE0YTk1YmFmNzViZjIyNzhkZGI0MmJjYzhlNjdlMGJhYzE2ZGU1NjkyNTM) #### Maintenance Release! Mo aftermath ;( *** #### Videos Are In The Can! Please dial [K9s Channel](https://www.youtube.com/channel/UC897uwPygni4QIjkPCpgjmw) for up coming content... - [K9s v0.31.0 Configs+Sneak peek](https://youtu.be/X3444KfjguE) - [K9s v0.30.0 Sneak peek](https://youtu.be/mVBc1XneRJ4) - [Vulnerability Scans](https://youtu.be/ULkl0MsaidU) *** #### Resolved Issues - [#​2582](https://togithub.com/derailed/k9s/issues/2582) Slowness due to client-side throttling in v0.32.0 (Maybe??) - [#​2593](https://togithub.com/derailed/k9s/issues/2593) Popeye not working in 0.32.X *** <img src="https://raw.githubusercontent.com/derailed/k9s/master/assets/imhotep_logo.png" width="32" height="auto"/> © 2024 Imhotep Software LLC. All materials licensed under [Apache v2.0](http://www.apache.org/licenses/LICENSE-2.0) ### [`v0.32.1`](https://togithub.com/derailed/k9s/releases/tag/v0.32.1) [Compare Source](https://togithub.com/derailed/k9s/compare/v0.32.0...v0.32.1) <img src="https://raw.githubusercontent.com/derailed/k9s/master/assets/k9s.png" align="center" width="800" height="auto"/> ### Release v0.32.1 #### Notes Thank you to all that contributed with flushing out issues and enhancements for K9s! I'll try to mark some of these issues as fixed. But if you don't mind grab the latest rev and see if we're happier with some of the fixes! If you've filed an issue please help me verify and close. Your support, kindness and awesome suggestions to make K9s better are, as ever, very much noted and appreciated! Also big thanks to all that have allocated their own time to help others on both slack and on this repo!! As you may know, K9s is not pimped out by corps with deep pockets, thus if you feel K9s is helping your Kubernetes journey, please consider joining our [sponsorship program](https://togithub.com/sponsors/derailed) and/or make some noise on social! [@​kitesurfer](https://twitter.com/kitesurfer) On Slack? Please join us [K9slackers](https://join.slack.com/t/k9sers/shared_invite/enQtOTA5MDEyNzI5MTU0LWQ1ZGI3MzliYzZhZWEyNzYxYzA3NjE0YTk1YmFmNzViZjIyNzhkZGI0MmJjYzhlNjdlMGJhYzE2ZGU1NjkyNTM) #### Maintenance Release! The aftermath ;( *** #### Videos Are In The Can! Please dial [K9s Channel](https://www.youtube.com/channel/UC897uwPygni4QIjkPCpgjmw) for up coming content... - [K9s v0.31.0 Configs+Sneak peek](https://youtu.be/X3444KfjguE) - [K9s v0.30.0 Sneak peek](https://youtu.be/mVBc1XneRJ4) - [Vulnerability Scans](https://youtu.be/ULkl0MsaidU) *** #### Resolved Issues - [#​2584](https://togithub.com/derailed/k9s/issues/2584) Transfer of file doesn't detect corruption - [#​2579](https://togithub.com/derailed/k9s/issues/2579) Default sorting behavior changed to descending sort bug *** #### Contributed PRs Please be sure to give `Big Thanks!` and `ATTA Girls/Boys!` to all the fine contributors for making K9s better for all of us!! - [#​2586](https://togithub.com/derailed/k9s/pull/2586) Properly initialize key actions in picker *** <img src="https://raw.githubusercontent.com/derailed/k9s/master/assets/imhotep_logo.png" width="32" height="auto"/> © 2024 Imhotep Software LLC. All materials licensed under [Apache v2.0](http://www.apache.org/licenses/LICENSE-2.0) ### [`v0.32.0`](https://togithub.com/derailed/k9s/releases/tag/v0.32.0) [Compare Source](https://togithub.com/derailed/k9s/compare/v0.31.9...v0.32.0) <img src="https://raw.githubusercontent.com/derailed/k9s/master/assets/k9s.png" align="center" width="800" height="auto"/> ### Release v0.32.0 #### Notes Thank you to all that contributed with flushing out issues and enhancements for K9s! I'll try to mark some of these issues as fixed. But if you don't mind grab the latest rev and see if we're happier with some of the fixes! If you've filed an issue please help me verify and close. Your support, kindness and awesome suggestions to make K9s better are, as ever, very much noted and appreciated! Also big thanks to all that have allocated their own time to help others on both slack and on this repo!! As you may know, K9s is not pimped out by corps with deep pockets, thus if you feel K9s is helping your Kubernetes journey, please consider joining our [sponsorship program](https://togithub.com/sponsors/derailed) and/or make some noise on social! [@​kitesurfer](https://twitter.com/kitesurfer) On Slack? Please join us [K9slackers](https://join.slack.com/t/k9sers/shared_invite/enQtOTA5MDEyNzI5MTU0LWQ1ZGI3MzliYzZhZWEyNzYxYzA3NjE0YTk1YmFmNzViZjIyNzhkZGI0MmJjYzhlNjdlMGJhYzE2ZGU1NjkyNTM) #### Maintenance Release! A lot of refactors, perf improvements (crossing fingers+toes!) and general spring cleaning items in this release. Thus I expect a bit of `disturbance in the farce` given the major code churns, so please beware! *** #### Videos Are In The Can! Please dial [K9s Channel](https://www.youtube.com/channel/UC897uwPygni4QIjkPCpgjmw) for up coming content... - [K9s v0.31.0 Configs+Sneak peek](https://youtu.be/X3444KfjguE) - [K9s v0.30.0 Sneak peek](https://youtu.be/mVBc1XneRJ4) - [Vulnerability Scans](https://youtu.be/ULkl0MsaidU) *** #### A Word From Our Sponsors... To all the good folks below that opted to `pay it forward` and join our sponsorship program, I salute you!! - [Justin Reid](https://togithub.com/jmreid) - [Danni](https://togithub.com/danninov) - [Robert Krahn](https://togithub.com/rksm) - [Hao Ke](https://togithub.com/kehao95) - [PH](https://togithub.com/raphael-com-ph) > Sponsorship cancellations since the last release: **9!!** 🥹 *** #### Resolved Issues - [#​2569](https://togithub.com/derailed/k9s/issues/2569) k9s panics on start if the main config file (config.yml) is owned by root - [#​2568](https://togithub.com/derailed/k9s/issues/2568) kube context in running k9s is no longer sticky, during kubectx context switch - [#​2560](https://togithub.com/derailed/k9s/issues/2560) Namespace/Settings keeps resetting - [#​2557](https://togithub.com/derailed/k9s/issues/2557) \[Feature]: Sort CRDs by their group - [#​1462](https://togithub.com/derailed/k9s/issues/1462) k9s running very slowly when opening namespace with 13k pods (maybe??) *** #### Contributed PRs Please be sure to give `Big Thanks!` and `ATTA Girls/Boys!` to all the fine contributors for making K9s better for all of us!! - [#​2564](https://togithub.com/derailed/k9s/pull/2564) Add everforest skins - [#​2558](https://togithub.com/derailed/k9s/pull/2558) feat: sort by role in node list view - [#​2554](https://togithub.com/derailed/k9s/pull/2554) Added context to the debug command for debug-container plugin - [#​2554](https://togithub.com/derailed/k9s/pull/2554) Correctly respect the KUBECACHEDIR env var - [#​2546](https://togithub.com/derailed/k9s/pull/2546) Use configured log fgColor to print log markers *** <img src="https://raw.githubusercontent.com/derailed/k9s/master/assets/imhotep_logo.png" width="32" height="auto"/> © 2024 Imhotep Software LLC. All materials licensed under [Apache v2.0](http://www.apache.org/licenses/LICENSE-2.0) </details> <details> <summary>eza-community/eza (eza-community/eza)</summary> ### [`v0.18.6`](https://togithub.com/eza-community/eza/releases/tag/v0.18.6): eza v0.18.6 [Compare Source](https://togithub.com/eza-community/eza/compare/v0.18.5...v0.18.6) ### Changelog ##### Bug Fixes - NetBSD did not have fflagstostr and as such did not build properly - Fix total-size option - Add fortran to source filetypes - Fix absolute_path() for broken symlinks - Update line numbers in panic messages in tests ##### Features - Add filetype and icon for age - Adding icons for graphql extensions - Add nim icons - Use fsharp icon for fsproj files (similar to cs/csproj) - Add new icons, diverse selection - Adding more haskell related icons - Adding more icons for docker specific files - Adding more dockerfile icons - Add --absolute flag - Add shell completions for --absolute flag ##### Miscellaneous Tasks - Cleaning dirs - Release eza v0.18.6 ##### Refactor - Port grid and grid-details to new uutils-term-grid ##### Testing - Add integration tests and powertests for --absolute flag - Add directory symlink to tests/itest/ ##### Build - Bump log from 0.4.20 to 0.4.21 - Bump rayon from 1.8.1 to 1.9.0 ##### Ci - Add NetBSD to CI. - Fix warnings. - Add FreeBSD to CI. - Add OpenBSD to CI. ### Checksums #### sha256sum 191278367b7e889397fbe68a7debe7d2d3daaf114ecac0ad038ceea6064c1eb8 ./target/bin-0.18.6/eza_aarch64-unknown-linux-gnu.tar.gz c7bd6e33f473bd4d6e6e7718d9495d82bea5cec7d09dc17189b6d9d1679a858f ./target/bin-0.18.6/eza_aarch64-unknown-linux-gnu.zip 1a299ebf111faa383c36f105e1de79f57e404b9b638ca23f703cbb3fdf3e8b1b ./target/bin-0.18.6/eza_arm-unknown-linux-gnueabihf.tar.gz ab164831943ee0b885894e336cd3953e8e08f070dbca29494114289d8938ed5b ./target/bin-0.18.6/eza_arm-unknown-linux-gnueabihf.zip 0e60a8e625499b005dd88ea549cbc65c2276b9099739627a80f3e7becc5a5efe ./target/bin-0.18.6/eza.exe_x86_64-pc-windows-gnu.tar.gz 4ad60984559c4b98c7188190ba6e3e847db22faf5350eadf28c0376d2cc5a4cd ./target/bin-0.18.6/eza.exe_x86_64-pc-windows-gnu.zip 6bdd2663bef910c538e4be5d9997944f40d300bcefa185cbe201e06db9cdb4f5 ./target/bin-0.18.6/eza_x86_64-unknown-linux-gnu.tar.gz 2e5c4095ff125d097b876729c02265a028c672ff2c064d4b2c1c824b2277f48c ./target/bin-0.18.6/eza_x86_64-unknown-linux-gnu.zip 45e95b438e181f64c070c4178215c5abd1b12024f32121e51ab896ba47fcc189 ./target/bin-0.18.6/eza_x86_64-unknown-linux-musl.tar.gz 91024a0d89987a1c47f8b9cf04135689430c399917ee4bef207a78f5c6978a1c ./target/bin-0.18.6/eza_x86_64-unknown-linux-musl.zip #### md5sum c208c622adf7be481ab55152af500f08 ./target/bin-0.18.6/eza_aarch64-unknown-linux-gnu.tar.gz 70e3787f5aa0bbd732839ae36c8c8558 ./target/bin-0.18.6/eza_aarch64-unknown-linux-gnu.zip d3721703401725e1646cf61414a7b996 ./target/bin-0.18.6/eza_arm-unknown-linux-gnueabihf.tar.gz ec2bd3447a6c2a5c60e6802bfd1ddbda ./target/bin-0.18.6/eza_arm-unknown-linux-gnueabihf.zip 85c4245152e883107f317ccdf6754411 ./target/bin-0.18.6/eza.exe_x86_64-pc-windows-gnu.tar.gz f0516a0f0f73455252af4778d6a3a228 ./target/bin-0.18.6/eza.exe_x86_64-pc-windows-gnu.zip 60308bc42a5e7bbb6d999ab037a76397 ./target/bin-0.18.6/eza_x86_64-unknown-linux-gnu.tar.gz ed7735ff41f2893c44c6b421a6ab110c ./target/bin-0.18.6/eza_x86_64-unknown-linux-gnu.zip e88d58eacb7452640b44114352789ee4 ./target/bin-0.18.6/eza_x86_64-unknown-linux-musl.tar.gz 0340ff5daa8956354f36c69cbbbcc017 ./target/bin-0.18.6/eza_x86_64-unknown-linux-musl.zip #### blake3sum e5043a7ed6a44dd00d8fd24f16f3ef7e5ebc992b720b6828d8da26aa93398824 ./target/bin-0.18.6/eza_aarch64-unknown-linux-gnu.tar.gz 3a080f79e3b137600833bacd6df00fbefef7b46f82a8b85eca1e8b5d018e8d3e ./target/bin-0.18.6/eza_aarch64-unknown-linux-gnu.zip 4d7e79b9b22e2322c75d1253ef5833e0c69c7009ce4c46400650e5ac1cb3e4af ./target/bin-0.18.6/eza_arm-unknown-linux-gnueabihf.tar.gz de7d9469a1e22789eef879c00b07557c812c5dedbeee1c5237268dc89e38d7fb ./target/bin-0.18.6/eza_arm-unknown-linux-gnueabihf.zip ad5ec3c1acf4651657d3d95c54beeae4b3d021090966f54a2d7114ad995b4dec ./target/bin-0.18.6/eza.exe_x86_64-pc-windows-gnu.tar.gz f3618f1ade4e922c2876250121ee89a858b4747d4ead5bd86f98fecf7d96de41 ./target/bin-0.18.6/eza.exe_x86_64-pc-windows-gnu.zip a28330cc6d67044c9b240fbaa161baca16b36d244fb1d98e6bbcb2e419beb216 ./target/bin-0.18.6/eza_x86_64-unknown-linux-gnu.tar.gz b15f7d466c9af7080392d13bc61ad848c38ff4661b126a74e9aef4913ee0c9a5 ./target/bin-0.18.6/eza_x86_64-unknown-linux-gnu.zip 7aabd65c452eb0dba63c9ccb361fac814703f858cc084e4d750f97e65ea76c70 ./target/bin-0.18.6/eza_x86_64-unknown-linux-musl.tar.gz adbf85cd6d9a14e73d186aa6f54fc809236411864c792660cd6364995c782e0f ./target/bin-0.18.6/eza_x86_64-unknown-linux-musl.zip </details> <details> <summary>gruntwork-io/terragrunt (gruntwork-io/terragrunt)</summary> ### [`v0.55.13`](https://togithub.com/gruntwork-io/terragrunt/releases/tag/v0.55.13) [Compare Source](https://togithub.com/gruntwork-io/terragrunt/compare/v0.55.12...v0.55.13) #### Updated CLI args, config attributes and blocks - `scaffold` #### Description - Fixed handling of `scaffold` command exit in MacOS #### Related links - [gruntwork-io/terragrunt#2984 ### [`v0.55.12`](https://togithub.com/gruntwork-io/terragrunt/releases/tag/v0.55.12) [Compare Source](https://togithub.com/gruntwork-io/terragrunt/compare/v0.55.11...v0.55.12) #### Updated CLI args, config attributes and blocks - `scaffold` #### Description - Fixed handling of `scaffold` command in Windows #### Related links - [gruntwork-io/terragrunt#2982 ### [`v0.55.11`](https://togithub.com/gruntwork-io/terragrunt/releases/tag/v0.55.11) [Compare Source](https://togithub.com/gruntwork-io/terragrunt/compare/v0.55.10...v0.55.11) #### Updated CLI args, config attributes and blocks - `catalog` #### Description - Improved handling of exit from the `catalog` view in MacOS. #### Related links - [gruntwork-io/terragrunt#2978 </details> <details> <summary>hashicorp/packer (hashicorp/packer)</summary> ### [`v1.10.2`](https://togithub.com/hashicorp/packer/releases/tag/v1.10.2) [Compare Source](https://togithub.com/hashicorp/packer/compare/v1.10.1...v1.10.2) #### 1.10.2 (March 6, 2024) ##### NOTES: - Continuing the work in in Packer v1.10.0 we introduced the ability to install a locally sourced plugin using packer `plugins install --path`, this release extends support to development plugin binaries - binaries that report "dev" as part of their plugin version. Instead of manually placing a downloaded binary into the executable or current working directory we encourage you to run the command `packer plugins install –path <path-to- downloaded-extracted-binary> github.com/hashicorp/happycloud` to install the binary into a Packer compatible path. [GH-12855](https://togithub.com/hashicorp/packer/pull/12855) ##### IMPROVEMENTS: - cmd/plugins: Add support for installing local development binaries to `packer plugins install`. [GH-12855](https://togithub.com/hashicorp/packer/pull/12855) - core: Validate bucket name when using `hcp_packer_registry` block. [GH-12820](https://togithub.com/hashicorp/packer/pull/12820) - core: Update github.com/hashicorp/hcp-sdk-go from 0.83.0 to 0.85.0. [GH-12850](https://togithub.com/hashicorp/packer/pull/12850) [GH-12827](https://togithub.com/hashicorp/packer/pull/12827) ##### BUG FIXES: - core/hcp: HCP Packer build failures properly distinguish between incompatible plugins and general publishing errors. [GH-12854](https://togithub.com/hashicorp/packer/pull/12854) [GH-12835](https://togithub.com/hashicorp/packer/pull/12835) </details> <details> <summary>koalaman/shellcheck (koalaman/shellcheck)</summary> ### [`v0.10.0`](https://togithub.com/koalaman/shellcheck/blob/HEAD/CHANGELOG.md#v0100---2024-03-07) [Compare Source](https://togithub.com/koalaman/shellcheck/compare/v0.9.0...v0.10.0) ##### Added - Precompiled binaries for macOS ARM64 (darwin.aarch64) - Added support for busybox sh - Added flag --rcfile to specify an rc file by name. - Added `extended-analysis=true` directive to enable/disable dataflow analysis (with a corresponding --extended-analysis flag). - SC2324: Warn when x+=1 appends instead of increments - SC2325: Warn about multiple `!`s in dash/sh. - SC2326: Warn about `foo | ! bar` in bash/dash/sh. - SC3012: Warn about lexicographic-compare bashism in test like in \[ ] - SC3013: Warn bashism `test _ -op/-nt/-ef _` like in \[ ] - SC3014: Warn bashism `test _ == _` like in \[ ] - SC3015: Warn bashism `test _ =~ _` like in \[ ] - SC3016: Warn bashism `test -v _` like in \[ ] - SC3017: Warn bashism `test -a _` like in \[ ] ##### Fixed - source statements with here docs now work correctly - "(Array.!): undefined array element" error should no longer occur </details> <details> <summary>sigoden/aichat (sigoden/aichat)</summary> ### [`v0.14.0`](https://togithub.com/sigoden/aichat/releases/tag/v0.14.0) [Compare Source](https://togithub.com/sigoden/aichat/compare/v0.13.0...v0.14.0) #### Breaking Changes ##### Compress session automaticlly ([#​333](https://togithub.com/sigoden/aichat/pull/333)) When the total number of tokens in the session messages exceeds `compress_threshold`, aichat will automatically compress the session. **This means you can chat forever in the session**. The default `compress_threshold` is 2000, set this value to zero to disable automatic compression. ##### Rename `max_tokens` to `max_input_tokens` ([#​339](https://togithub.com/sigoden/aichat/pull/339)) To avoid misunderstandings. The `max_input_tokens` also be referred to as `context_window`. ```diff models: - name: mistral -- max_tokens: 8192 ++ max_input_tokens: 8192 ``` #### New Models - claude - claude:claude-3-opus-20240229 - claude:claude-3-sonnet-20240229 - claude:claude-2.1 - claude:claude-2.0 - claude:claude-instant-1.2 - mistral - mistral:mistral-small-latest - mistral:mistral-medium-latest - mistral:mistral-larget-latest - mistral:open-mistral-7b - mistral:open-mixtral-8x7b - ernie - ernie:ernie-3.5-4k-0205 - ernie:ernie-3.5-8k-0205 - ernie:ernie-speed #### Commmand Changes - `-c/--code` generate code only ([#​327](https://togithub.com/sigoden/aichat/pull/327)) #### Chat-REPL Changes - `.clear messages` to clear session messages ([#​332](https://togithub.com/sigoden/aichat/pull/327)) #### Miscellences - shell integrations ([#​323](https://togithub.com/sigoden/aichat/pull/323)) - allow overriding execute/code role ([#​331](https://togithub.com/sigoden/aichat/pull/331)) **Full Changelog**: sigoden/aichat@v0.13.0...v0.14.0 </details> <details> <summary>simulot/immich-go (simulot/immich-go)</summary> ### [`v0.11.0`](https://togithub.com/simulot/immich-go/releases/tag/0.11.0) [Compare Source](https://togithub.com/simulot/immich-go/compare/0.10.0...0.11.0) #### Changelog - [`4b04b24`](https://togithub.com/simulot/immich-go/commit/4b04b24) chore(linter): improve error checkcing ([#​151](https://togithub.com/simulot/immich-go/issues/151)) ([#​153](https://togithub.com/simulot/immich-go/issues/153)) - [`ed48ec8`](https://togithub.com/simulot/immich-go/commit/ed48ec8) chore(linter): improve error checkcing ([#​154](https://togithub.com/simulot/immich-go/issues/154)) - [`a47cca4`](https://togithub.com/simulot/immich-go/commit/a47cca4) feat: get the list of supported extensions from the server [#​134](https://togithub.com/simulot/immich-go/issues/134) ([#​164](https://togithub.com/simulot/immich-go/issues/164)) - [`c3907ec`](https://togithub.com/simulot/immich-go/commit/c3907ec) Add CI with Linting and Testing ([#​142](https://togithub.com/simulot/immich-go/issues/142)) - [`3f92c68`](https://togithub.com/simulot/immich-go/commit/3f92c68) Feat--get-the-list-of-supported-extensions-from-the-server-[#​134](https://togithub.com/simulot/immich-go/issues/134) ([#​166](https://togithub.com/simulot/immich-go/issues/166)) - [`c65215b`](https://togithub.com/simulot/immich-go/commit/c65215b) Refactor file paths and name ([#​150](https://togithub.com/simulot/immich-go/issues/150)) - [`2b7fe45`](https://togithub.com/simulot/immich-go/commit/2b7fe45) chore(deps): bump actions/setup-go from 4 to 5 ([#​143](https://togithub.com/simulot/immich-go/issues/143)) - [`008a9e2`](https://togithub.com/simulot/immich-go/commit/008a9e2) chore(deps): bump github.com/google/uuid from 1.3.1 to 1.6.0 ([#​144](https://togithub.com/simulot/immich-go/issues/144)) - [`d91a351`](https://togithub.com/simulot/immich-go/commit/d91a351) chore(deps): bump github.com/melbahja/goph from 1.3.1 to 1.4.0 ([#​145](https://togithub.com/simulot/immich-go/issues/145)) - [`935e0a4`](https://togithub.com/simulot/immich-go/commit/935e0a4) chore(deps): bump github.com/yalue/merged_fs from 1.2.3 to 1.3.0 ([#​168](https://togithub.com/simulot/immich-go/issues/168)) - [`c80db6c`](https://togithub.com/simulot/immich-go/commit/c80db6c) chore(deps): bump golangci/golangci-lint-action from 3 to 4 ([#​156](https://togithub.com/simulot/immich-go/issues/156)) - [`362d82b`](https://togithub.com/simulot/immich-go/commit/362d82b) chore: follow immich 1.95.0 API changes ([#​170](https://togithub.com/simulot/immich-go/issues/170)) - [`8adc7c2`](https://togithub.com/simulot/immich-go/commit/8adc7c2) feat(linter): Add linter to the codebase ([#​146](https://togithub.com/simulot/immich-go/issues/146)) - [`7bc97ee`](https://togithub.com/simulot/immich-go/commit/7bc97ee) feat(linter): Add more linter to the codebase ([#​147](https://togithub.com/simulot/immich-go/issues/147)) - [`c6cf7da`](https://togithub.com/simulot/immich-go/commit/c6cf7da) fix: [#​140](https://togithub.com/simulot/immich-go/issues/140) Device UUID is not set - [`6791c93`](https://togithub.com/simulot/immich-go/commit/6791c93) rename log and journal ([#​157](https://togithub.com/simulot/immich-go/issues/157)) </details> <details> <summary>snyk/cli (snyk/cli)</summary> ### [`v1.1283.0`](https://togithub.com/snyk/cli/releases/tag/v1.1283.0) [Compare Source](https://togithub.com/snyk/cli/compare/v1.1282.1...v1.1283.0) ##### Features - add python optional dependencies support ([#​5072](https://togithub.com/snyk/snyk/issues/5072)) ([e52fdaa](https://togithub.com/snyk/snyk/commit/e52fdaab6158ccf196c58b18e6665919376df982)) ### [`v1.1282.1`](https://togithub.com/snyk/cli/releases/tag/v1.1282.1) [Compare Source](https://togithub.com/snyk/cli/compare/v1.1282.0...v1.1282.1) ##### Bug Fixes - **ci:** upgrade slack webhook ([#​5085](https://togithub.com/snyk/snyk/issues/5085)) ([9f4d512](https://togithub.com/snyk/snyk/commit/9f4d512c96401e4b163844ad5743f3ee244a999a)) - **danger:** commit pattern in danger to disable certain characters ([#​5089](https://togithub.com/snyk/snyk/issues/5089)) ([2113022](https://togithub.com/snyk/snyk/commit/211302214ad864a464dec78191f5cc0e3619b649)) - enforce correct type for security-severity in sarif output ([#​5091](https://togithub.com/snyk/snyk/issues/5091)) ([f0c8339](https://togithub.com/snyk/snyk/commit/f0c83391cb29c8f4eee190e953b0b7d357ae0cb7)) - remove dependencies when parent folder is deleted ([#​5080](https://togithub.com/snyk/snyk/issues/5080)) ([4f892f7](https://togithub.com/snyk/snyk/commit/4f892f75662f5898f035e16bbea697201afc0f33)) ### [`v1.1282.0`](https://togithub.com/snyk/cli/releases/tag/v1.1282.0) [Compare Source](https://togithub.com/snyk/cli/compare/v1.1281.0...v1.1282.0) ##### Bug Fixes - enables multi-platform support for OCI images ([#​5082](https://togithub.com/snyk/snyk/issues/5082)) ([00af20b](https://togithub.com/snyk/snyk/commit/00af20b02234205e19231f975fc7b275bb3e37ab)) ##### Features - populate CVSS scores in SARIF files ([#​5014](https://togithub.com/snyk/snyk/issues/5014)) ([#​5088](https://togithub.com/snyk/snyk/issues/5088)) ([54253f7](https://togithub.com/snyk/snyk/commit/54253f748d5df0c8ac01971d994bc58eeac44aa0)) </details> <details> <summary>twpayne/chezmoi (twpayne/chezmoi)</summary> ### [`v2.47.1`](https://togithub.com/twpayne/chezmoi/releases/tag/v2.47.1) [Compare Source](https://togithub.com/twpayne/chezmoi/compare/v2.47.0...v2.47.1) #### Changelog ##### Fixes - [`59764c8`](https://togithub.com/twpayne/chezmoi/commit/59764c88d) fix: Fix panic in unmanaged on some dir permission errors - [`dc99169`](https://togithub.com/twpayne/chezmoi/commit/dc991694c) fix: Make splitList return \[]any - [`0405763`](https://togithub.com/twpayne/chezmoi/commit/040576309) fix: Set CHEZMOI\_ environment variables for plugins - [`1f44189`](https://togithub.com/twpayne/chezmoi/commit/1f44189b6) fix: Ensure that all .chezmoi.config template variables have simple types - [`5bb87f1`](https://togithub.com/twpayne/chezmoi/commit/5bb87f1df) fix: a grammar mistake ##### Documentation updates - [`85d015b`](https://togithub.com/twpayne/chezmoi/commit/85d015ba3) docs: Refactor developer guide - [`885487b`](https://togithub.com/twpayne/chezmoi/commit/885487b96) docs: Add link to blog post - [`18c99c3`](https://togithub.com/twpayne/chezmoi/commit/18c99c3e4) docs: Add link to video </details> --- ### Configuration 📅 **Schedule**: Branch creation - "after 4pm on thursday" in timezone America/Los_Angeles, Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/scottames/dots). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yMzAuMCIsInVwZGF0ZWRJblZlciI6IjM3LjIzMC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Fixes #7849
This PR implements
gh project link
command. Here are some examples: