From a845956238e6a41479a7abd59f5c39e71f3f85f4 Mon Sep 17 00:00:00 2001 From: Laria Carolin Chabowski Date: Thu, 3 Aug 2017 08:08:53 +0200 Subject: Implement write-dir --- write_dir.go | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 write_dir.go (limited to 'write_dir.go') 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 +} -- cgit v1.2.3-54-g00ecf