youtrack-cli 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- youtrack_cli-0.1.0/.claude/settings.local.json +17 -0
- youtrack_cli-0.1.0/.github/workflows/ci.yml +119 -0
- youtrack_cli-0.1.0/.github/workflows/release.yml +55 -0
- youtrack_cli-0.1.0/.gitignore +137 -0
- youtrack_cli-0.1.0/CLAUDE.md +200 -0
- youtrack_cli-0.1.0/PKG-INFO +117 -0
- youtrack_cli-0.1.0/PUBLISHING.md +51 -0
- youtrack_cli-0.1.0/README.md +94 -0
- youtrack_cli-0.1.0/pyproject.toml +101 -0
- youtrack_cli-0.1.0/tests/__init__.py +1 -0
- youtrack_cli-0.1.0/tests/test_main.py +43 -0
- youtrack_cli-0.1.0/tox.ini +27 -0
- youtrack_cli-0.1.0/uv.lock +1284 -0
- youtrack_cli-0.1.0/youtrack_cli/__init__.py +3 -0
- youtrack_cli-0.1.0/youtrack_cli/main.py +91 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"permissions": {
|
|
3
|
+
"allow": [
|
|
4
|
+
"Bash(cat:*)",
|
|
5
|
+
"Bash(ls:*)",
|
|
6
|
+
"Bash(gh:*)",
|
|
7
|
+
"Bash(uv:*)",
|
|
8
|
+
"Bash(mkdir:*)",
|
|
9
|
+
"Bash(PYTHONPATH=. uv run python -m youtrack_cli.main --help)",
|
|
10
|
+
"Bash(git commit:*)",
|
|
11
|
+
"Bash(git add:*)",
|
|
12
|
+
"Bash(git push:*)",
|
|
13
|
+
"Bash(mv:*)"
|
|
14
|
+
],
|
|
15
|
+
"deny": []
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ main, develop ]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [ main, develop ]
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
contents: read
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
test:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
strategy:
|
|
16
|
+
matrix:
|
|
17
|
+
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
|
|
18
|
+
|
|
19
|
+
steps:
|
|
20
|
+
- uses: actions/checkout@v4
|
|
21
|
+
with:
|
|
22
|
+
persist-credentials: false
|
|
23
|
+
|
|
24
|
+
- name: Install uv
|
|
25
|
+
uses: astral-sh/setup-uv@v4
|
|
26
|
+
with:
|
|
27
|
+
version: "latest"
|
|
28
|
+
|
|
29
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
30
|
+
uses: actions/setup-python@v5
|
|
31
|
+
with:
|
|
32
|
+
python-version: ${{ matrix.python-version }}
|
|
33
|
+
|
|
34
|
+
- name: Install dependencies
|
|
35
|
+
run: uv sync --dev
|
|
36
|
+
|
|
37
|
+
- name: Run tests
|
|
38
|
+
run: uv run pytest --cov=youtrack_cli --cov-report=xml
|
|
39
|
+
|
|
40
|
+
- name: Upload coverage to Codecov
|
|
41
|
+
uses: codecov/codecov-action@v4
|
|
42
|
+
with:
|
|
43
|
+
file: ./coverage.xml
|
|
44
|
+
fail_ci_if_error: false
|
|
45
|
+
env:
|
|
46
|
+
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
|
|
47
|
+
continue-on-error: true
|
|
48
|
+
|
|
49
|
+
lint:
|
|
50
|
+
runs-on: ubuntu-latest
|
|
51
|
+
steps:
|
|
52
|
+
- uses: actions/checkout@v4
|
|
53
|
+
with:
|
|
54
|
+
persist-credentials: false
|
|
55
|
+
|
|
56
|
+
- name: Install uv
|
|
57
|
+
uses: astral-sh/setup-uv@v4
|
|
58
|
+
with:
|
|
59
|
+
version: "latest"
|
|
60
|
+
|
|
61
|
+
- name: Set up Python
|
|
62
|
+
uses: actions/setup-python@v5
|
|
63
|
+
with:
|
|
64
|
+
python-version: "3.11"
|
|
65
|
+
|
|
66
|
+
- name: Install dependencies
|
|
67
|
+
run: uv sync --dev
|
|
68
|
+
|
|
69
|
+
- name: Run ruff check
|
|
70
|
+
run: uv run ruff check
|
|
71
|
+
|
|
72
|
+
- name: Run ruff format check
|
|
73
|
+
run: uv run ruff format --check
|
|
74
|
+
|
|
75
|
+
type-check:
|
|
76
|
+
runs-on: ubuntu-latest
|
|
77
|
+
steps:
|
|
78
|
+
- uses: actions/checkout@v4
|
|
79
|
+
with:
|
|
80
|
+
persist-credentials: false
|
|
81
|
+
|
|
82
|
+
- name: Install uv
|
|
83
|
+
uses: astral-sh/setup-uv@v4
|
|
84
|
+
with:
|
|
85
|
+
version: "latest"
|
|
86
|
+
|
|
87
|
+
- name: Set up Python
|
|
88
|
+
uses: actions/setup-python@v5
|
|
89
|
+
with:
|
|
90
|
+
python-version: "3.11"
|
|
91
|
+
|
|
92
|
+
- name: Install dependencies
|
|
93
|
+
run: uv sync --dev
|
|
94
|
+
|
|
95
|
+
- name: Run mypy
|
|
96
|
+
run: uv run mypy youtrack_cli
|
|
97
|
+
|
|
98
|
+
security:
|
|
99
|
+
runs-on: ubuntu-latest
|
|
100
|
+
steps:
|
|
101
|
+
- uses: actions/checkout@v4
|
|
102
|
+
with:
|
|
103
|
+
persist-credentials: false
|
|
104
|
+
|
|
105
|
+
- name: Install uv
|
|
106
|
+
uses: astral-sh/setup-uv@v4
|
|
107
|
+
with:
|
|
108
|
+
version: "latest"
|
|
109
|
+
|
|
110
|
+
- name: Set up Python
|
|
111
|
+
uses: actions/setup-python@v5
|
|
112
|
+
with:
|
|
113
|
+
python-version: "3.11"
|
|
114
|
+
|
|
115
|
+
- name: Install dependencies
|
|
116
|
+
run: uv sync --dev
|
|
117
|
+
|
|
118
|
+
- name: Run zizmor
|
|
119
|
+
run: uv run zizmor .github/workflows/
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- 'v*'
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: write
|
|
10
|
+
id-token: write
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
build:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@v4
|
|
17
|
+
with:
|
|
18
|
+
persist-credentials: false
|
|
19
|
+
|
|
20
|
+
- name: Install uv
|
|
21
|
+
uses: astral-sh/setup-uv@v4
|
|
22
|
+
with:
|
|
23
|
+
version: "latest"
|
|
24
|
+
enable-cache: false
|
|
25
|
+
|
|
26
|
+
- name: Set up Python
|
|
27
|
+
uses: actions/setup-python@v5
|
|
28
|
+
with:
|
|
29
|
+
python-version: "3.11"
|
|
30
|
+
|
|
31
|
+
- name: Install dependencies
|
|
32
|
+
run: uv sync --dev
|
|
33
|
+
|
|
34
|
+
- name: Run tests
|
|
35
|
+
run: uv run pytest
|
|
36
|
+
|
|
37
|
+
- name: Build package
|
|
38
|
+
run: uv build
|
|
39
|
+
|
|
40
|
+
- name: Publish to Test PyPI
|
|
41
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
42
|
+
with:
|
|
43
|
+
repository-url: https://test.pypi.org/legacy/
|
|
44
|
+
skip-existing: true
|
|
45
|
+
continue-on-error: true
|
|
46
|
+
|
|
47
|
+
- name: Publish to PyPI
|
|
48
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
49
|
+
|
|
50
|
+
- name: Create GitHub Release
|
|
51
|
+
uses: softprops/action-gh-release@v2
|
|
52
|
+
with:
|
|
53
|
+
files: dist/*
|
|
54
|
+
draft: false
|
|
55
|
+
prerelease: false
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
# Byte-compiled / optimized / DLL files
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
|
|
6
|
+
# C extensions
|
|
7
|
+
*.so
|
|
8
|
+
|
|
9
|
+
# Distribution / packaging
|
|
10
|
+
.Python
|
|
11
|
+
build/
|
|
12
|
+
develop-eggs/
|
|
13
|
+
dist/
|
|
14
|
+
downloads/
|
|
15
|
+
eggs/
|
|
16
|
+
.eggs/
|
|
17
|
+
lib/
|
|
18
|
+
lib64/
|
|
19
|
+
parts/
|
|
20
|
+
sdist/
|
|
21
|
+
var/
|
|
22
|
+
wheels/
|
|
23
|
+
pip-wheel-metadata/
|
|
24
|
+
share/python-wheels/
|
|
25
|
+
*.egg-info/
|
|
26
|
+
.installed.cfg
|
|
27
|
+
*.egg
|
|
28
|
+
MANIFEST
|
|
29
|
+
|
|
30
|
+
# PyInstaller
|
|
31
|
+
*.manifest
|
|
32
|
+
*.spec
|
|
33
|
+
|
|
34
|
+
# Installer logs
|
|
35
|
+
pip-log.txt
|
|
36
|
+
pip-delete-this-directory.txt
|
|
37
|
+
|
|
38
|
+
# Unit test / coverage reports
|
|
39
|
+
htmlcov/
|
|
40
|
+
.tox/
|
|
41
|
+
.nox/
|
|
42
|
+
.coverage
|
|
43
|
+
.coverage.*
|
|
44
|
+
.cache
|
|
45
|
+
nosetests.xml
|
|
46
|
+
coverage.xml
|
|
47
|
+
*.cover
|
|
48
|
+
*.py,cover
|
|
49
|
+
.hypothesis/
|
|
50
|
+
.pytest_cache/
|
|
51
|
+
|
|
52
|
+
# Translations
|
|
53
|
+
*.mo
|
|
54
|
+
*.pot
|
|
55
|
+
|
|
56
|
+
# Django stuff:
|
|
57
|
+
*.log
|
|
58
|
+
local_settings.py
|
|
59
|
+
db.sqlite3
|
|
60
|
+
db.sqlite3-journal
|
|
61
|
+
|
|
62
|
+
# Flask stuff:
|
|
63
|
+
instance/
|
|
64
|
+
.webassets-cache
|
|
65
|
+
|
|
66
|
+
# Scrapy stuff:
|
|
67
|
+
.scrapy
|
|
68
|
+
|
|
69
|
+
# Sphinx documentation
|
|
70
|
+
docs/_build/
|
|
71
|
+
|
|
72
|
+
# PyBuilder
|
|
73
|
+
target/
|
|
74
|
+
|
|
75
|
+
# Jupyter Notebook
|
|
76
|
+
.ipynb_checkpoints
|
|
77
|
+
|
|
78
|
+
# IPython
|
|
79
|
+
profile_default/
|
|
80
|
+
ipython_config.py
|
|
81
|
+
|
|
82
|
+
# pyenv
|
|
83
|
+
.python-version
|
|
84
|
+
|
|
85
|
+
# pipenv
|
|
86
|
+
Pipfile.lock
|
|
87
|
+
|
|
88
|
+
# PEP 582
|
|
89
|
+
__pypackages__/
|
|
90
|
+
|
|
91
|
+
# Celery stuff
|
|
92
|
+
celerybeat-schedule
|
|
93
|
+
celerybeat.pid
|
|
94
|
+
|
|
95
|
+
# SageMath parsed files
|
|
96
|
+
*.sage.py
|
|
97
|
+
|
|
98
|
+
# Environments
|
|
99
|
+
.env
|
|
100
|
+
.venv
|
|
101
|
+
env/
|
|
102
|
+
venv/
|
|
103
|
+
ENV/
|
|
104
|
+
env.bak/
|
|
105
|
+
venv.bak/
|
|
106
|
+
|
|
107
|
+
# Spyder project settings
|
|
108
|
+
.spyderproject
|
|
109
|
+
.spyproject
|
|
110
|
+
|
|
111
|
+
# Rope project settings
|
|
112
|
+
.ropeproject
|
|
113
|
+
|
|
114
|
+
# mkdocs documentation
|
|
115
|
+
/site
|
|
116
|
+
|
|
117
|
+
# mypy
|
|
118
|
+
.mypy_cache/
|
|
119
|
+
.dmypy.json
|
|
120
|
+
dmypy.json
|
|
121
|
+
|
|
122
|
+
# Pyre type checker
|
|
123
|
+
.pyre/
|
|
124
|
+
|
|
125
|
+
# IDE
|
|
126
|
+
.vscode/
|
|
127
|
+
.idea/
|
|
128
|
+
*.swp
|
|
129
|
+
*.swo
|
|
130
|
+
*~
|
|
131
|
+
|
|
132
|
+
# OS
|
|
133
|
+
.DS_Store
|
|
134
|
+
Thumbs.db
|
|
135
|
+
|
|
136
|
+
# uv
|
|
137
|
+
.uv_cache/
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
# CLAUDE.md
|
|
2
|
+
|
|
3
|
+
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
4
|
+
|
|
5
|
+
## Plan
|
|
6
|
+
|
|
7
|
+
This is a YouTrack CLI application for interacting with JetBrains YouTrack issue tracking system via command line interface. This cli will offer an ergonomic, best practice cli and will leverage
|
|
8
|
+
|
|
9
|
+
- rich
|
|
10
|
+
- textual
|
|
11
|
+
- pydantic
|
|
12
|
+
|
|
13
|
+
We use `uv` for managing dependencies.
|
|
14
|
+
|
|
15
|
+
## Create
|
|
16
|
+
|
|
17
|
+
Each new feature must have a corresponding github issue. When working on a new issue a new feature branch must be created with the name of the branch matching the name of the issue with the issue number in it.
|
|
18
|
+
|
|
19
|
+
For every change that is implemented, the README.md file MUST be updated to reflect that change.
|
|
20
|
+
|
|
21
|
+
## Test
|
|
22
|
+
|
|
23
|
+
All tests must pass. We use `pytest` for testing, `ruff` for linting, `ty` for type checking, `tox` for running on various versions of Python. We'll utilize `zizmor` for reviewing our GitHub Actions
|
|
24
|
+
|
|
25
|
+
## Deploy
|
|
26
|
+
|
|
27
|
+
Deployment will always be done to a feature branch. When a feature is significant enough, we'll bump the version of the tool and tag it with that version. We will have a github action that deploys this to Test PyPI and PyPI using a `release.yml` GitHub Action.
|
|
28
|
+
|
|
29
|
+
## Project Overview
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
The commands for this cli will be:
|
|
33
|
+
|
|
34
|
+
**`yt issues`** - Manage issues
|
|
35
|
+
- `create` - Create new issues
|
|
36
|
+
- `list` - List issues with filtering
|
|
37
|
+
- `update` - Update issue fields
|
|
38
|
+
- `delete` - Delete issues
|
|
39
|
+
- `search` - Advanced issue search
|
|
40
|
+
- `assign` - Assign issues to users
|
|
41
|
+
- `move` - Move issues between states/projects
|
|
42
|
+
- `tag` - Manage issue tags
|
|
43
|
+
- `comments` - Manage issue comments
|
|
44
|
+
- `add` - Add comments to issues
|
|
45
|
+
- `list` - List comments on issues
|
|
46
|
+
- `update` - Update existing comments
|
|
47
|
+
- `delete` - Delete comments
|
|
48
|
+
- `attach` - Manage issue attachments
|
|
49
|
+
- `upload` - Upload files to issues
|
|
50
|
+
- `download` - Download attachments
|
|
51
|
+
- `list` - List issue attachments
|
|
52
|
+
- `delete` - Delete attachments
|
|
53
|
+
- `links` - Manage issue relationships
|
|
54
|
+
- `create` - Link issues with relationship types
|
|
55
|
+
- `list` - Show all links for an issue
|
|
56
|
+
- `delete` - Remove issue links
|
|
57
|
+
- `types` - List available link types
|
|
58
|
+
|
|
59
|
+
**`yt articles`** - Manage knowledge base articles
|
|
60
|
+
- `create` - Create new articles
|
|
61
|
+
- `edit` - Edit existing articles
|
|
62
|
+
- `publish` - Publish draft articles
|
|
63
|
+
- `list` - List articles with filtering
|
|
64
|
+
- `tree` - Display articles in hierarchical tree structure
|
|
65
|
+
- `search` - Search articles
|
|
66
|
+
- `draft` - Manage article drafts
|
|
67
|
+
- `sort` - Sort child articles under a parent article (with `--update` flag to apply changes to YouTrack after confirmation)
|
|
68
|
+
- `comments` - Manage article comments
|
|
69
|
+
- `add` - Add comments to articles
|
|
70
|
+
- `list` - List comments on articles
|
|
71
|
+
- `update` - Update existing comments
|
|
72
|
+
- `delete` - Delete comments
|
|
73
|
+
- `attach` - Manage article attachments
|
|
74
|
+
- `upload` - Upload files to articles
|
|
75
|
+
- `download` - Download attachments
|
|
76
|
+
- `list` - List article attachments
|
|
77
|
+
- `delete` - Delete attachments
|
|
78
|
+
|
|
79
|
+
**`yt projects`** - Manage projects
|
|
80
|
+
- `list` - List all projects
|
|
81
|
+
- `create` - Create new projects
|
|
82
|
+
- `configure` - Configure project settings
|
|
83
|
+
- `archive` - Archive projects
|
|
84
|
+
|
|
85
|
+
**`yt users`** - User management
|
|
86
|
+
- `list` - List users
|
|
87
|
+
- `create` - Create new users
|
|
88
|
+
- `update` - Update user information
|
|
89
|
+
- `permissions` - Manage user permissions
|
|
90
|
+
|
|
91
|
+
## Workflow Commands (Top-Level)
|
|
92
|
+
|
|
93
|
+
**`yt time`** - Time tracking operations (issues only)
|
|
94
|
+
- `log` - Log work time
|
|
95
|
+
- `report` - Generate time reports
|
|
96
|
+
- `summary` - View time summaries
|
|
97
|
+
|
|
98
|
+
**`yt boards`** - Agile board operations
|
|
99
|
+
- `list` - List agile boards
|
|
100
|
+
- `view` - View board details
|
|
101
|
+
- `update` - Update board configuration
|
|
102
|
+
|
|
103
|
+
## System Commands (Top-Level)
|
|
104
|
+
|
|
105
|
+
**`yt reports`** - Generate cross-entity reports (burndown, velocity, etc.)
|
|
106
|
+
|
|
107
|
+
**`yt auth`** - Authentication management
|
|
108
|
+
- `login` - Authenticate with YouTrack
|
|
109
|
+
- `logout` - Clear authentication
|
|
110
|
+
- `token` - Manage API tokens
|
|
111
|
+
|
|
112
|
+
**`yt config`** - CLI configuration
|
|
113
|
+
- `set` - Set configuration values
|
|
114
|
+
- `get` - Get configuration values
|
|
115
|
+
- `list` - List all configuration
|
|
116
|
+
|
|
117
|
+
**`yt admin`** - Administrative operations (for users with admin permissions)
|
|
118
|
+
- `global-settings` - Manage global YouTrack settings
|
|
119
|
+
- `get` - View global settings
|
|
120
|
+
- `set` - Update global settings
|
|
121
|
+
- `list` - List all global settings
|
|
122
|
+
- `license` - License management
|
|
123
|
+
- `show` - Display license information
|
|
124
|
+
- `usage` - Show license usage statistics
|
|
125
|
+
- `maintenance` - System maintenance operations
|
|
126
|
+
- `reindex` - Reindex system data
|
|
127
|
+
- `clear-cache` - Clear system caches
|
|
128
|
+
- `backup` - Create system backup
|
|
129
|
+
- `fields` - Manage custom fields across projects
|
|
130
|
+
- `create` - Create new custom fields
|
|
131
|
+
- `list` - List all custom fields
|
|
132
|
+
- `update` - Modify field settings
|
|
133
|
+
- `delete` - Remove unused fields
|
|
134
|
+
- `workflows` - Manage workflow rules and automation
|
|
135
|
+
- `list` - List all workflows
|
|
136
|
+
- `import` - Import workflow rules
|
|
137
|
+
- `export` - Export workflow configurations
|
|
138
|
+
- `validate` - Validate workflow syntax
|
|
139
|
+
- `bundles` - Manage value bundles (enums, user groups, etc.)
|
|
140
|
+
- `list` - List all bundles
|
|
141
|
+
- `create` - Create new value bundles
|
|
142
|
+
- `update` - Modify bundle values
|
|
143
|
+
- `delete` - Remove unused bundles
|
|
144
|
+
- `import` - Import data from external sources
|
|
145
|
+
- `issues` - Import issues from CSV/XML
|
|
146
|
+
- `users` - Bulk import users
|
|
147
|
+
- `projects` - Import project configurations
|
|
148
|
+
- `user-groups` - Manage user groups and permissions
|
|
149
|
+
- `list` - List all user groups
|
|
150
|
+
- `create` - Create new user groups
|
|
151
|
+
- `update` - Modify group membership
|
|
152
|
+
- `delete` - Remove user groups
|
|
153
|
+
- `permissions` - Global permission scheme management
|
|
154
|
+
- `list` - List permission schemes
|
|
155
|
+
- `create` - Create permission schemes
|
|
156
|
+
- `update` - Modify permissions
|
|
157
|
+
- `assign` - Assign permissions to groups/users
|
|
158
|
+
- `security` - Security settings
|
|
159
|
+
- `password-policy` - Manage password policies
|
|
160
|
+
- `session-timeout` - Configure session timeouts
|
|
161
|
+
- `login-restrictions` - Manage login restrictions
|
|
162
|
+
- `vcs` - Manage VCS integrations
|
|
163
|
+
- `list` - List VCS connections
|
|
164
|
+
- `create` - Create new VCS integration
|
|
165
|
+
- `update` - Update VCS settings
|
|
166
|
+
- `test` - Test VCS connectivity
|
|
167
|
+
- `notifications` - Configure global notification templates and rules
|
|
168
|
+
- `templates` - Manage notification templates
|
|
169
|
+
- `rules` - Configure notification rules
|
|
170
|
+
- `test` - Test notification delivery
|
|
171
|
+
- `external-auth` - Manage external authentication providers
|
|
172
|
+
- `ldap` - Configure LDAP settings
|
|
173
|
+
- `sso` - Manage SSO configurations
|
|
174
|
+
- `test` - Test authentication providers
|
|
175
|
+
- `logs` - Access system logs and audit trails
|
|
176
|
+
- `view` - View system logs
|
|
177
|
+
- `download` - Download log files
|
|
178
|
+
- `audit` - View audit trail
|
|
179
|
+
- `health` - System health checks and diagnostics
|
|
180
|
+
- `check` - Run health diagnostics
|
|
181
|
+
- `status` - Show system status
|
|
182
|
+
- `metrics` - Display system metrics
|
|
183
|
+
- `usage` - Generate usage statistics and reports
|
|
184
|
+
- `users` - User activity reports
|
|
185
|
+
- `report` - Generate user activity reports
|
|
186
|
+
- `export` - Export user usage data to CSV/JSON
|
|
187
|
+
- `import` - Import user usage data from external sources
|
|
188
|
+
- `projects` - Project usage statistics
|
|
189
|
+
- `storage` - Storage usage reports
|
|
190
|
+
|
|
191
|
+
Example usage:
|
|
192
|
+
|
|
193
|
+
- `yt admin usage users report --date-range "2024-01-01:2024-12-31"`
|
|
194
|
+
- `yt admin usage users export --format csv --output users-activity.csv`
|
|
195
|
+
- `yt admin usage users import --file external-usage.json --dry-run`
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
## Current Configuration
|
|
199
|
+
|
|
200
|
+
- Claude Code permissions are configured in `.claude/settings.local.json`
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: youtrack-cli
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: YouTrack CLI - Command line interface for JetBrains YouTrack issue tracking system
|
|
5
|
+
Requires-Python: <3.14,>=3.9
|
|
6
|
+
Requires-Dist: click>=8.0.0
|
|
7
|
+
Requires-Dist: httpx>=0.24.0
|
|
8
|
+
Requires-Dist: pydantic-settings>=2.0.0
|
|
9
|
+
Requires-Dist: pydantic>=2.0.0
|
|
10
|
+
Requires-Dist: python-dotenv>=1.0.0
|
|
11
|
+
Requires-Dist: rich>=13.0.0
|
|
12
|
+
Requires-Dist: textual>=0.40.0
|
|
13
|
+
Provides-Extra: dev
|
|
14
|
+
Requires-Dist: mypy>=1.0.0; extra == 'dev'
|
|
15
|
+
Requires-Dist: pytest-asyncio>=0.21.0; extra == 'dev'
|
|
16
|
+
Requires-Dist: pytest-cov>=4.0.0; extra == 'dev'
|
|
17
|
+
Requires-Dist: pytest>=7.0.0; extra == 'dev'
|
|
18
|
+
Requires-Dist: ruff>=0.1.0; extra == 'dev'
|
|
19
|
+
Requires-Dist: tox>=4.0.0; extra == 'dev'
|
|
20
|
+
Requires-Dist: types-click>=7.0.0; extra == 'dev'
|
|
21
|
+
Requires-Dist: zizmor>=0.1.0; extra == 'dev'
|
|
22
|
+
Description-Content-Type: text/markdown
|
|
23
|
+
|
|
24
|
+
# YouTrack CLI
|
|
25
|
+
|
|
26
|
+
A command line interface for JetBrains YouTrack issue tracking system.
|
|
27
|
+
|
|
28
|
+
## Installation
|
|
29
|
+
|
|
30
|
+
### From PyPI (when available)
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
pip install yt-cli
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### From source
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
git clone https://github.com/YOUR_USERNAME/yt-cli.git
|
|
40
|
+
cd yt-cli
|
|
41
|
+
uv sync --dev
|
|
42
|
+
uv pip install -e .
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Usage
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
yt --help
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Available Commands
|
|
52
|
+
|
|
53
|
+
- `yt issues` - Manage issues
|
|
54
|
+
- `yt articles` - Manage knowledge base articles
|
|
55
|
+
- `yt projects` - Manage projects
|
|
56
|
+
- `yt users` - User management
|
|
57
|
+
- `yt time` - Time tracking operations
|
|
58
|
+
- `yt boards` - Agile board operations
|
|
59
|
+
- `yt reports` - Generate cross-entity reports
|
|
60
|
+
- `yt auth` - Authentication management
|
|
61
|
+
- `yt config` - CLI configuration
|
|
62
|
+
- `yt admin` - Administrative operations
|
|
63
|
+
|
|
64
|
+
## Development
|
|
65
|
+
|
|
66
|
+
This project uses `uv` for dependency management.
|
|
67
|
+
|
|
68
|
+
### Setup
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
# Clone the repository
|
|
72
|
+
git clone https://github.com/YOUR_USERNAME/yt-cli.git
|
|
73
|
+
cd yt-cli
|
|
74
|
+
|
|
75
|
+
# Install dependencies
|
|
76
|
+
uv sync --dev
|
|
77
|
+
|
|
78
|
+
# Install the package in editable mode
|
|
79
|
+
uv pip install -e .
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Testing
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
# Run tests
|
|
86
|
+
uv run pytest
|
|
87
|
+
|
|
88
|
+
# Run tests with coverage
|
|
89
|
+
uv run pytest --cov=yt_cli
|
|
90
|
+
|
|
91
|
+
# Run tests on multiple Python versions
|
|
92
|
+
uv run tox
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Linting and Formatting
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
# Check code style
|
|
99
|
+
uv run ruff check
|
|
100
|
+
|
|
101
|
+
# Format code
|
|
102
|
+
uv run ruff format
|
|
103
|
+
|
|
104
|
+
# Type checking
|
|
105
|
+
uv run mypy yt_cli
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### Security
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
# Check GitHub Actions workflows
|
|
112
|
+
uv run zizmor .github/workflows/
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## License
|
|
116
|
+
|
|
117
|
+
MIT License - see LICENSE file for details.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Publishing Setup
|
|
2
|
+
|
|
3
|
+
This project uses trusted publishers for secure PyPI publishing without API tokens.
|
|
4
|
+
|
|
5
|
+
## Trusted Publisher Configuration
|
|
6
|
+
|
|
7
|
+
### PyPI (Production)
|
|
8
|
+
- URL: https://pypi.org/manage/account/publishing/
|
|
9
|
+
- Project name: `yt-cli`
|
|
10
|
+
- Owner: `ryancheley`
|
|
11
|
+
- Repository: `yt-cli`
|
|
12
|
+
- Workflow: `release.yml`
|
|
13
|
+
- Environment: (blank)
|
|
14
|
+
|
|
15
|
+
### Test PyPI (Testing)
|
|
16
|
+
- URL: https://test.pypi.org/manage/account/publishing/
|
|
17
|
+
- Project name: `yt-cli`
|
|
18
|
+
- Owner: `ryancheley`
|
|
19
|
+
- Repository: `yt-cli`
|
|
20
|
+
- Workflow: `release.yml`
|
|
21
|
+
- Environment: (blank)
|
|
22
|
+
|
|
23
|
+
## Creating a Release
|
|
24
|
+
|
|
25
|
+
1. Update version in `pyproject.toml`
|
|
26
|
+
2. Create and push a git tag:
|
|
27
|
+
```bash
|
|
28
|
+
git tag v0.1.1
|
|
29
|
+
git push origin v0.1.1
|
|
30
|
+
```
|
|
31
|
+
3. GitHub Actions will automatically:
|
|
32
|
+
- Run tests
|
|
33
|
+
- Build the package
|
|
34
|
+
- Publish to Test PyPI (if configured)
|
|
35
|
+
- Publish to PyPI (if configured)
|
|
36
|
+
- Create a GitHub release
|
|
37
|
+
|
|
38
|
+
## Benefits of Trusted Publishing
|
|
39
|
+
|
|
40
|
+
- ✅ No API tokens to manage or rotate
|
|
41
|
+
- ✅ More secure OIDC-based authentication
|
|
42
|
+
- ✅ Automatic token generation per publish
|
|
43
|
+
- ✅ Reduced attack surface
|
|
44
|
+
- ✅ PyPI best practice recommendation
|
|
45
|
+
|
|
46
|
+
## Security
|
|
47
|
+
|
|
48
|
+
The workflow uses:
|
|
49
|
+
- `id-token: write` permission for OIDC
|
|
50
|
+
- `contents: write` for GitHub releases
|
|
51
|
+
- No stored secrets required
|