youtrack-cli 0.2.2__tar.gz → 0.3.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.2.2 → youtrack_cli-0.3.0}/.claude/settings.local.json +4 -1
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/CLAUDE.md +4 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/PKG-INFO +27 -17
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/README.md +23 -4
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/docs/changelog.rst +12 -2
- youtrack_cli-0.3.0/docs/command-aliases.rst +285 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/docs/development.rst +178 -12
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/docs/index.rst +5 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/docs/installation.rst +126 -0
- youtrack_cli-0.3.0/docs/logging.rst +346 -0
- youtrack_cli-0.3.0/docs/performance.md +267 -0
- youtrack_cli-0.3.0/docs/progress-indicators.md +156 -0
- youtrack_cli-0.3.0/docs/security.rst +307 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/docs/troubleshooting.rst +363 -11
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/docs/workflows.rst +300 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/justfile +181 -6
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/pyproject.toml +16 -16
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/tests/test_auth.py +11 -3
- youtrack_cli-0.3.0/tests/test_logging.py +388 -0
- youtrack_cli-0.3.0/tests/test_main.py +370 -0
- youtrack_cli-0.3.0/tests/test_security.py +518 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/uv.lock +60 -26
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/youtrack_cli/__init__.py +2 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/youtrack_cli/admin.py +2 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/youtrack_cli/articles.py +2 -0
- youtrack_cli-0.3.0/youtrack_cli/auth.py +225 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/youtrack_cli/boards.py +2 -0
- youtrack_cli-0.3.0/youtrack_cli/cache.py +247 -0
- youtrack_cli-0.3.0/youtrack_cli/cli_utils/__init__.py +5 -0
- youtrack_cli-0.3.0/youtrack_cli/cli_utils/aliases.py +30 -0
- youtrack_cli-0.3.0/youtrack_cli/client.py +404 -0
- youtrack_cli-0.3.0/youtrack_cli/commands/__init__.py +17 -0
- youtrack_cli-0.3.0/youtrack_cli/commands/articles.py +790 -0
- youtrack_cli-0.3.0/youtrack_cli/commands/boards.py +130 -0
- youtrack_cli-0.3.0/youtrack_cli/commands/common.py +32 -0
- youtrack_cli-0.3.0/youtrack_cli/commands/issues.py +1102 -0
- youtrack_cli-0.3.0/youtrack_cli/commands/projects.py +281 -0
- youtrack_cli-0.3.0/youtrack_cli/commands/time_tracking.py +171 -0
- youtrack_cli-0.3.0/youtrack_cli/commands/users.py +308 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/youtrack_cli/common.py +19 -1
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/youtrack_cli/config.py +2 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/youtrack_cli/exceptions.py +10 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/youtrack_cli/issues.py +53 -47
- youtrack_cli-0.3.0/youtrack_cli/logging.py +284 -0
- youtrack_cli-0.3.0/youtrack_cli/main.py +1233 -0
- youtrack_cli-0.3.0/youtrack_cli/performance.py +296 -0
- youtrack_cli-0.3.0/youtrack_cli/progress.py +249 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/youtrack_cli/projects.py +2 -0
- youtrack_cli-0.3.0/youtrack_cli/py.typed +0 -0
- youtrack_cli-0.3.0/youtrack_cli/reports.py +349 -0
- youtrack_cli-0.3.0/youtrack_cli/security.py +425 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/youtrack_cli/time.py +2 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/youtrack_cli/users.py +2 -0
- youtrack_cli-0.3.0/youtrack_cli/utils.py +432 -0
- youtrack_cli-0.2.2/tests/test_main.py +0 -180
- youtrack_cli-0.2.2/youtrack_cli/auth.py +0 -114
- youtrack_cli-0.2.2/youtrack_cli/logging.py +0 -61
- youtrack_cli-0.2.2/youtrack_cli/main.py +0 -3481
- youtrack_cli-0.2.2/youtrack_cli/reports.py +0 -307
- youtrack_cli-0.2.2/youtrack_cli/utils.py +0 -196
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/.github/dependabot.yml +0 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/.github/workflows/ci.yml +0 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/.github/workflows/release.yml +0 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/.gitignore +0 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/.pre-commit-config.yaml +0 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/.readthedocs.yaml +0 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/PUBLISHING.md +0 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/docs/Makefile +0 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/docs/api/index.rst +0 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/docs/commands/admin.rst +0 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/docs/commands/articles.rst +0 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/docs/commands/auth.rst +0 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/docs/commands/boards.rst +0 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/docs/commands/config.rst +0 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/docs/commands/index.rst +0 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/docs/commands/issues.rst +0 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/docs/commands/projects.rst +0 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/docs/commands/reports.rst +0 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/docs/commands/time.rst +0 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/docs/commands/users.rst +0 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/docs/conf.py +0 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/docs/configuration.rst +0 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/docs/learning-path.rst +0 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/docs/quickstart.rst +0 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/docs/requirements.txt +0 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/docs/youtrack-concepts.rst +0 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/package-lock.json +0 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/package.json +0 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/tests/__init__.py +0 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/tests/conftest.py +0 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/tests/test_admin.py +0 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/tests/test_articles.py +0 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/tests/test_boards.py +0 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/tests/test_config.py +0 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/tests/test_issues.py +0 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/tests/test_projects.py +0 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/tests/test_reports.py +0 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/tests/test_time.py +0 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/tests/test_users.py +0 -0
- {youtrack_cli-0.2.2 → youtrack_cli-0.3.0}/tox.ini +0 -0
|
@@ -22,6 +22,10 @@ For every change that is implemented, the README.md file MUST be updated to refl
|
|
|
22
22
|
|
|
23
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. Pre-commit hooks ensure code quality before commits.
|
|
24
24
|
|
|
25
|
+
## Documentation
|
|
26
|
+
|
|
27
|
+
Documentation is available in the docs/ folder. Any new functionality should have documentation written for it there. The README.md file shoudl not be used for comprehensive documentation.
|
|
28
|
+
|
|
25
29
|
## Deploy
|
|
26
30
|
|
|
27
31
|
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.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: youtrack-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.0
|
|
4
4
|
Summary: YouTrack CLI - Command line interface for JetBrains YouTrack issue tracking system
|
|
5
5
|
Project-URL: Homepage, https://github.com/ryan-murphy/yt-cli
|
|
6
6
|
Project-URL: Documentation, https://yt-cli.readthedocs.io/
|
|
@@ -26,25 +26,16 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
|
26
26
|
Classifier: Topic :: Utilities
|
|
27
27
|
Requires-Python: <3.14,>=3.9
|
|
28
28
|
Requires-Dist: click>=8.0.0
|
|
29
|
+
Requires-Dist: cryptography>=41.0.0
|
|
29
30
|
Requires-Dist: httpx>=0.24.0
|
|
31
|
+
Requires-Dist: keyring>=25.0.0
|
|
30
32
|
Requires-Dist: pydantic-settings>=2.0.0
|
|
31
33
|
Requires-Dist: pydantic>=2.0.0
|
|
32
34
|
Requires-Dist: python-dotenv>=1.0.0
|
|
33
35
|
Requires-Dist: rich>=13.0.0
|
|
36
|
+
Requires-Dist: structlog>=25.4.0
|
|
34
37
|
Requires-Dist: textual>=0.40.0
|
|
35
38
|
Requires-Dist: tomli>=1.2.0; python_version < '3.11'
|
|
36
|
-
Provides-Extra: dev
|
|
37
|
-
Requires-Dist: pytest-asyncio>=0.21.0; extra == 'dev'
|
|
38
|
-
Requires-Dist: pytest-cov>=4.0.0; extra == 'dev'
|
|
39
|
-
Requires-Dist: pytest>=7.0.0; extra == 'dev'
|
|
40
|
-
Requires-Dist: ruff>=0.1.0; extra == 'dev'
|
|
41
|
-
Requires-Dist: tox>=4.0.0; extra == 'dev'
|
|
42
|
-
Requires-Dist: zizmor>=0.1.0; extra == 'dev'
|
|
43
|
-
Provides-Extra: docs
|
|
44
|
-
Requires-Dist: myst-parser>=2.0.0; extra == 'docs'
|
|
45
|
-
Requires-Dist: sphinx-autobuild>=2021.3.14; extra == 'docs'
|
|
46
|
-
Requires-Dist: sphinx-rtd-theme>=2.0.0; extra == 'docs'
|
|
47
|
-
Requires-Dist: sphinx>=7.0.0; extra == 'docs'
|
|
48
39
|
Description-Content-Type: text/markdown
|
|
49
40
|
|
|
50
41
|
# YouTrack CLI
|
|
@@ -56,8 +47,10 @@ A powerful command line interface for JetBrains YouTrack issue tracking system.
|
|
|
56
47
|
## Features
|
|
57
48
|
|
|
58
49
|
- **Complete YouTrack Management**: Issues, articles, projects, users, time tracking, boards, and reporting
|
|
59
|
-
- **
|
|
50
|
+
- **Enterprise Security Features**: Command audit logging, credential encryption, token expiration warnings
|
|
51
|
+
- **Flexible Authentication**: Secure token-based authentication with keyring integration
|
|
60
52
|
- **Rich Output Formats**: Beautiful tables and JSON export for automation
|
|
53
|
+
- **Progress Indicators**: Visual feedback for long-running operations with Rich progress bars
|
|
61
54
|
- **Comprehensive Configuration**: Customizable defaults and environment-specific settings
|
|
62
55
|
- **Administrative Tools**: System management, user groups, and health monitoring
|
|
63
56
|
- **Developer-Friendly**: Built with modern Python practices and extensive documentation
|
|
@@ -109,8 +102,8 @@ cd yt-cli
|
|
|
109
102
|
uv sync --dev
|
|
110
103
|
uv pip install -e .
|
|
111
104
|
|
|
112
|
-
# Or using pip
|
|
113
|
-
pip install -e .
|
|
105
|
+
# Or using pip (requires pip >= 24.0 for PEP 735 support)
|
|
106
|
+
pip install -e . --group dev
|
|
114
107
|
```
|
|
115
108
|
|
|
116
109
|
### Authentication
|
|
@@ -123,6 +116,17 @@ yt auth login
|
|
|
123
116
|
yt auth token --show
|
|
124
117
|
```
|
|
125
118
|
|
|
119
|
+
### Shell Completion
|
|
120
|
+
|
|
121
|
+
YouTrack CLI supports tab completion for bash, zsh, and fish shells:
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
# Enable shell completion (see docs for full instructions)
|
|
125
|
+
yt completion bash --install
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
📖 **[Complete shell completion guide](https://yt-cli.readthedocs.io/en/latest/installation.html#shell-completion)**
|
|
129
|
+
|
|
126
130
|
### Basic Usage
|
|
127
131
|
|
|
128
132
|
```bash
|
|
@@ -135,8 +139,14 @@ yt articles create "Getting Started" --content "Welcome to our documentation"
|
|
|
135
139
|
# Log work time
|
|
136
140
|
yt time log ISSUE-123 "2h" --description "Feature development"
|
|
137
141
|
|
|
138
|
-
# Generate reports
|
|
142
|
+
# Generate reports with progress indicators
|
|
139
143
|
yt reports burndown PROJECT-123
|
|
144
|
+
|
|
145
|
+
# Disable progress indicators for automation
|
|
146
|
+
yt --no-progress reports velocity PROJECT-123
|
|
147
|
+
|
|
148
|
+
# Enable debug logging for troubleshooting
|
|
149
|
+
yt --debug issues list
|
|
140
150
|
```
|
|
141
151
|
|
|
142
152
|
## Documentation
|
|
@@ -7,8 +7,10 @@ A powerful command line interface for JetBrains YouTrack issue tracking system.
|
|
|
7
7
|
## Features
|
|
8
8
|
|
|
9
9
|
- **Complete YouTrack Management**: Issues, articles, projects, users, time tracking, boards, and reporting
|
|
10
|
-
- **
|
|
10
|
+
- **Enterprise Security Features**: Command audit logging, credential encryption, token expiration warnings
|
|
11
|
+
- **Flexible Authentication**: Secure token-based authentication with keyring integration
|
|
11
12
|
- **Rich Output Formats**: Beautiful tables and JSON export for automation
|
|
13
|
+
- **Progress Indicators**: Visual feedback for long-running operations with Rich progress bars
|
|
12
14
|
- **Comprehensive Configuration**: Customizable defaults and environment-specific settings
|
|
13
15
|
- **Administrative Tools**: System management, user groups, and health monitoring
|
|
14
16
|
- **Developer-Friendly**: Built with modern Python practices and extensive documentation
|
|
@@ -60,8 +62,8 @@ cd yt-cli
|
|
|
60
62
|
uv sync --dev
|
|
61
63
|
uv pip install -e .
|
|
62
64
|
|
|
63
|
-
# Or using pip
|
|
64
|
-
pip install -e .
|
|
65
|
+
# Or using pip (requires pip >= 24.0 for PEP 735 support)
|
|
66
|
+
pip install -e . --group dev
|
|
65
67
|
```
|
|
66
68
|
|
|
67
69
|
### Authentication
|
|
@@ -74,6 +76,17 @@ yt auth login
|
|
|
74
76
|
yt auth token --show
|
|
75
77
|
```
|
|
76
78
|
|
|
79
|
+
### Shell Completion
|
|
80
|
+
|
|
81
|
+
YouTrack CLI supports tab completion for bash, zsh, and fish shells:
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
# Enable shell completion (see docs for full instructions)
|
|
85
|
+
yt completion bash --install
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
📖 **[Complete shell completion guide](https://yt-cli.readthedocs.io/en/latest/installation.html#shell-completion)**
|
|
89
|
+
|
|
77
90
|
### Basic Usage
|
|
78
91
|
|
|
79
92
|
```bash
|
|
@@ -86,8 +99,14 @@ yt articles create "Getting Started" --content "Welcome to our documentation"
|
|
|
86
99
|
# Log work time
|
|
87
100
|
yt time log ISSUE-123 "2h" --description "Feature development"
|
|
88
101
|
|
|
89
|
-
# Generate reports
|
|
102
|
+
# Generate reports with progress indicators
|
|
90
103
|
yt reports burndown PROJECT-123
|
|
104
|
+
|
|
105
|
+
# Disable progress indicators for automation
|
|
106
|
+
yt --no-progress reports velocity PROJECT-123
|
|
107
|
+
|
|
108
|
+
# Enable debug logging for troubleshooting
|
|
109
|
+
yt --debug issues list
|
|
91
110
|
```
|
|
92
111
|
|
|
93
112
|
## Documentation
|
|
@@ -26,6 +26,11 @@ Added
|
|
|
26
26
|
- **Common CLI components and decorators for consistent command behavior**
|
|
27
27
|
- **User-friendly error messages with actionable suggestions**
|
|
28
28
|
- **Structured exception hierarchy (AuthenticationError, ConnectionError, etc.)**
|
|
29
|
+
- **Enhanced release management with comprehensive justfile recipes**
|
|
30
|
+
- **Pre-flight checks for release validation and safety**
|
|
31
|
+
- **Automated release rollback capabilities for emergency situations**
|
|
32
|
+
- **Release status monitoring and health checks**
|
|
33
|
+
- **Comprehensive release troubleshooting documentation**
|
|
29
34
|
|
|
30
35
|
Changed
|
|
31
36
|
~~~~~~~
|
|
@@ -35,6 +40,9 @@ Changed
|
|
|
35
40
|
- **Enhanced project metadata in pyproject.toml with comprehensive classifiers and URLs**
|
|
36
41
|
- **Improved CLI architecture with global debug and verbose options**
|
|
37
42
|
- **Updated troubleshooting documentation with new debugging features**
|
|
43
|
+
- **Improved justfile release recipes with safety checks and validation**
|
|
44
|
+
- **Enhanced release workflow documentation with real-world examples**
|
|
45
|
+
- **Updated development documentation with automated release process**
|
|
38
46
|
|
|
39
47
|
Deprecated
|
|
40
48
|
~~~~~~~~~~
|
|
@@ -46,11 +54,13 @@ Removed
|
|
|
46
54
|
|
|
47
55
|
Fixed
|
|
48
56
|
~~~~~
|
|
49
|
-
-
|
|
57
|
+
- **Release process reliability with proper git state validation**
|
|
58
|
+
- **Version consistency management between pyproject.toml and package**
|
|
59
|
+
- **uv.lock synchronization during release process**
|
|
50
60
|
|
|
51
61
|
Security
|
|
52
62
|
~~~~~~~~
|
|
53
|
-
-
|
|
63
|
+
- **Enhanced release process with branch protection and quality gates**
|
|
54
64
|
|
|
55
65
|
[0.1.0] - 2024-07-02
|
|
56
66
|
---------------------
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
================
|
|
2
|
+
Command Aliases
|
|
3
|
+
================
|
|
4
|
+
|
|
5
|
+
YouTrack CLI provides convenient aliases for commonly used commands to improve usability and reduce typing. This document describes all available command aliases and how to use them effectively.
|
|
6
|
+
|
|
7
|
+
Overview
|
|
8
|
+
========
|
|
9
|
+
|
|
10
|
+
Command aliases allow you to use shorter command names for frequently used operations. For example, instead of typing ``yt issues list``, you can simply use ``yt i l``.
|
|
11
|
+
|
|
12
|
+
Main Command Aliases
|
|
13
|
+
====================
|
|
14
|
+
|
|
15
|
+
The following aliases are available for the main command groups:
|
|
16
|
+
|
|
17
|
+
.. list-table:: Main Command Aliases
|
|
18
|
+
:header-rows: 1
|
|
19
|
+
:widths: 20 30 50
|
|
20
|
+
|
|
21
|
+
* - Alias
|
|
22
|
+
- Full Command
|
|
23
|
+
- Description
|
|
24
|
+
* - ``i``
|
|
25
|
+
- ``issues``
|
|
26
|
+
- Issue management commands
|
|
27
|
+
* - ``a``
|
|
28
|
+
- ``articles``
|
|
29
|
+
- Knowledge base article commands
|
|
30
|
+
* - ``p``
|
|
31
|
+
- ``projects``
|
|
32
|
+
- Project management commands
|
|
33
|
+
* - ``u``
|
|
34
|
+
- ``users``
|
|
35
|
+
- User management commands
|
|
36
|
+
* - ``t``
|
|
37
|
+
- ``time``
|
|
38
|
+
- Time tracking commands
|
|
39
|
+
* - ``b``
|
|
40
|
+
- ``boards``
|
|
41
|
+
- Agile board commands
|
|
42
|
+
* - ``c``, ``cfg``
|
|
43
|
+
- ``config``
|
|
44
|
+
- Configuration management
|
|
45
|
+
* - ``login``
|
|
46
|
+
- ``auth``
|
|
47
|
+
- Authentication commands
|
|
48
|
+
|
|
49
|
+
Subcommand Aliases
|
|
50
|
+
==================
|
|
51
|
+
|
|
52
|
+
Within the issues command group, additional aliases are available for common operations:
|
|
53
|
+
|
|
54
|
+
.. list-table:: Issues Subcommand Aliases
|
|
55
|
+
:header-rows: 1
|
|
56
|
+
:widths: 20 30 50
|
|
57
|
+
|
|
58
|
+
* - Alias
|
|
59
|
+
- Full Command
|
|
60
|
+
- Description
|
|
61
|
+
* - ``c``, ``new``
|
|
62
|
+
- ``create``
|
|
63
|
+
- Create a new issue
|
|
64
|
+
* - ``l``, ``ls``
|
|
65
|
+
- ``list``
|
|
66
|
+
- List issues
|
|
67
|
+
* - ``u``, ``edit``
|
|
68
|
+
- ``update``
|
|
69
|
+
- Update an existing issue
|
|
70
|
+
* - ``s``, ``find``
|
|
71
|
+
- ``search``
|
|
72
|
+
- Search for issues
|
|
73
|
+
* - ``d``, ``del``, ``rm``
|
|
74
|
+
- ``delete``
|
|
75
|
+
- Delete an issue
|
|
76
|
+
|
|
77
|
+
Usage Examples
|
|
78
|
+
==============
|
|
79
|
+
|
|
80
|
+
Here are practical examples showing how to use aliases effectively:
|
|
81
|
+
|
|
82
|
+
Basic Operations
|
|
83
|
+
----------------
|
|
84
|
+
|
|
85
|
+
Create a new issue:
|
|
86
|
+
|
|
87
|
+
.. code-block:: bash
|
|
88
|
+
|
|
89
|
+
# Using full commands
|
|
90
|
+
yt issues create PROJECT-123 "Fix login bug"
|
|
91
|
+
|
|
92
|
+
# Using aliases
|
|
93
|
+
yt i c PROJECT-123 "Fix login bug"
|
|
94
|
+
yt i new PROJECT-123 "Fix login bug"
|
|
95
|
+
|
|
96
|
+
List issues:
|
|
97
|
+
|
|
98
|
+
.. code-block:: bash
|
|
99
|
+
|
|
100
|
+
# Using full commands
|
|
101
|
+
yt issues list --assignee me
|
|
102
|
+
|
|
103
|
+
# Using aliases
|
|
104
|
+
yt i l --assignee me
|
|
105
|
+
yt i ls --assignee me
|
|
106
|
+
|
|
107
|
+
Search for issues:
|
|
108
|
+
|
|
109
|
+
.. code-block:: bash
|
|
110
|
+
|
|
111
|
+
# Using full commands
|
|
112
|
+
yt issues search "priority:Critical"
|
|
113
|
+
|
|
114
|
+
# Using aliases
|
|
115
|
+
yt i s "priority:Critical"
|
|
116
|
+
yt i find "priority:Critical"
|
|
117
|
+
|
|
118
|
+
Configuration Management
|
|
119
|
+
------------------------
|
|
120
|
+
|
|
121
|
+
.. code-block:: bash
|
|
122
|
+
|
|
123
|
+
# Using full commands
|
|
124
|
+
yt config set OUTPUT_FORMAT json
|
|
125
|
+
yt config get OUTPUT_FORMAT
|
|
126
|
+
|
|
127
|
+
# Using aliases
|
|
128
|
+
yt c set OUTPUT_FORMAT json
|
|
129
|
+
yt cfg get OUTPUT_FORMAT
|
|
130
|
+
|
|
131
|
+
Authentication
|
|
132
|
+
--------------
|
|
133
|
+
|
|
134
|
+
.. code-block:: bash
|
|
135
|
+
|
|
136
|
+
# Using full commands
|
|
137
|
+
yt auth login
|
|
138
|
+
|
|
139
|
+
# Using aliases
|
|
140
|
+
yt login
|
|
141
|
+
|
|
142
|
+
Project Management
|
|
143
|
+
------------------
|
|
144
|
+
|
|
145
|
+
.. code-block:: bash
|
|
146
|
+
|
|
147
|
+
# Using full commands
|
|
148
|
+
yt projects list
|
|
149
|
+
|
|
150
|
+
# Using aliases
|
|
151
|
+
yt p list
|
|
152
|
+
|
|
153
|
+
Time Tracking
|
|
154
|
+
-------------
|
|
155
|
+
|
|
156
|
+
.. code-block:: bash
|
|
157
|
+
|
|
158
|
+
# Using full commands
|
|
159
|
+
yt time log ISSUE-123 "2h 30m" --description "Fixed the bug"
|
|
160
|
+
|
|
161
|
+
# Using aliases
|
|
162
|
+
yt t log ISSUE-123 "2h 30m" --description "Fixed the bug"
|
|
163
|
+
|
|
164
|
+
Complex Workflows
|
|
165
|
+
=================
|
|
166
|
+
|
|
167
|
+
You can chain aliases for even more efficient workflows:
|
|
168
|
+
|
|
169
|
+
Daily Issue Management:
|
|
170
|
+
|
|
171
|
+
.. code-block:: bash
|
|
172
|
+
|
|
173
|
+
# Check your assigned issues
|
|
174
|
+
yt i l --assignee me --state Open
|
|
175
|
+
|
|
176
|
+
# Create a new bug report
|
|
177
|
+
yt i c WEB-123 "Mobile login issue" --type Bug --priority High
|
|
178
|
+
|
|
179
|
+
# Update issue status
|
|
180
|
+
yt i u ISSUE-456 --state "In Progress"
|
|
181
|
+
|
|
182
|
+
# Log work time
|
|
183
|
+
yt t log ISSUE-456 "1h 30m" --description "Initial investigation"
|
|
184
|
+
|
|
185
|
+
Configuration and Setup:
|
|
186
|
+
|
|
187
|
+
.. code-block:: bash
|
|
188
|
+
|
|
189
|
+
# Quick authentication
|
|
190
|
+
yt login
|
|
191
|
+
|
|
192
|
+
# Configure output format
|
|
193
|
+
yt c set OUTPUT_FORMAT table
|
|
194
|
+
|
|
195
|
+
# List current configuration
|
|
196
|
+
yt c list
|
|
197
|
+
|
|
198
|
+
Help and Discovery
|
|
199
|
+
==================
|
|
200
|
+
|
|
201
|
+
All aliases work with the ``--help`` flag to show command documentation:
|
|
202
|
+
|
|
203
|
+
.. code-block:: bash
|
|
204
|
+
|
|
205
|
+
# Get help for issues commands
|
|
206
|
+
yt i --help
|
|
207
|
+
|
|
208
|
+
# Get help for creating issues
|
|
209
|
+
yt i c --help
|
|
210
|
+
|
|
211
|
+
# Get help for configuration
|
|
212
|
+
yt c --help
|
|
213
|
+
|
|
214
|
+
The main help command also lists all available aliases:
|
|
215
|
+
|
|
216
|
+
.. code-block:: bash
|
|
217
|
+
|
|
218
|
+
yt --help
|
|
219
|
+
|
|
220
|
+
Best Practices
|
|
221
|
+
==============
|
|
222
|
+
|
|
223
|
+
1. **Start with Full Commands**: When learning, use full command names to understand the structure.
|
|
224
|
+
|
|
225
|
+
2. **Use Aliases for Frequent Operations**: Once comfortable, switch to aliases for commands you use often.
|
|
226
|
+
|
|
227
|
+
3. **Mix and Match**: You can combine full commands and aliases as needed:
|
|
228
|
+
|
|
229
|
+
.. code-block:: bash
|
|
230
|
+
|
|
231
|
+
yt i create PROJECT-123 "Title" # Mix of alias and full command
|
|
232
|
+
|
|
233
|
+
4. **Shell Completion**: Aliases work with shell completion, making them even faster to use.
|
|
234
|
+
|
|
235
|
+
5. **Documentation**: When sharing commands with others, consider using full names for clarity in documentation.
|
|
236
|
+
|
|
237
|
+
Shell Completion
|
|
238
|
+
================
|
|
239
|
+
|
|
240
|
+
Aliases are fully supported by the shell completion system. After setting up completion for your shell:
|
|
241
|
+
|
|
242
|
+
.. code-block:: bash
|
|
243
|
+
|
|
244
|
+
# Generate completion for bash
|
|
245
|
+
yt completion bash --install
|
|
246
|
+
|
|
247
|
+
# Generate completion for zsh
|
|
248
|
+
yt completion zsh --install
|
|
249
|
+
|
|
250
|
+
# Generate completion for fish
|
|
251
|
+
yt completion fish --install
|
|
252
|
+
|
|
253
|
+
You can use tab completion with aliases just like with full commands:
|
|
254
|
+
|
|
255
|
+
.. code-block:: bash
|
|
256
|
+
|
|
257
|
+
yt i <TAB> # Shows issues subcommands
|
|
258
|
+
yt i c <TAB> # Shows create command options
|
|
259
|
+
yt c s<TAB> # Completes to "set"
|
|
260
|
+
|
|
261
|
+
Migration Guide
|
|
262
|
+
===============
|
|
263
|
+
|
|
264
|
+
If you're upgrading from a version without aliases, your existing commands will continue to work unchanged. Aliases are additive and don't replace existing functionality.
|
|
265
|
+
|
|
266
|
+
You can gradually adopt aliases at your own pace:
|
|
267
|
+
|
|
268
|
+
1. Continue using full commands in scripts and documentation
|
|
269
|
+
2. Start using aliases for interactive command-line work
|
|
270
|
+
3. Update your muscle memory over time
|
|
271
|
+
|
|
272
|
+
Troubleshooting
|
|
273
|
+
===============
|
|
274
|
+
|
|
275
|
+
If aliases don't work as expected:
|
|
276
|
+
|
|
277
|
+
1. **Check Version**: Ensure you're using a version that supports aliases (v0.3.0+)
|
|
278
|
+
|
|
279
|
+
2. **Verify Installation**: Run ``yt --help`` to see if aliases are listed
|
|
280
|
+
|
|
281
|
+
3. **Clear Cache**: If using shell completion, you may need to restart your shell or reload completion
|
|
282
|
+
|
|
283
|
+
4. **Conflict Resolution**: If an alias conflicts with another command, the original command takes precedence
|
|
284
|
+
|
|
285
|
+
For additional help, see the :doc:`troubleshooting` guide or file an issue on GitHub.
|
|
@@ -91,6 +91,45 @@ Project Structure
|
|
|
91
91
|
├── justfile # Task runner configuration
|
|
92
92
|
└── README.md # Project overview
|
|
93
93
|
|
|
94
|
+
Dependency Management
|
|
95
|
+
---------------------
|
|
96
|
+
|
|
97
|
+
The project uses PEP 735 dependency groups for managing development dependencies. This provides a standardized way to organize and install different sets of dependencies.
|
|
98
|
+
|
|
99
|
+
Dependency Groups
|
|
100
|
+
~~~~~~~~~~~~~~~~~
|
|
101
|
+
|
|
102
|
+
The project defines the following dependency groups in ``pyproject.toml``:
|
|
103
|
+
|
|
104
|
+
* **dev**: Development tools including testing, linting, and type checking
|
|
105
|
+
* **docs**: Documentation generation tools
|
|
106
|
+
|
|
107
|
+
Installing Dependencies
|
|
108
|
+
~~~~~~~~~~~~~~~~~~~~~~~
|
|
109
|
+
|
|
110
|
+
Using uv (recommended):
|
|
111
|
+
|
|
112
|
+
.. code-block:: bash
|
|
113
|
+
|
|
114
|
+
# Install all dependencies including dev group
|
|
115
|
+
uv sync --dev
|
|
116
|
+
|
|
117
|
+
# Install only production dependencies
|
|
118
|
+
uv sync
|
|
119
|
+
|
|
120
|
+
Using pip (requires pip >= 24.0):
|
|
121
|
+
|
|
122
|
+
.. code-block:: bash
|
|
123
|
+
|
|
124
|
+
# Install with dev dependencies
|
|
125
|
+
pip install -e . --group dev
|
|
126
|
+
|
|
127
|
+
# Install with docs dependencies
|
|
128
|
+
pip install -e . --group docs
|
|
129
|
+
|
|
130
|
+
# Install multiple groups
|
|
131
|
+
pip install -e . --group dev --group docs
|
|
132
|
+
|
|
94
133
|
Development Workflow
|
|
95
134
|
--------------------
|
|
96
135
|
|
|
@@ -508,23 +547,150 @@ Version Management
|
|
|
508
547
|
|
|
509
548
|
The project uses semantic versioning (MAJOR.MINOR.PATCH):
|
|
510
549
|
|
|
511
|
-
* MAJOR
|
|
512
|
-
* MINOR
|
|
513
|
-
* PATCH
|
|
550
|
+
* **MAJOR**: Breaking changes
|
|
551
|
+
* **MINOR**: New features (backward compatible)
|
|
552
|
+
* **PATCH**: Bug fixes (backward compatible)
|
|
514
553
|
|
|
515
|
-
|
|
516
|
-
|
|
554
|
+
Release Workflow
|
|
555
|
+
~~~~~~~~~~~~~~~~
|
|
517
556
|
|
|
518
|
-
|
|
519
|
-
2. Update ``CHANGELOG.md``
|
|
520
|
-
3. Create and push a version tag:
|
|
557
|
+
The project uses an automated release process via ``justfile`` recipes that handle all aspects of releasing.
|
|
521
558
|
|
|
522
|
-
|
|
559
|
+
**Step 1: Pre-Release Validation**
|
|
560
|
+
|
|
561
|
+
Before creating a release, validate your intended version:
|
|
562
|
+
|
|
563
|
+
.. code-block:: bash
|
|
564
|
+
|
|
565
|
+
# Check if version is valid and ready for release
|
|
566
|
+
just release-check 0.2.3
|
|
567
|
+
|
|
568
|
+
# Check current project status
|
|
569
|
+
just release-status
|
|
570
|
+
|
|
571
|
+
**Step 2: Automated Release**
|
|
572
|
+
|
|
573
|
+
Create a complete release with safety checks:
|
|
574
|
+
|
|
575
|
+
.. code-block:: bash
|
|
576
|
+
|
|
577
|
+
# Full automated release process
|
|
578
|
+
just release 0.2.3
|
|
579
|
+
|
|
580
|
+
This command will:
|
|
581
|
+
|
|
582
|
+
1. **Pre-flight checks**: Verify you're on main branch, working directory is clean, and up-to-date with remote
|
|
583
|
+
2. **Quality checks**: Run all linting, formatting, type checking, and tests
|
|
584
|
+
3. **Version bump**: Update ``pyproject.toml`` and ``uv.lock``
|
|
585
|
+
4. **Commit and push**: Create version bump commit and push to main
|
|
586
|
+
5. **Tag creation**: Create and push the release tag
|
|
587
|
+
6. **Trigger automation**: GitHub Actions automatically builds and publishes to PyPI
|
|
588
|
+
|
|
589
|
+
**Step 3: Monitor Release**
|
|
590
|
+
|
|
591
|
+
The release process provides helpful links:
|
|
592
|
+
|
|
593
|
+
.. code-block:: text
|
|
594
|
+
|
|
595
|
+
✅ Release 0.2.3 created and published!
|
|
596
|
+
🔗 Monitor release progress: https://github.com/ryancheley/yt-cli/actions
|
|
597
|
+
📦 Package will be available at: https://pypi.org/project/youtrack-cli/0.2.3/
|
|
598
|
+
|
|
599
|
+
Emergency Rollback
|
|
600
|
+
~~~~~~~~~~~~~~~~~~
|
|
601
|
+
|
|
602
|
+
If a release needs to be rolled back (before PyPI publication):
|
|
603
|
+
|
|
604
|
+
.. code-block:: bash
|
|
605
|
+
|
|
606
|
+
# Emergency rollback - deletes tag and reverts version commit
|
|
607
|
+
just rollback-release 0.2.3
|
|
608
|
+
|
|
609
|
+
.. warning::
|
|
610
|
+
Rollback is only effective before the package is published to PyPI. Once published, you must create a new version.
|
|
611
|
+
|
|
612
|
+
Release Safety Features
|
|
613
|
+
~~~~~~~~~~~~~~~~~~~~~~~
|
|
614
|
+
|
|
615
|
+
The release process includes multiple safety checks:
|
|
616
|
+
|
|
617
|
+
**Branch Protection**:
|
|
618
|
+
* Must be on ``main`` branch
|
|
619
|
+
* Working directory must be clean
|
|
620
|
+
* Must be up-to-date with ``origin/main``
|
|
621
|
+
|
|
622
|
+
**Version Validation**:
|
|
623
|
+
* Semantic versioning format (e.g., ``1.2.3``)
|
|
624
|
+
* Version must not already exist as a tag
|
|
625
|
+
* Must be a proper version increment
|
|
626
|
+
|
|
627
|
+
**Quality Gates**:
|
|
628
|
+
* All tests must pass
|
|
629
|
+
* Code must pass linting
|
|
630
|
+
* Type checking must succeed
|
|
631
|
+
* No security issues detected
|
|
632
|
+
|
|
633
|
+
Manual Release Steps (Advanced)
|
|
634
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
635
|
+
|
|
636
|
+
For advanced users who need manual control:
|
|
637
|
+
|
|
638
|
+
.. code-block:: bash
|
|
639
|
+
|
|
640
|
+
# Individual steps
|
|
641
|
+
just version-bump 0.2.3 # Update pyproject.toml only
|
|
642
|
+
just tag 0.2.3 # Create and push tag only
|
|
643
|
+
|
|
644
|
+
# Quality checks
|
|
645
|
+
just check # Run all quality checks
|
|
646
|
+
|
|
647
|
+
Release Troubleshooting
|
|
648
|
+
~~~~~~~~~~~~~~~~~~~~~~~
|
|
649
|
+
|
|
650
|
+
**Common Issues and Solutions**:
|
|
651
|
+
|
|
652
|
+
*Working directory not clean*:
|
|
653
|
+
.. code-block:: bash
|
|
654
|
+
|
|
655
|
+
# Check what files are uncommitted
|
|
656
|
+
git status
|
|
657
|
+
|
|
658
|
+
# Commit or stash changes
|
|
659
|
+
git add . && git commit -m "commit message"
|
|
660
|
+
# or
|
|
661
|
+
git stash
|
|
662
|
+
|
|
663
|
+
*Not up-to-date with remote*:
|
|
664
|
+
.. code-block:: bash
|
|
665
|
+
|
|
666
|
+
git pull origin main
|
|
667
|
+
|
|
668
|
+
*Quality checks failing*:
|
|
669
|
+
.. code-block:: bash
|
|
670
|
+
|
|
671
|
+
# Run individual checks to identify issues
|
|
672
|
+
just lint # Fix linting issues
|
|
673
|
+
just format # Fix formatting
|
|
674
|
+
just typecheck # Fix type issues
|
|
675
|
+
just test # Fix failing tests
|
|
676
|
+
|
|
677
|
+
*Tag already exists*:
|
|
678
|
+
.. code-block:: bash
|
|
679
|
+
|
|
680
|
+
# List existing tags
|
|
681
|
+
git tag -l
|
|
682
|
+
|
|
683
|
+
# Use the next appropriate version number
|
|
684
|
+
|
|
685
|
+
GitHub Actions Integration
|
|
686
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
523
687
|
|
|
524
|
-
|
|
525
|
-
git push origin v0.2.0
|
|
688
|
+
The release process automatically triggers GitHub Actions workflows:
|
|
526
689
|
|
|
527
|
-
|
|
690
|
+
1. **Test PyPI Deployment**: Validates package and publishes to Test PyPI
|
|
691
|
+
2. **PyPI Deployment**: After Test PyPI succeeds, publishes to main PyPI
|
|
692
|
+
3. **GitHub Release**: Creates GitHub release with assets and attestations
|
|
693
|
+
4. **Security Attestations**: Generates digital attestations for packages
|
|
528
694
|
|
|
529
695
|
Contributing Guidelines
|
|
530
696
|
-----------------------
|