glu-cli


Nameglu-cli JSON
Version 2.6.0 PyPI version JSON
download
home_pageNone
SummaryA CLI tool to facilitate the developer workflow
upload_time2025-07-27 20:15:36
maintainerNone
docs_urlNone
authorNone
requires_python>=3.10
licenseNone
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Glu CLI

![PyPI - Version](https://img.shields.io/pypi/v/glu-cli)
![GitHub CI](https://github.com/BrightNight-Energy/glu/actions/workflows/cicd.yml/badge.svg)

Glu CLI is a command‑line interface for Glu that streamlines common development workflows by integrating 
GitHub pull requests, Jira tickets, and AI‑powered content generation.

## Installation

Glu CLI is distributed via PyPI. You can install it with:

```bash
pipx install glu-cli
```

Alternatively, to install from source:

```bash
git clone https://github.com/BrightNight-Energy/glu.git
cd glu
pip install -e .
```
After installation, the `glu` command will be available:

```bash
glu --help
```

## Commands

Glu CLI provides four main command groups: `init`, `pr`, `ticket`, and `commit`. They are registered as 
subcommands of the main CLI:

```bash
glu init --help
glu pr --help
glu ticket --help
glu commit --help
```

### `glu pr`

#### `pr create`

The only command you need. When you're ready to push and raise a PR, use this. It will:

1. Create your commit message based on commit diff (if uncommitted changes)
2. Create a ticket in Jira based on PR description (or use the provided ticket #)
3. Push a PR based on the git diff and tag your reviewers
4. If PR is not a draft, will move your ticket to Ready for review!

...all fully customizable and within your control.

<img align="center" alt="glu ticket creation demo" src=".github/assets/pr-creation-demo.gif" /><br/><br/>

```bash
glu pr create [OPTIONS]
```

Options:

- `--ticket, -t TEXT`          Jira ticket number  
- `--project, -p TEXT`         Jira project (defaults to default project)  
- `--draft, -d`                Mark as draft PR  
- `--ready-for-review/--no-ready-for-review`  Transition ticket to Ready for review  
- `--reviewer, -r TEXT`        Requested reviewers (repeatable)  
- `--provider, -pr TEXT`       AI model provider  
- `--model, -m TEXT`           LLM model  
- `--review`                   Move ticket to ready for review (defaults to False)  

#### `pr merge`

Merge a PR with an AI generated commit message (or handcrafted, your choice) and your Jira ticket number.

Arguments:

- `pr_num`                     PR number

Options:

- `--ticket, -t TEXT`          Jira ticket number  
- `--project, -p TEXT`         Jira project (defaults to default project)  
- `--provider, -pr TEXT`       AI model provider  
- `--model, -m TEXT`           LLM model  
- `--mark-done`                Move Jira ticket to done (defaults to False)  

> [!WARNING]
> Currently only squash-merges are supported

#### `pr list`

List pull requests with optional filters:

```bash
glu pr list [OPTIONS]
```

Options:

- `--repo, -r TEXT`        Repo name (defaults to current directory git repository)
- `--only-mine, -m`        Filter PRs to those assigned to me
- `--no-draft, -d`         Filter PRs to exclude draft

#### `pr open`

Open a PR in the web browser:

```bash
glu pr open PR_NUM [OPTIONS]
```

Options:

- `--repo, -r TEXT`        Repo name (defaults to current directory git repository)

#### `pr view`

View details of a PR:

```bash
glu pr view PR_NUM [OPTIONS]
```

Options:

- `--repo, -r TEXT`        Repo name (defaults to current directory git repository)
- `--checks, --show-checks, -c`
                         Show CI checks (not enabled by default for performance reasons)

#### `pr update`

Update a PR with an updated description and metadata:

```bash
glu pr update PR_NUM [OPTIONS]
```

Options:

- `--ticket, -t TEXT`      Jira ticket number
- `--project, -p TEXT`     Jira project (defaults to default Jira project)
- `--draft, -d`            Mark as draft PR
- `--reviewer, -r TEXT`    Requested reviewers (accepts multiple values)
- `--provider, -pr TEXT`   AI model provider
- `--model, -m TEXT`       LLM model
- `--review`               Move ticket to ready for review (defaults to False)

### `glu ticket`

#### `ticket create`

Create a Jira ticket, optionally using AI to generate summary and description:

<img align="center" alt="glu ticket creation demo" src=".github/assets/ticket-creation-demo.gif" /><br/><br/>

```bash
glu ticket create [OPTIONS]
```

Options:

- `--summary, --title, -s TEXT`      Issue summary or title  
- `--type, -t TEXT`                  Issue type  
- `--body, -b TEXT`                  Issue description  
- `--assignee, -a TEXT`              Assignee  
- `--reporter, -r TEXT`              Reporter  
- `--priority, -y TEXT`              Priority  
- `--project, -p TEXT`               Jira project  
- `--ai-prompt, -ai TEXT`            AI prompt to generate summary and description  
- `--provider, -pr TEXT`             AI model provider  
- `--model, -m TEXT`                 LLM model  

The command also accepts additional JIRA fields via `--<field> <value>`.

#### `ticket list`

List Jira tickets with optional filters:

```bash
glu ticket list [OPTIONS]
```

Options:

- `--project, -p TEXT`     Jira project
- `--only-mine, -m`        Only show my tickets
- `--status, -s TEXT`      Filter tickets by status (multiple values accepted)
- `--priority-ordered`     Order by priority (defaults to created date)
- `--show-closed, -c`      Show closed tickets
- `--priority, -y TEXT`    Filter tickets by priority (multiple values accepted)
- `--type, -t TEXT`        Filter tickets by issue type (multiple values accepted)
- `--in-progress, -i`      Show in progress tickets only

#### `ticket open`

Open a Jira ticket in the web browser:

```bash
glu ticket open TICKET_NUM [OPTIONS]
```

Options:

- `--project, -p TEXT`     Jira project

#### `ticket view`

View details of a Jira ticket:

```bash
glu ticket view TICKET_NUM [OPTIONS]
```

Options:

- `--project, -p TEXT`     Jira project

### `glu commit`

#### `commit list`

Display a table of commits, similar to `git log` but more compact:

<img align="center" alt="glu commit list" src=".github/assets/commit-list.png" /><br/><br/>

```bash
glu commit list [OPTIONS]
```

Options:

- `--limit, -l NUMBER`      Number of commits (defaults to number of commits since main)


#### `commit count`

Print the number of commits since checkout to the branch:

```bash
glu commit count [OPTIONS]
```

Options:

- `--branch, -b TEXT`      Branch to count from (defaults to default branch)

### Configuration (`init`)

Initialize your Glu configuration interactively (strongly recommended):

```bash
glu init
```

Currently, glu supports the AI providers listed below. The default model for each provider can be
customized via config or specified on each command.

| Provider  | Default model     |
|:----------|:------------------|
| OpenAI    | o4-mini           |
| Gemini    | gemini-2.0-flash  |
| xAI       | grok-3-mini-fast  |
| Anthropic | claude-sonnet-4-0 |
| Ollama    | llama3.2          |

Options:

- **Jira Config**  
  - `--jira-api-token TEXT`         Jira API token (required)  
  - `--jira-email, --email TEXT`    Jira email (required)  
  - `--jira-server TEXT`            Jira server URL (default: https://jira.atlassian.com)  
  - `--jira-in-progress TEXT`       Jira “in progress” transition name (default: Starting)  
  - `--jira-ready-for-review TEXT`  Jira “ready for review” transition name (default: Ready for review)  
  - `--jira-done TEXT`              Jira “done” transition name (default: Finished)  
  - `--default-jira-project TEXT`   Default Jira project key  

- **GitHub Config**  
  - `--github-pat TEXT`             GitHub Personal Access Token (required)

**Preferences**  
  - `--preferred-provider TEXT`     Preferred AI provider (optional)  
  - `--auto-accept-generated-commits`  Auto accept generated commit messages  
  - `--generated-with-glu-tag/--no-generated-with-glu-tag`  
                                   Add a tag to generated PRs and tickets to spread the word about glu! (default: True)  
  - `--add-pr-number-on-merge/--no-add-pr-number-on-merge`  
                                   Add the PR number to merge commits (default: True)  

## Contributing

Contributions to Glu CLI are welcome! Please follow these guidelines:

1. Fork the repository and create your branch:
   ```bash
   git checkout -b feature/your-feature
   ```
2. Make your changes, ensuring that new code includes tests where appropriate.
3. Install precommit hooks:
   ```bash
    pre-commit install --install-hooks
    pre-commit install --hook-type commit-msg
   ```
4. Commit your changes following Conventional Commits.
5. Push to your fork and open a Pull Request.

## Acknowledgements

Glu CLI is inspired by [Jira CLI](https://github.com/ankitpokhrel/jira-cli) and 
[GitHub CLI](https://github.com/cli/cli).

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "glu-cli",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": null,
    "author": null,
    "author_email": null,
    "download_url": "https://files.pythonhosted.org/packages/e2/a5/da3384e9012f21e80bde1d04b6e19ec5e9c7d5156ae4d9c3e0fa555f9a68/glu_cli-2.6.0.tar.gz",
    "platform": null,
    "description": "# Glu CLI\n\n![PyPI - Version](https://img.shields.io/pypi/v/glu-cli)\n![GitHub CI](https://github.com/BrightNight-Energy/glu/actions/workflows/cicd.yml/badge.svg)\n\nGlu CLI is a command\u2011line interface for Glu that streamlines common development workflows by integrating \nGitHub pull requests, Jira tickets, and AI\u2011powered content generation.\n\n## Installation\n\nGlu CLI is distributed via PyPI. You can install it with:\n\n```bash\npipx install glu-cli\n```\n\nAlternatively, to install from source:\n\n```bash\ngit clone https://github.com/BrightNight-Energy/glu.git\ncd glu\npip install -e .\n```\nAfter installation, the `glu` command will be available:\n\n```bash\nglu --help\n```\n\n## Commands\n\nGlu CLI provides four main command groups: `init`, `pr`, `ticket`, and `commit`. They are registered as \nsubcommands of the main CLI:\n\n```bash\nglu init --help\nglu pr --help\nglu ticket --help\nglu commit --help\n```\n\n### `glu pr`\n\n#### `pr create`\n\nThe only command you need. When you're ready to push and raise a PR, use this. It will:\n\n1. Create your commit message based on commit diff (if uncommitted changes)\n2. Create a ticket in Jira based on PR description (or use the provided ticket #)\n3. Push a PR based on the git diff and tag your reviewers\n4. If PR is not a draft, will move your ticket to Ready for review!\n\n...all fully customizable and within your control.\n\n<img align=\"center\" alt=\"glu ticket creation demo\" src=\".github/assets/pr-creation-demo.gif\" /><br/><br/>\n\n```bash\nglu pr create [OPTIONS]\n```\n\nOptions:\n\n- `--ticket, -t TEXT`          Jira ticket number  \n- `--project, -p TEXT`         Jira project (defaults to default project)  \n- `--draft, -d`                Mark as draft PR  \n- `--ready-for-review/--no-ready-for-review`  Transition ticket to Ready for review  \n- `--reviewer, -r TEXT`        Requested reviewers (repeatable)  \n- `--provider, -pr TEXT`       AI model provider  \n- `--model, -m TEXT`           LLM model  \n- `--review`                   Move ticket to ready for review (defaults to False)  \n\n#### `pr merge`\n\nMerge a PR with an AI generated commit message (or handcrafted, your choice) and your Jira ticket number.\n\nArguments:\n\n- `pr_num`                     PR number\n\nOptions:\n\n- `--ticket, -t TEXT`          Jira ticket number  \n- `--project, -p TEXT`         Jira project (defaults to default project)  \n- `--provider, -pr TEXT`       AI model provider  \n- `--model, -m TEXT`           LLM model  \n- `--mark-done`                Move Jira ticket to done (defaults to False)  \n\n> [!WARNING]\n> Currently only squash-merges are supported\n\n#### `pr list`\n\nList pull requests with optional filters:\n\n```bash\nglu pr list [OPTIONS]\n```\n\nOptions:\n\n- `--repo, -r TEXT`        Repo name (defaults to current directory git repository)\n- `--only-mine, -m`        Filter PRs to those assigned to me\n- `--no-draft, -d`         Filter PRs to exclude draft\n\n#### `pr open`\n\nOpen a PR in the web browser:\n\n```bash\nglu pr open PR_NUM [OPTIONS]\n```\n\nOptions:\n\n- `--repo, -r TEXT`        Repo name (defaults to current directory git repository)\n\n#### `pr view`\n\nView details of a PR:\n\n```bash\nglu pr view PR_NUM [OPTIONS]\n```\n\nOptions:\n\n- `--repo, -r TEXT`        Repo name (defaults to current directory git repository)\n- `--checks, --show-checks, -c`\n                         Show CI checks (not enabled by default for performance reasons)\n\n#### `pr update`\n\nUpdate a PR with an updated description and metadata:\n\n```bash\nglu pr update PR_NUM [OPTIONS]\n```\n\nOptions:\n\n- `--ticket, -t TEXT`      Jira ticket number\n- `--project, -p TEXT`     Jira project (defaults to default Jira project)\n- `--draft, -d`            Mark as draft PR\n- `--reviewer, -r TEXT`    Requested reviewers (accepts multiple values)\n- `--provider, -pr TEXT`   AI model provider\n- `--model, -m TEXT`       LLM model\n- `--review`               Move ticket to ready for review (defaults to False)\n\n### `glu ticket`\n\n#### `ticket create`\n\nCreate a Jira ticket, optionally using AI to generate summary and description:\n\n<img align=\"center\" alt=\"glu ticket creation demo\" src=\".github/assets/ticket-creation-demo.gif\" /><br/><br/>\n\n```bash\nglu ticket create [OPTIONS]\n```\n\nOptions:\n\n- `--summary, --title, -s TEXT`      Issue summary or title  \n- `--type, -t TEXT`                  Issue type  \n- `--body, -b TEXT`                  Issue description  \n- `--assignee, -a TEXT`              Assignee  \n- `--reporter, -r TEXT`              Reporter  \n- `--priority, -y TEXT`              Priority  \n- `--project, -p TEXT`               Jira project  \n- `--ai-prompt, -ai TEXT`            AI prompt to generate summary and description  \n- `--provider, -pr TEXT`             AI model provider  \n- `--model, -m TEXT`                 LLM model  \n\nThe command also accepts additional JIRA fields via `--<field> <value>`.\n\n#### `ticket list`\n\nList Jira tickets with optional filters:\n\n```bash\nglu ticket list [OPTIONS]\n```\n\nOptions:\n\n- `--project, -p TEXT`     Jira project\n- `--only-mine, -m`        Only show my tickets\n- `--status, -s TEXT`      Filter tickets by status (multiple values accepted)\n- `--priority-ordered`     Order by priority (defaults to created date)\n- `--show-closed, -c`      Show closed tickets\n- `--priority, -y TEXT`    Filter tickets by priority (multiple values accepted)\n- `--type, -t TEXT`        Filter tickets by issue type (multiple values accepted)\n- `--in-progress, -i`      Show in progress tickets only\n\n#### `ticket open`\n\nOpen a Jira ticket in the web browser:\n\n```bash\nglu ticket open TICKET_NUM [OPTIONS]\n```\n\nOptions:\n\n- `--project, -p TEXT`     Jira project\n\n#### `ticket view`\n\nView details of a Jira ticket:\n\n```bash\nglu ticket view TICKET_NUM [OPTIONS]\n```\n\nOptions:\n\n- `--project, -p TEXT`     Jira project\n\n### `glu commit`\n\n#### `commit list`\n\nDisplay a table of commits, similar to `git log` but more compact:\n\n<img align=\"center\" alt=\"glu commit list\" src=\".github/assets/commit-list.png\" /><br/><br/>\n\n```bash\nglu commit list [OPTIONS]\n```\n\nOptions:\n\n- `--limit, -l NUMBER`      Number of commits (defaults to number of commits since main)\n\n\n#### `commit count`\n\nPrint the number of commits since checkout to the branch:\n\n```bash\nglu commit count [OPTIONS]\n```\n\nOptions:\n\n- `--branch, -b TEXT`      Branch to count from (defaults to default branch)\n\n### Configuration (`init`)\n\nInitialize your Glu configuration interactively (strongly recommended):\n\n```bash\nglu init\n```\n\nCurrently, glu supports the AI providers listed below. The default model for each provider can be\ncustomized via config or specified on each command.\n\n| Provider  | Default model     |\n|:----------|:------------------|\n| OpenAI    | o4-mini           |\n| Gemini    | gemini-2.0-flash  |\n| xAI       | grok-3-mini-fast  |\n| Anthropic | claude-sonnet-4-0 |\n| Ollama    | llama3.2          |\n\nOptions:\n\n- **Jira Config**  \n  - `--jira-api-token TEXT`         Jira API token (required)  \n  - `--jira-email, --email TEXT`    Jira email (required)  \n  - `--jira-server TEXT`            Jira server URL (default: https://jira.atlassian.com)  \n  - `--jira-in-progress TEXT`       Jira \u201cin progress\u201d transition name (default: Starting)  \n  - `--jira-ready-for-review TEXT`  Jira \u201cready for review\u201d transition name (default: Ready for review)  \n  - `--jira-done TEXT`              Jira \u201cdone\u201d transition name (default: Finished)  \n  - `--default-jira-project TEXT`   Default Jira project key  \n\n- **GitHub Config**  \n  - `--github-pat TEXT`             GitHub Personal Access Token (required)\n\n**Preferences**  \n  - `--preferred-provider TEXT`     Preferred AI provider (optional)  \n  - `--auto-accept-generated-commits`  Auto accept generated commit messages  \n  - `--generated-with-glu-tag/--no-generated-with-glu-tag`  \n                                   Add a tag to generated PRs and tickets to spread the word about glu! (default: True)  \n  - `--add-pr-number-on-merge/--no-add-pr-number-on-merge`  \n                                   Add the PR number to merge commits (default: True)  \n\n## Contributing\n\nContributions to Glu CLI are welcome! Please follow these guidelines:\n\n1. Fork the repository and create your branch:\n   ```bash\n   git checkout -b feature/your-feature\n   ```\n2. Make your changes, ensuring that new code includes tests where appropriate.\n3. Install precommit hooks:\n   ```bash\n    pre-commit install --install-hooks\n    pre-commit install --hook-type commit-msg\n   ```\n4. Commit your changes following Conventional Commits.\n5. Push to your fork and open a Pull Request.\n\n## Acknowledgements\n\nGlu CLI is inspired by [Jira CLI](https://github.com/ankitpokhrel/jira-cli) and \n[GitHub CLI](https://github.com/cli/cli).\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A CLI tool to facilitate the developer workflow",
    "version": "2.6.0",
    "project_urls": null,
    "split_keywords": [],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "6e126092c7986dc3686d329b69fe862431c7eb28426b1a9cb5d1578db4154fc5",
                "md5": "7d45b50376081b29fdfba998d40e32e9",
                "sha256": "a3b826bf855b3a6f2458c584ce17ef97625c6fbe6d8baf6dd1012f3a1ef68a56"
            },
            "downloads": -1,
            "filename": "glu_cli-2.6.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "7d45b50376081b29fdfba998d40e32e9",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 44078,
            "upload_time": "2025-07-27T20:15:34",
            "upload_time_iso_8601": "2025-07-27T20:15:34.929699Z",
            "url": "https://files.pythonhosted.org/packages/6e/12/6092c7986dc3686d329b69fe862431c7eb28426b1a9cb5d1578db4154fc5/glu_cli-2.6.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e2a5da3384e9012f21e80bde1d04b6e19ec5e9c7d5156ae4d9c3e0fa555f9a68",
                "md5": "d15ce8e1a33838f8b3fd4c34e62fbc09",
                "sha256": "d9da15b309d65b53c7e4ecd765097aae13a71c62f30b20266dba4ad7eb9b58a0"
            },
            "downloads": -1,
            "filename": "glu_cli-2.6.0.tar.gz",
            "has_sig": false,
            "md5_digest": "d15ce8e1a33838f8b3fd4c34e62fbc09",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 1150520,
            "upload_time": "2025-07-27T20:15:36",
            "upload_time_iso_8601": "2025-07-27T20:15:36.011535Z",
            "url": "https://files.pythonhosted.org/packages/e2/a5/da3384e9012f21e80bde1d04b6e19ec5e9c7d5156ae4d9c3e0fa555f9a68/glu_cli-2.6.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-27 20:15:36",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "glu-cli"
}
        
Elapsed time: 1.34448s