uninstall command is done
This commit is contained in:
@@ -6,21 +6,16 @@ import tarfile
|
|||||||
|
|
||||||
from rich.console import Console
|
from rich.console import Console
|
||||||
from rich.progress import SpinnerColumn
|
from rich.progress import SpinnerColumn
|
||||||
|
from util import check_ground_libs_path, check_sudo
|
||||||
|
|
||||||
|
|
||||||
console = Console()
|
console = Console()
|
||||||
|
|
||||||
|
|
||||||
def install(args):
|
def install(args):
|
||||||
# check if we are sudo
|
|
||||||
if os.getuid() != 0:
|
|
||||||
console.print("[b red]digpkg: the install command requires sudo to run[/]")
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
# ensure the GROUND_LIBS var is set
|
check_sudo()
|
||||||
if not os.getenv("GROUND_LIBS"):
|
check_ground_libs_path()
|
||||||
console.print("digpkg: the [i]GROUND_LIBS[/] environment variable is not set, defaulting to /usr/lib/ground/")
|
|
||||||
os.environ["GROUND_LIBS"] = "/usr/lib/ground/"
|
|
||||||
|
|
||||||
# figure out which version to install
|
# figure out which version to install
|
||||||
package_name = args.name
|
package_name = args.name
|
||||||
@@ -81,5 +76,10 @@ def install(args):
|
|||||||
console.print(f"[d][:white_check_mark:] Extracted to {extract_dir}.")
|
console.print(f"[d][:white_check_mark:] Extracted to {extract_dir}.")
|
||||||
|
|
||||||
console.status("Finishing up...")
|
console.status("Finishing up...")
|
||||||
os.symlink(os.path.join(extract_dir, package_name, "main.so"), os.path.join(extract_dir, f"{package_name}.so"))
|
|
||||||
|
# create a symlink from the main.so file to the ground libs folder so ground can find it
|
||||||
|
symlink_path = os.path.join(extract_dir, f"{package_name}.so") # the path where the symlink is
|
||||||
|
if not os.path.isfile(symlink_path):
|
||||||
|
os.symlink(os.path.join(extract_dir, package_name, "main.so"), symlink_path)
|
||||||
|
|
||||||
console.print("[:white_check_mark:] Done!")
|
console.print("[:white_check_mark:] Done!")
|
||||||
@@ -3,9 +3,13 @@ import configparser
|
|||||||
from rich import print
|
from rich import print
|
||||||
from rich.table import Table
|
from rich.table import Table
|
||||||
|
|
||||||
|
from util import check_ground_libs_path
|
||||||
|
|
||||||
|
|
||||||
def list_cmd(args):
|
def list_cmd(args):
|
||||||
ground_libs_folder = os.getenv("GROUND_LIBS") or "/usr/lib/ground/"
|
check_ground_libs_path()
|
||||||
|
|
||||||
|
ground_libs_folder = os.getenv("GROUND_LIBS")
|
||||||
folders = os.listdir(ground_libs_folder)
|
folders = os.listdir(ground_libs_folder)
|
||||||
|
|
||||||
table = Table("Name", "Version", "Description", title="Installed")
|
table = Table("Name", "Version", "Description", title="Installed")
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ from install import install
|
|||||||
from publish import publish
|
from publish import publish
|
||||||
from remove import remove
|
from remove import remove
|
||||||
from list import list_cmd
|
from list import list_cmd
|
||||||
|
from uninstall import uninstall
|
||||||
|
|
||||||
|
|
||||||
def parse_arguments():
|
def parse_arguments():
|
||||||
@@ -23,7 +24,6 @@ def parse_arguments():
|
|||||||
|
|
||||||
# list command
|
# list command
|
||||||
list_command = sub_parsers.add_parser(name="list", description="list all minerals installed in the current environment")
|
list_command = sub_parsers.add_parser(name="list", description="list all minerals installed in the current environment")
|
||||||
list_command.add_argument("--env_name", help="list all minerals from a specific environment.", default=None, required=False)
|
|
||||||
|
|
||||||
# publish command
|
# publish command
|
||||||
publish_command = sub_parsers.add_parser(name="publish", description="publish a package to the repository")
|
publish_command = sub_parsers.add_parser(name="publish", description="publish a package to the repository")
|
||||||
@@ -66,6 +66,8 @@ def parse_arguments():
|
|||||||
remove(args)
|
remove(args)
|
||||||
elif args.command == "list":
|
elif args.command == "list":
|
||||||
list_cmd(args)
|
list_cmd(args)
|
||||||
|
elif args.command == "uninstall":
|
||||||
|
uninstall(args)
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
parse_arguments()
|
parse_arguments()
|
||||||
|
|||||||
36
src/uninstall.py
Normal file
36
src/uninstall.py
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
import os, sys
|
||||||
|
import shutil
|
||||||
|
|
||||||
|
from util import check_ground_libs_path, check_sudo
|
||||||
|
from rich.console import Console
|
||||||
|
|
||||||
|
|
||||||
|
console = Console()
|
||||||
|
|
||||||
|
|
||||||
|
def uninstall(args):
|
||||||
|
check_sudo()
|
||||||
|
check_ground_libs_path()
|
||||||
|
|
||||||
|
with console.status(status=f"Looking for [i]{args.name}[/]...", spinner="bouncingBall", spinner_style="blue") as status:
|
||||||
|
mineral_path = os.path.join(os.getenv("GROUND_LIBS"), args.name)
|
||||||
|
symlink_path = os.path.join(os.getenv("GROUND_LIBS"), f"{args.name}.so")
|
||||||
|
|
||||||
|
# check to make sure the mineral is installed
|
||||||
|
if not os.path.isdir(mineral_path):
|
||||||
|
console.print(f"[b red]digpkg: failed to uninstall [i]{args.name}[/]: mineral is not installed[/b red]")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
# remove the symlink
|
||||||
|
status.update("Removing symlink...")
|
||||||
|
if os.path.islink(symlink_path):
|
||||||
|
os.unlink(symlink_path)
|
||||||
|
console.print(f"[d][:white_check_mark:] Removed symlink!")
|
||||||
|
|
||||||
|
# delete the folder
|
||||||
|
shutil.rmtree(mineral_path)
|
||||||
|
console.print(f"[d][:white_check_mark:] Removed mineral folder!")
|
||||||
|
|
||||||
|
|
||||||
|
console.print(f"[:white_check_mark:] Done!")
|
||||||
|
|
||||||
16
src/util.py
Normal file
16
src/util.py
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
import os, sys
|
||||||
|
|
||||||
|
from rich import print
|
||||||
|
|
||||||
|
|
||||||
|
def check_ground_libs_path():
|
||||||
|
# ensure the GROUND_LIBS var is set
|
||||||
|
if not os.getenv("GROUND_LIBS"):
|
||||||
|
print("digpkg: the [i]GROUND_LIBS[/] environment variable is not set, defaulting to /usr/lib/ground/")
|
||||||
|
os.environ["GROUND_LIBS"] = "/usr/lib/ground/"
|
||||||
|
|
||||||
|
def check_sudo():
|
||||||
|
# check if we are sudo
|
||||||
|
if os.getuid() != 0:
|
||||||
|
print("[b red]digpkg: that command requires sudo to run[/]")
|
||||||
|
sys.exit(1)
|
||||||
Reference in New Issue
Block a user