From f982391a83565e317d49cd8406a08cbd8944cddb Mon Sep 17 00:00:00 2001 From: email Date: Sat, 5 Feb 2022 13:04:06 +0800 Subject: [PATCH] feat: flag variables --- Dockerfile | 7 ++-- bin/server/cmd/profile.go | 62 +++++++++++++++++++++++++++++++++++ bin/server/cmd/profile_dev.go | 17 ---------- bin/server/cmd/root.go | 46 ++------------------------ store/seed/10001_schema.sql | 4 +-- 5 files changed, 71 insertions(+), 65 deletions(-) create mode 100644 bin/server/cmd/profile.go delete mode 100644 bin/server/cmd/profile_dev.go diff --git a/Dockerfile b/Dockerfile index 62ba6852..55753659 100644 --- a/Dockerfile +++ b/Dockerfile @@ -26,6 +26,9 @@ WORKDIR /usr/local/memos COPY --from=backend /backend-build/memos /usr/local/memos/ COPY --from=frontend /frontend-build/dist /usr/local/memos/web/dist -CMD ["./memos"] +# Directory to store the data, which can be referenced as the mounting point. +RUN mkdir -p /var/opt/memos -EXPOSE 8080 +CMD ["-mode", "release", "-port", "8080", "-data", "/var/opt/memos"] + +ENTRYPOINT ["./memos"] diff --git a/bin/server/cmd/profile.go b/bin/server/cmd/profile.go new file mode 100644 index 00000000..8af91015 --- /dev/null +++ b/bin/server/cmd/profile.go @@ -0,0 +1,62 @@ +package cmd + +import ( + "flag" + "fmt" + "os" + "path/filepath" + "strings" +) + +type Profile struct { + // mode can be "release" or "dev" + mode string + // port is the binding port for server. + port int + // dsn points to where Memos stores its own data + dsn string +} + +func checkDSN(dataDir string) (string, error) { + // Convert to absolute path if relative path is supplied. + if !filepath.IsAbs(dataDir) { + absDir, err := filepath.Abs(filepath.Dir(os.Args[0]) + "/" + dataDir) + if err != nil { + return "", err + } + dataDir = absDir + } + + // Trim trailing / in case user supplies + dataDir = strings.TrimRight(dataDir, "/") + + if _, err := os.Stat(dataDir); err != nil { + error := fmt.Errorf("unable to access --data %s, %w", dataDir, err) + return "", error + } + + return dataDir, nil +} + +// GetDevProfile will return a profile for dev. +func GetProfile() Profile { + mode := flag.String("mode", "dev", "") + port := flag.Int("port", 8080, "") + data := flag.String("data", "", "") + + flag.Parse() + + dataDir, err := checkDSN(*data) + if err != nil { + fmt.Printf("%+v\n", err) + os.Exit(1) + } + + dsn := fmt.Sprintf("file:%s/memos_%s.db", dataDir, *mode) + + return Profile{ + mode: *mode, + port: *port, + dsn: dsn, + } +} diff --git a/bin/server/cmd/profile_dev.go b/bin/server/cmd/profile_dev.go deleted file mode 100644 index 15a7dac8..00000000 --- a/bin/server/cmd/profile_dev.go +++ /dev/null @@ -1,17 +0,0 @@ -//go:build !release -// +build !release - -package cmd - -import ( - "fmt" -) - -// GetDevProfile will return a profile for dev. -func GetDevProfile(dataDir string) Profile { - return Profile{ - mode: "8080", - port: 8080, - dsn: fmt.Sprintf("file:%s/memos_dev.db", dataDir), - } -} diff --git a/bin/server/cmd/root.go b/bin/server/cmd/root.go index 1a52340f..fefab12f 100644 --- a/bin/server/cmd/root.go +++ b/bin/server/cmd/root.go @@ -3,47 +3,11 @@ package cmd import ( "fmt" "os" - "path/filepath" - "strings" "memos/server" "memos/store" ) -var ( - dataDir string -) - -type Profile struct { - // mode can be "release" or "dev" - mode string - // port is the binding port for server. - port int - // dsn points to where Memos stores its own data - dsn string -} - -func checkDataDir() error { - // Convert to absolute path if relative path is supplied. - if !filepath.IsAbs(dataDir) { - absDir, err := filepath.Abs(filepath.Dir(os.Args[0]) + "/" + dataDir) - if err != nil { - return err - } - dataDir = absDir - } - - // Trim trailing / in case user supplies - dataDir = strings.TrimRight(dataDir, "/") - - if _, err := os.Stat(dataDir); err != nil { - error := fmt.Errorf("unable to access --data %s, %w", dataDir, err) - return error - } - - return nil -} - type Main struct { profile *Profile @@ -53,17 +17,11 @@ type Main struct { } func Execute() { - err := checkDataDir() - if err != nil { - fmt.Printf("%+v\n", err) - os.Exit(1) - } - m := Main{} - profile := GetDevProfile(dataDir) + profile := GetProfile() m.profile = &profile - err = m.Run() + err := m.Run() if err != nil { fmt.Printf("%+v\n", err) os.Exit(1) diff --git a/store/seed/10001_schema.sql b/store/seed/10001_schema.sql index 76086342..f8f0e681 100644 --- a/store/seed/10001_schema.sql +++ b/store/seed/10001_schema.sql @@ -120,9 +120,9 @@ END; INSERT INTO user (`id`, `name`, `password`, `open_id`) VALUES - (1, 'guest', '123456', 'guest_open_id'), + (1, 'guest', '123456', 'guest_open_id'); INSERT INTO memo (`content`, `creator_id`) VALUES - ('👋 Welcome to memos', 1), + ('👋 Welcome to memos', 1);