63 lines
1.8 KiB
Python
Executable File
63 lines
1.8 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import argparse
|
|
import pathlib
|
|
import subprocess
|
|
import typing
|
|
|
|
|
|
def main() -> None:
|
|
parser = argparse.ArgumentParser(description="Small Tauon remote control CLI")
|
|
parser.add_argument(
|
|
"action",
|
|
choices=["install", "list", "list-saved", "save"],
|
|
help="Which action should be performed.",
|
|
)
|
|
parser.add_argument(
|
|
"-f",
|
|
"--file",
|
|
help="Use a different file than $HOME/.config/codium-extensions.txt.",
|
|
default=pathlib.Path.home().joinpath(".config/codium-extensions.txt"),
|
|
)
|
|
args = parser.parse_args()
|
|
|
|
if args.action == "install":
|
|
print("Installing saved extensions")
|
|
for extension in get_saved_extensions(args.file):
|
|
subprocess.run(["codium", "--install-extension", extension])
|
|
elif args.action == "list":
|
|
print("Listing installed extensions")
|
|
print("\n".join(get_installed_extensions()))
|
|
elif args.action == "list-saved":
|
|
with open(args.file, "r") as file:
|
|
print("Listing saved extensions")
|
|
print(file.read())
|
|
elif args.action == "save":
|
|
with open(args.file, "w") as file:
|
|
extensions = get_installed_extensions()
|
|
file.writelines("\n".join(extensions))
|
|
file.write("\n")
|
|
print(f"Wrote {len(extensions)} extensions to {args.file}")
|
|
|
|
|
|
def get_installed_extensions() -> typing.List[str]:
|
|
extensions = subprocess.run(
|
|
[
|
|
"codium",
|
|
"--list-extensions",
|
|
],
|
|
capture_output=True,
|
|
check=True,
|
|
encoding="utf8",
|
|
)
|
|
return extensions.stdout.splitlines()
|
|
|
|
|
|
def get_saved_extensions(path: str) -> typing.List[str]:
|
|
with open(path, "r") as file:
|
|
return file.read().splitlines()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|