{"id":18085081,"url":"https://github.com/jwodder/ghutil","last_synced_at":"2025-03-29T00:33:21.589Z","repository":{"id":66104049,"uuid":"91839769","full_name":"jwodder/ghutil","owner":"jwodder","description":"[Abandoned] Interact with GitHub from the command line","archived":true,"fork":false,"pushed_at":"2023-10-19T22:10:40.000Z","size":812,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-21T00:20:40.749Z","etag":null,"topics":["github-api","github-client","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jwodder.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2017-05-19T19:40:57.000Z","updated_at":"2023-11-04T16:50:28.000Z","dependencies_parsed_at":null,"dependency_job_id":"cc583a62-a0ea-4d66-9c7d-9d1a4d83fbe8","html_url":"https://github.com/jwodder/ghutil","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jwodder%2Fghutil","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jwodder%2Fghutil/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jwodder%2Fghutil/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jwodder%2Fghutil/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jwodder","download_url":"https://codeload.github.com/jwodder/ghutil/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246122251,"owners_count":20726822,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["github-api","github-client","python"],"created_at":"2024-10-31T15:09:19.015Z","updated_at":"2025-03-29T00:33:21.086Z","avatar_url":"https://github.com/jwodder.png","language":"Python","readme":".. image:: https://www.repostatus.org/badges/latest/abandoned.svg\n    :target: https://www.repostatus.org/#abandoned\n    :alt: Project Status: Abandoned – Initial development has started, but\n          there has not yet been a stable, usable release; the project has been\n          abandoned and the author(s) do not intend on continuing development.\n\n.. image:: https://github.com/jwodder/ghutil/workflows/Test/badge.svg?branch=master\n    :target: https://github.com/jwodder/ghutil/actions?workflow=Test\n    :alt: CI Status\n\n.. image:: https://codecov.io/gh/jwodder/ghutil/branch/master/graph/badge.svg\n    :target: https://codecov.io/gh/jwodder/ghutil\n\n.. image:: https://img.shields.io/github/license/jwodder/ghutil.svg?maxAge=2592000\n    :target: https://opensource.org/licenses/MIT\n    :alt: MIT License\n\n.. contents::\n    :backlinks: top\n\nThe ``ghutil`` package provides a command-line program for interacting with \u0026\nmanaging GitHub repositories, issues, gists, etc.\n\nThis is a work in progress; while the program should be usable at any given\npoint in time, many API features are not yet present, and those features that\nare present may have their interface modified at any time.\n\n\nInstallation\n============\n``ghutil`` requires Python 3.7 or higher to run and `pip\n\u003chttps://pip.pypa.io\u003e`_ 19.0 or higher to install.  You can install ``ghutil``\nand its dependencies by running::\n\n    python3 -m pip install git+https://github.com/jwodder/ghutil.git\n\n\nBasic Usage\n===========\n\nAuthentication\n--------------\n\nCreate a ``~/.config/ghutil.cfg`` file and store a GitHub token in it like so::\n\n    [api.auth]\n    token = YOUR_GITHUB_TOKEN_HERE\n\nCommands\n--------\n\nCommands that allow the repository (or gist) to be unspecified will operate on\nthe current repository by default.\n\nGists\n^^^^^\n\nRun ``ghutil gist --help`` for details on specifying gists on the command line.\n\n``ghutil gist clone \u003cgist-id\u003e [\u003cdir\u003e]``\n   Locally clone a gist\n\n``ghutil gist delete [--force] [\u003cgist-id\u003e]``\n   Delete a gist\n\n``ghutil gist [list]``\n   List your gists\n\n``ghutil gist new [-d \u003cdescription\u003e] [-P|--private] {-f \u003cname\u003e \u003cfile\u003e | \u003cfile\u003e} ...``\n   Create a gist from one or more files\n\n``ghutil gist show [\u003cgist-id\u003e ...]``\n   Show gist details\n\n``ghutil gist star [\u003cgist-id\u003e ...]``\n   Star the given gists\n\n``ghutil gist starred [--since \u003ctimestamp\u003e]``\n   List gists you've starred\n\n``ghutil gist unstar [\u003cgist-id\u003e ...]``\n   Unstar the given gists\n\n``ghutil gist web [\u003cgist-id\u003e]``\n   Open the given gist in a web browser\n\nIssues\n^^^^^^\n\nRun ``ghutil issue --help`` for details on specifying issues on the command line.\n\n``ghutil issue assign [--delete|--set] \u003cissue\u003e \u003cuser\u003e ...``\n   Assign an issue/PR to one or more users\n\n``ghutil issue close \u003cissue\u003e ...``\n   Close one or more issues/PRs\n\n``ghutil issue comments [--since \u003ctimestamp\u003e] \u003cissue\u003e``\n   Show comments on an issue/PR as JSON\n\n``ghutil issue edit [\u003coptions\u003e] \u003cissue\u003e``\n   Edit an issue\n\n``ghutil issue label [--delete|--set] \u003cissue\u003e \u003clabel\u003e ...``\n   (Re)label an issue/PR\n\n``ghutil issue [list [\u003coptions\u003e] [\u003crepo\u003e]]``\n   List issues for a repository\n\n``ghutil issue lock \u003cissue\u003e ...``\n   Lock one or more issues/PRs\n\n``ghutil issue new [\u003coptions\u003e] [\u003crepo\u003e]``\n   Create an issue in the given repository\n\n``ghutil issue open \u003cissue\u003e ...``\n   Open one or more issues/PRs\n\n``ghutil issue read [--since \u003ctimestamp\u003e] \u003cissue\u003e``\n   Read an issue/PR and its comments\n\n``ghutil issue reply \u003cissue\u003e [\u003cfile\u003e]``\n   Comment on an issue or pull request\n\n``ghutil issue search [--limit \u003cN\u003e] [--sort comments|created|updated] [--asc|--desc] \u003csearch-term\u003e ...``\n   Search for issues and/or pull requests\n\n``ghutil issue show \u003cissue\u003e ...``\n   Show details on the given issues\n\n``ghutil issue unlock \u003cissue\u003e ...``\n   Unlock one or more issues/PRs\n\n``ghutil issue web \u003cissue\u003e``\n   Open the given issue/PR in a web browser\n\nLabels\n^^^^^^\n\n``ghutil label delete [-R|--repo \u003crepo\u003e] [--force] \u003clabel\u003e``\n   Delete a label\n\n``ghutil label edit [-R|--repo \u003crepo\u003e] [--name \u003cname\u003e] [--color \u003ccolor\u003e] [-d \u003cdescription\u003e] \u003clabel\u003e``\n   Edit a label\n\n``ghutil label [list [-R|--repo \u003crepo\u003e] [--verbose]]``\n   List issue/PR labels available in a repository\n\n``ghutil label new [-R|--repo \u003crepo\u003e] [-d \u003cdescription\u003e] \u003cname\u003e \u003ccolor\u003e``\n   Create a new label\n\nMilestones\n^^^^^^^^^^\n\n``ghutil milestone close [-R|--repo \u003crepo\u003e] \u003cmilestone\u003e``\n   Close a milestone\n\n``ghutil milestone delete [-R|--repo \u003crepo\u003e] [--force] \u003cmilestone\u003e``\n   Delete a milestone\n\n``ghutil milestone edit [-R|--repo \u003crepo\u003e] [\u003coptions\u003e] \u003cmilestone\u003e``\n   Edit a milestone\n\n``ghutil milestone [list [-R|--repo \u003crepo\u003e] [--state open|closed|all] [--sort completeness|due_on] [--asc|--desc]]``\n   List issue/PR milestones available in a repository\n\n``ghutil milestone new [-R|--repo \u003crepo\u003e] [-d \u003cdescription\u003e] [--due-on \u003ctimestamp\u003e] [--open|--closed] \u003ctitle\u003e``\n   Create a new milestone\n\n``ghutil milestone open [-R|--repo \u003crepo\u003e] \u003cmilestone\u003e``\n   Open a milestone\n\n``ghutil milestone show [-R|--repo \u003crepo\u003e] \u003cmilestone\u003e ...``\n   Show details on the given milestones\n\n``ghutil milestone web [-R|--repo \u003crepo\u003e] \u003cmilestone\u003e``\n   Open the given milestone in a web browser\n\nPull Requests\n^^^^^^^^^^^^^\n\nRun ``ghutil pr --help`` for details on specifying pull requests on the command\nline.\n\n``ghutil pr assign [--delete|--set] \u003cpull request\u003e \u003cuser\u003e ...``\n   Assign an issue/PR to one or more users\n\n``ghutil pr close \u003cpull request\u003e ...``\n   Close one or more issues/PRs\n\n``ghutil pr comments [--since \u003ctimestamp\u003e] \u003cpull request\u003e``\n   Show comments on an issue/PR as JSON\n\n``ghutil pr edit [\u003coptions\u003e] \u003cpull request\u003e``\n   Edit a pull request\n\n``ghutil pr label [--delete|--set] \u003cpull request\u003e \u003clabel\u003e ...``\n   (Re)label an issue/PR\n\n``ghutil pr [list [\u003coptions\u003e] [\u003crepo\u003e]]``\n   List pull requests for a repository\n\n``ghutil pr lock \u003cpull request\u003e ...``\n   Lock one or more issues/PRs\n\n``ghutil pr merge [-T \u003ccommit title\u003e] [-m \u003ccommit message\u003e] [--merge|--squash|--rebase] [--sha HASH] \u003cpull request\u003e``\n   Merge a pull request\n\n``ghutil pr new [-T \u003ctitle\u003e] [--body \u003cfile\u003e] [--maintainer-can-modify] \u003cbase\u003e \u003chead\u003e``\n   Create a pull request\n\n``ghutil pr open \u003cpull request\u003e ...``\n   Open one or more issues/PRs\n\n``ghutil pr read [--since \u003ctimestamp\u003e] \u003cpull request\u003e``\n   Read an issue/PR and its comments\n\n``ghutil pr reply \u003cpull request\u003e [\u003cfile\u003e]``\n   Comment on an issue or pull request\n\n``ghutil pr show \u003cpull request\u003e ...``\n   Show details on the given pull requests\n\n``ghutil pr unlock \u003cpull request\u003e ...``\n   Unlock one or more issues/PRs\n\n``ghutil pr web \u003cpull request\u003e``\n   Open the given pull request in a web browser\n\nReleases\n^^^^^^^^\n\nRun ``ghutil release --help`` for details on specifying releases on the command\nline.  Commands that allow the release to be unspecified will operate on the\nlatest release by default.\n\n``ghutil release attach [--content-type \u003cMIME\u003e] [--label \u003clabel\u003e] [--name \u003cname\u003e] [\u003crepo\u003e:]\u003ctag\u003e \u003cfile\u003e``\n   Upload a release asset\n\n``ghutil release delete [--force] [[\u003crepo\u003e:]\u003ctag\u003e]``\n   Delete a release\n\n``ghutil release edit [\u003coptions\u003e] [[\u003crepo\u003e:]\u003ctag\u003e]``\n   Edit a release\n\n``ghutil release [list [\u003crepo\u003e]]``\n   List releases for a repository\n\n``ghutil release new [\u003coptions\u003e] [\u003ctag\u003e]``\n   Create a release for the given tag (default: the most recent reachable tag)\n\n``ghutil release show [[\u003crepo\u003e:]\u003ctag\u003e ...]``\n   Show details on the given releases\n\n``ghutil release unattach [--force] [\u003crepo\u003e:]\u003ctag\u003e \u003casset\u003e``\n   Delete a release asset\n\n``ghutil release web [[\u003crepo\u003e:]\u003ctag\u003e]``\n   Open the given release in a web browser\n\nRepositories\n^^^^^^^^^^^^\n\nRun ``ghutil repo --help`` for details on specifying repositories on the command\nline.\n\n``ghutil repo clone \u003crepo\u003e [\u003cdir\u003e]``\n   Locally clone a GitHub repository\n\n``ghutil repo delete [--force] [\u003crepo\u003e]``\n   Delete a GitHub repository\n\n``ghutil repo edit [\u003coptions\u003e] [\u003crepo\u003e]``\n   Edit a GitHub repository's details\n\n``ghutil repo fans [\u003crepo\u003e]``\n   List users that have forked, starred, or watched the given repository\n\n``ghutil repo fork \u003crepo\u003e``\n   Fork the given repository\n\n``ghutil repo [list [\u003coptions\u003e] [\u003cuser\u003e]]``\n   List a user's repositories\n\n``ghutil repo list-forks [\u003crepo\u003e]``\n   List a repository's forks\n\n``ghutil repo network [\u003crepo\u003e ...]``\n   Show a repository's network of forks as a tree\n\n``ghutil repo new [\u003coptions\u003e] \u003cname\u003e``\n   Create a new repository\n\n``ghutil repo search [--limit \u003cN\u003e] [--sort stars|forks|updated] [--asc|--desc] \u003csearch-term\u003e ...``\n   Search for repositories on GitHub\n\n``ghutil repo set-topics \u003crepo\u003e \u003ctopic\u003e ...``\n   Set a repository's topics\n\n``ghutil repo show [\u003crepo\u003e ...]``\n   Show details on the given repositories\n\n``ghutil repo star [\u003crepo\u003e ...]``\n   Star the given repositories\n\n``ghutil repo starred [--sort created|updated] [--asc|--desc]``\n   List repositories you've starred\n\n``ghutil repo unstar [\u003crepo\u003e ...]``\n   Unstar the given repositories\n\n``ghutil repo web [\u003crepo\u003e]``\n   Open the given repository in a web browser\n\nOther\n^^^^^\n\n``ghutil plus1 \u003cissue_url\u003e|\u003ccomment_url\u003e ...``\n   Give a thumbs-up to an issue, pull request, or comment thereon\n\n``ghutil request [--data \u003cdata\u003e] [-H \u003cheader\u003e] [--paginate] [-X \u003cmethod\u003e] \u003cpath\u003e``\n   Make an arbitrary GitHub API request to ``\u003cpath\u003e``\n\n\nRelated Prior Art\n=================\n- https://github.com/github/hub\n- https://github.com/stephencelis/ghi\n- https://github.com/whiteinge/ok.sh\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjwodder%2Fghutil","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjwodder%2Fghutil","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjwodder%2Fghutil/lists"}