summaryrefslogtreecommitdiff
path: root/examples/docker/admin/cmd/ponzu/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'examples/docker/admin/cmd/ponzu/main.go')
-rw-r--r--examples/docker/admin/cmd/ponzu/main.go293
1 files changed, 0 insertions, 293 deletions
diff --git a/examples/docker/admin/cmd/ponzu/main.go b/examples/docker/admin/cmd/ponzu/main.go
deleted file mode 100644
index b3dc708..0000000
--- a/examples/docker/admin/cmd/ponzu/main.go
+++ /dev/null
@@ -1,293 +0,0 @@
-package main
-
-import (
- "flag"
- "fmt"
- "log"
- "net/http"
- "os"
- "os/exec"
- "path/filepath"
- "strings"
-
- "github.com/ponzu-cms/ponzu/system/admin"
- "github.com/ponzu-cms/ponzu/system/api"
- "github.com/ponzu-cms/ponzu/system/api/analytics"
- "github.com/ponzu-cms/ponzu/system/db"
- "github.com/ponzu-cms/ponzu/system/tls"
-
- _ "github.com/ponzu-cms/ponzu/content"
-)
-
-var (
- usage = usageHeader + usageNew + usageGenerate +
- usageBuild + usageRun + usageUpgrade + usageAdd + usageVersion
- port int
- httpsport int
- https bool
- devhttps bool
- cli bool
-
- // for ponzu internal / core development
- dev bool
- fork string
- gocmd string
-)
-
-func main() {
- flag.Usage = func() {
- fmt.Println(usage)
- }
-
- flag.IntVar(&port, "port", 8080, "port for ponzu to bind its HTTP listener")
- flag.IntVar(&httpsport, "httpsport", 443, "port for ponzu to bind its HTTPS listener")
- flag.BoolVar(&https, "https", false, "enable automatic TLS/SSL certificate management")
- flag.BoolVar(&devhttps, "devhttps", false, "[dev environment] enable automatic TLS/SSL certificate management")
- flag.BoolVar(&dev, "dev", false, "modify environment for Ponzu core development")
- flag.BoolVar(&cli, "cli", false, "specify that information should be returned about the CLI, not project")
- flag.StringVar(&fork, "fork", "", "modify repo source for Ponzu core development")
- flag.StringVar(&gocmd, "gocmd", "go", "custom go command if using beta or new release of Go")
- flag.Parse()
-
- args := flag.Args()
-
- if len(args) < 1 {
- fmt.Println(usage)
- os.Exit(0)
- }
-
- switch args[0] {
- case "help", "h":
- if len(args) < 2 {
- fmt.Println(usageHelp)
- fmt.Println(usage)
- os.Exit(0)
- }
-
- switch args[1] {
- case "new":
- fmt.Println(usageNew)
- os.Exit(0)
-
- case "generate", "gen", "g":
- fmt.Println(usageGenerate)
- os.Exit(0)
-
- case "build":
- fmt.Println(usageBuild)
- os.Exit(0)
-
- case "run":
- fmt.Println(usageRun)
- os.Exit(0)
-
- case "upgrade":
- fmt.Println(usageUpgrade)
- os.Exit(0)
-
- case "version", "v":
- fmt.Println(usageVersion)
- os.Exit(0)
-
- case "add", "a":
- fmt.Println(usageAdd)
- os.Exit(0)
- }
-
- case "new":
- if len(args) < 2 {
- fmt.Println(usageNew)
- os.Exit(0)
- }
-
- err := newProjectInDir(args[1])
- if err != nil {
- fmt.Println(err)
- os.Exit(1)
- }
-
- case "generate", "gen", "g":
- if len(args) < 3 {
- fmt.Println(usageGenerate)
- os.Exit(0)
- }
-
- // check what we are asked to generate
- switch args[1] {
- case "content", "c":
- err := generateContentType(args[2:])
- if err != nil {
- fmt.Println(err)
- os.Exit(1)
- }
- default:
- msg := fmt.Sprintf("Generator '%s' is not implemented.", args[1])
- fmt.Println(msg)
- }
-
- case "build":
- err := buildPonzuServer(args)
- if err != nil {
- fmt.Println(err)
- os.Exit(1)
- }
-
- case "run":
- var addTLS string
- if https {
- addTLS = "--https"
- } else {
- addTLS = "--https=false"
- }
-
- if devhttps {
- addTLS = "--devhttps"
- }
-
- var services string
- if len(args) > 1 {
- services = args[1]
- } else {
- services = "admin,api"
- }
-
- name := buildOutputName()
- buildPathName := strings.Join([]string{".", name}, string(filepath.Separator))
- serve := exec.Command(buildPathName,
- fmt.Sprintf("--port=%d", port),
- fmt.Sprintf("--httpsport=%d", httpsport),
- addTLS,
- "serve",
- services,
- )
- serve.Stderr = os.Stderr
- serve.Stdout = os.Stdout
-
- err := serve.Run()
- if err != nil {
- fmt.Println(err)
- os.Exit(1)
- }
-
- case "serve", "s":
- db.Init()
- defer db.Close()
-
- analytics.Init()
- defer analytics.Close()
-
- if len(args) > 1 {
- services := strings.Split(args[1], ",")
-
- for _, service := range services {
- if service == "api" {
- api.Run()
- } else if service == "admin" {
- admin.Run()
- } else {
- fmt.Println("To execute 'ponzu serve', you must specify which service to run.")
- fmt.Println("$ ponzu --help")
- os.Exit(1)
- }
- }
- }
-
- // save the https port the system is listening on
- err := db.PutConfig("https_port", fmt.Sprintf("%d", httpsport))
- if err != nil {
- log.Fatalln("System failed to save config. Please try to run again.", err)
- }
-
- // cannot run production HTTPS and development HTTPS together
- if devhttps {
- fmt.Println("Enabling self-signed HTTPS... [DEV]")
-
- go tls.EnableDev()
- fmt.Println("Server listening on https://localhost:10443 for requests... [DEV]")
- fmt.Println("----")
- fmt.Println("If your browser rejects HTTPS requests, try allowing insecure connections on localhost.")
- fmt.Println("on Chrome, visit chrome://flags/#allow-insecure-localhost")
-
- } else if https {
- fmt.Println("Enabling HTTPS...")
-
- go tls.Enable()
- fmt.Printf("Server listening on :%s for HTTPS requests...\n", db.ConfigCache("https_port").(string))
- }
-
- // save the https port the system is listening on so internal system can make
- // HTTP api calls while in dev or production w/o adding more cli flags
- err = db.PutConfig("http_port", fmt.Sprintf("%d", port))
- if err != nil {
- log.Fatalln("System failed to save config. Please try to run again.", err)
- }
-
- fmt.Printf("Server listening on :%d for HTTP requests...\n", port)
- fmt.Println("\nvisit `/admin` to get started.")
- log.Fatalln(http.ListenAndServe(fmt.Sprintf(":%d", port), nil))
-
- case "version", "v":
- // read ponzu.json value to Stdout
-
- p, err := ponzu(cli)
- if err != nil {
- fmt.Println(err)
- os.Exit(1)
- }
-
- fmt.Fprintf(os.Stdout, "Ponzu v%s\n", p["version"])
-
- case "upgrade":
- // confirm since upgrade will replace Ponzu core files
- path, err := os.Getwd()
- if err != nil {
- fmt.Println("Failed to find current directory.", err)
- os.Exit(1)
- }
-
- fmt.Println("Only files you added to this directory, 'addons' and 'content' will be preserved.")
- fmt.Println("Upgrade this project? (y/N):")
-
- answer, err := getAnswer()
- if err != nil {
- fmt.Println(err)
- os.Exit(1)
- }
-
- switch answer {
- case "n", "no", "\r\n", "\n", "":
- fmt.Println("")
-
- case "y", "yes":
- err := upgradePonzuProjectDir(path)
- if err != nil {
- fmt.Println(err)
- os.Exit(1)
- }
-
- default:
- fmt.Println("Input not recognized. No upgrade made. Answer as 'y' or 'n' only.")
- }
-
- case "add", "a":
- // expecting two args, add and the go gettable package uri
- if len(args) < 2 {
- fmt.Println(usageAdd)
- os.Exit(0)
- }
-
- err := getAddon(args)
- if err != nil {
- fmt.Println(err)
- os.Exit(1)
- }
-
- case "":
- fmt.Println(usage)
- fmt.Println(usageHelp)
-
- default:
- fmt.Println(usage)
- fmt.Println(usageHelp)
- }
-}