2 releases

0.5.1 Aug 18, 2023
0.5.0 Jul 2, 2023

#2135 in Parser implementations

Download history 145/week @ 2024-07-22 193/week @ 2024-07-29 200/week @ 2024-08-05 279/week @ 2024-08-12 208/week @ 2024-08-19 175/week @ 2024-08-26 217/week @ 2024-09-02 257/week @ 2024-09-09 108/week @ 2024-09-16 215/week @ 2024-09-23 179/week @ 2024-09-30 119/week @ 2024-10-07 168/week @ 2024-10-14 229/week @ 2024-10-21 197/week @ 2024-10-28 217/week @ 2024-11-04

828 downloads per month
Used in 2 crates

MIT license

25KB
456 lines

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:

  • Github
  • Bitbucket
  • Azure Devops

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

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

Simple usage and output

$ 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"));
}

Example Output

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.

Dependencies

~2.4–3.5MB
~61K SLoC