diff --git a/main.py b/main.py index baa8078..e0c8e5e 100644 --- a/main.py +++ b/main.py @@ -22,7 +22,8 @@ GIT_DEFAULT_COMMANDS = [ "show", "checkout", "clone", - "reset" + "reset", + "revert" ] def load_config(): @@ -440,31 +441,8 @@ def config_init(user_config, defaults_config, bin_dir): else: print("No new repositories found.") -def get_selected_repos(show_all: bool, all_repos_list, repositories_base_dir, identifiers=None): - """ - Select repositories based on provided identifiers or, if none are given, - use the repository that matches the current working directory (if any). - - If --all is specified, return all repositories. - Otherwise, if identifiers are provided, resolve them. - If no identifier is provided, try to match the current directory with a repo; - if no match is found, default to all repositories. - """ - if show_all: - selected = all_repos_list - elif identifiers: - selected = resolve_repos(identifiers, all_repos_list) - else: - # No identifiers provided: check if the current directory belongs to one of the repos. - cwd = os.path.abspath(os.getcwd()) - selected = [] - for repo in all_repos_list: - repo_dir = os.path.abspath(get_repo_dir(repositories_base_dir, repo)) - if cwd.startswith(repo_dir): - selected.append(repo) - if not selected: - # Fallback to all repos if current path is not inside any repo. - selected = all_repos_list +def get_selected_repos(show_all:bool,all_repos_list,identifiers=None): + selected = all_repos_list if show_all or (not identifiers) else resolve_repos(identifiers, all_repos_list) return filter_ignored(selected) def list_repositories(all_repos, repositories_base_dir, bin_dir, search_filter="", status_filter=""): @@ -651,17 +629,22 @@ For detailed help on each command, use: # Proxies the default git commands for git_command in GIT_DEFAULT_COMMANDS: add_identifier_arguments( - subparsers.add_parser(git_command, help=f"Proxies 'git {git_command}' to one repository/repositories") + subparsers.add_parser( + git_command, + help=f"Proxies 'git {git_command}' to one repository/repositories", + description=f"Executes 'git {git_command}' for the identified repos.\nTo recieve more help execute 'git {git_command} --help'", + formatter_class=argparse.RawTextHelpFormatter + ) ) args = parser.parse_args() # Dispatch commands. if args.command == "install": - selected = selected = get_selected_repos(args.all, all_repos_list, repositories_base_dir, args.identifiers) - install_repos(selected, repositories_base_dir, BIN_DIR, all_repos_list, args.no_verification, preview=args.preview, quiet=args.quiet) + selected = get_selected_repos(args.all,all_repos_list,args.identifiers) + install_repos(selected,repositories_base_dir, BIN_DIR, all_repos_list, args.no_verification, preview=args.preview, quiet=args.quiet) elif args.command in GIT_DEFAULT_COMMANDS: - selected = get_selected_repos(args.all, all_repos_list, repositories_base_dir, args.identifiers) + selected = get_selected_repos(args.all,all_repos_list,args.identifiers) if args.command == "clone": clone_repos(selected, repositories_base_dir, all_repos_list, args.preview) else: @@ -669,19 +652,19 @@ For detailed help on each command, use: elif args.command == "list": list_repositories(all_repos_list, repositories_base_dir, BIN_DIR, search_filter=args.search, status_filter=args.status) elif args.command == "deinstall": - selected = selected = get_selected_repos(args.all, all_repos_list, repositories_base_dir, args.identifiers) - deinstall_repos(selected, repositories_base_dir, BIN_DIR, all_repos_list, preview=args.preview) + selected = get_selected_repos(args.all,all_repos_list,args.identifiers) + deinstall_repos(selected,repositories_base_dir, BIN_DIR, all_repos_list, preview=args.preview) elif args.command == "delete": - selected = selected = get_selected_repos(args.all, all_repos_list, repositories_base_dir, args.identifiers) - delete_repos(selected, repositories_base_dir, all_repos_list, preview=args.preview) + selected = get_selected_repos(args.all,all_repos_list,args.identifiers) + delete_repos(selected,repositories_base_dir, all_repos_list, preview=args.preview) elif args.command == "update": - selected = selected = get_selected_repos(args.all, all_repos_list, repositories_base_dir, args.identifiers) - update_repos(selected, repositories_base_dir, BIN_DIR, all_repos_list, args.no_verification, system_update=args.system, preview=args.preview, quiet=args.quiet) + selected = get_selected_repos(args.all,all_repos_list,args.identifiers) + update_repos(selected,repositories_base_dir, BIN_DIR, all_repos_list, args.no_verification, system_update=args.system, preview=args.preview, quiet=args.quiet) elif args.command == "status": - selected = selected = get_selected_repos(args.all, all_repos_list, repositories_base_dir, args.identifiers) - status_repos(selected, repositories_base_dir, all_repos_list, args.extra_args, list_only=args.list, system_status=args.system, preview=args.preview) + selected = get_selected_repos(args.all,all_repos_list,args.identifiers) + status_repos(selected,repositories_base_dir, all_repos_list, args.extra_args, list_only=args.list, system_status=args.system, preview=args.preview) elif args.command == "explor": - selected = get_selected_repos(args.all, all_repos_list, repositories_base_dir, args.identifiers) + selected = get_selected_repos(args.all, all_repos_list, args.identifiers) for repo in selected: repo_dir = get_repo_dir(repositories_base_dir, repo) run_command(f"nautilus {repo_dir}") @@ -717,13 +700,13 @@ For detailed help on each command, use: elif args.command == "terminal": - selected = get_selected_repos(args.all, all_repos_list, repositories_base_dir, args.identifiers) + selected = get_selected_repos(args.all, all_repos_list, args.identifiers) for repo in selected: repo_dir = get_repo_dir(repositories_base_dir, repo) run_command(f'gnome-terminal --tab --working-directory="{repo_dir}"') elif args.command == "path": - selected = selected = get_selected_repos(args.all, all_repos_list, repositories_base_dir, args.identifiers) + selected = get_selected_repos(args.all,all_repos_list,args.identifiers) paths = [ get_repo_dir(repositories_base_dir,repo) for repo in selected