mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-09-22 00:20:47 +02:00
🎨 Set the workspace path and lang via environment variable (#14148)
This commit is contained in:
parent
4b44951f15
commit
43e7c53dc0
4 changed files with 28 additions and 4 deletions
|
@ -207,6 +207,7 @@ docker run -d \
|
||||||
* `PGID`: Custom group ID (optional, defaults to `1000` if not provided)
|
* `PGID`: Custom group ID (optional, defaults to `1000` if not provided)
|
||||||
* `workspace_dir_host`: The workspace folder path on the host
|
* `workspace_dir_host`: The workspace folder path on the host
|
||||||
* `workspace_dir_container`: The path of the workspace folder in the container, as specified in `--workspace`
|
* `workspace_dir_container`: The path of the workspace folder in the container, as specified in `--workspace`
|
||||||
|
* In alternative, it's possible to set the auth code via the `SIYUAN_WORKSPACE_PATH` env variable. The commandline will always have the priority, if both are set.
|
||||||
* `accessAuthCode`: Access authorization code (please **be sure to modify**, otherwise anyone can access your data)
|
* `accessAuthCode`: Access authorization code (please **be sure to modify**, otherwise anyone can access your data)
|
||||||
* In alternative, it's possible to set the auth code via the `SIYUAN_ACCESS_AUTH_CODE` env variable. The commandline will always have the priority, if both are set.
|
* In alternative, it's possible to set the auth code via the `SIYUAN_ACCESS_AUTH_CODE` env variable. The commandline will always have the priority, if both are set.
|
||||||
|
|
||||||
|
|
|
@ -206,6 +206,7 @@ docker run -d \
|
||||||
* `PGID`: カスタムグループID(オプション、指定しない場合はデフォルトで `1000`)
|
* `PGID`: カスタムグループID(オプション、指定しない場合はデフォルトで `1000`)
|
||||||
* `workspace_dir_host`: ホスト上のワークスペースフォルダーのパス
|
* `workspace_dir_host`: ホスト上のワークスペースフォルダーのパス
|
||||||
* `workspace_dir_container`: コンテナ内のワークスペースフォルダーのパス、`--workspace` で指定されたものと同じ
|
* `workspace_dir_container`: コンテナ内のワークスペースフォルダーのパス、`--workspace` で指定されたものと同じ
|
||||||
|
* また、`SIYUAN_WORKSPACE_PATH` 環境変数を設定することで認証コードを指定することもできます。両方が設定されている場合、コマンドラインの値が優先されます。
|
||||||
* `accessAuthCode`: アクセス認証コード(**必ず変更してください**、そうしないと誰でもデータにアクセスできます)
|
* `accessAuthCode`: アクセス認証コード(**必ず変更してください**、そうしないと誰でもデータにアクセスできます)
|
||||||
* また、`SIYUAN_ACCESS_AUTH_CODE` 環境変数を設定することで認証コードを指定することもできます。両方が設定されている場合、コマンドラインの値が優先されます。
|
* また、`SIYUAN_ACCESS_AUTH_CODE` 環境変数を設定することで認証コードを指定することもできます。両方が設定されている場合、コマンドラインの値が優先されます。
|
||||||
|
|
||||||
|
|
|
@ -211,6 +211,7 @@ docker run -d \
|
||||||
* `PGID`: 自定义组 ID(可选,如果未提供,默认为 `1000`)
|
* `PGID`: 自定义组 ID(可选,如果未提供,默认为 `1000`)
|
||||||
* `workspace_dir_host`:宿主机上的工作空间文件夹路径
|
* `workspace_dir_host`:宿主机上的工作空间文件夹路径
|
||||||
* `workspace_dir_container`:容器内工作空间文件夹路径,和后面 `--workspace` 指定成一样的
|
* `workspace_dir_container`:容器内工作空间文件夹路径,和后面 `--workspace` 指定成一样的
|
||||||
|
* 另外,也可以通过 `SIYUAN_WORKSPACE_PATH` 环境变量设置授权码。如果两者都设置了,命令行的值将优先。
|
||||||
* `accessAuthCode`:访问授权码,请**务必修改**,否则任何人都可以读写你的数据
|
* `accessAuthCode`:访问授权码,请**务必修改**,否则任何人都可以读写你的数据
|
||||||
* 另外,也可以通过 `SIYUAN_ACCESS_AUTH_CODE` 环境变量设置授权码。如果两者都设置了,命令行的值将优先。
|
* 另外,也可以通过 `SIYUAN_ACCESS_AUTH_CODE` 环境变量设置授权码。如果两者都设置了,命令行的值将优先。
|
||||||
|
|
||||||
|
|
|
@ -47,6 +47,11 @@ var Mode = "prod"
|
||||||
const (
|
const (
|
||||||
Ver = "3.1.22"
|
Ver = "3.1.22"
|
||||||
IsInsider = false
|
IsInsider = false
|
||||||
|
|
||||||
|
// env vars as fallback for commandline parameters
|
||||||
|
SIYUAN_ACCESS_AUTH_CODE = "SIYUAN_ACCESS_AUTH_CODE"
|
||||||
|
SIYUAN_WORKSPACE = "SIYUAN_WORKSPACE_PATH"
|
||||||
|
SIYUAN_LANG = "SIYUAN_LANG"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
@ -70,6 +75,19 @@ var (
|
||||||
HttpServing = false // 是否 HTTP 伺服已经可用
|
HttpServing = false // 是否 HTTP 伺服已经可用
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// If a commandline parameter is empty, fallback to the env var.
|
||||||
|
//
|
||||||
|
// "empty" means the parameter is not set or set to an empty string.
|
||||||
|
// It returns a pointer to string, to be a drop-in replacement for
|
||||||
|
// the commandline parameter itself.
|
||||||
|
func coalesceToEnvVar(fromCLI *string, envVarName string) *string {
|
||||||
|
if fromCLI == nil || "" == *fromCLI {
|
||||||
|
ret := os.Getenv(envVarName)
|
||||||
|
return &ret
|
||||||
|
}
|
||||||
|
return fromCLI
|
||||||
|
}
|
||||||
|
|
||||||
func Boot() {
|
func Boot() {
|
||||||
initEnvVars()
|
initEnvVars()
|
||||||
IncBootProgress(3, "Booting kernel...")
|
IncBootProgress(3, "Booting kernel...")
|
||||||
|
@ -87,6 +105,13 @@ func Boot() {
|
||||||
mode := flag.String("mode", "prod", "dev/prod")
|
mode := flag.String("mode", "prod", "dev/prod")
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
|
|
||||||
|
// Fallback to env vars if commandline args are not set
|
||||||
|
// valid only for CLI args that default to "", as the
|
||||||
|
// others have explicit (sane) defaults
|
||||||
|
workspacePath = coalesceToEnvVar(workspacePath, SIYUAN_WORKSPACE)
|
||||||
|
accessAuthCode = coalesceToEnvVar(accessAuthCode, SIYUAN_ACCESS_AUTH_CODE)
|
||||||
|
lang = coalesceToEnvVar(lang, SIYUAN_LANG)
|
||||||
|
|
||||||
if "" != *wdPath {
|
if "" != *wdPath {
|
||||||
WorkingDir = *wdPath
|
WorkingDir = *wdPath
|
||||||
}
|
}
|
||||||
|
@ -102,10 +127,6 @@ func Boot() {
|
||||||
Container = ContainerStd
|
Container = ContainerStd
|
||||||
if RunInContainer {
|
if RunInContainer {
|
||||||
Container = ContainerDocker
|
Container = ContainerDocker
|
||||||
if "" == AccessAuthCode {
|
|
||||||
// Priority to commandline; if not set, look into env var
|
|
||||||
AccessAuthCode = SiyuanAccessAuthCodeViaEnvvar
|
|
||||||
}
|
|
||||||
if "" == AccessAuthCode { // Still empty?
|
if "" == AccessAuthCode { // Still empty?
|
||||||
interruptBoot := true
|
interruptBoot := true
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue