You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
jgart 719f4c8e64 Sets branch for /blob URLs and removes from path. 6 months ago
.github Upgrade to GitHub-native Dependabot (#32) 7 months ago
changes Update linting tools and fix code style (#37) 7 months ago
giturlparse Sets branch for /blob URLs and removes from path. 6 months ago
.checkignore Update tooling, drop python 2 (#25) 2 years ago
.codeclimate.yaml Update tooling, drop python 2 (#25) 2 years ago
.coveragerc Update tooling, drop python 2 (#25) 2 years ago
.csslintrc Update tooling, drop python 2 (#25) 2 years ago
.editorconfig Update tooling, drop python 2 (#25) 2 years ago
.gitignore Initial commit 9 years ago
.pre-commit-config.yaml Update linting tools and fix code style (#37) 7 months ago
.pyup.yaml Update tooling, drop python 2 (#25) 2 years ago
AUTHORS.rst Update tooling, drop python 2 (#25) 2 years ago
CONTRIBUTING.rst Fix typo 1 year ago
HISTORY.rst Release 0.10.0 1 year ago
LICENSE Initial commit 9 years ago
MANIFEST.in Update tooling, drop python 2 (#25) 2 years ago
README.rst Improve pattern recognition (#26) 1 year ago
pyproject.toml Update tooling, drop python 2 (#25) 2 years ago
requirements-test.txt Update tooling, drop python 2 (#25) 2 years ago
requirements.txt Update tooling, drop python 2 (#25) 2 years ago
setup.cfg Release 0.10.0 1 year ago
setup.py Update tooling, drop python 2 (#25) 2 years ago
tasks.py Update linting tools and fix code style (#37) 7 months ago
tox.ini Update linting tools and fix code style (#37) 7 months ago

README.rst

===========
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 codename
* ``host``: server hostname
* ``resource``: same as ``host``
* ``port``: URL port (only if explicitly defined in URL)
* ``protocol``: URL protocol (git, ssh, http/https)
* ``protocols``: list of protocols explicitly defined in URL
* ``user``: repository user
* ``owner``: repository owner (user or organization)
* ``repo``: repository name
* ``name``: same as ``repo``
* ``groups``: list of groups - gitlab only
* ``path``: path to file or directory (includes the branch name) - gitlab / github only
* ``path_raw``: raw path starting from the repo name (might include platform keyword) - gitlab / github only
* ``branch``: branch name (when parseable) - gitlab / github only

Parse
==================

::

from giturlparse import parse

p = parse('git@bitbucket.org:AaronO/some-repo.git')

p.host, p.owner, p.repo

# => ('bitbucket.org', 'AaronO', 'some-repo')


Rewrite
==================

::

from giturlparse import parse

url = 'git@github.com:Org/Private-repo.git'

p = parse(url)

p.url2ssh, p.url2https, p.url2git, p.url2http
# => ('git@github.com: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 = 'git@github.com:Org/Private-repo.git'

parse(url).urls
# => {
# 'ssh': 'git@github.com: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 = 'git@github.com:Org/Private-repo.git'

parse(url).valid
# => True

# Or

validate(url)
# => True

Tests
==================

::

python setup.py test

License
==================

Apache v2 (Check out LICENSE file)