Crates.io | parse-git-url |
lib.rs | parse-git-url |
version | 0.5.1 |
source | src |
created_at | 2023-07-02 22:55:20.865885 |
updated_at | 2023-08-18 22:18:41.460653 |
description | A parser for git repo urls based on url crate |
homepage | https://github.com/EricCrosson/parse-git-url |
repository | https://github.com/EricCrosson/parse-git-url |
max_upload_size | |
id | 906473 |
size | 61,669 |
Supports common protocols as specified by the Pro Git book
See: 4.1 Git on the Server - The Protocols
Supports parsing SSH/HTTPS repo urls for:
See tests/parse.rs for expected output for a variety of inputs.
URLs that use the ssh://
protocol (implicitly or explicitly) undergo a small normalization process in order to be parsed.
Internally uses Url::parse()
from the Url crate after normalization.
$ RUST_LOG=parse_git_url cargo run --example multi
$ RUST_LOG=parse_git_url cargo run --example trim_auth
$ cargo run --example readme
use parse_git_url::GitUrl;
fn main() {
println!("SSH: {:#?}", GitUrl::parse("git@github.com:tjtelan/git-url-parse-rs.git"));
println!("HTTPS: {:#?}", GitUrl::parse("https://github.com/tjtelan/git-url-parse-rs"));
}
SSH: Ok(
GitUrl {
host: Some(
"github.com",
),
name: "git-url-parse-rs",
owner: Some(
"tjtelan",
),
organization: None,
fullname: "tjtelan/git-url-parse-rs",
scheme: Ssh,
user: Some(
"git",
),
token: None,
port: None,
path: "tjtelan/git-url-parse-rs.git",
git_suffix: true,
scheme_prefix: false,
},
)
HTTPS: Ok(
GitUrl {
host: Some(
"github.com",
),
name: "git-url-parse-rs",
owner: Some(
"tjtelan",
),
organization: None,
fullname: "tjtelan/git-url-parse-rs",
scheme: Https,
user: None,
token: None,
port: None,
path: "/tjtelan/git-url-parse-rs",
git_suffix: false,
scheme_prefix: true,
},
)
This repository has been forked from tjtelan/git-url-parse-rs. All credit goes to the original author.