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