Skip to content
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

Merged
merged 19 commits into from Feb 29, 2024
Merged

Conversation

benebsiny
Copy link
Contributor

@benebsiny benebsiny commented Jan 18, 2024

Fixes #7849
This PR implements gh project link command. Here are some examples:

# Link project to a repo
gh project link 1 --repo my-repo

# Link project to a team
gh project link 1 --team my-team

# Unlink project from a repo
gh project unlink 1 --repo my-repo

# Unlink project from a team
gh project unlink 1 --team my-team

@benebsiny benebsiny marked this pull request as ready for review January 21, 2024 13:47
@benebsiny benebsiny requested a review from a team as a code owner January 21, 2024 13:47
@benebsiny benebsiny requested review from williammartin and removed request for a team January 21, 2024 13:47
@cliAutomation cliAutomation added the external pull request originating outside of the CLI core team label Jan 21, 2024
@cliAutomation cliAutomation added this to Needs review 🤔 in The GitHub CLI Jan 21, 2024
Copy link
Contributor

@andyfeller andyfeller left a 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!

Comment on lines 82 to 86
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")
}
Copy link
Contributor

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.

Suggested change
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`")
}

Copy link
Member

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.

Comment on lines +97 to +98
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")
Copy link
Contributor

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.

Suggested change
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")

Copy link
Contributor Author

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😱

Copy link
Member

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.

}
return printResults(config, query.LinkProjectV2ToTeam.Team.URL)
}
return fmt.Errorf("specify at least one repo or team")
Copy link
Contributor

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:

Suggested change
return fmt.Errorf("specify at least one repo or team")
return nil

Comment on lines 123 to 166
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)
}
Copy link
Contributor

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.

Comment on lines 82 to 86
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")
}
Copy link
Contributor

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:

Suggested change
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`")
}

Comment on lines +97 to +98
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")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
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")

Comment on lines 142 to 154
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)
}
Copy link
Contributor

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 🤔

Copy link
Contributor Author

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.

config.opts.repoID = repo.ID

query, variable := linkRepoArgs(config)
err = config.client.Mutate("LinkProjectV2ToRepository", query, variable)
Copy link
Member

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.

Copy link
Contributor Author

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 🚀

Comment on lines 206 to 213
httpReg := &httpmock.Registry{}
defer httpReg.Verify(t)

httpReg.Register(
httpmock.GraphQL(`query RepositoryInfo\b`),
httpmock.StringResponse(`{"data":{"repository":{"id": "repo-ID"}}}`),
)
httpClient := newTestClient(httpReg)
Copy link
Member

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.

Copy link
Member

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.

}

func linkTeam(c *api.Client, owner *queries.Owner, config linkConfig) error {
team, err := api.OrganizationTeam(c, ghrepo.New(owner.Login, ""), config.opts.team)
Copy link
Member

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.

Copy link
Contributor Author

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

Copy link
Member

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.

Copy link
Contributor Author

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.

Copy link
Member

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)

return printResults(config, result.URL)
}

func printResults(config linkConfig, url string) error {
Copy link
Member

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.

Copy link
Contributor Author

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?

Copy link
Member

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?

Copy link
Contributor Author

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.

@benebsiny
Copy link
Contributor Author

@williammartin The support for directory-based repo and GH_REPO has been implemented, checkout the latest changes 🚀

@williammartin
Copy link
Member

williammartin commented Jan 29, 2024

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 --team or --repo is provided, it will attempt to use the base repo. I think as a follow up we should consider making the error message better if neither --repo or --team are provided and we're not in a git repo, but I think that's a problem across the board with commands that expect to be in a repo so I don't expect you to handle it here.

Secondly, I really don't think that the json exporter is providing much value here. Here's what it looks like for linking a team and repo:

➜  gh project link --format json --owner williammartin-test-org --team a-team 1
{
  "ID": "T_kwDOB-vozM4AeSfB",
  "URL": "https://github.com/orgs/williammartin-test-org/teams/a-team"
}
➜  gh project link --format json --owner williammartin-test-org --repo test-repo 1
{
  "Name": "test-repo",
  "ID": "R_kgDOJgN1OA",
  "URL": "https://github.com/williammartin-test-org/test-repo"
}

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 Team or Repository as part of the mutation.

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?

@benebsiny
Copy link
Contributor Author

@williammartin It makes sense not to print the Team or Repository as a result. Maybe the --format json option can be removed for now. Thanks for your feedback!

@williammartin
Copy link
Member

Yeh I think I would just remove --format. I like the human readable text that is displayed though. It might even be useful if we have the project name to display that too?

@benebsiny
Copy link
Contributor Author

@williammartin How about project #1 'project-name'?

@williammartin
Copy link
Member

Sounds good

@benebsiny
Copy link
Contributor Author

@williammartin I've made some changes, checkout the latest updates. Thanks!

Copy link
Member

@williammartin williammartin left a 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.

@benebsiny
Copy link
Contributor Author

benebsiny commented Feb 15, 2024

@williammartin I have an idea. How about eliminating the use of --owner and instead using --repo owner/repo or --team org/team? This approach is more common and is less likely to confuse users


(The comment that was just deleted)
Should the assert.Equal also be replaced with require.Equal?

@williammartin
Copy link
Member

I have an idea. How about eliminating the use of --owner and instead using --repo owner/repo or --team org/team? This
approach is more common and is less likely to confuse users

What I'm not sure about here is that all the other gh project commands take the --owner flag to help disambiguate. It seems unfortunate to change that.

Do you think there is an issue with supporting both --repo owner/repo and --repo repo (and the same for team)?

Should the assert.Equal also be replaced with require.Equal?

I prefer this, but I don't mind. require.Error and require.NoError are important because it almost never makes sense to see the result of assertions after them because it means something has gone extremely wrong in the test and the following assertions will just be noise. Sometimes it makes sense to see the values of other assertion failures together.

@benebsiny
Copy link
Contributor Author

Do you think there is an issue with supporting both --repo owner/repo and --repo repo (and the same for team)?

No, I can try to implement this feature

@benebsiny
Copy link
Contributor Author

@williammartin I have made some changes, take a look at the latest commit!

Copy link
Member

@williammartin williammartin left a 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!

@williammartin
Copy link
Member

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.

@williammartin williammartin merged commit 0d4bf83 into cli:trunk Feb 29, 2024
6 checks passed
renovate bot added a commit to scottames/dots that referenced this pull request Mar 9, 2024
[![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


[#&#8203;20663](https://togithub.com/aquaproj/aqua-registry/issues/20663)
[hellux/jotdown](https://togithub.com/hellux/jotdown): A Djot parser
library [@&#8203;hituzi-no-sippo](https://togithub.com/hituzi-no-sippo)

[#&#8203;20661](https://togithub.com/aquaproj/aqua-registry/issues/20661)
[awslabs/soci-snapshotter](https://togithub.com/awslabs/soci-snapshotter)
[@&#8203;ponkio-o](https://togithub.com/ponkio-o)

#### Fixes


[#&#8203;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


[#&#8203;20629](https://togithub.com/aquaproj/aqua-registry/issues/20629)
[AGWA/git-crypt](https://togithub.com/AGWA/git-crypt): Transparent file
encryption in git
[@&#8203;florianmutter](https://togithub.com/florianmutter)

[#&#8203;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


[#&#8203;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


[#&#8203;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


[#&#8203;20520](https://togithub.com/aquaproj/aqua-registry/issues/20520)
[freshautomations/stoml](https://togithub.com/freshautomations/stoml):
Simple TOML parser for Bash
[@&#8203;ponkio-o](https://togithub.com/ponkio-o)

[#&#8203;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
[@&#8203;NikitaCOEUR](https://togithub.com/NikitaCOEUR)

[#&#8203;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
[@&#8203;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


[#&#8203;20479](https://togithub.com/aquaproj/aqua-registry/issues/20479)
[antham/gommit](https://togithub.com/antham/gommit): Enforce git message
commit consistency
[@&#8203;NikitaCOEUR](https://togithub.com/NikitaCOEUR)

[#&#8203;20468](https://togithub.com/aquaproj/aqua-registry/issues/20468)
[apache/maven-mvnd](https://togithub.com/apache/maven-mvnd): Apache
Maven Daemon [@&#8203;tadayosi](https://togithub.com/tadayosi)

#### Fixes


[#&#8203;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
([#&#8203;1860](https://togithub.com/casey/just/pull/1860) by
[tgross35](https://togithub.com/tgross35))

##### Misc

- Fix readme typo
([#&#8203;1936](https://togithub.com/casey/just/pull/1936) by
[Justintime50](https://togithub.com/Justintime50))
- Use unwrap_or_default
([#&#8203;1928](https://togithub.com/casey/just/pull/1928))
- Set codegen-units to 1 reduce release binary size
([#&#8203;1920](https://togithub.com/casey/just/pull/1920) by
[amarao](https://togithub.com/amarao))
- Document openSUSE package
([#&#8203;1918](https://togithub.com/casey/just/pull/1918) by
[sfalken](https://togithub.com/sfalken))
- Fix install.sh shellcheck warnings
([#&#8203;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
[@&#8203;williammartin](https://togithub.com/williammartin) in
[cli/cli#8716
- bug: fixed the msg returned for patching a repo variable by
[@&#8203;dean-tate](https://togithub.com/dean-tate) in
[cli/cli#8715
- Fix regression around commas in commit titles during `pr create` by
[@&#8203;williammartin](https://togithub.com/williammartin) in
[cli/cli#8768
- feat: Add `ref` option to `gh cache list` by
[@&#8203;toshimaru](https://togithub.com/toshimaru) in
[cli/cli#8711
- Make comments in the default config file more informative by
[@&#8203;bartekpacia](https://togithub.com/bartekpacia) in
[cli/cli#8756
- Link Project to Repository or Team Command by
[@&#8203;benebsiny](https://togithub.com/benebsiny) in
[cli/cli#8595
- Clarify helptext for search prs regarding archived repos by
[@&#8203;stuart-leitch](https://togithub.com/stuart-leitch) in
[cli/cli#8738
- Simplify install command for Debian & Ubuntu by
[@&#8203;hongquan](https://togithub.com/hongquan) in
[cli/cli#8693
- Support `project view --web` with TTY by
[@&#8203;harveysanders](https://togithub.com/harveysanders) in
[cli/cli#8773
- Bump cli/go-gh v2.6.0 for tenant using GH_TOKEN by
[@&#8203;andyfeller](https://togithub.com/andyfeller) in
[cli/cli#8787

#### New Contributors

- [@&#8203;dean-tate](https://togithub.com/dean-tate) made their first
contribution in
[cli/cli#8715
- [@&#8203;bartekpacia](https://togithub.com/bartekpacia) made their
first contribution in
[cli/cli#8756
- [@&#8203;stuart-leitch](https://togithub.com/stuart-leitch) made their
first contribution in
[cli/cli#8738
- [@&#8203;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! [@&#8203;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

- [#&#8203;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! [@&#8203;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

- [#&#8203;2582](https://togithub.com/derailed/k9s/issues/2582) Slowness
due to client-side throttling in v0.32.0 (Maybe??)
- [#&#8203;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! [@&#8203;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

- [#&#8203;2584](https://togithub.com/derailed/k9s/issues/2584) Transfer
of file doesn't detect corruption
- [#&#8203;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!!

- [#&#8203;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! [@&#8203;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

- [#&#8203;2569](https://togithub.com/derailed/k9s/issues/2569) k9s
panics on start if the main config file (config.yml) is owned by root
- [#&#8203;2568](https://togithub.com/derailed/k9s/issues/2568) kube
context in running k9s is no longer sticky, during kubectx context
switch
- [#&#8203;2560](https://togithub.com/derailed/k9s/issues/2560)
Namespace/Settings keeps resetting
- [#&#8203;2557](https://togithub.com/derailed/k9s/issues/2557)
\[Feature]: Sort CRDs by their group
- [#&#8203;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!!

- [#&#8203;2564](https://togithub.com/derailed/k9s/pull/2564) Add
everforest skins
- [#&#8203;2558](https://togithub.com/derailed/k9s/pull/2558) feat: sort
by role in node list view
- [#&#8203;2554](https://togithub.com/derailed/k9s/pull/2554) Added
context to the debug command for debug-container plugin
- [#&#8203;2554](https://togithub.com/derailed/k9s/pull/2554) Correctly
respect the KUBECACHEDIR env var
- [#&#8203;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
([#&#8203;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`
([#&#8203;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
([#&#8203;327](https://togithub.com/sigoden/aichat/pull/327))

#### Chat-REPL Changes

- `.clear messages` to clear session messages
([#&#8203;332](https://togithub.com/sigoden/aichat/pull/327))

#### Miscellences

- shell integrations
([#&#8203;323](https://togithub.com/sigoden/aichat/pull/323))
- allow overriding execute/code role
([#&#8203;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
([#&#8203;151](https://togithub.com/simulot/immich-go/issues/151))
([#&#8203;153](https://togithub.com/simulot/immich-go/issues/153))
- [`ed48ec8`](https://togithub.com/simulot/immich-go/commit/ed48ec8)
chore(linter): improve error checkcing
([#&#8203;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
[#&#8203;134](https://togithub.com/simulot/immich-go/issues/134)
([#&#8203;164](https://togithub.com/simulot/immich-go/issues/164))
- [`c3907ec`](https://togithub.com/simulot/immich-go/commit/c3907ec) Add
CI with Linting and Testing
([#&#8203;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-[#&#8203;134](https://togithub.com/simulot/immich-go/issues/134)
([#&#8203;166](https://togithub.com/simulot/immich-go/issues/166))
- [`c65215b`](https://togithub.com/simulot/immich-go/commit/c65215b)
Refactor file paths and name
([#&#8203;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
([#&#8203;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
([#&#8203;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
([#&#8203;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
([#&#8203;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
([#&#8203;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
([#&#8203;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
([#&#8203;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
([#&#8203;147](https://togithub.com/simulot/immich-go/issues/147))
- [`c6cf7da`](https://togithub.com/simulot/immich-go/commit/c6cf7da)
fix: [#&#8203;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
([#&#8203;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
([#&#8203;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
([#&#8203;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
([#&#8203;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
([#&#8203;5091](https://togithub.com/snyk/snyk/issues/5091))
([f0c8339](https://togithub.com/snyk/snyk/commit/f0c83391cb29c8f4eee190e953b0b7d357ae0cb7))
- remove dependencies when parent folder is deleted
([#&#8203;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
([#&#8203;5082](https://togithub.com/snyk/snyk/issues/5082))
([00af20b](https://togithub.com/snyk/snyk/commit/00af20b02234205e19231f975fc7b275bb3e37ab))

##### Features

- populate CVSS scores in SARIF files
([#&#8203;5014](https://togithub.com/snyk/snyk/issues/5014))
([#&#8203;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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
external pull request originating outside of the CLI core team
Projects
No open projects
The GitHub CLI
  
Needs review 🤔
Development

Successfully merging this pull request may close these issues.

Link Project to Repository Command
5 participants