Added default rep
This commit is contained in:
54
main.py
54
main.py
@@ -18,7 +18,6 @@ from pkgmgr.delete_repos import delete_repos
|
|||||||
from pkgmgr.exec_git_command import exec_git_command
|
from pkgmgr.exec_git_command import exec_git_command
|
||||||
from pkgmgr.filter_ignored import filter_ignored
|
from pkgmgr.filter_ignored import filter_ignored
|
||||||
from pkgmgr.generate_alias import generate_alias
|
from pkgmgr.generate_alias import generate_alias
|
||||||
from pkgmgr.get_repo_dir import get_repo_dir
|
|
||||||
from pkgmgr.get_repo_identifier import get_repo_identifier
|
from pkgmgr.get_repo_identifier import get_repo_identifier
|
||||||
from pkgmgr.get_selected_repos import get_selected_repos
|
from pkgmgr.get_selected_repos import get_selected_repos
|
||||||
from pkgmgr.install_repos import install_repos
|
from pkgmgr.install_repos import install_repos
|
||||||
@@ -81,7 +80,11 @@ For detailed help on each command, use:
|
|||||||
parser = argparse.ArgumentParser(description=description_text,formatter_class=argparse.RawTextHelpFormatter)
|
parser = argparse.ArgumentParser(description=description_text,formatter_class=argparse.RawTextHelpFormatter)
|
||||||
subparsers = parser.add_subparsers(dest="command", help="Subcommands", action=SortedSubParsersAction)
|
subparsers = parser.add_subparsers(dest="command", help="Subcommands", action=SortedSubParsersAction)
|
||||||
def add_identifier_arguments(subparser):
|
def add_identifier_arguments(subparser):
|
||||||
subparser.add_argument("identifiers", nargs="*", help="Identifier(s) for repositories")
|
subparser.add_argument(
|
||||||
|
"identifiers",
|
||||||
|
nargs="*",
|
||||||
|
help="Identifier(s) for repositories. Default: Repository of current folder.",
|
||||||
|
)
|
||||||
subparser.add_argument(
|
subparser.add_argument(
|
||||||
"--all",
|
"--all",
|
||||||
action="store_true",
|
action="store_true",
|
||||||
@@ -160,12 +163,13 @@ For detailed help on each command, use:
|
|||||||
|
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
# All
|
||||||
|
if args.command and args.command != "config":
|
||||||
|
selected = get_selected_repos(args.all,all_repos_list,args.identifiers)
|
||||||
# Dispatch commands.
|
# Dispatch commands.
|
||||||
if args.command == "install":
|
if args.command == "install":
|
||||||
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)
|
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:
|
elif args.command in GIT_DEFAULT_COMMANDS:
|
||||||
selected = get_selected_repos(args.all, all_repos_list, args.identifiers)
|
|
||||||
if args.command == "clone":
|
if args.command == "clone":
|
||||||
clone_repos(selected, repositories_base_dir, all_repos_list, args.preview)
|
clone_repos(selected, repositories_base_dir, all_repos_list, args.preview)
|
||||||
elif args.command == "pull":
|
elif args.command == "pull":
|
||||||
@@ -176,24 +180,17 @@ For detailed help on each command, use:
|
|||||||
elif args.command == "list":
|
elif args.command == "list":
|
||||||
list_repositories(all_repos_list, repositories_base_dir, BIN_DIR, search_filter=args.search, status_filter=args.status)
|
list_repositories(all_repos_list, repositories_base_dir, BIN_DIR, search_filter=args.search, status_filter=args.status)
|
||||||
elif args.command == "deinstall":
|
elif args.command == "deinstall":
|
||||||
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)
|
deinstall_repos(selected,repositories_base_dir, BIN_DIR, all_repos_list, preview=args.preview)
|
||||||
elif args.command == "delete":
|
elif args.command == "delete":
|
||||||
selected = get_selected_repos(args.all,all_repos_list,args.identifiers)
|
|
||||||
delete_repos(selected,repositories_base_dir, all_repos_list, preview=args.preview)
|
delete_repos(selected,repositories_base_dir, all_repos_list, preview=args.preview)
|
||||||
elif args.command == "update":
|
elif args.command == "update":
|
||||||
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)
|
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":
|
elif args.command == "status":
|
||||||
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)
|
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 == "explore":
|
elif args.command == "explore":
|
||||||
selected = get_selected_repos(args.all, all_repos_list, args.identifiers)
|
for repository in selected:
|
||||||
for repo in selected:
|
run_command(f"nautilus {respository["directory"]}")
|
||||||
repo_dir = get_repo_dir(repositories_base_dir, repo)
|
|
||||||
run_command(f"nautilus {repo_dir}")
|
|
||||||
elif args.command == "code":
|
elif args.command == "code":
|
||||||
selected = get_selected_repos(args.all, all_repos_list, args.identifiers)
|
|
||||||
if not selected:
|
if not selected:
|
||||||
print("No repositories selected.")
|
print("No repositories selected.")
|
||||||
else:
|
else:
|
||||||
@@ -205,15 +202,13 @@ For detailed help on each command, use:
|
|||||||
workspace_file = os.path.join(workspaces_dir, workspace_name)
|
workspace_file = os.path.join(workspaces_dir, workspace_name)
|
||||||
|
|
||||||
folders = []
|
folders = []
|
||||||
for repo in selected:
|
for repository in selected:
|
||||||
repo_dir = os.path.expanduser(get_repo_dir(repositories_base_dir, repo))
|
folders.append({"path": respository["directory"]})
|
||||||
folders.append({"path": repo_dir})
|
|
||||||
|
|
||||||
workspace_data = {
|
workspace_data = {
|
||||||
"folders": folders,
|
"folders": folders,
|
||||||
"settings": {}
|
"settings": {}
|
||||||
}
|
}
|
||||||
|
|
||||||
if not os.path.exists(workspace_file):
|
if not os.path.exists(workspace_file):
|
||||||
with open(workspace_file, "w") as f:
|
with open(workspace_file, "w") as f:
|
||||||
json.dump(workspace_data, f, indent=4)
|
json.dump(workspace_data, f, indent=4)
|
||||||
@@ -221,32 +216,21 @@ For detailed help on each command, use:
|
|||||||
else:
|
else:
|
||||||
print(f"Using existing workspace file: {workspace_file}")
|
print(f"Using existing workspace file: {workspace_file}")
|
||||||
run_command(f'code "{workspace_file}"')
|
run_command(f'code "{workspace_file}"')
|
||||||
|
|
||||||
|
|
||||||
elif args.command == "terminal":
|
elif args.command == "terminal":
|
||||||
selected = get_selected_repos(args.all, all_repos_list, args.identifiers)
|
for repository in selected:
|
||||||
for repo in selected:
|
run_command(f'gnome-terminal --tab --working-directory="{respository["directory"]}"')
|
||||||
repo_dir = get_repo_dir(repositories_base_dir, repo)
|
|
||||||
run_command(f'gnome-terminal --tab --working-directory="{repo_dir}"')
|
|
||||||
|
|
||||||
elif args.command == "path":
|
elif args.command == "path":
|
||||||
selected = get_selected_repos(args.all,all_repos_list,args.identifiers)
|
for repository in selected:
|
||||||
paths = [
|
print(respository["directory"])
|
||||||
get_repo_dir(repositories_base_dir,repo)
|
|
||||||
for repo in selected
|
|
||||||
]
|
|
||||||
print(" ".join(paths))
|
|
||||||
elif args.command == "shell":
|
elif args.command == "shell":
|
||||||
selected = get_selected_repos(args.all, all_repos_list, args.identifiers)
|
|
||||||
if not args.shell_command:
|
if not args.shell_command:
|
||||||
print("No shell command specified.")
|
print("No shell command specified.")
|
||||||
exit(1)
|
exit(1)
|
||||||
# Join the provided shell command parts into one string.
|
# Join the provided shell command parts into one string.
|
||||||
command_to_run = " ".join(args.shell_command)
|
command_to_run = " ".join(args.shell_command)
|
||||||
for repo in selected:
|
for repository in selected:
|
||||||
repo_dir = get_repo_dir(repositories_base_dir, repo)
|
print(f"Executing in '{respository["directory"]}': {command_to_run}")
|
||||||
print(f"Executing in '{repo_dir}': {command_to_run}")
|
run_command(command_to_run, cwd=respository["directory"], preview=args.preview)
|
||||||
run_command(command_to_run, cwd=repo_dir, preview=args.preview)
|
|
||||||
elif args.command == "config":
|
elif args.command == "config":
|
||||||
if args.subcommand == "show":
|
if args.subcommand == "show":
|
||||||
if args.all or (not args.identifiers):
|
if args.all or (not args.identifiers):
|
||||||
|
|||||||
@@ -1,14 +1,29 @@
|
|||||||
|
import os
|
||||||
import sys
|
import sys
|
||||||
from .resolve_repos import resolve_repos
|
from .resolve_repos import resolve_repos
|
||||||
from .filter_ignored import filter_ignored
|
from .filter_ignored import filter_ignored
|
||||||
|
from .get_repo_dir import get_repo_dir
|
||||||
|
|
||||||
def get_selected_repos(show_all:bool,all_repos_list,identifiers=None):
|
def get_selected_repos(show_all: bool, all_repos_list, identifiers=None):
|
||||||
if show_all:
|
if show_all:
|
||||||
selected = all_repos_list
|
selected = all_repos_list
|
||||||
else:
|
else:
|
||||||
selected = resolve_repos(identifiers, all_repos_list)
|
selected = resolve_repos(identifiers, all_repos_list)
|
||||||
filtered = filter_ignored(selected)
|
|
||||||
|
# If no repositories were found using the provided identifiers,
|
||||||
|
# try to automatically select based on the current directory:
|
||||||
if not selected:
|
if not selected:
|
||||||
|
current_dir = os.getcwd()
|
||||||
|
directory_name = os.path.basename(current_dir)
|
||||||
|
# Pack the directory name in a list since resolve_repos expects a list.
|
||||||
|
auto_selected = resolve_repos([directory_name], all_repos_list)
|
||||||
|
if auto_selected:
|
||||||
|
# Check if the path of the first auto-selected repository matches the current directory.
|
||||||
|
if os.path.abspath(auto_selected[0].get("directory")) == os.path.abspath(current_dir):
|
||||||
|
print(f"Repository {auto_selected[0]['repository']} has been auto-selected by path.")
|
||||||
|
selected = auto_selected
|
||||||
|
filtered = filter_ignored(selected)
|
||||||
|
if not filtered:
|
||||||
print("Error: No repositories had been selected.")
|
print("Error: No repositories had been selected.")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
return filtered
|
return filtered
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import sys
|
import sys
|
||||||
import yaml
|
import yaml
|
||||||
import os
|
import os
|
||||||
|
from .get_repo_dir import get_repo_dir
|
||||||
DEFAULT_CONFIG_PATH = os.path.join(os.path.dirname(os.path.realpath(__file__)), "../","config", "defaults.yaml")
|
DEFAULT_CONFIG_PATH = os.path.join(os.path.dirname(os.path.realpath(__file__)), "../","config", "defaults.yaml")
|
||||||
|
|
||||||
def load_config(user_config_path):
|
def load_config(user_config_path):
|
||||||
@@ -21,4 +22,9 @@ def load_config(user_config_path):
|
|||||||
config["directories"] = user_config["directories"]
|
config["directories"] = user_config["directories"]
|
||||||
if "repositories" in user_config:
|
if "repositories" in user_config:
|
||||||
config["repositories"].extend(user_config["repositories"])
|
config["repositories"].extend(user_config["repositories"])
|
||||||
|
for repository in config["repositories"]:
|
||||||
|
# You can overwritte the directory path in the config
|
||||||
|
if "directory" not in repository:
|
||||||
|
directory = get_repo_dir(config["directories"]["repositories"], repository)
|
||||||
|
repository["directory"] = os.path.expanduser(directory)
|
||||||
return config
|
return config
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
import os
|
import os
|
||||||
|
|
||||||
def resolve_repos(identifiers, all_repos):
|
def resolve_repos(identifiers:[], all_repos:[]):
|
||||||
"""
|
"""
|
||||||
Given a list of identifier strings, return a list of repository configs.
|
Given a list of identifier strings, return a list of repository configs.
|
||||||
The identifier can be:
|
The identifier can be:
|
||||||
|
|||||||
Reference in New Issue
Block a user