Browse Source

Simplify Heroku deployment

Frédéric Guillot 8 years ago
parent
commit
0429bbb19d
3 changed files with 28 additions and 0 deletions
  1. 4 0
      Gopkg.toml
  2. 10 0
      cli/cli.go
  3. 14 0
      config/config.go

+ 4 - 0
Gopkg.toml

@@ -20,6 +20,10 @@
 #  name = "github.com/x/y"
 #  version = "2.4.0"
 
+[metadata.heroku]
+  root-package = "github.com/miniflux/miniflux"
+  go-version = "go1.10"
+  ensure = "false"
 
 [[constraint]]
   name = "github.com/PuerkitoBio/goquery"

+ 10 - 0
cli/cli.go

@@ -67,5 +67,15 @@ func Parse() {
 		return
 	}
 
+	// Run migrations and start the deamon.
+	if cfg.RunMigrations() {
+		store.Migrate()
+	}
+
+	// Create admin user and start the deamon.
+	if cfg.CreateAdmin() {
+		createAdmin(store)
+	}
+
 	daemon.Run(cfg, store)
 }

+ 14 - 0
config/config.go

@@ -110,6 +110,10 @@ func (c *Config) DatabaseMaxConnections() int {
 
 // ListenAddr returns the listen address for the HTTP server.
 func (c *Config) ListenAddr() string {
+	if port := os.Getenv("PORT"); port != "" {
+		return ":" + port
+	}
+
 	return c.get("LISTEN_ADDR", defaultListenAddr)
 }
 
@@ -183,6 +187,16 @@ func (c *Config) HasHSTS() bool {
 	return c.get("DISABLE_HSTS", "") == ""
 }
 
+// RunMigrations returns true if the environment variable RUN_MIGRATIONS is not empty.
+func (c *Config) RunMigrations() bool {
+	return c.get("RUN_MIGRATIONS", "") != ""
+}
+
+// CreateAdmin returns true if the environment variable CREATE_ADMIN is not empty.
+func (c *Config) CreateAdmin() bool {
+	return c.get("CREATE_ADMIN", "") != ""
+}
+
 // NewConfig returns a new Config.
 func NewConfig() *Config {
 	return &Config{IsHTTPS: os.Getenv("HTTPS") != ""}