diff --git a/main.go b/main.go index ae97fb1..069c97f 100644 --- a/main.go +++ b/main.go @@ -10,6 +10,7 @@ import ( "net/http" "net/url" "os" + "os/exec" "regexp" "strings" "time" @@ -31,27 +32,36 @@ func init() { log.SetFlags(log.LstdFlags | log.Lshortfile) } +func micropub(name, content, server string) error { + var args []string + if server != "" { + args = append(args, "-s", server) + } + args = append(args, "-d", "article", "--html", "--json", name, content) + cmd := exec.Command("shpub", args...) + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + return cmd.Run() +} + func main() { u, err := url.Parse(os.Args[1]) if err != nil { log.Fatal(err) } - filename := os.Args[2] + + var filename string + outputFile := false + if len(os.Args) >= 3 { + filename = os.Args[2] + outputFile = true + } re, err := regexp.Compile(``) if err != nil { log.Fatal(err) } - f, err := forceCreate(filename) - - data, err := ioutil.ReadAll(f) - if err != nil { - log.Fatal(err) - } - - f.Close() - var buf bytes.Buffer items, err := getEntriesForFeed(u) if err != nil { @@ -63,15 +73,38 @@ func main() { summary := getSummary(monday, items) + if outputFile { + _, err = buf.Write([]byte(``)) + if err != nil { + log.Fatal(err) + } + } + err = outputEntries(summary, &buf) if err != nil { log.Fatal(err) } - output := re.ReplaceAll(data, buf.Bytes()) - err = ioutil.WriteFile(filename, output, 0666) - if err != nil { - log.Fatal(err) + if outputFile { + f, err := forceCreate(filename) + + data, err := ioutil.ReadAll(f) + if err != nil { + log.Fatal(err) + } + + f.Close() + + output := re.ReplaceAll(data, buf.Bytes()) + err = ioutil.WriteFile(filename, output, 0666) + if err != nil { + log.Fatal(err) + } + } else { + err = micropub(summary.Name, buf.String(), "p83.nl") + if err != nil { + log.Fatal(err) + } } } @@ -83,9 +116,9 @@ func getSummary(monday time.Time, items []microsub.Item) Summary { grouped[itemType] = append(grouped[itemType], item) } summary := Summary{ - Name: fmt.Sprintf("Digest for Week %d-%d", week, year), - Items: items, - Grouped: grouped, + Name: fmt.Sprintf("Digest for Week %d-%d", week, year), + Items: items, + Grouped: grouped, } return summary } @@ -146,6 +179,7 @@ func outputEntries(summary Summary, w io.Writer) error { if err != nil { log.Fatal(err) } + err = t.Execute(w, summary) if err != nil { return err diff --git a/templates/weekly.html b/templates/weekly.html index fd6e663..1713274 100644 --- a/templates/weekly.html +++ b/templates/weekly.html @@ -1,32 +1,29 @@ - -
-

{{ .Name }}

- {{ range $k, $items := .Grouped }} -

{{ index $.PostTypes $k }}

-
\ No newline at end of file + {{ end }} + +{{ end }}