Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Conversation

@tsukasaI
Copy link
Contributor

@tsukasaI tsukasaI commented Oct 19, 2024

Issue

#9746

Summary

Added archivedAt field to repository struct.

When view or list command is executed, it can show archivedAt field.

Local test

$ go run ./cmd/gh/main.go repo view --json isArchived,archivedAt tsukasaI/test01         
{
  "archivedAt": "2021-12-23T13:53:35Z",
  "isArchived": true
}

Discussion

I couldn't find test case which should be updated.

So please tell me which test I should update, or I should add test cases, thanks.

@tsukasaI tsukasaI requested a review from a team as a code owner October 19, 2024 02:18
@tsukasaI tsukasaI requested a review from BagToad October 19, 2024 02:18
@cliAutomation cliAutomation added the external pull request originating outside of the CLI core team label Oct 19, 2024
@norman-abramovitz
Copy link

norman-abramovitz commented Oct 20, 2024

I searched where isarchived was being used and then started looking at those testcases.

I added code to
pkg/search/result.go
pkg/search/result_test.go

so far. I am looking at other places as well.

I do wish there was a way to denote someone is working the issue. Creating PR before it is ready seems foolish to me as I did say I would work the issue.

diff --git a/pkg/search/result.go b/pkg/search/result.go
index 0c7c43cd..99e7df16 100644
--- a/pkg/search/result.go
+++ b/pkg/search/result.go
@@ -36,6 +36,7 @@ var CommitFields = []string{
 }

 var RepositoryFields = []string{
+       "archivedAt",
        "createdAt",
        "defaultBranch",
        "description",
@@ -170,6 +171,7 @@ type Parent struct {
 }

 type Repository struct {
+       ArchivedAt      time.Time `json:"archived_at"`
        CreatedAt       time.Time `json:"created_at"`
        DefaultBranch   string    `json:"default_branch"`
        Description     string    `json:"description"`
diff --git a/pkg/search/result_test.go b/pkg/search/result_test.go
index 3d9fb67b..4e2cdbf9 100644
--- a/pkg/search/result_test.go
+++ b/pkg/search/result_test.go
@@ -96,6 +96,7 @@ func TestCommitExportData(t *testing.T) {

 func TestRepositoryExportData(t *testing.T) {
        var createdAt = time.Date(2021, 2, 28, 12, 30, 0, 0, time.UTC)
+       var archivedAt = time.Date(2021, 2, 28, 13, 30, 0, 0, time.UTC)
        tests := []struct {
                name   string
                fields []string
@@ -104,8 +105,9 @@ func TestRepositoryExportData(t *testing.T) {
        }{
                {
                        name:   "exports requested fields",
-                       fields: []string{"createdAt", "description", "fullName", "isArchived", "isFork", "isPrivate", "pushedAt"},
+                       fields: []string{"archivedAt", "createdAt", "description", "fullName", "isArchived", "isFork", "isPrivate", "pushedAt"},
                        repo: Repository{
+                               ArchivedAt:  archivedAt,
                                CreatedAt:   createdAt,
                                Description: "description",
                                FullName:    "cli/cli",
@@ -114,7 +116,7 @@ func TestRepositoryExportData(t *testing.T) {
                                IsPrivate:   false,
                                PushedAt:    createdAt,
                        },
-                       output: `{"createdAt":"2021-02-28T12:30:00Z","description":"description","
fullName":"cli/cli","isArchived":true,"isFork":false,"isPrivate":false,"pushedAt":"2021-02-28T12:3
0:00Z"}`,
+                       output: `{"archivedAt":"2021-02-28T13:30:00Z","createdAt":"2021-02-28T12:3
0:00Z","description":"description","fullName":"cli/cli","isArchived":true,"isFork":false,"isPrivat
e":false,"pushedAt":"2021-02-28T12:30:00Z"}`,
                },
        }
        

@BagToad
Copy link
Member

BagToad commented Oct 21, 2024

👋 Hey @norman-abramovitz. Apologies for the communication issue that happened. I suspect it was not clear enough to @tsukasaI and the core maintainers that you had accepted that work in #9746 (comment). Reading it now, I can see that you had accepted the work through your reply to @andyfeller. In hindsight, If I were to go back and re-write it, I would have chosen more direct, self-contained wording like:

Yes, I will take this issue.

Sorry again that this happened. Hopefully, my feedback makes sense ❤️

Also, I put your diff in a code block to make it easier to read. Hope that's okay too @norman-abramovitz 🙏

@norman-abramovitz
Copy link

It was more of an annoyance than anything else. Maybe having a "taken" tag that lasts a couple of weeks at a time would help.

@williammartin
Copy link
Member

Sorry @norman-abramovitz, that's my fault for not reading your response carefully enough. Had I read it I probably would have at least paused to check whether you were working on it. My apologies for wasting your time.

Looking at the diff you provided, you are also trying to add this behaviour into the gh search repos command. I hoped we would be able to make use of that effort but unfortunately the repos search response schema does not include this field. If it's important to your use case to also have this on gh search repos, we can create a new issue to track that and then use your work.

#9746 is limited to adding this behaviour to gh repo view, which this PR addresses except for the need for tests, which I think I'm going to just add to get this over the line for your team.

@williammartin
Copy link
Member

williammartin commented Oct 22, 2024

I've added unit tests to ensure the flag has been added correctly.

I also wrote two acceptance tests, though I will not commit them as we haven't decided how to approach these tests fully yet. They can be found below the Acceptance Criteria.

Acceptance Criteria

repo view

Given I have an archived repo
When I run gh repo view --json archivedAt <repo>
Then I see the archived date of the repo in the json response is populated

Given I have an unarchived repo
When I run gh repo view --json archivedAt <repo>
Then I see the archived date of the repo is null

repo-view-archived-at.txtar

# Create a repository with a file so it has a default branch
env REPO=$SCRIPT_NAME-$RANDOM_STRING
exec gh repo create $ORG/$REPO --add-readme --private

# Defer repo cleanup
defer gh repo delete --yes $ORG/$REPO

# Check that the repo exists and doesn't have an archived date
exec gh repo view $ORG/$REPO --json=archivedAt
stdout 'null'

# Archive the repo
exec gh repo archive $ORG/$REPO --yes

# Check that the repo has an archived date
exec gh repo view $ORG/$REPO --json=archivedAt
stdout '[0-9]{4}-[0-9]{2}-[0-9]{2}T.*'
# Create a repository with a file so it has a default branch (1.737s)
> env REPO=$SCRIPT_NAME-$RANDOM_STRING
> exec gh repo create $ORG/$REPO --add-readme --private
[stdout]
https://github.com/gh-acceptance-testing/repo-view-archived-at-ulJBjHhRhs
# Defer repo cleanup (0.000s)
> defer gh repo delete --yes $ORG/$REPO
# Check that the repo exists and doesn't have an archived date (0.401s)
> exec gh repo view $ORG/$REPO --json=archivedAt
[stdout]
{"archivedAt":null}
> stdout 'null'
# Archive the repo (0.932s)
> exec gh repo archive $ORG/$REPO --yes
# Check that the repo has an archived date (0.976s)
> exec gh repo view $ORG/$REPO --json=archivedAt
[stdout]
{"archivedAt":"2024-10-22T11:47:02Z"}
> stdout '[0-9]{4}-[0-9]{2}-[0-9]{2}T.*'

repo list

Given I have archived and unarchived repos
When I run gh repo list --json name,archivedAt <repo>
Then I see the archived dates of the repos populated or null as expected

repo-list-archived-at.txtar (this one isn't quite right because the regexes are bad, but the log shows what I anticipated)

# Create two repos, one archived and one unarchived
env ARCHIVED_REPO=${SCRIPT_NAME}-${RANDOM_STRING}-archived
env UNARCHIVED_REPO=${SCRIPT_NAME}-${RANDOM_STRING}-unarchived

exec gh repo create ${ORG}/${ARCHIVED_REPO} --add-readme --private
exec gh repo create ${ORG}/${UNARCHIVED_REPO} --add-readme --private

# Defer repos cleanup
defer gh repo delete --yes ${ORG}/${ARCHIVED_REPO}
defer gh repo delete --yes ${ORG}/${UNARCHIVED_REPO}

# Archive the repo
exec gh repo archive ${ORG}/${ARCHIVED_REPO} --yes

# Check that the repos are have the correct archivedAt date
exec gh repo list ${ORG} --json=name,archivedAt
stdout '[0-9]{4}-[0-9]{2}-[0-9]{2}T.*'
stdout 'null'
# Create two repos, one archived and one unarchived (2.996s)
> env ARCHIVED_REPO=${SCRIPT_NAME}-${RANDOM_STRING}-archived
> env UNARCHIVED_REPO=${SCRIPT_NAME}-${RANDOM_STRING}-unarchived
> exec gh repo create ${ORG}/${ARCHIVED_REPO} --add-readme --private
[stdout]
https://github.com/gh-acceptance-testing/repo-list-archived-at-cZeyBLkYwE-archived
> exec gh repo create ${ORG}/${UNARCHIVED_REPO} --add-readme --private
[stdout]
https://github.com/gh-acceptance-testing/repo-list-archived-at-cZeyBLkYwE-unarchived
# Defer repos cleanup (0.000s)
> defer gh repo delete --yes ${ORG}/${ARCHIVED_REPO}
> defer gh repo delete --yes ${ORG}/${UNARCHIVED_REPO}
# Archive the repo (0.826s)
> exec gh repo archive ${ORG}/${ARCHIVED_REPO} --yes
# Check that the repos are have the correct archivedAt date (1.550s)
> exec gh repo list ${ORG} --json=name,archivedAt
[stdout]
[{"archivedAt":null,"name":"repo-list-archived-at-cZeyBLkYwE-unarchived"},{"archivedAt":"2024-10-22T11:50:48Z","name":"repo-list-archived-at-cZeyBLkYwE-archived"}]
> stdout '[0-9]{4}-[0-9]{2}-[0-9]{2}T.*'
> stdout 'null'

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 thanks, and sorry again for the confusion.

@williammartin williammartin merged commit ad7c29d into cli:trunk Oct 22, 2024
@tsukasaI
Copy link
Contributor Author

No worry :)

@norman-abramovitz @BagToad @williammartin

Thank you for reviewing and follow!

tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request Nov 21, 2024
This MR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [cli/cli](https://github.com/cli/cli) | minor | `v2.59.0` -> `v2.62.0` |

MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot).

**Proposed changes to behavior should be submitted there as MRs.**

---

### Release Notes

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

### [`v2.62.0`](https://github.com/cli/cli/releases/tag/v2.62.0): GitHub CLI 2.62.0

[Compare Source](cli/cli@v2.61.0...v2.62.0)

#### What's Changed

-   Update monotonic verification logic and testing by [@&#8203;malancas](https://github.com/malancas) in cli/cli#9856
-   Check extension for latest version when executed by [@&#8203;andyfeller](https://github.com/andyfeller) in cli/cli#9866
-   Shorten extension release checking from 3s to 1s by [@&#8203;andyfeller](https://github.com/andyfeller) in cli/cli#9914
-   Mention GitHub CLI team on discussion issues by [@&#8203;andyfeller](https://github.com/andyfeller) in cli/cli#9920

**Full Changelog**: cli/cli@v2.61.0...v2.62.0

#### Security

-   A security vulnerability has been identified in GitHub CLI that could allow remote code execution (RCE) when users connect to a malicious Codespace SSH server and use the `gh codespace ssh` or `gh codespace logs` commands.

    For more information, see GHSA-p2h2-3vg9-4p87

#### GitHub CLI notifies users about latest extension upgrades

Similar to the notification of latest `gh` releases, the `v2.62.0` version of GitHub CLI will notify users about latest extension upgrades when the extension is used:

```shell
$ gh ado2gh
...

A new release of ado2gh is available: 1.7.0 → 1.8.0
To upgrade, run: gh extension upgrade ado2gh --force
https://github.com/github/gh-ado2gh
```

##### Why does this matter?

This removes a common pain point of extension authors as they have had to reverse engineer and implement a similar mechanism within their extensions directly.

With this quality of life improvement, there are 2 big benefits:

1.  Extension authors will hopefully see increased adoption of newer releases while having lower bar to maintaining their extensions.
2.  GitHub CLI users will have greater awareness of new features, bug fixes, and security fixes to the extensions used.

##### What do you need to do?

Extension authors should review their extensions and consider removing any custom logic previously implemented to notify users of new releases.

### [`v2.61.0`](https://github.com/cli/cli/releases/tag/v2.61.0): GitHub CLI 2.61.0

[Compare Source](cli/cli@v2.60.1...v2.61.0)

#### Ensure users understand consequences before making repository visibility changes

In `v2.61.0`, `gh repo edit` command has been enhanced to inform users about [consequences of changing visibility](https://gh.io/setting-repository-visibility) and ensure users are intentional before making irreversible changes:

1.  Interactive `gh repo edit` visibility change requires confirmation when changing from `public`, `private`, or `internal`
2.  Non-interactive `gh repo edit --visibility` change requires new `--accept-visibility-change-consequences` flag to confirm
3.  New content to inform users of consequences
    -   Incorporate [GitHub Docs content](https://gh.io/setting-repository-visibility) into help usage and interactive `gh repo edit` experience
    -   Expanded help usage to call out most concerning consequences
    -   Display repository star and watcher counts to understand impact before confirming

#### What's Changed

-   Add acceptance test for `project` command by [@&#8203;jtmcg](https://github.com/jtmcg) in cli/cli#9816
-   Add comprehensive testscript for `gh ruleset` by [@&#8203;andyfeller](https://github.com/andyfeller) in cli/cli#9815
-   Add comprehensive testscript for gh ext commandset by [@&#8203;andyfeller](https://github.com/andyfeller) in cli/cli#9810
-   Require visibility confirmation in `gh repo edit` by [@&#8203;andyfeller](https://github.com/andyfeller) in cli/cli#9845
-   Clean up skipped online tests for `gh attestation verify` by [@&#8203;malancas](https://github.com/malancas) in cli/cli#9838
-   `gh attestation verify` should only verify provenance attestations by default by [@&#8203;malancas](https://github.com/malancas) in cli/cli#9825
-   Set `dnf5` commands as default by [@&#8203;its-miroma](https://github.com/its-miroma) in cli/cli#9844
-   Fix verbiage for deleting workflow runs by [@&#8203;akx](https://github.com/akx) in cli/cli#9876
-   Bump github.com/creack/pty from 1.1.23 to 1.1.24 by [@&#8203;dependabot](https://github.com/dependabot) in cli/cli#9862
-   `gh attestation verify` policy enforcement refactor by [@&#8203;malancas](https://github.com/malancas) in cli/cli#9848
-   Simplify Sigstore verification result handling in `gh attestation verify` by [@&#8203;malancas](https://github.com/malancas) in cli/cli#9877
-   Print empty array for `gh cache list` when `--json` is provided by [@&#8203;williammartin](https://github.com/williammartin) in cli/cli#9883
-   Bump actions/attest-build-provenance from 1.4.3 to 1.4.4 by [@&#8203;dependabot](https://github.com/dependabot) in cli/cli#9884
-   Create the automatic key when specified with -i by [@&#8203;cmbrose](https://github.com/cmbrose) in cli/cli#9881
-   fix: `gh pr create -w`  ignore template flag by [@&#8203;nilvng](https://github.com/nilvng) in cli/cli#9863

#### New Contributors

-   [@&#8203;akx](https://github.com/akx) made their first contribution in cli/cli#9876
-   [@&#8203;nilvng](https://github.com/nilvng) made their first contribution in cli/cli#9863

**Full Changelog**: cli/cli@v2.60.1...v2.61.0

### [`v2.60.1`](https://github.com/cli/cli/releases/tag/v2.60.1): GitHub CLI 2.60.1

[Compare Source](cli/cli@v2.60.0...v2.60.1)

This is a small patch release to fix installing `gh` via `go install` which was broken with v2.60.0.

#### What's Changed

-   Update testscript to use hard fork by [@&#8203;williammartin](https://github.com/williammartin) in cli/cli#9821

**Full Changelog**: cli/cli@v2.60.0...v2.60.1

### [`v2.60.0`](https://github.com/cli/cli/releases/tag/v2.60.0): GitHub CLI 2.60.0

[Compare Source](cli/cli@v2.59.0...v2.60.0)

#### What's Changed

-   Add ArchivedAt field by [@&#8203;tsukasaI](https://github.com/tsukasaI) in cli/cli#9790
-   Include startedAt, completedAt in run steps data by [@&#8203;andyfeller](https://github.com/andyfeller) in cli/cli#9774
-   Adjust environment help for host and tokens by [@&#8203;williammartin](https://github.com/williammartin) in cli/cli#9809
-   Add handling of empty titles for Issues and MRs by [@&#8203;jtmcg](https://github.com/jtmcg) in cli/cli#9701
-   `LiveSigstoreVerifier.Verify` should error if no attestations are present by [@&#8203;phillmv](https://github.com/phillmv) in cli/cli#9742
-   `gh at verify` retries fetching attestations if it receives a 5xx by [@&#8203;phillmv](https://github.com/phillmv) in cli/cli#9797
-   Prevent local extension installations with invalid names and conflicts with core commands and other extensions by [@&#8203;BagToad](https://github.com/BagToad) in cli/cli#9794
-   Rewrite a sentence in CONTRIBUTING.md by [@&#8203;muzimuzhi](https://github.com/muzimuzhi) in cli/cli#9772
-   Use new GitHub preview terms in `working-with-us.md` by [@&#8203;BagToad](https://github.com/BagToad) in cli/cli#9800
-   Use new GitHub previews terminology in attestation commands' help docs by [@&#8203;BagToad](https://github.com/BagToad) in cli/cli#9799
-   Clarify in README that `gh` is supported on GitHub Enterprise Cloud by [@&#8203;BagToad](https://github.com/BagToad) in cli/cli#9805
-   build(deps): bump github.com/gabriel-vasile/mimetype from 1.4.5 to 1.4.6 by [@&#8203;dependabot](https://github.com/dependabot) in cli/cli#9752

##### Acceptance Test Changes

-   Add acceptance tests for `workflow`, `run`, and `cache` commands by [@&#8203;BagToad](https://github.com/BagToad) in cli/cli#9766
-   Add basic `api` acceptance tests by [@&#8203;BagToad](https://github.com/BagToad) in cli/cli#9770
-   Add acceptance tests for `release` commands by [@&#8203;BagToad](https://github.com/BagToad) in cli/cli#9771
-   Add acceptance tests for `org` and `ssh-key` commands by [@&#8203;BagToad](https://github.com/BagToad) in cli/cli#9812
-   Add acceptance tests for `gh auth` commands by [@&#8203;jtmcg](https://github.com/jtmcg) in cli/cli#9787
-   Add acceptance tests for `repo` commands by [@&#8203;jtmcg](https://github.com/jtmcg) in cli/cli#9783
-   Add acceptance tests for `search` command by [@&#8203;BagToad](https://github.com/BagToad) in cli/cli#9786
-   Add acceptance tests for `variable` commands by [@&#8203;andyfeller](https://github.com/andyfeller) in cli/cli#978
-   Add testscripts for gpg-key and label commands by [@&#8203;williammartin](https://github.com/williammartin) in cli/cli#9811
-   Use forked testscript for token redaction by [@&#8203;williammartin](https://github.com/williammartin) in cli/cli#9804
-   Add acceptance tests for `secret` commands by [@&#8203;andyfeller](https://github.com/andyfeller) in cli/cli#9782
-   Note token redaction in Acceptance test README by [@&#8203;williammartin](https://github.com/williammartin) in cli/cli#9813

#### New Contributors

-   [@&#8203;tsukasaI](https://github.com/tsukasaI) made their first contribution in cli/cli#9790

**Full Changelog**: cli/cli@v2.59.0...v2.60.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this MR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40NDAuNyIsInVwZGF0ZWRJblZlciI6IjM3LjQ0MC43IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJSZW5vdmF0ZSBCb3QiXX0=-->
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

None yet

Development

Successfully merging this pull request may close these issues.

5 participants