parse-git-url

![Build Status]

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.

Examples

Run example with debug output

shell $ RUST_LOG=parse_git_url cargo run --example multi $ RUST_LOG=parse_git_url cargo run --example trim_auth

Simple usage and output

bash $ cargo run --example readme

```rust use parsegiturl::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")); } ```

Example Output

bash 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, }, )

Acknowledgments

This repository has been forked from [tjtelan/git-url-parse-rs]. All credit goes to the original author.