installer: appmanager cmd
diff --git a/core/installer/cmd/app_manager.go b/core/installer/cmd/app_manager.go
new file mode 100644
index 0000000..1fc6d64
--- /dev/null
+++ b/core/installer/cmd/app_manager.go
@@ -0,0 +1,55 @@
+package main
+
+import (
+ "os"
+
+ "github.com/giolekva/pcloud/core/installer"
+ "github.com/spf13/cobra"
+ "golang.org/x/crypto/ssh"
+)
+
+var appManagerFlags struct {
+ sshKey string
+ repoAddr string
+}
+
+func appManagerCmd() *cobra.Command {
+ cmd := &cobra.Command{
+ Use: "appmanager",
+ RunE: installCmdRun,
+ }
+ cmd.Flags().StringVar(
+ &installFlags.sshKey,
+ "ssh-key",
+ "",
+ "",
+ )
+ cmd.Flags().StringVar(
+ &installFlags.repoAddr,
+ "repo-addr",
+ "",
+ "",
+ )
+ return cmd
+}
+
+func appManagerCmdRun(cmd *cobra.Command, args []string) error {
+ sshKey, err := os.ReadFile(installFlags.sshKey)
+ if err != nil {
+ return err
+ }
+ signer, err := ssh.ParsePrivateKey(sshKey)
+ if err != nil {
+ return err
+ }
+ repo, err := cloneRepo(installFlags.repoAddr, signer)
+ if err != nil {
+ return err
+ }
+ _, err = installer.NewAppManager(repo, signer)
+ if err != nil {
+ return err
+ }
+ // TODO(gio): start server
+ return nil
+}