Metadata-Version: 2.4
Name: git_web_url
Version: 1.0.2
Summary: A CLI tool and also a Python library can print the url of a local file in a git repo so you can one-click to open it in web browser.
Author-email: Sanhe Hu <husanhe@email.com>
Maintainer-email: Sanhe Hu <husanhe@email.com>
License-Expression: MIT
Project-URL: Homepage, https://github.com/MacHu-GWU/git_web_url-project
Project-URL: Documentation, https://git-web-url.readthedocs.io/en/latest/
Project-URL: Repository, https://github.com/MacHu-GWU/git_web_url-project
Project-URL: Issues, https://github.com/MacHu-GWU/git_web_url-project/issues
Project-URL: Changelog, https://github.com/MacHu-GWU/git_web_url-project/blob/main/release-history.rst
Project-URL: Download, https://pypi.org/pypi/git-web-url#files
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Natural Language :: English
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: MacOS
Classifier: Operating System :: Unix
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Python: <4.0,>=3.10
Description-Content-Type: text/x-rst
License-File: LICENSE.txt
License-File: AUTHORS.rst
Requires-Dist: fire<1.0.0,>=0.6.0
Provides-Extra: dev
Requires-Dist: rich<14.0.0,>=13.8.1; extra == "dev"
Provides-Extra: test
Requires-Dist: pytest<9.0.0,>=8.2.2; extra == "test"
Requires-Dist: pytest-cov<7.0.0,>=6.0.0; extra == "test"
Provides-Extra: doc
Requires-Dist: Sphinx<8.0.0,>=7.4.7; extra == "doc"
Requires-Dist: sphinx-copybutton<1.0.0,>=0.5.2; extra == "doc"
Requires-Dist: sphinx-design<1.0.0,>=0.6.1; extra == "doc"
Requires-Dist: sphinx-jinja<3.0.0,>=2.0.2; extra == "doc"
Requires-Dist: furo==2024.8.6; extra == "doc"
Requires-Dist: pygments<3.0.0,>=2.18.0; extra == "doc"
Requires-Dist: ipython<8.19.0,>=8.18.1; extra == "doc"
Requires-Dist: nbsphinx<1.0.0,>=0.8.12; extra == "doc"
Requires-Dist: rstobj==2.0.0; extra == "doc"
Requires-Dist: docfly==3.0.3; extra == "doc"
Provides-Extra: mise
Requires-Dist: PyGithub<3.0.0,>=2.8.0; extra == "mise"
Requires-Dist: httpx<1.0.0,>=0.28.0; extra == "mise"
Requires-Dist: tomli<3.0.0,>=2.0.0; python_version < "3.11" and extra == "mise"
Dynamic: license-file


.. image:: https://readthedocs.org/projects/git-web-url/badge/?version=latest
    :target: https://git-web-url.readthedocs.io/en/latest/
    :alt: Documentation Status

.. image:: https://github.com/MacHu-GWU/git_web_url-project/actions/workflows/main.yml/badge.svg
    :target: https://github.com/MacHu-GWU/git_web_url-project/actions?query=workflow:CI

.. image:: https://codecov.io/gh/MacHu-GWU/git_web_url-project/branch/main/graph/badge.svg
    :target: https://codecov.io/gh/MacHu-GWU/git_web_url-project

.. image:: https://img.shields.io/pypi/v/git-web-url.svg
    :target: https://pypi.python.org/pypi/git-web-url

.. image:: https://img.shields.io/pypi/l/git-web-url.svg
    :target: https://pypi.python.org/pypi/git-web-url

.. image:: https://img.shields.io/pypi/pyversions/git-web-url.svg
    :target: https://pypi.python.org/pypi/git-web-url

.. image:: https://img.shields.io/badge/✍️_Release_History!--None.svg?style=social&logo=github
    :target: https://github.com/MacHu-GWU/git_web_url-project/blob/main/release-history.rst

.. image:: https://img.shields.io/badge/⭐_Star_me_on_GitHub!--None.svg?style=social&logo=github
    :target: https://github.com/MacHu-GWU/git_web_url-project

------

.. image:: https://img.shields.io/badge/Link-API-blue.svg
    :target: https://git-web-url.readthedocs.io/en/latest/py-modindex.html

.. image:: https://img.shields.io/badge/Link-Install-blue.svg
    :target: `install`_

.. image:: https://img.shields.io/badge/Link-GitHub-blue.svg
    :target: https://github.com/MacHu-GWU/git_web_url-project

.. image:: https://img.shields.io/badge/Link-Submit_Issue-blue.svg
    :target: https://github.com/MacHu-GWU/git_web_url-project/issues

.. image:: https://img.shields.io/badge/Link-Request_Feature-blue.svg
    :target: https://github.com/MacHu-GWU/git_web_url-project/issues

.. image:: https://img.shields.io/badge/Link-Download-blue.svg
    :target: https://pypi.org/pypi/git-web-url#files


Welcome to ``git_web_url`` Documentation
==============================================================================
.. image:: https://git-web-url.readthedocs.io/en/latest/_static/git_web_url-logo.png
    :target: https://git-web-url.readthedocs.io/en/latest/

``git_web_url`` is a CLI tool and also a Python library that prints the URL of a local file in a git repo so you can one-click to open it in web browser.

**Currently it supports**:

Git Hosting Services:

- GitHub
- GitHub Enterprise
- GitLab
- GitLab Enterprise
- BitBucket
- BitBucket Enterprise
- AWS CodeCommit

Git Clone Protocols:

- https
- ssh
- aws_codecommit (`git-remote-codecommit <https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-git-remote-codecommit.html>`_)


Claude Code Skill
------------------------------------------------------------------------------
A ready-to-use Claude Code skill is bundled at `.claude/skills/git-web-url/ <https://github.com/MacHu-GWU/git_web_url-project/tree/main/.claude/skills/git-web-url>`_. Copy it into your own project's ``.claude/skills/`` directory and Claude will automatically know how to invoke ``gwu`` (or via ``uvx``) when you ask it to get the web URL of a file in your repo.


CLI Usage
------------------------------------------------------------------------------
.. note::

    **Breaking Change in 1.0.1**: The CLI now uses subcommands. The previous ``gwu`` command
    is now ``gwu url``. For example, ``gwu /path/to/file`` becomes ``gwu url /path/to/file``.

**General Syntax**

.. code-block:: bash

    gwu <subcommand> [options]

**Available Subcommands**

- ``url``: Print the web URL for a file or folder in the git repository.
- ``relpath``: Print the relative path from the git repository root.


The ``url`` Subcommand
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Print the web URL you can one-click to open in a web browser.

**Basic Usage**

cd into your git repo directory, or any folder inside, then run ``gwu url`` (or ``gitweburl url``). It prints the URL for the current branch and current directory:

.. code-block:: bash

    $ gwu url
    https://github.com/your_account/your_repo/tree/your_branch/path/to/current_directory

**Specify a File or Folder**

Provide the absolute path of the file or folder in your local git repo:

.. code-block:: bash

    $ gwu url /path/to/your_repo/path/to/your_file.py
    https://github.com/your_account/your_repo/blob/your_branch/path/to/your_file.py

**Branch Options**

Use the ``--branch`` (or ``-b``) flag to control which branch appears in the URL:

.. code-block:: bash

    # Use current branch (default behavior)
    $ gwu url
    https://github.com/your_account/your_repo/tree/feature-branch/

    # Use default branch (main/master) - URL without explicit branch
    $ gwu url --branch=default
    https://github.com/your_account/your_repo

    # Use a specific branch
    $ gwu url --branch=main
    https://github.com/your_account/your_repo/tree/main/

    # Short form
    $ gwu url -b develop
    https://github.com/your_account/your_repo/tree/develop/


The ``relpath`` Subcommand
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Print the relative path from the git repository root to the given file or folder.

**Basic Usage**

.. code-block:: bash

    # At repository root, prints "."
    $ cd /path/to/your_repo
    $ gwu relpath
    .

    # In a subdirectory, prints relative path
    $ cd /path/to/your_repo/src/module
    $ gwu relpath
    src/module

**Specify a File or Folder**

.. code-block:: bash

    $ gwu relpath /path/to/your_repo/src/module/file.py
    src/module/file.py


Python API Usage
------------------------------------------------------------------------------
You can also use ``git_web_url`` as a Python library:

.. code-block:: python

    from pathlib import Path
    import git_web_url.api as gwu

    # Get URL for a file using current branch
    url = gwu.get_web_url(Path("/path/to/your_repo/file.py"))

    # Get URL using default branch (main/master)
    url = gwu.get_web_url(
        Path("/path/to/your_repo/file.py"),
        branch=gwu.DEFAULT_BRANCH,
    )

    # Get URL using a specific branch
    url = gwu.get_web_url(
        Path("/path/to/your_repo/file.py"),
        branch="feature-branch",
    )


.. _install:

Install
------------------------------------------------------------------------------
``git_web_url`` is released on PyPI, so all you need is to:

.. code-block:: console

    $ pip install git-web-url

To upgrade to latest version:

.. code-block:: console

    $ pip install --upgrade git-web-url
