11package profile
22
33import (
4+ "flag"
45 "fmt"
56 "os"
67 "path/filepath"
7- "strconv"
88 "strings"
99
1010 "github.com/usememos/memos/common"
@@ -16,6 +16,8 @@ type Profile struct {
1616 Mode string `json:"mode"`
1717 // Port is the binding port for server
1818 Port int `json:"port"`
19+ // Data is the data directory
20+ Data string `json:"data"`
1921 // DSN points to where Memos stores its own data
2022 DSN string `json:"dsn"`
2123 // Version is the current version of server
@@ -43,35 +45,30 @@ func checkDSN(dataDir string) (string, error) {
4345 return dataDir , nil
4446}
4547
46- // GetDevProfile will return a profile for dev.
48+ // GetDevProfile will return a profile for dev or prod .
4749func GetProfile () * Profile {
48- mode := os .Getenv ("mode" )
49- if mode != "dev" && mode != "prod" {
50- mode = "dev"
51- }
50+ profile := Profile {}
51+ flag .StringVar (& profile .Mode , "mode" , "dev" , "mode of server" )
52+ flag .IntVar (& profile .Port , "port" , 8080 , "port of server" )
53+ flag .StringVar (& profile .Data , "data" , "" , "data directory" )
54+ flag .Parse ()
5255
53- port , err := strconv .Atoi (os .Getenv ("port" ))
54- if err != nil {
55- port = 8080
56+ if profile .Mode != "dev" && profile .Mode != "prod" {
57+ profile .Mode = "dev"
5658 }
5759
58- data := ""
59- if mode == "prod" {
60- data = "/var/opt/memos"
60+ if profile .Mode == "prod" && profile .Data == "" {
61+ profile .Data = "/var/opt/memos"
6162 }
6263
63- dataDir , err := checkDSN (data )
64+ dataDir , err := checkDSN (profile . Data )
6465 if err != nil {
6566 fmt .Printf ("Failed to check dsn: %s, err: %+v\n " , dataDir , err )
6667 os .Exit (1 )
6768 }
6869
69- dsn := fmt .Sprintf ("%s/memos_%s.db" , dataDir , mode )
70+ profile .DSN = fmt .Sprintf ("%s/memos_%s.db" , dataDir , profile .Mode )
71+ profile .Version = common .GetCurrentVersion (profile .Mode )
7072
71- return & Profile {
72- Mode : mode ,
73- Port : port ,
74- DSN : dsn ,
75- Version : common .GetCurrentVersion (mode ),
76- }
73+ return & profile
7774}
0 commit comments