mirror of
https://github.com/jimeh/kotaku-uk-rss.git
synced 2026-02-19 02:46:41 +00:00
Add support for basic CLI flags
This commit is contained in:
@@ -4,7 +4,6 @@ import (
|
||||
"fmt"
|
||||
"log"
|
||||
"net/http"
|
||||
"os"
|
||||
"sort"
|
||||
"sync"
|
||||
"time"
|
||||
@@ -53,12 +52,14 @@ type RssCache struct {
|
||||
body string
|
||||
}
|
||||
|
||||
// Set allows setting the RssCache body.
|
||||
func (r *RssCache) Set(value string) {
|
||||
r.Lock()
|
||||
defer r.Unlock()
|
||||
r.body = value
|
||||
}
|
||||
|
||||
// Get allows getting the RssCache body.
|
||||
func (r *RssCache) Get() string {
|
||||
r.RLock()
|
||||
defer r.RUnlock()
|
||||
@@ -134,7 +135,7 @@ func truncateString(s string, l int) string {
|
||||
return s[:end]
|
||||
}
|
||||
|
||||
func getArticlesFromUrl(url string) Articles {
|
||||
func getArticlesFromURL(url string) Articles {
|
||||
doc := fetchDocument(url)
|
||||
section := extractArticleSection(doc)
|
||||
return parseArticleSection(section)
|
||||
@@ -184,9 +185,7 @@ func updateRssLoop() {
|
||||
articles := Articles{}
|
||||
for _, url := range pageUrls {
|
||||
fmt.Printf("fetching and parsing articles from: %s\n", url)
|
||||
for _, article := range getArticlesFromUrl(url) {
|
||||
articles = append(articles, article)
|
||||
}
|
||||
articles = append(articles, getArticlesFromURL(url)...)
|
||||
}
|
||||
|
||||
fmt.Printf("building feed cache... ")
|
||||
@@ -197,38 +196,3 @@ func updateRssLoop() {
|
||||
time.Sleep(60 * time.Second)
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Configuration
|
||||
*/
|
||||
|
||||
var rootURL = "http://www.kotaku.co.uk"
|
||||
|
||||
var pageUrls = []string{
|
||||
rootURL + "/",
|
||||
rootURL + "/page/2/",
|
||||
rootURL + "/page/3/",
|
||||
}
|
||||
|
||||
/*
|
||||
Main...
|
||||
*/
|
||||
|
||||
var rssCache = RssCache{}
|
||||
|
||||
func main() {
|
||||
port := "80"
|
||||
if os.Getenv("PORT") != "" {
|
||||
port = os.Getenv("PORT")
|
||||
}
|
||||
|
||||
http.HandleFunc("/rss", serveRss)
|
||||
|
||||
go updateRssLoop()
|
||||
|
||||
fmt.Println("Listing on port " + port + "...")
|
||||
err := http.ListenAndServe(":"+port, nil)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
70
main.go
Normal file
70
main.go
Normal file
@@ -0,0 +1,70 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"net/http"
|
||||
"os"
|
||||
|
||||
"gopkg.in/alecthomas/kingpin.v2"
|
||||
)
|
||||
|
||||
// Version gets populated with version at build-time.
|
||||
var Version string
|
||||
var defaultPort = "8080"
|
||||
|
||||
var (
|
||||
port = kingpin.Flag("port", "Port to listen to.").Short('p').
|
||||
Default(defaultPort).String()
|
||||
bind = kingpin.Flag("bind", "Bind address.").Short('b').
|
||||
Default("0.0.0.0").String()
|
||||
version = kingpin.Flag("version", "Print version info.").
|
||||
Short('v').Bool()
|
||||
)
|
||||
|
||||
/*
|
||||
Configuration
|
||||
*/
|
||||
|
||||
var rootURL = "http://www.kotaku.co.uk"
|
||||
|
||||
var pageUrls = []string{
|
||||
rootURL + "/",
|
||||
rootURL + "/page/2/",
|
||||
rootURL + "/page/3/",
|
||||
}
|
||||
|
||||
/*
|
||||
Main...
|
||||
*/
|
||||
|
||||
var rssCache = RssCache{}
|
||||
|
||||
func printVersion() {
|
||||
fmt.Println("kotaku-uk-rss " + Version)
|
||||
}
|
||||
|
||||
func startServer() {
|
||||
if *port == defaultPort {
|
||||
if envPort := os.Getenv("PORT"); envPort != "" {
|
||||
*port = envPort
|
||||
}
|
||||
}
|
||||
|
||||
http.HandleFunc("/rss", serveRss)
|
||||
|
||||
address := *bind + ":" + *port
|
||||
fmt.Println("Listening on " + address)
|
||||
log.Fatal(http.ListenAndServe(address, nil))
|
||||
}
|
||||
|
||||
func main() {
|
||||
kingpin.Parse()
|
||||
|
||||
if *version {
|
||||
printVersion()
|
||||
} else {
|
||||
go updateRssLoop()
|
||||
startServer()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user