mirror of
https://github.com/mattermost/focalboard.git
synced 2024-12-21 13:38:56 +02:00
[GH-1256] feat: config file flag (#1418)
* feat: adds support for --config * feat: adds support for configFilePath in startServer * chore: removes ugly spacing
This commit is contained in:
parent
8b66243ca2
commit
5848ea1c07
@ -57,7 +57,7 @@ make
|
|||||||
|
|
||||||
To start the server, run `./bin/focalboard-server`
|
To start the server, run `./bin/focalboard-server`
|
||||||
|
|
||||||
Server settings are in config.json.
|
Server settings are in config.json (or the path specified with --config).
|
||||||
|
|
||||||
Open a browser to [http://localhost:8000](http://localhost:8000) to start.
|
Open a browser to [http://localhost:8000](http://localhost:8000) to start.
|
||||||
|
|
||||||
|
@ -87,8 +87,20 @@ func logInfo(logger *mlog.Logger) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
// config.json file
|
// Command line args
|
||||||
config, err := config.ReadConfigFile()
|
pMonitorPid := flag.Int("monitorpid", -1, "a process ID")
|
||||||
|
pPort := flag.Int("port", 0, "the port number")
|
||||||
|
pSingleUser := flag.Bool("single-user", false, "single user mode")
|
||||||
|
pDBType := flag.String("dbtype", "", "Database type")
|
||||||
|
pDBConfig := flag.String("dbconfig", "", "Database config")
|
||||||
|
pConfigFilePath := flag.String(
|
||||||
|
"config",
|
||||||
|
"",
|
||||||
|
"Location of the JSON config file",
|
||||||
|
)
|
||||||
|
flag.Parse()
|
||||||
|
|
||||||
|
config, err := config.ReadConfigFile(*pConfigFilePath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal("Unable to read the config file: ", err)
|
log.Fatal("Unable to read the config file: ", err)
|
||||||
return
|
return
|
||||||
@ -114,14 +126,6 @@ func main() {
|
|||||||
|
|
||||||
logInfo(logger)
|
logInfo(logger)
|
||||||
|
|
||||||
// Command line args
|
|
||||||
pMonitorPid := flag.Int("monitorpid", -1, "a process ID")
|
|
||||||
pPort := flag.Int("port", config.Port, "the port number")
|
|
||||||
pSingleUser := flag.Bool("single-user", false, "single user mode")
|
|
||||||
pDBType := flag.String("dbtype", "", "Database type")
|
|
||||||
pDBConfig := flag.String("dbconfig", "", "Database config")
|
|
||||||
flag.Parse()
|
|
||||||
|
|
||||||
singleUser := false
|
singleUser := false
|
||||||
if pSingleUser != nil {
|
if pSingleUser != nil {
|
||||||
singleUser = *pSingleUser
|
singleUser = *pSingleUser
|
||||||
@ -193,13 +197,14 @@ func main() {
|
|||||||
|
|
||||||
// StartServer starts the server
|
// StartServer starts the server
|
||||||
//export StartServer
|
//export StartServer
|
||||||
func StartServer(webPath *C.char, filesPath *C.char, port int, singleUserToken, dbConfigString *C.char) {
|
func StartServer(webPath *C.char, filesPath *C.char, port int, singleUserToken, dbConfigString, configFilePath *C.char) {
|
||||||
startServer(
|
startServer(
|
||||||
C.GoString(webPath),
|
C.GoString(webPath),
|
||||||
C.GoString(filesPath),
|
C.GoString(filesPath),
|
||||||
port,
|
port,
|
||||||
C.GoString(singleUserToken),
|
C.GoString(singleUserToken),
|
||||||
C.GoString(dbConfigString),
|
C.GoString(dbConfigString),
|
||||||
|
C.GoString(configFilePath),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -209,14 +214,14 @@ func StopServer() {
|
|||||||
stopServer()
|
stopServer()
|
||||||
}
|
}
|
||||||
|
|
||||||
func startServer(webPath string, filesPath string, port int, singleUserToken, dbConfigString string) {
|
func startServer(webPath string, filesPath string, port int, singleUserToken, dbConfigString, configFilePath string) {
|
||||||
if pServer != nil {
|
if pServer != nil {
|
||||||
stopServer()
|
stopServer()
|
||||||
pServer = nil
|
pServer = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// config.json file
|
// config.json file
|
||||||
config, err := config.ReadConfigFile()
|
config, err := config.ReadConfigFile(configFilePath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal("Unable to read the config file: ", err)
|
log.Fatal("Unable to read the config file: ", err)
|
||||||
return
|
return
|
||||||
|
@ -59,10 +59,13 @@ type Configuration struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ReadConfigFile read the configuration from the filesystem.
|
// ReadConfigFile read the configuration from the filesystem.
|
||||||
func ReadConfigFile() (*Configuration, error) {
|
func ReadConfigFile(configFilePath string) (*Configuration, error) {
|
||||||
viper.SetConfigName("config") // name of config file (without extension)
|
if configFilePath == "" {
|
||||||
viper.SetConfigType("json") // REQUIRED if the config file does not have the extension in the name
|
viper.SetConfigFile("./config.json")
|
||||||
viper.AddConfigPath(".") // optionally look for config in the working directory
|
} else {
|
||||||
|
viper.SetConfigFile(configFilePath)
|
||||||
|
}
|
||||||
|
|
||||||
viper.SetEnvPrefix("focalboard")
|
viper.SetEnvPrefix("focalboard")
|
||||||
viper.AutomaticEnv() // read config values from env like FOCALBOARD_SERVERROOT=...
|
viper.AutomaticEnv() // read config values from env like FOCALBOARD_SERVERROOT=...
|
||||||
viper.SetDefault("ServerRoot", DefaultServerRoot)
|
viper.SetDefault("ServerRoot", DefaultServerRoot)
|
||||||
|
@ -116,7 +116,8 @@ namespace Focalboard {
|
|||||||
byte[] filesPathBytes = Encoding.UTF8.GetBytes(filesPath);
|
byte[] filesPathBytes = Encoding.UTF8.GetBytes(filesPath);
|
||||||
byte[] sessionTokenBytes = Encoding.UTF8.GetBytes(sessionToken);
|
byte[] sessionTokenBytes = Encoding.UTF8.GetBytes(sessionToken);
|
||||||
byte[] dbPathBytes = Encoding.UTF8.GetBytes(dbPath);
|
byte[] dbPathBytes = Encoding.UTF8.GetBytes(dbPath);
|
||||||
GoFunctions.StartServer(webFolderBytes, filesPathBytes, port, sessionTokenBytes, dbPathBytes);
|
byte[] configFilePathBytes = Encoding.UTF8.GetBytes("");
|
||||||
|
GoFunctions.StartServer(webFolderBytes, filesPathBytes, port, sessionTokenBytes, dbPathBytes, configFilePathBytes);
|
||||||
|
|
||||||
Debug.WriteLine("Server started");
|
Debug.WriteLine("Server started");
|
||||||
}
|
}
|
||||||
@ -148,7 +149,7 @@ namespace Focalboard {
|
|||||||
|
|
||||||
static class GoFunctions {
|
static class GoFunctions {
|
||||||
[DllImport(@"focalboard-server.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
|
[DllImport(@"focalboard-server.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
|
||||||
public static extern void StartServer(byte[] webPath, byte[] filesPath, int port, byte[] singleUserToken, byte[] dbConfigString);
|
public static extern void StartServer(byte[] webPath, byte[] filesPath, int port, byte[] singleUserToken, byte[] dbConfigString, byte[] configFilePath);
|
||||||
|
|
||||||
[DllImport(@"focalboard-server.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
|
[DllImport(@"focalboard-server.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
|
||||||
public static extern void StopServer();
|
public static extern void StopServer();
|
||||||
|
Loading…
Reference in New Issue
Block a user