Use shpub to send micropub when no file is specified

This commit is contained in:
Peter Stuifzand 2019-12-23 22:36:19 +01:00
parent 745da46fb6
commit aecf1fd6b3
2 changed files with 77 additions and 46 deletions

54
main.go
View File

@ -10,6 +10,7 @@ import (
"net/http" "net/http"
"net/url" "net/url"
"os" "os"
"os/exec"
"regexp" "regexp"
"strings" "strings"
"time" "time"
@ -31,27 +32,36 @@ func init() {
log.SetFlags(log.LstdFlags | log.Lshortfile) 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() { func main() {
u, err := url.Parse(os.Args[1]) u, err := url.Parse(os.Args[1])
if err != nil { if err != nil {
log.Fatal(err) 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(`<span class="next-entry"></span>`) re, err := regexp.Compile(`<span class="next-entry"></span>`)
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }
f, err := forceCreate(filename)
data, err := ioutil.ReadAll(f)
if err != nil {
log.Fatal(err)
}
f.Close()
var buf bytes.Buffer var buf bytes.Buffer
items, err := getEntriesForFeed(u) items, err := getEntriesForFeed(u)
if err != nil { if err != nil {
@ -63,16 +73,39 @@ func main() {
summary := getSummary(monday, items) summary := getSummary(monday, items)
if outputFile {
_, err = buf.Write([]byte(`<span class="next-entry"></span>`))
if err != nil {
log.Fatal(err)
}
}
err = outputEntries(summary, &buf) err = outputEntries(summary, &buf)
if err != nil { if err != nil {
log.Fatal(err) 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()) output := re.ReplaceAll(data, buf.Bytes())
err = ioutil.WriteFile(filename, output, 0666) err = ioutil.WriteFile(filename, output, 0666)
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }
} else {
err = micropub(summary.Name, buf.String(), "p83.nl")
if err != nil {
log.Fatal(err)
}
}
} }
func getSummary(monday time.Time, items []microsub.Item) Summary { func getSummary(monday time.Time, items []microsub.Item) Summary {
@ -146,6 +179,7 @@ func outputEntries(summary Summary, w io.Writer) error {
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }
err = t.Execute(w, summary) err = t.Execute(w, summary)
if err != nil { if err != nil {
return err return err

View File

@ -1,6 +1,3 @@
<span class="next-entry"></span>
<div class="h-entry">
<h2 class="p-name">{{ .Name }}</h2>
{{ range $k, $items := .Grouped }} {{ range $k, $items := .Grouped }}
<h3>{{ index $.PostTypes $k }}</h3> <h3>{{ index $.PostTypes $k }}</h3>
<ul class="{{ $k }}"> <ul class="{{ $k }}">
@ -19,7 +16,8 @@
{{ end }} {{ end }}
{{ else }} {{ else }}
{{ if .Checkin }} {{ if .Checkin }}
<li><a href="{{ .URL }}">Checkin at {{ .Checkin.Name }} in {{ .Checkin.Locality }}, {{ .Checkin.Region }}</a></li> <li><a href="{{ .URL }}">Checkin at {{ .Checkin.Name }} in {{ .Checkin.Locality }}
, {{ .Checkin.Region }}</a></li>
{{ else if .Content }} {{ else if .Content }}
<li><a href="{{ .URL }}">{{ .Content.Text }}</a></li> <li><a href="{{ .URL }}">{{ .Content.Text }}</a></li>
{{ else }} {{ else }}
@ -29,4 +27,3 @@
{{ end }} {{ end }}
</ul> </ul>
{{ end }} {{ end }}
</div>