diff --git a/default.nix b/default.nix index ff4f40d8f..74268c803 100644 --- a/default.nix +++ b/default.nix @@ -20,6 +20,8 @@ let localPkgs = readTree: { blog = readTree ./blog; lisp = readTree ./lisp; + gopkgs = readTree ./gopkgs; + monzo_ynab = readTree ./monzo_ynab; third_party = readTree ./third_party; }; in fix(self: { diff --git a/gopkgs/utils/default.nix b/gopkgs/utils/default.nix new file mode 100644 index 000000000..d92b82ca4 --- /dev/null +++ b/gopkgs/utils/default.nix @@ -0,0 +1,11 @@ +{ + depot ? import {}, + ... +}: + +depot.buildGo.package { + name = "utils"; + srcs = [ + ./utils.go + ]; +} diff --git a/monzo_ynab/utils.go b/gopkgs/utils/utils.go similarity index 78% rename from monzo_ynab/utils.go rename to gopkgs/utils/utils.go index 9b8843f24..24a01cea9 100644 --- a/monzo_ynab/utils.go +++ b/gopkgs/utils/utils.go @@ -1,8 +1,15 @@ -package main +// Some utility functions to tidy up my Golang. +package utils -import "log" +import ( + "log" + "io/ioutil" + "net/http" + "net/http/httputil" +) -func failOn(err error) { +// Call log.Fatal with `err` when it's not nil. +func FailOn(err error) { if err != nil { log.Fatal(err) } @@ -12,7 +19,7 @@ func failOn(err error) { // like to accumulate a library of these, so that I can write scrappy Go // quickly. For now, this function just returns the body of the response back as // a string. -func simpleGet(url string, headers map[string]string, debug bool) string { +func SimpleGet(url string, headers map[string]string, debug bool) string { client := &http.Client{} req, err := http.NewRequest("GET", url, nil) if err != nil { diff --git a/monzo_ynab/default.nix b/monzo_ynab/default.nix deleted file mode 100644 index 735029bb1..000000000 --- a/monzo_ynab/default.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ depot ? import {}, ... }: - -depot.buildGo.program { - name = "monzo_ynab"; - srcs = [ - ./utils.go - ./main.go - ./monzo.go - ]; -} diff --git a/monzo_ynab/job.nix b/monzo_ynab/job.nix new file mode 100644 index 000000000..f6cb78789 --- /dev/null +++ b/monzo_ynab/job.nix @@ -0,0 +1,16 @@ +{ + depot ? import {}, + briefcase ? import {}, + ... +}: + +depot.buildGo.program { + name = "job"; + srcs = [ + ./main.go + ]; + deps = with briefcase.gopkgs; [ + kv + utils + ]; +} diff --git a/monzo_ynab/main.go b/monzo_ynab/main.go index 1709ffda7..10dc9f3ef 100644 --- a/monzo_ynab/main.go +++ b/monzo_ynab/main.go @@ -13,7 +13,6 @@ import ( "bytes" "encoding/json" "fmt" - "io/ioutil" "log" "net/http" "net/http/httputil" @@ -21,6 +20,7 @@ import ( "strings" "os" "os/exec" + "utils" ) //////////////////////////////////////////////////////////////////////////////// @@ -78,9 +78,7 @@ func getTokens(code string) *Tokens { "redirect_uri": {redirectURI}, "code": {code}, }) - if err != nil { - log.Fatal(err) - } + utils.FailOn(err) defer res.Body.Close() payload := &accessTokenResponse{} json.NewDecoder(res.Body).Decode(payload) @@ -136,9 +134,7 @@ func authorize() { req, _ := http.NewRequest("POST", "http://localhost:4242/set-tokens", bytes.NewBuffer(payload)) req.Header.Set("Content-Type", "application/json") _, err := client.Do(req) - if err != nil { - log.Fatal(err) - } + utils.FailOn(err) } // Retrieves the access token from the tokens server.