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()
 |