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 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 adopt.go (limited to '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 +} -- cgit v1.2.3