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.
@@ -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