parse-bitbucket-url

Parse a Bitbucket URL into an object. Supports Bitbucket Server (formely known as Stash) URLs as well.
Developed in Codefresh.
Install
Install with npm:
$ npm install parse-bitbucket-url --save
See the release history for details.
Why a Bitbucket URL parser library?
Cuz I needed it. And I really liked parse-github-url's simplicity. So now you have this. Have fun.
(Why not parse-vcs-url
you say? nahhh, that's way too few require
statements)
Usage
let parseBitbucketUrl = require('parse-bitbucket-url');
parseBitbucketUrl('https://bitbucket.org/jespern/django-piston');
Results in:
{
"owner": "jespern",
"name": "django-piston",
"repo": "jespern/django-piston",
"branch": "master"
}
Example results
Generated results from test fixtures:
{ host: 'bitbucket.org',
owner: 'birkenfeld',
name: 'sphinx',
repo: 'birkenfeld/sphinx',
repository: 'birkenfeld/sphinx',
branch: '1.2.3' }
{ host: 'bitbucket.org',
owner: 'birkenfeld',
name: 'sphinx',
repo: 'birkenfeld/sphinx',
repository: 'birkenfeld/sphinx',
branch: 'branch' }
{ host: 'bitbucket.org',
owner: 'birkenfeld',
name: 'sphinx',
repo: 'birkenfeld/sphinx',
repository: 'birkenfeld/sphinx',
branch: 'master' }
{ host: 'bitbucket.org',
owner: 'birkenfeld',
name: 'sphinx',
repo: 'birkenfeld/sphinx',
repository: 'birkenfeld/sphinx',
branch: 'master' }
{ host: 'bitbucket.org',
owner: 'birkenfeld',
name: 'sphinx',
repo: 'birkenfeld/sphinx',
repository: 'birkenfeld/sphinx',
branch: 'master' }
{ host: 'bitbucket.org',
owner: 'birkenfeld',
name: 'sphinx',
repo: 'birkenfeld/sphinx',
repository: 'birkenfeld/sphinx',
branch: 'master' }
{ host: 'bitbucket.org',
owner: 'birkenfeld',
name: 'sphinx',
repo: 'birkenfeld/sphinx',
repository: 'birkenfeld/sphinx',
branch: 'master' }
{ host: 'bitbucket.org',
owner: 'birkenfeld',
name: 'sphinx',
repo: 'birkenfeld/sphinx',
repository: 'birkenfeld/sphinx',
branch: '1.2.3' }
{ host: 'bitbucket.org',
owner: 'birkenfeld',
name: 'sphinx',
repo: 'birkenfeld/sphinx',
repository: 'birkenfeld/sphinx',
branch: 'v1.2.3' }
{ host: 'bitbucket.org',
owner: 'birkenfeld',
name: 'sphinx',
repo: 'birkenfeld/sphinx',
repository: 'birkenfeld/sphinx',
branch: 'master' }
{ host: 'bitbucket.org',
owner: 'birkenfeld',
name: 'sphinx',
repo: 'birkenfeld/sphinx',
repository: 'birkenfeld/sphinx',
branch: '4.5.6' }
{ host: 'bitbucket.org',
owner: 'birkenfeld',
name: 'sphinx',
repo: 'birkenfeld/sphinx',
repository: 'birkenfeld/sphinx',
branch: 'v4.5.6' }
{ host: 'bitbucket.org',
owner: 'birkenfeld',
name: 'sphinx',
repo: 'birkenfeld/sphinx',
repository: 'birkenfeld/sphinx',
branch: 'master' }
{ host: 'birkenfeld',
owner: 'birkenfeld',
name: 'sphinx',
repo: 'birkenfeld/sphinx',
repository: 'birkenfeld/sphinx',
branch: 'master' }
{ host: 'bitbucket.org',
owner: 'birkenfeld',
name: null,
repo: null,
repository: null,
branch: 'master' }
{ host: 'bitbucket.org',
owner: 'birkenfeld',
name: 'sphinx',
repo: 'birkenfeld/sphinx',
repository: 'birkenfeld/sphinx',
branch: 'master' }
{ host: 'bitbucket.org',
owner: 'birkenfeld',
name: 'sphinx',
repo: 'birkenfeld/sphinx',
repository: 'birkenfeld/sphinx',
branch: 'master' }
{ host: 'bitbucket.org',
owner: 'birkenfeld',
name: 'sphinx',
repo: 'birkenfeld/sphinx',
repository: 'birkenfeld/sphinx',
branch: 'master' }
{ host: 'bitbucket.org',
owner: 'birkenfeld',
name: 'sphinx',
repo: 'birkenfeld/sphinx',
repository: 'birkenfeld/sphinx',
branch: 'stable' }
{ host: 'bitbucket.org',
owner: 'birkenfeld',
name: 'sphinx',
repo: 'birkenfeld/sphinx',
repository: 'birkenfeld/sphinx',
branch: 'stable' }
{ host: 'bitbucket.org',
owner: 'birkenfeld',
name: 'sphinx',
repo: 'birkenfeld/sphinx',
repository: 'birkenfeld/sphinx',
branch: 'master' }
{ host: 'bitbucket.org',
owner: 'birkenfeld',
name: 'sphinx',
repo: 'birkenfeld/sphinx',
repository: 'birkenfeld/sphinx',
branch: 'master' }
{ host: 'bitbucket.org',
owner: 'birkenfeld',
name: 'sphinx',
repo: 'birkenfeld/sphinx',
repository: 'birkenfeld/sphinx',
branch: 'master' }
{ host: 'bitbucket.org',
owner: 'birkenfeld',
name: 'sphinx',
repo: 'birkenfeld/sphinx',
repository: 'birkenfeld/sphinx',
branch: 'master' }
{ host: 'bitbucket.org',
owner: 'birkenfeld',
name: 'sphinx',
repo: 'birkenfeld/sphinx',
repository: 'birkenfeld/sphinx',
branch: 'default' }
{ host: 'bitbucket.org',
owner: 'birkenfeld',
name: 'sphinx',
repo: 'birkenfeld/sphinx',
repository: 'birkenfeld/sphinx',
branch: 'default' }
{ host: 'bitbucket.org',
owner: 'birkenfeld',
name: 'sphinx',
repo: 'birkenfeld/sphinx',
repository: 'birkenfeld/sphinx',
branch: 'default' }
{ host: 'bitbucket.org',
owner: 'birkenfeld',
name: 'sphinx',
repo: 'birkenfeld/sphinx',
repository: 'birkenfeld/sphinx',
branch: 'stable' }
{ host: 'bitbucket.org',
owner: 'birkenfeld',
name: 'sphinx',
repo: 'birkenfeld/sphinx',
repository: 'birkenfeld/sphinx',
branch: 'master' }
{ host: 'bitbucket.org',
owner: 'birkenfeld',
name: 'sphinx',
repo: 'birkenfeld/sphinx',
repository: 'birkenfeld/sphinx',
branch: 'master' }
{ host: 'bitbucket.org',
owner: 'birkenfeld',
name: 'sphinx',
repo: 'birkenfeld/sphinx',
repository: 'birkenfeld/sphinx',
branch: 'master' }
{ host: 'bitbucket.org',
owner: 'birkenfeld',
name: 'sphinx',
repo: 'birkenfeld/sphinx',
repository: 'birkenfeld/sphinx',
branch: 'master' }
{ host: 'bitbucket.org',
owner: 'birkenfeld',
name: 'sphinx',
repo: 'birkenfeld/sphinx',
repository: 'birkenfeld/sphinx',
branch: 'master' }
{ host: 'bitbucket.org',
owner: 'birkenfeld',
name: 'sphinx',
repo: 'birkenfeld/sphinx',
repository: 'birkenfeld/sphinx',
branch: 'master' }
{ host: 'bitbucket.org',
owner: 'birkenfeld',
name: 'sphinx',
repo: 'birkenfeld/sphinx',
repository: 'birkenfeld/sphinx',
branch: 'master' }
{ host: 'bitbucket.org',
owner: 'birkenfeld',
name: 'sphinx',
repo: 'birkenfeld/sphinx',
repository: 'birkenfeld/sphinx',
branch: '40bd03003ac6' }
{ host: 'bitbucket.org',
owner: 'birkenfeld',
name: 'sphinx',
repo: 'birkenfeld/sphinx',
repository: 'birkenfeld/sphinx',
branch: 'master' }
{ host: 'bitbucket.org',
owner: 'birkenfeld',
name: 'sphinx',
repo: 'birkenfeld/sphinx',
repository: 'birkenfeld/sphinx',
branch: '1.0b2' }
{ host: 'bitbucket.org',
owner: 'birkenfeld',
name: 'sphinx',
repo: 'birkenfeld/sphinx',
repository: 'birkenfeld/sphinx',
branch: 'stable' }
{ host: 'stash.one.two',
owner: 'KEY',
name: 'name1',
repo: 'KEY/name1',
repository: 'KEY/name1',
branch: 'master' }
{ host: 'stash.one.two',
owner: 'ONE',
name: 'name2',
repo: 'ONE/name2',
repository: 'ONE/name2',
branch: 'master' }
{ host: 'stash.one.two',
owner: 'ABC',
name: 'name3',
repo: 'ABC/name3',
repository: 'ABC/name3',
branch: 'master' }
{ host: 'stash.one.two',
owner: 'DEF',
name: 'na-me4',
repo: 'DEF/na-me4',
repository: 'DEF/na-me4',
branch: 'master' }
{ host: 'bitbucketserver.one.two',
owner: 'GHI',
name: 'name5',
repo: 'GHI/name5',
repository: 'GHI/name5',
branch: 'master' }
{ host: 'stash.one.two',
owner: 'JKL',
name: 'nam-e6',
repo: 'JKL/nam-e6',
repository: 'JKL/nam-e6',
branch: 'master' }
{ host: 'internal.one.two:2034',
owner: 'MNOPQ',
name: 'name7',
repo: 'MNOPQ/name7',
repository: 'MNOPQ/name7',
branch: 'master' }
{ host: 'stash.one.two:5555',
owner: 'KEY',
name: 'name1',
repo: 'KEY/name1',
repository: 'KEY/name1',
branch: 'branch333' }
{ host: 'stash-internal.my.company',
owner: 'scm',
name: 'a-key',
repo: 'scm/a-key',
repository: 'scm/a-key',
branch: 'master' }
{ host: 'stash-internal.my.company:3333',
owner: 'scm',
name: 'a-key',
repo: 'scm/a-key',
repository: 'scm/a-key',
branch: 'master' }
{ host: 'stash-internal.some.io:7999',
owner: 'cod',
name: 'more-proj',
repo: 'cod/more-proj',
repository: 'cod/more-proj',
branch: 'master' }
{ host: 'bb-server.startup.io:27999',
owner: 'tfc',
name: 'some-proj',
repo: 'tfc/some-proj',
repository: 'tfc/some-proj',
branch: 'master' }
{ host: 'bb-server.startup.io:27999',
owner: 'tfc',
name: 'some-proj',
repo: 'tfc/some-proj',
repository: 'tfc/some-proj',
branch: '0.2.3' }
History
v0.2.0
Added support for Bitbucket Server / Stash.
v0.1.1
First published version.
v0.1.0
Basic version, based on parse-github-url.
NOTE: it is impossible to find out what branch a commit is part of in Bitbucket. Even if a link incldues "at=stable" in
its query string, the actual branch might be wp-pygments-syn or default, etc. For now, we'll just play dumb and imagine
that at= always works and isn't just cosmetic.
ALSO NOTE: tags and branches are treated alike in Bitbucket and cannot be distinguished by URL.
We'll treat everything like branches.
Related projects
You might also be interested in these projects:
Contributing
Pull requests and stars are always welcome. For bugs and feature requests, please create an issue.
Running tests
Install dev dependencies and run the test:
$ npm install -d && npm test
Author
Alon Diamant (advance512)
Heavily based on parse-github-url by Jon Schlinkert (jonschlinkert).
License
Copyright © 2016, Codefresh.
Released under the MIT license.
This file was NOT generated by verb, v0.9.0, on September 20, 2016.