[![git-url-parse](http://i.imgur.com/HlfMsVf.png)](#) # git-url-parse [![PayPal](https://img.shields.io/badge/%24-paypal-f39c12.svg)][paypal-donations] [![Travis](https://img.shields.io/travis/IonicaBizau/git-url-parse.svg)](https://travis-ci.org/IonicaBizau/git-url-parse/) [![Version](https://img.shields.io/npm/v/git-url-parse.svg)](https://www.npmjs.com/package/git-url-parse) [![Downloads](https://img.shields.io/npm/dt/git-url-parse.svg)](https://www.npmjs.com/package/git-url-parse) [![Get help on Codementor](https://cdn.codementor.io/badges/get_help_github.svg)](https://www.codementor.io/johnnyb?utm_source=github&utm_medium=button&utm_term=johnnyb&utm_campaign=github) > A high level git url parser for common git providers. ## Installation ```sh $ npm i --save git-url-parse ``` ## Example ```js // Dependencies const GitUrlParse = require("git-url-parse"); console.log(GitUrlParse("git@github.com:IonicaBizau/node-git-url-parse.git")); // => { // protocols: [] // , port: null // , resource: "github.com" // , user: "git" // , pathname: "/IonicaBizau/node-git-url-parse.git" // , hash: "" // , search: "" // , href: "git@github.com:IonicaBizau/node-git-url-parse.git" // , token: "" // , protocol: "ssh" // , toString: [Function] // , source: "github.com" // , name: "node-git-url-parse" // , owner: "IonicaBizau" // } console.log(GitUrlParse("https://github.com/IonicaBizau/node-git-url-parse.git")); // => { // protocols: ["https"] // , port: null // , resource: "github.com" // , user: "" // , pathname: "/IonicaBizau/node-git-url-parse.git" // , hash: "" // , search: "" // , href: "https://github.com/IonicaBizau/node-git-url-parse.git" // , token: "" // , protocol: "https" // , toString: [Function] // , source: "github.com" // , name: "node-git-url-parse" // , owner: "IonicaBizau" // } console.log(GitUrlParse("https://github.com/IonicaBizau/node-git-url-parse.git").toString("ssh")); // => "git@github.com:IonicaBizau/node-git-url-parse.git" console.log(GitUrlParse("git@github.com:IonicaBizau/node-git-url-parse.git").toString("https")); // => "https://github.com/IonicaBizau/node-git-url-parse.git" ``` ## Documentation ### `gitUrlParse(url)` Parses a Git url. #### Params - **String** `url`: The Git url to parse. #### Return - **GitUrl** The `GitUrl` object containing: - `protocols` (Array): An array with the url protocols (usually it has one element). - `port` (null|Number): The domain port. - `resource` (String): The url domain (including subdomains). - `user` (String): The authentication user (usually for ssh urls). - `pathname` (String): The url pathname. - `hash` (String): The url hash. - `search` (String): The url querystring value. - `href` (String): The input url. - `protocol` (String): The git url protocol. - `token` (String): The oauth token (could appear in the https urls). - `source` (String): The Git provider (e.g. `"github.com"`). - `owner` (String): The repository owner. - `name` (String): The repository name. - `full_name` (String): The owner and name values in the `owner/name` format. - `toString` (Function): A function to stringify the parsed url into another url type. - `organization` (String): The organization the owner belongs to. This is CloudForge specific. ### `stringify(obj, type)` Stringifies a `GitUrl` object. #### Params - **GitUrl** `obj`: The parsed Git url object. - **String** `type`: The type of the stringified url (default `obj.protocol`). #### Return - **String** The stringified url. ## How to contribute Have an idea? Found a bug? See [how to contribute][contributing]. ## Where is this library used? If you are using this library in one of your projects, add it in this list. :sparkles: - [`git-issues`](https://github.com/softwarescales/git-issues) by Gabriel Petrovay - [`github-publish-npm`](https://github.com/ofersadgat/github-publish-npm) by Ofer Sadgat - [`gpm`](https://github.com/IonicaBizau/gpm) - [`gtni`](https://nmrony.github.io/gtni) by Nur Mohammed Rony - [`nodeschool-admin`](https://github.com/nodeschool/admin#readme) by Martin Heidegger - [`ogh`](https://github.com/egoist/ogh#readme) by EGOIST - [`ssh-remote`](https://github.com/IonicaBizau/ssh-remote) - [`strapper`](https://npmjs.com/package/strapper) by Sam Newman ## License [MIT][license] © [Ionică Bizău][website] [paypal-donations]: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=RVXDDLKKLQRJW [donate-now]: http://i.imgur.com/6cMbHOC.png [license]: http://showalicense.com/?fullname=Ionic%C4%83%20Biz%C4%83u%20%3Cbizauionica%40gmail.com%3E%20(http%3A%2F%2Fionicabizau.net)&year=2015#license-mit [website]: http://ionicabizau.net [contributing]: /CONTRIBUTING.md [docs]: /DOCUMENTATION.md