youtrack-cli 0.2.1__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.
Files changed (101) hide show
  1. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/.claude/settings.local.json +5 -1
  2. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/CLAUDE.md +4 -0
  3. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/PKG-INFO +28 -17
  4. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/README.md +23 -4
  5. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/docs/changelog.rst +12 -2
  6. youtrack_cli-0.3.0/docs/command-aliases.rst +285 -0
  7. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/docs/development.rst +178 -12
  8. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/docs/index.rst +5 -0
  9. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/docs/installation.rst +126 -0
  10. youtrack_cli-0.3.0/docs/logging.rst +346 -0
  11. youtrack_cli-0.3.0/docs/performance.md +267 -0
  12. youtrack_cli-0.3.0/docs/progress-indicators.md +156 -0
  13. youtrack_cli-0.3.0/docs/security.rst +307 -0
  14. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/docs/troubleshooting.rst +363 -11
  15. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/docs/workflows.rst +300 -0
  16. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/justfile +182 -7
  17. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/pyproject.toml +18 -17
  18. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/tests/test_auth.py +11 -3
  19. youtrack_cli-0.3.0/tests/test_logging.py +388 -0
  20. youtrack_cli-0.3.0/tests/test_main.py +370 -0
  21. youtrack_cli-0.3.0/tests/test_security.py +518 -0
  22. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/tox.ini +2 -2
  23. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/uv.lock +902 -868
  24. youtrack_cli-0.3.0/youtrack_cli/__init__.py +29 -0
  25. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/youtrack_cli/admin.py +2 -0
  26. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/youtrack_cli/articles.py +2 -0
  27. youtrack_cli-0.3.0/youtrack_cli/auth.py +225 -0
  28. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/youtrack_cli/boards.py +2 -0
  29. youtrack_cli-0.3.0/youtrack_cli/cache.py +247 -0
  30. youtrack_cli-0.3.0/youtrack_cli/cli_utils/__init__.py +5 -0
  31. youtrack_cli-0.3.0/youtrack_cli/cli_utils/aliases.py +30 -0
  32. youtrack_cli-0.3.0/youtrack_cli/client.py +404 -0
  33. youtrack_cli-0.3.0/youtrack_cli/commands/__init__.py +17 -0
  34. youtrack_cli-0.3.0/youtrack_cli/commands/articles.py +790 -0
  35. youtrack_cli-0.3.0/youtrack_cli/commands/boards.py +130 -0
  36. youtrack_cli-0.3.0/youtrack_cli/commands/common.py +32 -0
  37. youtrack_cli-0.3.0/youtrack_cli/commands/issues.py +1102 -0
  38. youtrack_cli-0.3.0/youtrack_cli/commands/projects.py +281 -0
  39. youtrack_cli-0.3.0/youtrack_cli/commands/time_tracking.py +171 -0
  40. youtrack_cli-0.3.0/youtrack_cli/commands/users.py +308 -0
  41. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/youtrack_cli/common.py +19 -1
  42. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/youtrack_cli/config.py +2 -0
  43. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/youtrack_cli/exceptions.py +10 -0
  44. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/youtrack_cli/issues.py +53 -47
  45. youtrack_cli-0.3.0/youtrack_cli/logging.py +284 -0
  46. youtrack_cli-0.3.0/youtrack_cli/main.py +1233 -0
  47. youtrack_cli-0.3.0/youtrack_cli/performance.py +296 -0
  48. youtrack_cli-0.3.0/youtrack_cli/progress.py +249 -0
  49. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/youtrack_cli/projects.py +2 -0
  50. youtrack_cli-0.3.0/youtrack_cli/py.typed +0 -0
  51. youtrack_cli-0.3.0/youtrack_cli/reports.py +349 -0
  52. youtrack_cli-0.3.0/youtrack_cli/security.py +425 -0
  53. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/youtrack_cli/time.py +2 -0
  54. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/youtrack_cli/users.py +2 -0
  55. youtrack_cli-0.3.0/youtrack_cli/utils.py +432 -0
  56. youtrack_cli-0.2.1/tests/test_main.py +0 -180
  57. youtrack_cli-0.2.1/youtrack_cli/__init__.py +0 -3
  58. youtrack_cli-0.2.1/youtrack_cli/auth.py +0 -114
  59. youtrack_cli-0.2.1/youtrack_cli/logging.py +0 -61
  60. youtrack_cli-0.2.1/youtrack_cli/main.py +0 -3481
  61. youtrack_cli-0.2.1/youtrack_cli/reports.py +0 -307
  62. youtrack_cli-0.2.1/youtrack_cli/utils.py +0 -196
  63. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/.github/dependabot.yml +0 -0
  64. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/.github/workflows/ci.yml +0 -0
  65. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/.github/workflows/release.yml +0 -0
  66. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/.gitignore +0 -0
  67. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/.pre-commit-config.yaml +0 -0
  68. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/.readthedocs.yaml +0 -0
  69. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/PUBLISHING.md +0 -0
  70. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/docs/Makefile +0 -0
  71. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/docs/api/index.rst +0 -0
  72. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/docs/commands/admin.rst +0 -0
  73. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/docs/commands/articles.rst +0 -0
  74. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/docs/commands/auth.rst +0 -0
  75. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/docs/commands/boards.rst +0 -0
  76. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/docs/commands/config.rst +0 -0
  77. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/docs/commands/index.rst +0 -0
  78. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/docs/commands/issues.rst +0 -0
  79. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/docs/commands/projects.rst +0 -0
  80. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/docs/commands/reports.rst +0 -0
  81. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/docs/commands/time.rst +0 -0
  82. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/docs/commands/users.rst +0 -0
  83. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/docs/conf.py +0 -0
  84. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/docs/configuration.rst +0 -0
  85. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/docs/learning-path.rst +0 -0
  86. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/docs/quickstart.rst +0 -0
  87. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/docs/requirements.txt +0 -0
  88. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/docs/youtrack-concepts.rst +0 -0
  89. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/package-lock.json +0 -0
  90. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/package.json +0 -0
  91. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/tests/__init__.py +0 -0
  92. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/tests/conftest.py +0 -0
  93. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/tests/test_admin.py +0 -0
  94. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/tests/test_articles.py +0 -0
  95. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/tests/test_boards.py +0 -0
  96. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/tests/test_config.py +0 -0
  97. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/tests/test_issues.py +0 -0
  98. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/tests/test_projects.py +0 -0
  99. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/tests/test_reports.py +0 -0
  100. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/tests/test_time.py +0 -0
  101. {youtrack_cli-0.2.1 → youtrack_cli-0.3.0}/tests/test_users.py +0 -0
@@ -36,7 +36,11 @@
36
36
  "Bash(yt:*)",
37
37
  "Bash(git branch:*)",
38
38
  "Bash(yt:*)",
39
- "WebFetch(domain:pypi.org)"
39
+ "WebFetch(domain:pypi.org)",
40
+ "mcp__github__create_issue",
41
+ "mcp__claude-code__Read",
42
+ "mcp__claude-code__Grep",
43
+ "WebFetch(domain:github.com)"
40
44
  ],
41
45
  "deny": []
42
46
  }
@@ -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.2.1
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,24 +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
- Provides-Extra: dev
36
- Requires-Dist: pytest-asyncio>=0.21.0; extra == 'dev'
37
- Requires-Dist: pytest-cov>=4.0.0; extra == 'dev'
38
- Requires-Dist: pytest>=7.0.0; extra == 'dev'
39
- Requires-Dist: ruff>=0.1.0; extra == 'dev'
40
- Requires-Dist: tox>=4.0.0; extra == 'dev'
41
- Requires-Dist: zizmor>=0.1.0; extra == 'dev'
42
- Provides-Extra: docs
43
- Requires-Dist: myst-parser>=2.0.0; extra == 'docs'
44
- Requires-Dist: sphinx-autobuild>=2021.3.14; extra == 'docs'
45
- Requires-Dist: sphinx-rtd-theme>=2.0.0; extra == 'docs'
46
- Requires-Dist: sphinx>=7.0.0; extra == 'docs'
38
+ Requires-Dist: tomli>=1.2.0; python_version < '3.11'
47
39
  Description-Content-Type: text/markdown
48
40
 
49
41
  # YouTrack CLI
@@ -55,8 +47,10 @@ A powerful command line interface for JetBrains YouTrack issue tracking system.
55
47
  ## Features
56
48
 
57
49
  - **Complete YouTrack Management**: Issues, articles, projects, users, time tracking, boards, and reporting
58
- - **Flexible Authentication**: Secure token-based authentication with credential management
50
+ - **Enterprise Security Features**: Command audit logging, credential encryption, token expiration warnings
51
+ - **Flexible Authentication**: Secure token-based authentication with keyring integration
59
52
  - **Rich Output Formats**: Beautiful tables and JSON export for automation
53
+ - **Progress Indicators**: Visual feedback for long-running operations with Rich progress bars
60
54
  - **Comprehensive Configuration**: Customizable defaults and environment-specific settings
61
55
  - **Administrative Tools**: System management, user groups, and health monitoring
62
56
  - **Developer-Friendly**: Built with modern Python practices and extensive documentation
@@ -108,8 +102,8 @@ cd yt-cli
108
102
  uv sync --dev
109
103
  uv pip install -e .
110
104
 
111
- # Or using pip
112
- pip install -e .[dev]
105
+ # Or using pip (requires pip >= 24.0 for PEP 735 support)
106
+ pip install -e . --group dev
113
107
  ```
114
108
 
115
109
  ### Authentication
@@ -122,6 +116,17 @@ yt auth login
122
116
  yt auth token --show
123
117
  ```
124
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
+
125
130
  ### Basic Usage
126
131
 
127
132
  ```bash
@@ -134,8 +139,14 @@ yt articles create "Getting Started" --content "Welcome to our documentation"
134
139
  # Log work time
135
140
  yt time log ISSUE-123 "2h" --description "Feature development"
136
141
 
137
- # Generate reports
142
+ # Generate reports with progress indicators
138
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
139
150
  ```
140
151
 
141
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
- - **Flexible Authentication**: Secure token-based authentication with credential management
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 .[dev]
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
- - None
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
- - None
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: Breaking changes
512
- * MINOR: New features (backward compatible)
513
- * PATCH: Bug fixes (backward compatible)
550
+ * **MAJOR**: Breaking changes
551
+ * **MINOR**: New features (backward compatible)
552
+ * **PATCH**: Bug fixes (backward compatible)
514
553
 
515
- Creating Releases
516
- ~~~~~~~~~~~~~~~~~
554
+ Release Workflow
555
+ ~~~~~~~~~~~~~~~~
517
556
 
518
- 1. Update version in ``pyproject.toml``
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
- .. code-block:: bash
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
- git tag -a v0.2.0 -m "Release version 0.2.0"
525
- git push origin v0.2.0
688
+ The release process automatically triggers GitHub Actions workflows:
526
689
 
527
- 4. GitHub Actions will automatically build and publish to PyPI
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
  -----------------------