Add uninstall command #89
|
@ -34,6 +34,9 @@ def attach_dev_commands(subparsers):
|
|||
install_cmd.add_argument("--no-confirm", action="store_true", help="don't ask the user for confirmation before installing")
|
||||
install_cmd.set_defaults(func=dev_shellish(install))
|
||||
|
||||
uninstall_cmd = dev_sub.add_parser("uninstall", help="Uninstall the system installation of Orca.")
|
||||
uninstall_cmd.set_defaults(func=dev_shellish(uninstall))
|
||||
|
||||
|
||||
# Checks if the Orca tool should use a source checkout of Orca instead of a system install.
|
||||
# This is copy-pasted to the command-line tool so it can work before loading anything.
|
||||
|
@ -527,11 +530,19 @@ def prompt(msg):
|
|||
print("Please enter \"yes\" or \"no\" and press return.")
|
||||
|
||||
|
||||
def install(args):
|
||||
def install_path():
|
||||
if platform.system() == "Windows":
|
||||
dest = os.path.join(os.getenv("LOCALAPPDATA"), "orca")
|
||||
orca_dir = os.path.join(os.getenv("LOCALAPPDATA"), "orca")
|
||||
else:
|
||||
dest = os.path.expanduser(os.path.join("~", ".orca"))
|
||||
orca_dir = os.path.expanduser(os.path.join("~", ".orca"))
|
||||
|
||||
bin_dir = os.path.join(orca_dir, "bin")
|
||||
|
||||
return (orca_dir, bin_dir)
|
||||
|
||||
|
||||
def install(args):
|
||||
dest, bin_dir = install_path()
|
||||
|
||||
if not args.no_confirm:
|
||||
print("The Orca command-line tools will be installed to:")
|
||||
|
@ -540,7 +551,6 @@ def install(args):
|
|||
if not prompt("Proceed with the installation?"):
|
||||
return
|
||||
|
||||
bin_dir = os.path.join(dest, "bin")
|
||||
yeet(bin_dir)
|
||||
|
||||
# The MS Store version of Python does some really stupid stuff with AppData:
|
||||
|
@ -579,3 +589,24 @@ def install(args):
|
|||
print()
|
||||
print(f"export PATH=\"{bin_dir}:$PATH\"")
|
||||
print()
|
||||
|
||||
|
||||
def uninstall(args):
|
||||
orca_dir, bin_dir = install_path()
|
||||
|
||||
if not os.path.exists(orca_dir):
|
||||
print("Orca is not installed on your system.")
|
||||
exit()
|
||||
|
||||
print(f"Orca is currently installed at {orca_dir}.")
|
||||
if prompt("Are you sure you want to uninstall?"):
|
||||
yeet(orca_dir)
|
||||
|
||||
if platform.system() == "Windows":
|
||||
print("Orca has been uninstalled from your system.")
|
||||
print()
|
||||
if prompt("Would you like to automatically remove Orca from your PATH?"):
|
||||
subprocess.run(["powershell", "scripts\\updatepath.ps1", bin_dir, "-remove"], check=True)
|
||||
print("Orca has been removed from your PATH.")
|
||||
else:
|
||||
print("Orca has been uninstalled from your system. You may wish to remove it from your PATH.")
|
||||
|
|
|
@ -1,11 +1,16 @@
|
|||
param (
|
||||
[parameter(Mandatory=$true)]
|
||||
[string]$orcaPath
|
||||
[string]$orcaPath,
|
||||
|
||||
[switch]$remove
|
||||
)
|
||||
|
||||
$arrPath = [System.Environment]::GetEnvironmentVariable('PATH', 'User') -split ';'
|
||||
$arrPath = $arrPath | Where-Object { $_ -ne $orcaPath } | Where-Object { $_ -ne '' }
|
||||
$newPath = ($arrPath + $orcaPath) -join ';'
|
||||
if (-not $remove) {
|
||||
$arrPath += $orcaPath
|
||||
}
|
||||
|
||||
$newPath = $arrPath -join ';'
|
||||
|
||||
[System.Environment]::SetEnvironmentVariable('PATH', $newPath, 'User')
|
||||
# echo $newPath
|
||||
|
|
Loading…
Reference in New Issue