mirror of https://github.com/usememos/memos
				
				
				
			feat: flag variables
							parent
							
								
									475f258f5b
								
							
						
					
					
						commit
						f982391a83
					
				@ -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,
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@ -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),
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
					Loading…
					
					
				
		Reference in New Issue