diff options
author | Laria Carolin Chabowski <laria@laria.me> | 2017-08-08 08:06:09 +0200 |
---|---|---|
committer | Laria Carolin Chabowski <laria@laria.me> | 2017-09-26 21:35:40 +0200 |
commit | d368a0d3e79bab4e5da4872934240489a691b875 (patch) | |
tree | 075e59e08b1f860adbdd2bdb7eac634724f8b6a9 /restore_dir.go | |
parent | bab0697f0e8a98cfa28c7527ee616e954c7afe91 (diff) | |
download | petrific-d368a0d3e79bab4e5da4872934240489a691b875.tar.gz petrific-d368a0d3e79bab4e5da4872934240489a691b875.tar.bz2 petrific-d368a0d3e79bab4e5da4872934240489a691b875.zip |
Add restore-dir command
Diffstat (limited to 'restore_dir.go')
-rw-r--r-- | restore_dir.go | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/restore_dir.go b/restore_dir.go new file mode 100644 index 0000000..65f2785 --- /dev/null +++ b/restore_dir.go @@ -0,0 +1,48 @@ +package main + +import ( + "code.laria.me/petrific/backup" + "code.laria.me/petrific/fs" + "code.laria.me/petrific/objects" + "fmt" + "os" +) + +func RestoreDir(args []string) int { + usage := subcmdUsage("restore-dir", "directory object-id", nil) + + if len(args) != 2 { + usage() + return 2 + } + + dir_path, err := abspath(args[0]) + if err != nil { + fmt.Fprintf(os.Stderr, "restore-dir: %s\n", err) + return 1 + } + + d, err := fs.OpenOSFile(dir_path) + if err != nil { + fmt.Fprintf(os.Stderr, "restore-dir: %s\n", err) + return 1 + } + + if d.Type() != fs.FDir { + fmt.Fprintf(os.Stderr, "restore-dir: %s is not a directory\n", dir_path) + return 1 + } + + id, err := objects.ParseObjectId(args[1]) + if err != nil { + fmt.Fprintf(os.Stderr, "restore-dir: %s\n", err) + return 1 + } + + if err := backup.RestoreDir(objectstore, id, d); err != nil { + fmt.Fprintf(os.Stderr, "restore-dir: %s\n", err) + return 1 + } + + return 0 +} |