From 152619315c590552979175c1a4b59c89033aff54 Mon Sep 17 00:00:00 2001 From: SpookyDervish Date: Sat, 20 Jun 2026 11:25:35 +1000 Subject: [PATCH] add ability to pull package index --- neb/src/install.py | 2 +- neb/src/main.py | 6 ++++++ neb/src/pull.py | 4 ++++ neb/src/util.py | 34 +++++++++++++++++++++------------- 4 files changed, 32 insertions(+), 14 deletions(-) create mode 100644 neb/src/pull.py diff --git a/neb/src/install.py b/neb/src/install.py index 0657416..288fa27 100644 --- a/neb/src/install.py +++ b/neb/src/install.py @@ -42,7 +42,7 @@ def install(args): print_error_message(f"Failed to download \"{name}\": \"{result.stderr.decode()}\"") sys.exit(1) - console.print("[b][:white_check_mark:] Downloaded.[/]") + console.print(f"[b][:white_check_mark:] Downloaded [green]{name}[/green].[/]") status.update(f"Installing [b]{name}[/]...") rock_file = os.path.join(temp_dir, "rock.json") diff --git a/neb/src/main.py b/neb/src/main.py index 42a57a0..b7683f8 100644 --- a/neb/src/main.py +++ b/neb/src/main.py @@ -3,6 +3,7 @@ import sys import os from .install import install +from .pull import pull __VERSION__ = "1.0.0" @@ -20,6 +21,9 @@ def main() -> int: install_cmd = sub_parsers.add_parser(name="install", description="install a rock (package)") install_cmd.add_argument("names", help="name of the rocks to install", nargs="+") install_cmd.add_argument("--max-retries", help="max number of download retries before giving up", type=int, default=3) + + # pull command + pull_cmd = sub_parsers.add_parser(name="pull", description="pull rock index") args = arg_parser.parse_args() @@ -31,6 +35,8 @@ def main() -> int: match args.cmd: case "install": install(args) + case "pull": + pull(args) # really feeling like a C programmer lmao return 0 diff --git a/neb/src/pull.py b/neb/src/pull.py new file mode 100644 index 0000000..a374f61 --- /dev/null +++ b/neb/src/pull.py @@ -0,0 +1,4 @@ +from .util import update_package_index + +def pull(args): + update_package_index() \ No newline at end of file diff --git a/neb/src/util.py b/neb/src/util.py index a5d5eb2..8b7817c 100644 --- a/neb/src/util.py +++ b/neb/src/util.py @@ -46,21 +46,29 @@ def get_needed_headers() -> bool: console.print("[d][:white_check_mark:] Installed headers.[/]") console.print("[b][green]Comet headers are installed![/green] [:white_check_mark:][/b]\n") +def update_package_index() -> dict: + with console.status("Downloading package index...", spinner="moon") as status: + package_data = requests.get("https://chookspace.com/Comet/Nebula/raw/branch/main/package_index.json") + if not package_data.ok: + print_error_message(f"Failed to download package index: {package_data.reason}") + sys.exit(1) + + console.print("[d][:white_check_mark:] Downloaded package index.[/]") + + status.update("Saving package index...") + data = package_data.json() + + with open(os.path.join(comet_dir(), "package_index.json"), "w") as f: + json.dump(data, f) + + console.print("[b][:white_check_mark:] [green]Done pulling package index![/green][/b]") + + + return data + def get_package_index() -> dict: if not os.path.isfile(os.path.join(comet_dir(), "package_index.json")): - with console.status("Downloading package index...", spinner="moon") as status: - package_data = requests.get("https://chookspace.com/Comet/Nebula/raw/branch/main/package_index.json") - if not package_data.ok: - print_error_message(f"Failed to download package index: {package_data.reason}") - sys.exit(1) - - status.update("Saving package index...") - data = package_data.json() - - with open(os.path.join(comet_dir(), "package_index.json"), "w") as f: - json.dump(data, f) - - return data + return update_package_index() with open(os.path.join(comet_dir(), "package_index.json"), "r") as f: package_data = json.load(f)