From b8dd7dae42e783f2236f889d276e66bedb182837 Mon Sep 17 00:00:00 2001 From: Ben Burwell Date: Tue, 13 Aug 2019 13:03:56 -0400 Subject: implement adopt --- adopt.go | 42 ++++++++++++++++++++++++++++++++++++++++++ main.go | 7 ++++++- 2 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 adopt.go diff --git a/adopt.go b/adopt.go new file mode 100644 index 0000000..9be0a77 --- /dev/null +++ b/adopt.go @@ -0,0 +1,42 @@ +package main + +import ( + "errors" + "io" + "os" + "path/filepath" +) + +func adopt(args []string) error { + if len(args) < 1 { + return errors.New("must specify at least one file to adopt") + } + for _, name := range args { + if err := adoptFile(name); err != nil { + return err + } + } + return nil +} + +func adoptFile(name string) error { + fromPath := filepath.Join(dest, name) + toPath := filepath.Join(base, "templates", name) + if err := os.MkdirAll(filepath.Dir(toPath), 0700); err != nil { + return err + } + from, err := os.Open(fromPath) + if err != nil { + return err + } + defer from.Close() + to, err := os.OpenFile(toPath, os.O_CREATE|os.O_WRONLY, 0600) + if err != nil { + return err + } + defer to.Close() + if _, err = io.Copy(to, from); err != nil { + return err + } + return nil +} diff --git a/main.go b/main.go index 27a4abb..f5e2f14 100644 --- a/main.go +++ b/main.go @@ -12,7 +12,7 @@ const ( func main() { if len(os.Args) < 2 { - fmt.Printf("usage: conf apply [files...]\n") + fmt.Printf("usage: conf [files...]\n") os.Exit(1) } switch os.Args[1] { @@ -21,6 +21,11 @@ func main() { fmt.Printf("%v\n", err) os.Exit(1) } + case "adopt": + if err := adopt(os.Args[2:]); err != nil { + fmt.Printf("%v\n", err) + os.Exit(1) + } default: fmt.Printf("unrecognized command: %s\n", os.Args[1]) os.Exit(1) -- cgit v1.2.3