Crates.io | ghrepo |
lib.rs | ghrepo |
version | 0.6.0 |
source | src |
created_at | 2022-07-08 13:44:41.474487 |
updated_at | 2024-02-16 14:33:29.092581 |
description | Parse & construct GitHub repository URLs & specifiers |
homepage | |
repository | https://github.com/jwodder/ghrepo-rust |
max_upload_size | |
id | 621813 |
size | 112,132 |
GitHub | crates.io | Documentation | Issues | Changelog
ghrepo
extracts a GitHub repository's owner & name from various GitHub URL
formats (or just from a string of the form OWNER/REPONAME
or REPONAME
), and
the resulting object provides properties for going in reverse to determine the
possible URLs. Also included is a struct for performing a couple useful
inspections on local Git repositories, including determining the corresponding
GitHub owner & repository name.
use std::error::Error;
use std::str::FromStr;
use ghrepo::GHRepo;
fn main() -> Result<(), Box<dyn Error>> {
let repo = GHRepo::new("octocat", "repository")?;
assert_eq!(repo.owner(), "octocat");
assert_eq!(repo.name(), "repository");
assert_eq!(repo.to_string(), "octocat/repository");
assert_eq!(repo.html_url(), "https://github.com/octocat/repository");
let repo2 = GHRepo::from_str("octocat/repository")?;
assert_eq!(repo, repo2);
let repo3 = GHRepo::from_str("https://github.com/octocat/repository")?;
assert_eq!(repo, repo3);
Ok(())
}
ghrepo
also provides a command of the same name for getting the GitHub
repository associated with a local Git repository. To install this command on
your system, run:
cargo install ghrepo
ghrepo [<options>] [<dirpath>]
By default, the ghrepo
command just outputs the repository "fullname" (a
string of the form {owner}/{name}
). If the -J
or --json
option is
supplied, a JSON object is instead output, containing fields for the repository
owner, name, fullname, and individual URLs, like so:
{
"owner": "jwodder",
"name": "ghrepo-rust",
"fullname": "jwodder/ghrepo-rust",
"api_url": "https://api.github.com/repos/jwodder/ghrepo-rust",
"clone_url": "https://github.com/jwodder/ghrepo-rust.git",
"git_url": "git://github.com/jwodder/ghrepo-rust.git",
"html_url": "https://github.com/jwodder/ghrepo-rust",
"ssh_url": "git@github.com:jwodder/ghrepo-rust.git"
}
-J
, --json
— Output JSON-r REMOTE
, --remote REMOTE
— Parse the GitHub URL from the given remote
[default: origin
]