diff options
author | Laria Carolin Chabowski <laria@laria.me> | 2017-08-03 08:08:53 +0200 |
---|---|---|
committer | Laria Carolin Chabowski <laria@laria.me> | 2017-09-26 21:35:40 +0200 |
commit | a845956238e6a41479a7abd59f5c39e71f3f85f4 (patch) | |
tree | c611d5bebf7659e0d52bae4d3693957856eb1014 /write_dir.go | |
parent | 9f8ced40c574054de052849c43f69b66e1e91640 (diff) | |
download | petrific-a845956238e6a41479a7abd59f5c39e71f3f85f4.tar.gz petrific-a845956238e6a41479a7abd59f5c39e71f3f85f4.tar.bz2 petrific-a845956238e6a41479a7abd59f5c39e71f3f85f4.zip |
Implement write-dir
Diffstat (limited to 'write_dir.go')
-rw-r--r-- | write_dir.go | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/write_dir.go b/write_dir.go new file mode 100644 index 0000000..cc148c2 --- /dev/null +++ b/write_dir.go @@ -0,0 +1,49 @@ +package main + +import ( + "code.laria.me/petrific/backup" + "code.laria.me/petrific/cache" + "code.laria.me/petrific/fs" + "fmt" + "os" + "path" +) + +func WriteDir(args []string) int { + if len(args) != 1 || len(args[0]) == 0 { + subcmdUsage("write-dir", "directory", nil)() + return 2 + } + + dir_path := args[0] + // Make path absolute + if dir_path[0] != '/' { + pwd, err := os.Getwd() + if err != nil { + fmt.Fprintf(os.Stderr, "write-dir: %s", err) + return 1 + } + dir_path = pwd + "/" + dir_path + } + dir_path = path.Clean(dir_path) + + d, err := fs.OpenOSFile(dir_path) + if err != nil { + fmt.Fprintf(os.Stderr, "write-dir: %s", err) + return 1 + } + + if d.Type() != fs.FDir { + fmt.Fprintf(os.Stderr, "write-dir: %s is not a directory", dir_path) + return 1 + } + + id, err := backup.WriteDir(objectstore, dir_path, d, cache.NopCache{}) + if err != nil { + fmt.Fprintf(os.Stderr, "write-dir: %s", err) + return 1 + } + + fmt.Println(id) + return 0 +} |