Skip to content

Conversation

@williammartin
Copy link
Member

@williammartin williammartin commented Jun 27, 2023

Description

This PR relates to #7630

The team that owns the gists API shipped a change to the Update a gist endpoint that ensured that the body and the files objects contained no additional properties.

As we were sending updatedAt and public in the body and type in the files object, CLI users started receiving the following error:

$> gh gist edit <gist-url>
HTTP 422: Invalid request. (https://api.github.com/gists/<gist-id>)

"public", "updated_at" are not permitted keys.
"language", "type" are not permitted keys.

This PR introduces two new types gistToUpdate and gistFileToUpdate which represent the desired schema. The existing shared.GistFile is mapped into these new types, throwing away all the extra data that failed schema validation.

Note that while the change has been reverted, it's probably good form for us to move forward with the expected schema, which is why I created this. Maybe then in some time the API team can safely make this change.

Extra Attention for Reviewers

There are two decisions in here that are worth extra scrutiny. I feel 2/10 strongly about them.

Maps package

I introduced a new maps package that provides a Map function. See the comment attached to the call site for what the alternative looked like and decide for yourself whether you think it's worth introducing a new function that could end up being used in a variety of places. Think about whether it matters that we allocate a new map each time and whether it's ok to hide the potential cost of that.

Location that the mapping happens

I have two commits in this PR, the first one does the transformation of shared.Gist to gistToUpdate at the last possible moment. The downside of this is is that if changes were made to additional fields on the shared.Gist, a maintainer might expect that they take effect on the update when they actually get discarded.

The second commit does the transformation of shared.Gist to gistToUpdate at the earliest possible moment. The downside of this is that a maintainer might expect that modifying the original shared.Gist would result in updates when actually we no longer want to use it for anything. It also means we have to handle map values being set to nil due to removeFile.

There are other alternatives such as fetching the shared.Gist and transforming it in a private function so that it is never exposed or building a new gistToUpdate based on what the user actually does (rather than blindly mapping from shared.Gist but I didn't explore them).

// https://docs.github.com/en/rest/gists/gists?apiVersion=2022-11-28#update-a-gist
type gistToUpdate struct {
// The id of the gist to update. Does not get marshalled to JSON.
id string
Copy link
Member Author

Choose a reason for hiding this comment

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

This could be moved into a function argument, don't feel strongly.

@williammartin
Copy link
Member Author

Applied the changes to remove the maps package and to change Filename -> NewFilename.

@samcoe samcoe merged commit 491e9e8 into trunk Jul 3, 2023
@samcoe samcoe deleted the wm/gist-edit-adhere-to-schema branch July 3, 2023 04:33
renovate bot referenced this pull request in scottames/dots Jul 12, 2023
[![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.25.0` -> `v4.26.0` |
| [cli/cli](https://togithub.com/cli/cli) | minor | `v2.31.0` ->
`v2.32.0` |
| [fluxcd/flux2](https://togithub.com/fluxcd/flux2) | patch | `v2.0.0`
-> `v2.0.1` |

---

### Release Notes

<details>
<summary>aquaproj/aqua-registry (aquaproj/aqua-registry)</summary>

###
[`v4.26.0`](https://togithub.com/aquaproj/aqua-registry/releases/tag/v4.26.0)

[Compare
Source](https://togithub.com/aquaproj/aqua-registry/compare/v4.25.0...v4.26.0)


[Issues](https://togithub.com/aquaproj/aqua-registry/issues?q=is%3Aissue+milestone%3Av4.26.0)
| [Pull
Requests](https://togithub.com/aquaproj/aqua-registry/pulls?q=is%3Apr+milestone%3Av4.26.0)
| aquaproj/aqua-registry@v4.25.0...v4.26.0

#### 🎉 New Packages


[#&#8203;13656](https://togithub.com/aquaproj/aqua-registry/issues/13656)
[cilium/cilium-cli](https://togithub.com/cilium/cilium-cli): CLI to
install, manage & troubleshoot Kubernetes clusters running Cilium
[@&#8203;honahuku](https://togithub.com/honahuku)

[#&#8203;13657](https://togithub.com/aquaproj/aqua-registry/issues/13657)
[ponkio-o/ec2x](https://togithub.com/ponkio-o/ec2x): A cli tool of
connect to ec2 instance
[@&#8203;ponkio-o](https://togithub.com/ponkio-o)

#### 🎉 New Contributor

[@&#8203;honahuku](https://togithub.com/honahuku)
[#&#8203;13656](https://togithub.com/aquaproj/aqua-registry/issues/13656)

</details>

<details>
<summary>cli/cli (cli/cli)</summary>

### [`v2.32.0`](https://togithub.com/cli/cli/releases/tag/v2.32.0):
GitHub CLI 2.32.0

[Compare Source](https://togithub.com/cli/cli/compare/v2.31.0...v2.32.0)

hello terminal fans, it's me
[@&#8203;vilmibm](https://togithub.com/vilmibm) .

We are pleased to bring you a new release of the GitHub CLI on this
Confusion 46, 3189 YOLD.

We've got features. we've got bugfixes. This release has a real zest for
life; can you feel it?

First though, a sad note. [@&#8203;mislav](https://togithub.com/mislav)
has moved on from GitHub. He was instrumental to this project and
without him I don't think it would have ever happened. BIG THANKS MUCH
LOVE to this wonderful person!

Happily, we have a new core team member though who is, truly, a delight.
Please welcome
[@&#8203;williammartin](https://togithub.com/williammartin) , whom
you'll see a lot more on issues and pull requests moving forward.

Now, let's talk ***BUSINESS***.

#### gh ruleset

[Repository
Rulesets](https://github.blog/changelog/2023-04-17-introducing-repository-rules-public-beta/)
are in beta on git hub dot com and they are now also in beta on git hub
sea ell eye. You can list, view, and check branches against rulesets set
at the repository or organization level. Major shoutouts to
[@&#8203;vaindil](https://togithub.com/vaindil) for this [big
contribution](https://togithub.com/cli/cli/pull/7650). My favorite
command in here in `gh rs check <branch>` which will tell you what rules
would apply to a hypothetical branch name. To learn more, run `gh help
ruleset`.

#### gh cache

`gh cache` is a new top level command in our suite of support for
Actions. It lets you list and delete caches saved in Actions. It's
[neat](https://togithub.com/cli/cli/pull/7403) and I like it. Thanks,
[@&#8203;joshkraft](https://togithub.com/joshkraft) ! To learn more, run
`gh help cache`.

#### Other new stuff

- Add option to remove file from gist by
[@&#8203;kousikmitra](https://togithub.com/kousikmitra) in
[https://github.com/cli/cli/pull/7560](https://togithub.com/cli/cli/pull/7560)
- Add remove/reset to auth refresh by
[@&#8203;n1lesh](https://togithub.com/n1lesh) in
[https://github.com/cli/cli/pull/7597](https://togithub.com/cli/cli/pull/7597)
- Small tweaks to auth refresh remove-scopes and reset-scopes flags by
[@&#8203;samcoe](https://togithub.com/samcoe) in
[https://github.com/cli/cli/pull/7631](https://togithub.com/cli/cli/pull/7631)
- make `gh pr create` behavior like `gh repo fork` by
[@&#8203;leavesster](https://togithub.com/leavesster) in
[https://github.com/cli/cli/pull/7330](https://togithub.com/cli/cli/pull/7330)
- chore: add title to iteration and milestone fields by
[@&#8203;kamaz](https://togithub.com/kamaz) in
[https://github.com/cli/cli/pull/7621](https://togithub.com/cli/cli/pull/7621)
- AutoFetch new branch created with gh issue develop by
[@&#8203;shion1305](https://togithub.com/shion1305) in
[https://github.com/cli/cli/pull/7589](https://togithub.com/cli/cli/pull/7589)
- feat: add statuscheck description to pr checks output by
[@&#8203;jgrumboe](https://togithub.com/jgrumboe) in
[https://github.com/cli/cli/pull/7451](https://togithub.com/cli/cli/pull/7451)
- Always show created gist privacy status. by
[@&#8203;seanbright](https://togithub.com/seanbright) in
[https://github.com/cli/cli/pull/7645](https://togithub.com/cli/cli/pull/7645)
- \[Codespaces] Support random `--server-port=0` and printing connection
details by [@&#8203;josebalius](https://togithub.com/josebalius) in
[https://github.com/cli/cli/pull/7655](https://togithub.com/cli/cli/pull/7655)
- gh release edit: support --verify-tag like gh release create by
[@&#8203;rajhawaldar](https://togithub.com/rajhawaldar) in
[https://github.com/cli/cli/pull/7646](https://togithub.com/cli/cli/pull/7646)
- Feature: Add `fill-first` flag to `pr create` command by
[@&#8203;kousikmitra](https://togithub.com/kousikmitra) in
[https://github.com/cli/cli/pull/7398](https://togithub.com/cli/cli/pull/7398)
- Return error on no-browser option if repo don't exists by
[@&#8203;kousikmitra](https://togithub.com/kousikmitra) in
[https://github.com/cli/cli/pull/7314](https://togithub.com/cli/cli/pull/7314)

#### Bugfixes

- Early exit repo sync if merge-upstream requires workflow scope by
[@&#8203;williammartin](https://togithub.com/williammartin) in
[https://github.com/cli/cli/pull/7612](https://togithub.com/cli/cli/pull/7612)
- Don't deduplicate checks that stem from different events by
[@&#8203;samcoe](https://togithub.com/samcoe) in
[https://github.com/cli/cli/pull/7618](https://togithub.com/cli/cli/pull/7618)
- gh run cancel needs input validation by
[@&#8203;rajhawaldar](https://togithub.com/rajhawaldar) in
[https://github.com/cli/cli/pull/7647](https://togithub.com/cli/cli/pull/7647)
- Ensure gist edit request body matches desired schema by
[@&#8203;williammartin](https://togithub.com/williammartin) in
[https://github.com/cli/cli/pull/7635](https://togithub.com/cli/cli/pull/7635)
- fix(api): do not interpret "branch" placeholder when `GH_REPO` is set
by [@&#8203;alex-petrov-vt](https://togithub.com/alex-petrov-vt) in
[https://github.com/cli/cli/pull/7626](https://togithub.com/cli/cli/pull/7626)
- fix pr create crash on interactive milestone selection by
[@&#8203;vilmibm](https://togithub.com/vilmibm) in
[https://github.com/cli/cli/pull/7666](https://togithub.com/cli/cli/pull/7666)
- Fix issue develop command by
[@&#8203;samcoe](https://togithub.com/samcoe) in
[https://github.com/cli/cli/pull/7656](https://togithub.com/cli/cli/pull/7656)

#### Docs & Dev

- docs: example of setting multiple vars using stdin by
[@&#8203;iloveitaly](https://togithub.com/iloveitaly) in
[https://github.com/cli/cli/pull/7683](https://togithub.com/cli/cli/pull/7683)
- Remove old code paths and improve code comments for `repo sync` by
[@&#8203;samcoe](https://togithub.com/samcoe) in
[https://github.com/cli/cli/pull/7610](https://togithub.com/cli/cli/pull/7610)
- Add tenancy support by [@&#8203;samcoe](https://togithub.com/samcoe)
in
[https://github.com/cli/cli/pull/7636](https://togithub.com/cli/cli/pull/7636)
- Update httpretty to released version by
[@&#8203;josebalius](https://togithub.com/josebalius) in
[https://github.com/cli/cli/pull/7654](https://togithub.com/cli/cli/pull/7654)
- build(deps): bump github.com/henvic/httpretty from 0.1.1 to 0.1.2 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/cli/cli/pull/7657](https://togithub.com/cli/cli/pull/7657)
- build(deps): bump google.golang.org/grpc from 1.49.0 to 1.53.0 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/cli/cli/pull/7665](https://togithub.com/cli/cli/pull/7665)
- Use SmartBaseRepoFunc for api command by
[@&#8203;whi-tw](https://togithub.com/whi-tw) in
[https://github.com/cli/cli/pull/7594](https://togithub.com/cli/cli/pull/7594)
- Clean up style nits and simplify some logic by
[@&#8203;samcoe](https://togithub.com/samcoe) in
[https://github.com/cli/cli/pull/7687](https://togithub.com/cli/cli/pull/7687)
- add gh cache to Actions explainer by
[@&#8203;vilmibm](https://togithub.com/vilmibm) in
[https://github.com/cli/cli/pull/7689](https://togithub.com/cli/cli/pull/7689)

#### New Contributors

- [@&#8203;leavesster](https://togithub.com/leavesster) made their first
contribution in
[https://github.com/cli/cli/pull/7330](https://togithub.com/cli/cli/pull/7330)
- [@&#8203;kamaz](https://togithub.com/kamaz) made their first
contribution in
[https://github.com/cli/cli/pull/7621](https://togithub.com/cli/cli/pull/7621)
- [@&#8203;shion1305](https://togithub.com/shion1305) made their first
contribution in
[https://github.com/cli/cli/pull/7589](https://togithub.com/cli/cli/pull/7589)
- [@&#8203;jgrumboe](https://togithub.com/jgrumboe) made their first
contribution in
[https://github.com/cli/cli/pull/7451](https://togithub.com/cli/cli/pull/7451)
- [@&#8203;whi-tw](https://togithub.com/whi-tw) made their first
contribution in
[https://github.com/cli/cli/pull/7594](https://togithub.com/cli/cli/pull/7594)
- [@&#8203;seanbright](https://togithub.com/seanbright) made their first
contribution in
[https://github.com/cli/cli/pull/7645](https://togithub.com/cli/cli/pull/7645)
- [@&#8203;iloveitaly](https://togithub.com/iloveitaly) made their first
contribution in
[https://github.com/cli/cli/pull/7683](https://togithub.com/cli/cli/pull/7683)

**Full Changelog**: cli/cli@v2.31.0...v2.32.0

</details>

<details>
<summary>fluxcd/flux2 (fluxcd/flux2)</summary>

### [`v2.0.1`](https://togithub.com/fluxcd/flux2/releases/tag/v2.0.1)

[Compare
Source](https://togithub.com/fluxcd/flux2/compare/v2.0.0...v2.0.1)

#### Highlights

Flux `v2.0.1` is a patch release which comes with various fixes. Users
are encouraged to upgrade for the best experience.

:bulb: For upgrading from Flux `v0.x`, please see [the procedure
documented in
2.0.0](https://togithub.com/fluxcd/flux2/releases/tag/v2.0.0).

##### Fixes

- Fix AWS auth for cross-region ECR repositories (`source-controller`,
`image-reflector-controller`).
- Prevent spurious alerts for skipped resources
(`kustomize-controller`).
- List removed resources for `flux diff ks --kustomization-file` (`flux`
CLI).
-   Fix SLSA provenance generation for the Flux CLI binaries.

#### Components changelog

- source-controller
[v1.0.1](https://togithub.com/fluxcd/source-controller/blob/v1.0.1/CHANGELOG.md)
- kustomize-controller
[v1.0.1](https://togithub.com/fluxcd/kustomize-controller/blob/v1.0.1/CHANGELOG.md)
- image-reflector-controller
[v0.29.1](https://togithub.com/fluxcd/image-reflector-controller/blob/v0.29.1/CHANGELOG.md)

#### CLI Changelog

- PR [#&#8203;4068](https://togithub.com/fluxcd/flux2/issues/4068) -
[@&#8203;stefanprodan](https://togithub.com/stefanprodan) - Update
dependencies
- PR [#&#8203;4065](https://togithub.com/fluxcd/flux2/issues/4065) -
[@&#8203;hiddeco](https://togithub.com/hiddeco) - action: support
`openssl` and `sha256sum`
- PR [#&#8203;4062](https://togithub.com/fluxcd/flux2/issues/4062) -
[@&#8203;souleb](https://togithub.com/souleb) - diff: Take into account
the server-side inventory for local Flux Kustomizations
- PR [#&#8203;4061](https://togithub.com/fluxcd/flux2/issues/4061) -
[@&#8203;hiddeco](https://togithub.com/hiddeco) - action: re-allow
configuration of non-default token
- PR [#&#8203;4057](https://togithub.com/fluxcd/flux2/issues/4057) -
[@&#8203;fluxcdbot](https://togithub.com/fluxcdbot) - Update toolkit
components
- PR [#&#8203;4052](https://togithub.com/fluxcd/flux2/issues/4052) -
[@&#8203;stefanprodan](https://togithub.com/stefanprodan) - docs: Link
to the Flux GitHub Action documentation
- PR [#&#8203;4051](https://togithub.com/fluxcd/flux2/issues/4051) -
[@&#8203;hiddeco](https://togithub.com/hiddeco) - action: use
`$RUNNER_TOOL_CACHE`, support MacOS and Windows, validate checksum
- PR [#&#8203;4046](https://togithub.com/fluxcd/flux2/issues/4046) -
[@&#8203;stefanprodan](https://togithub.com/stefanprodan) - ci:
backport: set write permissions
- PR [#&#8203;4043](https://togithub.com/fluxcd/flux2/issues/4043) -
[@&#8203;stefanprodan](https://togithub.com/stefanprodan) - ci: release:
extract the image tag from GITHUB_REF
- PR [#&#8203;4041](https://togithub.com/fluxcd/flux2/issues/4041) -
[@&#8203;hiddeco](https://togithub.com/hiddeco) - ci: release: disable
interpretation backslash esc

#### New Documentation

-   [Flux GitHub Action](https://fluxcd.io/flux/flux-gh-action/)
- [SLSA provenance
verification](https://fluxcd.io/flux/security/slsa-assessment/#provenance-verification)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
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:eyJjcmVhdGVkSW5WZXIiOiIzNi41LjMiLCJ1cGRhdGVkSW5WZXIiOiIzNi41LjMiLCJ0YXJnZXRCcmFuY2giOiJtYWluIn0=-->

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

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants