Add codium-extensions script.
This commit is contained in:
		
							parent
							
								
									38df1c81fe
								
							
						
					
					
						commit
						8f970a173a
					
				| 
						 | 
				
			
			@ -0,0 +1,61 @@
 | 
			
		|||
#!/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))
 | 
			
		||||
            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()
 | 
			
		||||
		Reference in New Issue