Skip to main content

CLI for Huly project management

Project description

huly-cli

Python CLI for interacting with a Huly workspace from the terminal.

Status

This repo is currently a Python typer CLI, not a Node or pnpm project.

It has been checked against hcengineering/platform@v0.6.504 and smoke-tested against https://huly.ingenuity.ph workspace efs.

What is verified today:

  • Authentication flow via /_accounts
  • Read access for projects, issues, components, documents, templates, members, labels, and issue descriptions
  • Live CRUD for issues, documents, components, and milestones on https://huly.ingenuity.ph workspace efs
  • Live template description update and restore flow
  • Workspace-specific issue status display and status filtering
  • Local unit/CLI test suite
  • CI-equivalent local checks: uv sync --extra dev, uv run ruff check ., uv run ruff format --check ., uv run pytest tests/ -v, uv run python -m build, and uv run twine check dist/*

What is not fully verified yet:

  • Automated live-workspace CI has not been added
  • You should still prefer a disposable project or disposable teamspace for release-time live smoke tests

Known live compatibility gaps at the time of writing:

  • No known read-path breakage remains from the v0.6.504 comparison and smoke tests
  • No known CLI CRUD gap remains on the currently implemented issue, document, component, and milestone surfaces
  • The test suite now patches auth correctly; it no longer depends on a developer's local cached login state

Compatibility Target

  • Huly platform tag: v0.6.504
  • Example workspace URL used during verification: https://huly.ingenuity.ph/workbench/efs/tracker/69cb986a2df46a01935af670/issues

Important distinction:

  • efs is the workspace slug
  • ROA is the project identifier in that workspace

If you run huly issues list --project EFS, it will fail because EFS is not a project ID.

Prerequisites

  • Python 3.11+
  • uv
  • A Huly account with access to the target workspace

Setup

  1. Install dependencies, including dev tools:
uv sync --extra dev
  1. Copy the example environment file:
cp .env.example .env
  1. Edit .env with at least:
  • HULY_URL
  • HULY_WORKSPACE
  1. Choose one auth approach:
  • Interactive login: preferred for local use
  • Environment-based login: useful for non-interactive runs and token refresh

Environment Variables

The CLI loads config in this order:

  1. CLI flags
  2. Environment variables
  3. .env in the current directory
  4. ~/.config/huly/config.toml

Supported variables:

  • HULY_URL
  • HULY_WORKSPACE
  • HULY_EMAIL
  • HULY_PASSWORD

Auth cache location:

  • Config: ~/.config/huly/config.toml
  • Tokens: ~/.config/huly/auth.json

The token cache is reused automatically. If the cached token expires, the CLI needs HULY_EMAIL and HULY_PASSWORD available in order to re-authenticate automatically.

Login Walkthrough

Option 1: Interactive login

This is the simplest flow if you are testing locally and do not want to keep your password in .env.

uv run huly --url https://huly.ingenuity.ph --workspace efs auth login

You will be prompted for:

  • Email
  • Password
  • Workspace slug, if it was not passed on the command line or set in .env

Then confirm auth is valid:

uv run huly auth status

Option 2: Login using .env

Put all four values in .env:

HULY_URL=https://huly.ingenuity.ph
HULY_WORKSPACE=efs
HULY_EMAIL=you@example.com
HULY_PASSWORD=your-password

Then run:

uv run huly auth login
uv run huly auth status

Hands-On Smoke Test

These commands are the safest live checks to run today.

If you want the repo to drive the same smoke pass for you:

uv run python scripts/live_smoke.py

To include live CRUD checks with automatic cleanup:

uv run python scripts/live_smoke.py --allow-writes
  1. Confirm auth:
uv run huly auth status
  1. List projects:
uv run huly projects list
  1. Inspect the verified sample project:
uv run huly projects get ROA
  1. List a few issues from that project:
uv run huly issues list --project ROA --limit 5
  1. Inspect one issue:
uv run huly issues get ROA-1
  1. Read the issue description:
uv run huly issues describe ROA-1
  1. List project components:
uv run huly components list --project ROA --limit 5
  1. Inspect a component by internal ID:
uv run huly components get 16e202fa79377835295c79eb
  1. List a few documents:
uv run huly documents list --limit 5
  1. List issue templates:
uv run huly templates list --limit 5
  1. Verify status filtering:
uv run huly issues list --status backlog --limit 5
  1. List workspace members:
uv run huly members list
  1. List labels:
uv run huly labels list

JSON mode

If you want machine-readable output for quick inspection:

uv run huly --json projects list
uv run huly --json issues list --project ROA --limit 5
uv run huly --json auth status

Commands That Currently Need Caution

The CLI write paths were exercised live during verification, but you should still prefer a disposable project or disposable teamspace when doing release-time smoke tests against a real workspace.

Local Test Suite

Run the unit and CLI regression tests with:

uv run --extra dev pytest -q

Expected result at the time of verification:

  • 155 passed

Packaging And PyPI

The repo now builds a wheel and sdist cleanly and CI validates the distribution metadata.

For the full release checklist, including the manual PyPI setup you still need to do, see RELEASE.md.

CLI Help

Top-level help:

uv run huly --help

Auth help:

uv run huly auth login --help

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

huly_cli-0.1.0.tar.gz (95.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

huly_cli-0.1.0-py3-none-any.whl (43.8 kB view details)

Uploaded Python 3

File details

Details for the file huly_cli-0.1.0.tar.gz.

File metadata

  • Download URL: huly_cli-0.1.0.tar.gz
  • Upload date:
  • Size: 95.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for huly_cli-0.1.0.tar.gz
Algorithm Hash digest
SHA256 400821e38bbfb3c303c242bd42f1ca0e530e0903b1eac27b2fccf9b8729d511c
MD5 83824e01725655a8adcaa8ca924447b1
BLAKE2b-256 384c750437c141073ea19d7f14c43dda8cebf665372721f2c004ddf0c7a61945

See more details on using hashes here.

Provenance

The following attestation bundles were made for huly_cli-0.1.0.tar.gz:

Publisher: publish-pypi.yml on teslakoile/huly-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file huly_cli-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: huly_cli-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 43.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for huly_cli-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1701b25e90468f40cf75a3e10ed56852daa0ee8307a92cd472a5d25764604553
MD5 5fe6d8ebd2536ec88d5500dc5d9fd21a
BLAKE2b-256 c381114407effa1b927150460eb3a5de96975f1fc4647c439dbf87fc82e76e4d

See more details on using hashes here.

Provenance

The following attestation bundles were made for huly_cli-0.1.0-py3-none-any.whl:

Publisher: publish-pypi.yml on teslakoile/huly-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page