aboutsummaryrefslogtreecommitdiff
path: root/adopt.go
diff options
context:
space:
mode:
Diffstat (limited to 'adopt.go')
-rw-r--r--adopt.go42
1 files changed, 42 insertions, 0 deletions
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
+}