summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/pool-import/file-hasher.go58
-rw-r--r--src/pool-import/main.go21
2 files changed, 74 insertions, 5 deletions
diff --git a/src/pool-import/file-hasher.go b/src/pool-import/file-hasher.go
new file mode 100644
index 0000000..43dc6d9
--- /dev/null
+++ b/src/pool-import/file-hasher.go
@@ -0,0 +1,58 @@
+//
+// pool-import
+//
+// Copyright (C) 2016 Christian Pointner <equinox@helsinki.at>
+//
+// This file is part of pool-import.
+//
+// pool-import is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// any later version.
+//
+// pool-import is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with pool-import. If not, see <http://www.gnu.org/licenses/>.
+//
+
+package main
+
+import (
+ "bytes"
+ "encoding/json"
+ "os"
+ "os/exec"
+)
+
+type FileMap map[string]string
+
+// TODO: actually call this via ssh
+func callFileHasher() (files FileMap, err error) {
+ var stdin, log *os.File
+ if stdin, err = os.Open("sample/file-hasher-requst.json"); err != nil {
+ return
+ }
+ if log, err = os.OpenFile("file-hasher.log", os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0640); err != nil {
+ return
+ }
+
+ cmd := exec.Command("bin/file-hasher")
+ var stdout bytes.Buffer
+ cmd.Stdin = stdin
+ cmd.Stdout = &stdout
+ cmd.Stderr = log
+
+ if err = cmd.Run(); err != nil {
+ return
+ }
+
+ if err = json.NewDecoder(&stdout).Decode(&files); err != nil {
+ return
+ }
+
+ return
+}
diff --git a/src/pool-import/main.go b/src/pool-import/main.go
index 0963ed0..8e68d15 100644
--- a/src/pool-import/main.go
+++ b/src/pool-import/main.go
@@ -42,11 +42,10 @@ func Done(res rhimport.Result, userdata interface{}) bool {
}
func main() {
- if len(os.Args) < 3 {
- log.Fatal("Usage: pool-import <pool group> <directory> [ <directory [ .. ] ]")
+ if len(os.Args) < 2 {
+ log.Fatal("Usage: pool-import <pool group>")
}
group := os.Args[1]
- directories := os.Args[2:]
conf, err := rhimport.NewConfig(RD_CONF, "http://localhost/rd-bin/rdxport.cgi", "/tmp/", "snd/")
if err != nil {
@@ -78,7 +77,7 @@ func main() {
signal.Notify(C, os.Interrupt, syscall.SIGHUP, syscall.SIGQUIT, syscall.SIGTERM)
stdlog.Println("***************************************************************")
- stdlog.Printf("*** will import into group '%s' from %d directories", group, len(directories))
+ stdlog.Printf("*** will import into group '%s'", group)
stdlog.Println("***************************************************************")
carts, err := db.GetInterface().GetPoolCartList(rddb.PoolListEntry{Group: group})
@@ -96,7 +95,19 @@ func main() {
C <- syscall.SIGTERM
}()
- // TODO: use file-hasher to get file hashes
+ files, err := callFileHasher()
+ if err != nil {
+ stdlog.Fatal("Calling file hasher failed:", err)
+ }
+
+ stdlog.Println("")
+ stdlog.Printf(" %d files", len(files))
+ stdlog.Println("****************************")
+ for hash, path := range files {
+ stdlog.Printf("%s: %s", hash, path)
+ }
+ stdlog.Println("****************************")
+
}()
<-C