chore: use flags instead of env vars

pull/114/head
boojack 3 years ago
parent 1d8603df2b
commit 7c94db0ca0

1
.gitignore vendored

@ -24,5 +24,6 @@ data
# build folder # build folder
build build
memos-build
.DS_Store .DS_Store

@ -49,6 +49,13 @@ func Execute() {
profile: profile, profile: profile,
} }
println("---")
println("profile")
println("mode:", profile.Mode)
println("port:", profile.Port)
println("dsn:", profile.DSN)
println("version:", profile.Version)
println("---")
println(greetingBanner) println(greetingBanner)
fmt.Printf("Version %s has started at :%d\n", profile.Version, profile.Port) fmt.Printf("Version %s has started at :%d\n", profile.Version, profile.Port)

@ -0,0 +1,10 @@
# Usage: sh ./scripts/build.sh
set -e
cd "$(dirname "$0")/../"
echo "Start building..."
go build -o ./memos-build/memos ./bin/server/main.go
echo "Build finished"

@ -1,10 +1,10 @@
package profile package profile
import ( import (
"flag"
"fmt" "fmt"
"os" "os"
"path/filepath" "path/filepath"
"strconv"
"strings" "strings"
"github.com/usememos/memos/common" "github.com/usememos/memos/common"
@ -16,6 +16,8 @@ type Profile struct {
Mode string `json:"mode"` Mode string `json:"mode"`
// Port is the binding port for server // Port is the binding port for server
Port int `json:"port"` Port int `json:"port"`
// Data is the data directory
Data string `json:"data"`
// DSN points to where Memos stores its own data // DSN points to where Memos stores its own data
DSN string `json:"dsn"` DSN string `json:"dsn"`
// Version is the current version of server // Version is the current version of server
@ -43,35 +45,30 @@ func checkDSN(dataDir string) (string, error) {
return dataDir, nil return dataDir, nil
} }
// GetDevProfile will return a profile for dev. // GetDevProfile will return a profile for dev or prod.
func GetProfile() *Profile { func GetProfile() *Profile {
mode := os.Getenv("mode") profile := Profile{}
if mode != "dev" && mode != "prod" { flag.StringVar(&profile.Mode, "mode", "dev", "mode of server")
mode = "dev" flag.IntVar(&profile.Port, "port", 8080, "port of server")
} flag.StringVar(&profile.Data, "data", "", "data directory")
flag.Parse()
port, err := strconv.Atoi(os.Getenv("port")) if profile.Mode != "dev" && profile.Mode != "prod" {
if err != nil { profile.Mode = "dev"
port = 8080
} }
data := "" if profile.Mode == "prod" && profile.Data == "" {
if mode == "prod" { profile.Data = "/var/opt/memos"
data = "/var/opt/memos"
} }
dataDir, err := checkDSN(data) dataDir, err := checkDSN(profile.Data)
if err != nil { if err != nil {
fmt.Printf("Failed to check dsn: %s, err: %+v\n", dataDir, err) fmt.Printf("Failed to check dsn: %s, err: %+v\n", dataDir, err)
os.Exit(1) os.Exit(1)
} }
dsn := fmt.Sprintf("%s/memos_%s.db", dataDir, mode) profile.DSN = fmt.Sprintf("%s/memos_%s.db", dataDir, profile.Mode)
profile.Version = common.GetCurrentVersion(profile.Mode)
return &Profile{ return &profile
Mode: mode,
Port: port,
DSN: dsn,
Version: common.GetCurrentVersion(mode),
}
} }

Loading…
Cancel
Save