You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Removes the deprecated nested `add_argument_group` for owner/repo.
- `--owner` and `--repo` are now top-level arguments.
- Implements manual validation logic after parsing to ensure correct argument pairing and exclusivity with `--url`.
- This addresses the DeprecationWarning while maintaining the intended argument behavior.
help="Full GitHub repository URL (e.g., https://github.com/owner/repo or [email protected]:owner/repo.git). Overrides --owner/--repo and git detection."
158
+
help="Full GitHub repository URL (e.g., https://github.com/owner/repo or [email protected]:owner/repo.git). Takes precedence over --owner/--repo."
159
159
)
160
-
# Create a sub-group for owner/repo pair if not using URL
161
-
owner_repo_group=repo_spec_group.add_argument_group('owner_repo_pair', 'Specify owner and repository name (used if --url is not provided)')
162
-
owner_repo_group.add_argument(
160
+
parser.add_argument(
163
161
"--owner",
164
162
type=str,
165
-
default=determined_owner,
166
-
help=f"Repository owner. {'Default: '+determined_ownerifdetermined_ownerelse'Required if --url is not used and not determinable from git.'}"
163
+
default=determined_owner,# Default to auto-detected
164
+
help=f"Repository owner. Used if --url is not provided. {'Default: '+determined_ownerifdetermined_ownerelse'Required if --url is not used and not determinable from git.'}"
167
165
)
168
-
owner_repo_group.add_argument(
166
+
parser.add_argument(
169
167
"--repo",
170
168
type=str,
171
-
default=determined_repo,
172
-
help=f"Repository name. {'Default: '+determined_repoifdetermined_repoelse'Required if --url is not used and not determinable from git.'}"
169
+
default=determined_repo,# Default to auto-detected
170
+
help=f"Repository name. Used if --url is not provided. {'Default: '+determined_repoifdetermined_repoelse'Required if --url is not used and not determinable from git.'}"
sys.stderr.write(f"Error: Invalid URL format provided: {args.url}. Expected https://github.com/owner/repo or [email protected]:owner/repo.git\n")
222
229
parser.print_help()
223
230
sys.exit(1)
224
-
# If URL is not provided, check owner/repo. They default to determined_owner/repo.
225
-
elifargs.ownerandargs.repo:
231
+
elif (args.owner!=determined_ownerorargs.repo!=determined_repo) or (notdetermined_ownerandargs.ownerandargs.repo):
232
+
# This condition means:
233
+
# 1. User explicitly set --owner or --repo to something different than auto-detected OR
234
+
# 2. Auto-detection failed (determined_owner is None) AND user provided both owner and repo.
235
+
ifnotargs.ownerornotargs.repo:
236
+
sys.stderr.write("Error: Both --owner and --repo must be specified if one is provided (and --url is not used).\n")
237
+
parser.print_help()
238
+
sys.exit(1)
226
239
final_owner=args.owner
227
240
final_repo=args.repo
228
-
# If these values are different from the auto-detected ones (i.e., user explicitly provided them),
229
-
# or if auto-detection failed and these are the only source.
230
-
if (args.owner!=determined_ownerorargs.repo!=determined_repo) and (determined_ownerordetermined_repo):
231
-
sys.stderr.write(f"Using repository from --owner/--repo args: {final_owner}/{final_repo}\n")
232
-
# If auto-detection worked and user didn't override, the initial "Determined repository..." message is sufficient.
233
-
elifargs.ownerorargs.repo: # Only one of owner/repo was specified (and not --url)
234
-
sys.stderr.write("Error: Both --owner and --repo must be specified if one is provided and --url is not used.\n")
235
-
parser.print_help()
236
-
sys.exit(1)
237
-
# If --url, --owner, --repo are all None, it means auto-detection failed AND user provided nothing.
238
-
# This case is caught by the final check below.
239
-
241
+
sys.stderr.write(f"Using repository from --owner/--repo args: {final_owner}/{final_repo}\n")
242
+
elifargs.ownerandargs.repo: # Using auto-detected values which are now in args.owner and args.repo
243
+
final_owner=args.owner
244
+
final_repo=args.repo
245
+
# The "Determined repository..." message was already printed if successful.
246
+
else: # Handles cases like only one of owner/repo being set after defaults, or auto-detection failed and nothing/partial was given.
247
+
if (args.ownerandnotargs.repo) or (notargs.ownerandargs.repo):
248
+
sys.stderr.write("Error: Both --owner and --repo must be specified if one is provided (and --url is not used).\n")
249
+
parser.print_help()
250
+
sys.exit(1)
251
+
# If it reaches here and final_owner/repo are still None, it means auto-detection failed and user didn't provide valid pair.
240
252
241
253
ifnotfinal_ownerornotfinal_repo:
242
-
sys.stderr.write("Error: Could not determine repository. Please specify --url, or both --owner and --repo, or ensure git remote 'origin' is configured correctly.\n")
254
+
sys.stderr.write("Error: Could not determine repository. Please specify --url, OR both --owner and --repo, OR ensure git remote 'origin' is configured correctly.\n")
0 commit comments