this repo has no description smallweb.run
smallweb
4
fork

Configure Feed

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

rework log command

pomdtr fa56e647 e17a56ec

+21 -9
+21 -9
cmd/logs.go
··· 51 51 func NewCmdLogs() *cobra.Command { 52 52 var flags struct { 53 53 template string 54 + all bool 54 55 remote string 55 56 logType string 56 57 } ··· 62 63 Short: "View app logs", 63 64 Args: cobra.MaximumNArgs(1), 64 65 PreRunE: func(cmd *cobra.Command, args []string) error { 66 + if len(args) > 0 && flags.all { 67 + return fmt.Errorf("cannot set both --all and specify an app") 68 + } 69 + 65 70 flagProvider := posflag.Provider(cmd.Flags(), ".", k) 66 71 _ = k.Load(flagProvider, nil) 67 72 return nil 68 73 }, 69 74 RunE: func(cmd *cobra.Command, args []string) error { 70 75 var appName string 71 - if len(args) == 0 { 76 + if len(args) > 0 { 77 + appName = args[0] 78 + } else if !flags.all { 72 79 cwd, err := os.Getwd() 73 80 if err != nil { 74 81 return fmt.Errorf("failed to get current directory: %w", err) ··· 79 86 } 80 87 81 88 appName = filepath.Base(cwd) 82 - } else { 83 - appName = args[0] 84 89 } 85 90 86 91 if remote := k.String("remote"); remote != "" { 87 - cmd := exec.Command("ssh", remote, "smallweb", "logs", appName) 88 - cmd.Args = append(cmd.Args, args...) 92 + cmd := exec.Command("ssh", remote, "smallweb", "logs") 93 + if appName != "" { 94 + cmd.Args = append(cmd.Args, appName) 95 + } 96 + 97 + if flags.all { 98 + cmd.Args = append(cmd.Args, "--all") 99 + } 89 100 90 101 if flags.logType != "" { 91 102 cmd.Args = append(cmd.Args, "--type", flags.logType) ··· 112 123 } else { 113 124 logFilename = GetLogFilename(k.String("domain"), "http") 114 125 } 126 + 115 127 if _, err := os.Stat(logFilename); err != nil { 116 128 if err := os.MkdirAll(filepath.Dir(logFilename), 0755); err != nil { 117 129 return fmt.Errorf("failed to create log directory: %v", err) ··· 136 148 _, _ = f.Seek(0, io.SeekEnd) 137 149 138 150 if flags.logType == "console" { 139 - 140 151 reader := bufio.NewReader(f) 141 152 for { 142 153 line, err := reader.ReadString('\n') ··· 152 163 return fmt.Errorf("failed to unmarshal log line: %w", err) 153 164 } 154 165 155 - if log.App != appName { 166 + if appName != "" && log.App != appName { 156 167 continue 157 168 } 158 169 ··· 183 194 hosts[fmt.Sprintf("%s.%s", appName, k.String("domain"))] = struct{}{} 184 195 185 196 for domain, app := range k.StringMap("customDomains") { 186 - if app != appName { 197 + if appName != "" && app != appName { 187 198 continue 188 199 } 189 200 ··· 207 218 return fmt.Errorf("failed to unmarshal log line: %w", err) 208 219 } 209 220 210 - if _, ok := hosts[log.Request.Host]; !ok { 221 + if _, ok := hosts[log.Request.Host]; !flags.all && !ok { 211 222 continue 212 223 } 213 224 ··· 240 251 _ = cmd.RegisterFlagCompletionFunc("app", completeApp) 241 252 cmd.Flags().StringVar(&flags.logType, "type", "http", "log type") 242 253 _ = cmd.RegisterFlagCompletionFunc("type", cobra.FixedCompletions([]string{"http", "console"}, cobra.ShellCompDirectiveNoFileComp)) 254 + cmd.Flags().BoolVar(&flags.all, "all", false, "show all logs") 243 255 244 256 return cmd 245 257 }