From a678af8e1ca8982d550ee0fd034ad98ebaaa7747 Mon Sep 17 00:00:00 2001 From: KatolaZ Date: Thu, 6 Jul 2017 22:05:29 +0100 Subject: Preliminary stuff -- more work needed --- scorsh.go | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 scorsh.go (limited to 'scorsh.go') diff --git a/scorsh.go b/scorsh.go new file mode 100644 index 0000000..cf8e5f0 --- /dev/null +++ b/scorsh.go @@ -0,0 +1,81 @@ +package main + +import ( + "errors" + "golang.org/x/crypto/openpgp" + "log" + "os" +) + +const ( + SCORSH_ERR_NO_FILE = -(1 << iota) + SCORSH_ERR_KEYRING + SCORSH_ERR_NO_REPO + SCORSH_ERR_NO_COMMIT + SCORSH_ERR_SIGNATURE +) + +type SCORSHmsg struct { + repo string + branch string + old_rev string + new_rev string +} + +func SCORSHErr(err int) error { + + var err_str string + + switch err { + case SCORSH_ERR_NO_FILE: + err_str = "Invalid file name" + case SCORSH_ERR_KEYRING: + err_str = "Invalid keyring" + case SCORSH_ERR_NO_REPO: + err_str = "Invalid repository" + case SCORSH_ERR_NO_COMMIT: + err_str = "Invalid commit ID" + case SCORSH_ERR_SIGNATURE: + err_str = "Invalid signature" + default: + err_str = "Generic Error" + } + + return errors.New(err_str) + +} + +func SCORSHWorker(keyring string, c_msg chan SCORSHmsg, c_status chan int) { + + // read the worker configuration file + + // Open the keyring file + f, err := os.Open(keyring) + defer f.Close() + + if err != nil { + log.Printf("[worker] cannot open file %s\n", keyring) + c_status <- SCORSH_ERR_NO_FILE + return + } + + // load the keyring + kr, err := openpgp.ReadArmoredKeyRing(f) + + if err != nil { + log.Printf("[worker] cannot open keyring %s\n", keyring) + log.Printf("%s\n", err) + c_status <- SCORSH_ERR_KEYRING + return + } + + // wait for messages from the c_msg channel + + msg := <-c_msg + + // process message + ret := walk_commits(msg, kr) + + c_status <- ret + +} -- cgit v1.2.3