powerful but friendly backup program that runs in your tray, powered by restic devins.page/restray
go restic system-tray
2

Configure Feed

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

fix(cli): pre-parsing

intergrav (Jun 29, 2026, 2:19 PM EDT) be55cbb8 27f618bf

+21 -12
-6
cmd/restray/cli.go
··· 55 55 fs := flag.NewFlagSet("restray", flag.ContinueOnError) 56 56 fs.StringVar(&profileName, "p", "", "profile name") 57 57 fs.StringVar(&profileName, "profile", "", "profile name") 58 - var configDir string 59 - fs.StringVar(&configDir, "c", "", "config directory") 60 - fs.StringVar(&configDir, "config", "", "config directory") 61 58 fs.Parse(args) 62 - if configDir != "" { 63 - configDirOverride = configDir 64 - } 65 59 return profileName, fs.Args() 66 60 } 67 61
+21 -6
cmd/restray/main.go
··· 11 11 12 12 const version = "0.12.1" 13 13 14 + func preParseGlobalFlags() (verbose bool, remaining []string) { 15 + args := os.Args[1:] 16 + for i := 0; i < len(args); i++ { 17 + switch args[i] { 18 + case "-v", "--verbose": 19 + verbose = true 20 + case "-c", "--config": 21 + if i+1 < len(args) { 22 + configDirOverride = args[i+1] 23 + i++ 24 + } 25 + default: 26 + remaining = append(remaining, args[i]) 27 + } 28 + } 29 + return verbose, remaining 30 + } 31 + 14 32 func main() { 15 - verbose := len(os.Args) > 1 && (os.Args[1] == "-v" || os.Args[1] == "--verbose") 16 - if verbose { 17 - os.Args = append(os.Args[:1], os.Args[2:]...) 18 - } 33 + verbose, args := preParseGlobalFlags() 19 34 20 - if len(os.Args) > 1 { 21 - os.Exit(runCLI(os.Args[1:])) 35 + if len(args) > 0 { 36 + os.Exit(runCLI(args)) 22 37 } 23 38 24 39 os.MkdirAll(configDir(), 0700)