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