34 lines
1000 B
Python
34 lines
1000 B
Python
import argparse
|
|
import logging
|
|
from typing import Dict
|
|
|
|
from ..async_cmd import CmdOut, run, runforcli
|
|
from ..nix import nix_shell
|
|
from .folders import machine_folder
|
|
|
|
log = logging.getLogger(__name__)
|
|
|
|
async def create_machine(name: str) -> Dict[str, CmdOut]:
|
|
folder = machine_folder(name)
|
|
folder.mkdir(parents=True, exist_ok=True)
|
|
|
|
# create empty settings.json file inside the folder
|
|
with open(folder / "settings.json", "w") as f:
|
|
f.write("{}")
|
|
response = {}
|
|
out = await run(nix_shell(["git"], ["git", "add", str(folder)]))
|
|
response["git add"] = out
|
|
|
|
out = await run(nix_shell(["git"], ["git", "commit", "-m", f"Added machine {name}", str(folder)]))
|
|
response["git commit"] = out
|
|
|
|
return response
|
|
|
|
def create_command(args: argparse.Namespace) -> None:
|
|
runforcli(create_machine, args.host)
|
|
|
|
|
|
def register_create_parser(parser: argparse.ArgumentParser) -> None:
|
|
parser.add_argument("host", type=str)
|
|
parser.set_defaults(func=create_command)
|