clan-vm-manager: Fixed vm-manager start

This commit is contained in:
Qubasa
2023-12-05 13:41:02 +01:00
parent f183e759d3
commit af441e71d2
4 changed files with 21 additions and 15 deletions

View File

@@ -1,37 +1,39 @@
import argparse import argparse
import sys
import gi
from .app import Application from .app import Application
gi.require_version("Gtk", "3.0")
def join_command(args: argparse.Namespace) -> None: def join_command(args: argparse.Namespace) -> None:
print("Joining the flake") print("Joining the flake")
print(args.clan_uri) print(args.clan_uri)
app = Application()
return app.run()
def register_join_parser(parser: argparse.ArgumentParser) -> None: def register_join_parser(parser: argparse.ArgumentParser) -> None:
parser.add_argument("clan_uri", type=str, help="machine in the flake to run") parser.add_argument("clan_uri", type=str, help="clan URI to join")
parser.set_defaults(func=join_command) parser.set_defaults(func=join_command)
def start_app(args: argparse.Namespace) -> None: def start_app(args: argparse.Namespace) -> None:
app = Application(args) app = Application()
return app.run(sys.argv) return app.run()
def main() -> None: def main() -> None:
parser = argparse.ArgumentParser(description="clan-vm-manager") parser = argparse.ArgumentParser(description="clan-vm-manager")
# Add join subcommand
subparser = parser.add_subparsers( subparser = parser.add_subparsers(
title="command", title="command",
description="command to execute", description="command to execute",
help="the command to execute", help="the command to execute",
required=True,
) )
register_join_parser(subparser.add_parser("join", help="join a clan")) register_join_parser(subparser.add_parser("join", help="join a clan"))
# Executed when no command is given
parser.set_defaults(func=start_app) parser.set_defaults(func=start_app)
args = parser.parse_args() args = parser.parse_args()
args.func(args) args.func(args)

View File

@@ -91,7 +91,7 @@ class MainWindow(Gtk.ApplicationWindow):
class Application(Gtk.Application): class Application(Gtk.Application):
def __init__(self, args: argparse.Namespace) -> None: def __init__(self) -> None:
super().__init__( super().__init__(
application_id=constants["APPID"], flags=Gio.ApplicationFlags.FLAGS_NONE application_id=constants["APPID"], flags=Gio.ApplicationFlags.FLAGS_NONE
) )

View File

@@ -60,13 +60,15 @@ class VMBase:
def run(self) -> None: def run(self) -> None:
print(f"Running VM {self.name}") print(f"Running VM {self.name}")
from clan_cli import vms
import asyncio
# raise Exception("Cannot run VMs yet") # raise Exception("Cannot run VMs yet")
# vm = asyncio.run( vm = asyncio.run(
# vms.run.inspect_vm(flake_url=self._path, flake_attr="defaultVM") vms.run.inspect_vm(flake_url=self._path, flake_attr="defaultVM")
# ) )
# task = vms.run.run_vm(vm) task = vms.run.run_vm(vm)
# for line in task.log_lines(): for line in task.log_lines():
# print(line, end="") print(line, end="")
@dataclass(frozen=True) @dataclass(frozen=True)

View File

@@ -13,6 +13,8 @@ mkShell {
# prepend clan-cli for development # prepend clan-cli for development
export PYTHONPATH=../clan-cli:$PYTHONPATH export PYTHONPATH=../clan-cli:$PYTHONPATH
ln -sf ${clan-vm-manager} result
set -euox set -euox
# install desktop file # install desktop file
cp -f ${clan-vm-manager}/share/applications/clan-vm-manager.desktop ~/.local/share/applications/clan-vm-manager.desktop cp -f ${clan-vm-manager}/share/applications/clan-vm-manager.desktop ~/.local/share/applications/clan-vm-manager.desktop