Launcher: take app information from AppManager
Change-Id: I0dedd5a710adc4810feb9210b903655a3d2f5533
diff --git a/core/installer/cmd/launcher.go b/core/installer/cmd/launcher.go
index d86196b..be3b208 100644
--- a/core/installer/cmd/launcher.go
+++ b/core/installer/cmd/launcher.go
@@ -2,14 +2,21 @@
import (
"fmt"
+ "os"
+ "github.com/giolekva/pcloud/core/installer"
+ "github.com/giolekva/pcloud/core/installer/soft"
"github.com/giolekva/pcloud/core/installer/welcome"
"github.com/spf13/cobra"
+ "golang.org/x/crypto/ssh"
)
var launcherFlags struct {
- logoutUrl string
- port int
+ logoutUrl string
+ port int
+ repoAddr string
+ sshKey string
+ appManager *installer.AppManager
}
func launcherCmd() *cobra.Command {
@@ -29,14 +36,50 @@
"",
"",
)
+ cmd.Flags().StringVar(
+ &launcherFlags.repoAddr,
+ "repo-addr",
+ "",
+ "The address of the repository",
+ )
+ cmd.Flags().StringVar(
+ &launcherFlags.sshKey,
+ "ssh-key",
+ "",
+ "The path to the SSH key file",
+ )
return cmd
}
func launcherCmdRun(cmd *cobra.Command, args []string) error {
+ sshKey, err := os.ReadFile(launcherFlags.sshKey)
+ if err != nil {
+ return fmt.Errorf("failed reading ssh key: %v", err)
+ }
+ signer, err := ssh.ParsePrivateKey(sshKey)
+ if err != nil {
+ return fmt.Errorf("failed parsing ssh private key: %v", err)
+ }
+ addr, err := soft.ParseRepositoryAddress(launcherFlags.repoAddr)
+ if err != nil {
+ return err
+ }
+ repo, err := soft.CloneRepository(addr, signer)
+ if err != nil {
+ return fmt.Errorf("failed cloning repository: %v", err)
+ }
+ repoIO, err := installer.NewRepoIO(repo, signer)
+ if err != nil {
+ return fmt.Errorf("failed initializing RepoIO: %v", err)
+ }
+ appManager, err := installer.NewAppManager(repoIO, nil, "/apps")
+ if err != nil {
+ return fmt.Errorf("failed to create AppManager: %v", err)
+ }
s, err := welcome.NewLauncherServer(
launcherFlags.port,
launcherFlags.logoutUrl,
- &welcome.FakeAppDirectory{},
+ &welcome.AppManagerDirectory{AppManager: appManager},
)
if err != nil {
return fmt.Errorf("failed to create LauncherServer: %v", err)