1package main 2 3import ( 4 "log" 5 "os" 6 7 "github.com/jesseduffield/horcrux/pkg/commands" 8) 9 10func main() { 11 // I'd use `flaggy` but I like the idea of this repo having no dependencies 12 // Unfortunately that means I'm awkwardly making use of the standard flag package 13 if len(os.Args) < 2 { 14 usage() 15 } 16 17 if os.Args[1] == "bind" { 18 var dir string 19 if len(os.Args) == 2 { 20 dir = "." 21 } else { 22 dir = os.Args[2] 23 } 24 paths, err := commands.GetHorcruxPathsInDir(dir) 25 if err != nil { 26 log.Fatal(err) 27 } 28 overwrite := false 29 for { 30 if err := commands.Bind(paths, "", overwrite); err != nil { 31 if err != os.ErrExist { 32 log.Fatal(err) 33 } 34 overwriteResponse := commands.Prompt("A file already exists at destination. Overwrite? (Y/N):") 35 if overwriteResponse == "Y" || overwriteResponse == "y" || overwriteResponse == "yes" { 36 overwrite = true 37 } else { 38 log.Fatal("You have chosen not to overwrite the file. Cancelling.") 39 } 40 } else { 41 break 42 } 43 } 44 45 return 46 } 47 48 if os.Args[len(os.Args)-2] == "split" { 49 if len(os.Args) == 2 { 50 usage() 51 } 52 path := os.Args[len(os.Args)-1] 53 if err := commands.SplitWithPrompt(path); err != nil { 54 log.Fatal(err) 55 } 56 return 57 } 58 59 usage() 60} 61 62func usage() { 63 log.Fatal("usage: `horcrux bind [<directory>]` | `horcrux [-t] [-n] split <filename>`\n-n: number of horcruxes to make\n-t: number of horcruxes required to resurrect the original file\nexample: horcrux -t 3 -n 5 split diary.txt") 64} 65