this repo has no description smallweb.run
smallweb
4
fork

Configure Feed

Select the types of activity you want to include in your feed.

add a way to stream logs from remote

pomdtr 9366a3de 5c3d06cc

+36
+34
cmd/logs.go
··· 6 6 "fmt" 7 7 "io" 8 8 "os" 9 + "os/exec" 9 10 "path/filepath" 10 11 "text/template" 11 12 "time" 12 13 13 14 "github.com/adrg/xdg" 15 + "github.com/knadh/koanf/providers/posflag" 14 16 "github.com/spf13/cobra" 15 17 ) 16 18 ··· 50 52 var flags struct { 51 53 app string 52 54 template string 55 + remote string 53 56 console bool 54 57 } 55 58 ··· 59 62 ValidArgsFunction: cobra.FixedCompletions([]string{"http", "console"}, cobra.ShellCompDirectiveNoFileComp), 60 63 Short: "View app logs", 61 64 Args: cobra.NoArgs, 65 + PreRunE: func(cmd *cobra.Command, args []string) error { 66 + flagProvider := posflag.Provider(cmd.Flags(), ".", k) 67 + _ = k.Load(flagProvider, nil) 68 + return nil 69 + }, 62 70 RunE: func(cmd *cobra.Command, args []string) error { 71 + if remote := k.String("remote"); remote != "" { 72 + cmd := exec.Command("ssh", remote, "smallweb", "logs") 73 + if flags.app != "" { 74 + cmd.Args = append(cmd.Args, "--app", flags.app) 75 + } 76 + 77 + if flags.console { 78 + cmd.Args = append(cmd.Args, "--console") 79 + } 80 + 81 + if flags.template != "" { 82 + cmd.Args = append(cmd.Args, "--template", flags.template) 83 + } 84 + 85 + cmd.Stdout = os.Stdout 86 + cmd.Stderr = os.Stderr 87 + cmd.Stdin = os.Stdin 88 + 89 + if err := cmd.Run(); err != nil { 90 + return fmt.Errorf("failed to run remote command: %w", err) 91 + } 92 + 93 + return nil 94 + } 95 + 63 96 var logFilename string 64 97 if flags.console { 65 98 logFilename = GetLogFilename(k.String("domain"), "console") ··· 193 226 } 194 227 195 228 cmd.Flags().StringVar(&flags.template, "template", "", "output logs using a Go template") 229 + cmd.Flags().StringVar(&flags.remote, "remote", "", "ssh remote") 196 230 cmd.Flags().StringVar(&flags.app, "app", "", "filter by app") 197 231 _ = cmd.RegisterFlagCompletionFunc("app", completeApp) 198 232 cmd.Flags().BoolVar(&flags.console, "console", false, "output console logs")
+2
cmd/root.go
··· 37 37 return "dir", v 38 38 case "SMALLWEB_DOMAIN": 39 39 return "domain", v 40 + case "SMALLWEB_REMOTE": 41 + return "remote", v 40 42 case "SMALLWEB_CUSTOM_DOMAINS": 41 43 customDomains := make(map[string]string) 42 44 for _, entry := range strings.Split(v, ";") {