giturlparse
giturlparse copied to clipboard
Parse & rewrite git urls (supports GitHub, Bitbucket, Assembla ...)
=========== giturlparse
Parse & rewrite git urls (supports GitHub, Bitbucket, FriendCode, Assembla, Gitlab ...)
This is a fork of giturlparse.py with updated parsers.
Original project can be found at https://github.com/FriendCode/giturlparse.py
Installing
::
pip install giturlparse
Examples
Exposed attributes
platform: platform codenamehost: server hostnameresource: same ashostport: URL port (only if explicitly defined in URL)protocol: URL protocol (git, ssh, http/https)protocols: list of protocols explicitly defined in URLuser: repository userowner: repository owner (user or organization)repo: repository namename: same asrepogroups: list of groups - gitlab onlypath: path to file or directory (includes the branch name) - gitlab / github onlypath_raw: raw path starting from the repo name (might include platform keyword) - gitlab / github onlybranch: branch name (when parseable) - gitlab / github onlyusername: username from<username>:<access_token>@<url>gitlab / github urlsaccess_token: access token from<username>:<access_token>@<url>gitlab / github urls
Parse
::
from giturlparse import parse
p = parse('[email protected]:AaronO/some-repo.git')
p.host, p.owner, p.repo
# => ('bitbucket.org', 'AaronO', 'some-repo')
Rewrite
::
from giturlparse import parse
url = '[email protected]:Org/Private-repo.git'
p = parse(url)
p.url2ssh, p.url2https, p.url2git, p.url2http
# => ('[email protected]:Org/Private-repo.git', 'https://github.com/Org/Private-repo.git', 'git://github.com/Org/Private-repo.git', None)
URLS
Alternative URLs for same repo::
from giturlparse import parse
url = '[email protected]:Org/Private-repo.git'
parse(url).urls
# => {
# 'ssh': '[email protected]:Org/Private-repo.git',
# 'https': 'https://github.com/Org/Private-repo.git',
# 'git': 'git://github.com/Org/Private-repo.git'
# }
Validate
::
from giturlparse import parse, validate
url = '[email protected]:Org/Private-repo.git'
parse(url).valid
# => True
# Or
validate(url)
# => True
Tests
::
python -munittest
License
Apache v2 (Check out LICENSE file)