]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
script/ptl-tool: improve help messages during startup 68582/head
authorPatrick Donnelly <pdonnell@ibm.com>
Thu, 23 Apr 2026 23:40:13 +0000 (19:40 -0400)
committerPatrick Donnelly <pdonnell@ibm.com>
Thu, 23 Apr 2026 23:40:13 +0000 (19:40 -0400)
For newer folks who've never run it before.

Signed-off-by: Patrick Donnelly <pdonnell@ibm.com>
src/script/ptl-tool.py

index c5f86cd78ffc6f9bb39bf3165a27e44f6dccf547..4848190f12b5cb4861cbaddce6f0e170c2a1ac63 100755 (executable)
 import argparse
 import datetime
 from getpass import getuser
-import git # https://github.com/gitpython-developers/gitpython
 import itertools
 import json
 import logging
 import os
 import re
-try:
-    from redminelib import Redmine  # https://pypi.org/project/python-redmine/
-except ModuleNotFoundError:
-    Redmine = None
-import requests
 import signal
 import sys
 import textwrap
 
+MISSING_DEPS = []
+
+try:
+    import git # https://github.com/gitpython-developers/gitpython
+except ImportError:
+    MISSING_DEPS.append("GitPython")
+
+try:
+    from redminelib import Redmine  # https://pypi.org/project/python-redmine/
+except ImportError:
+    Redmine = None
+    MISSING_DEPS.append("python-redmine")
+
+try:
+    import requests
+except ImportError:
+    MISSING_DEPS.append("requests")
+
+if MISSING_DEPS:
+    print("ERROR: Missing required dependencies: " + ", ".join(MISSING_DEPS), file=sys.stderr)
+    print("\nPlease set up a virtual environment and install the dependencies by following these steps:", file=sys.stderr)
+    print("  1. Create a virtual environment: python3 -m venv ~/ptl-venv", file=sys.stderr)
+    print("  2. Activate it:                  source ~/ptl-venv/bin/activate", file=sys.stderr)
+    print("  3. Install dependencies:         pip install GitPython python-redmine requests\n", file=sys.stderr)
+    sys.exit(1)
+
 from os.path import expanduser
 
 BASE_PROJECT = os.getenv("PTL_TOOL_BASE_PROJECT", "ceph")
@@ -652,10 +672,22 @@ def main():
     if args.debug_build:
         args.flavors.add('debug')
 
-    if (args.create_qa or args.update_qa) and Redmine is None:
-        log.error("redmine library is not available so cannot create qa tracker ticket")
+    if not GITHUB_TOKEN:
+        log.error("Missing GitHub Personal Access Token.")
+        log.error("Please create a file at ~/.github_token containing your token,")
+        log.error("or set the PTL_TOOL_GITHUB_TOKEN environment variable.")
         sys.exit(1)
 
+    if args.create_qa or args.update_qa:
+        if Redmine is None:
+            log.error("redmine library is not available so cannot create qa tracker ticket")
+            sys.exit(1)
+        if not REDMINE_API_KEY:
+            log.error("Missing Redmine API Key. Required for creating/updating QA tickets.")
+            log.error("Please create a file at ~/.redmine_key containing your API key,")
+            log.error("or set the PTL_TOOL_REDMINE_API_KEY environment variable.")
+            sys.exit(1)
+
     return build_branch(args)
 
 if __name__ == "__main__":