🎨 Set the workspace path and lang via environment variable (#14148)

This commit is contained in:
Germano Rizzo 2025-02-18 17:25:16 +01:00 committed by GitHub
parent 4b44951f15
commit 43e7c53dc0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 28 additions and 4 deletions

View file

@ -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.

View file

@ -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` 環境変数を設定することで認証コードを指定することもできます。両方が設定されている場合、コマンドラインの値が優先されます。

View file

@ -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` 环境变量设置授权码。如果两者都设置了,命令行的值将优先。

View file

@ -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