Replace yq
with go-yq
This commit is contained in:
parent
5e1686402c
commit
b4b87f37ea
12 changed files with 56 additions and 68 deletions
|
@ -27,7 +27,7 @@ begin
|
|||
and yayinst \
|
||||
linux-headers \
|
||||
pacman-contrib \
|
||||
yq
|
||||
go-yq
|
||||
end
|
||||
|
||||
source "$dir/../../Common/OS/install.fish"
|
||||
|
|
|
@ -27,7 +27,7 @@ $null = New-Module {
|
|||
Value = "$Value";
|
||||
} `
|
||||
-User $User `
|
||||
".alias |= [((. // [])[] | select(.name != env.Name))] + [{ name: env.Name, value: env.Value }]";
|
||||
".alias |= [((. // [])[] | select(.name != env(Name)))] + [{ name: env(Name), value: env(Value) }]";
|
||||
}
|
||||
|
||||
<#
|
||||
|
@ -53,7 +53,7 @@ $null = New-Module {
|
|||
Value = "$Value";
|
||||
} `
|
||||
-User $User `
|
||||
".env |= [((. // [])[] | select(.name != env.Name))] + [{ name: env.Name, value: env.Value }]";
|
||||
".env |= [((. // [])[] | select(.name != env(Name)))] + [{ name: env(Name), value: env(Value) }]";
|
||||
}
|
||||
|
||||
<#
|
||||
|
@ -92,7 +92,7 @@ $null = New-Module {
|
|||
}
|
||||
|
||||
sudo @using:flags pwsh -CommandWithArgs 'Get-Content -Raw $args[0]' $using:path | Set-Content $file;
|
||||
yq -yi $using:Script $file;
|
||||
yq -i $using:Script $file;
|
||||
sudo @using:flags pwsh -CommandWithArgs 'Set-Content $args[0] -Value $args[1]' $using:path (Get-Content -Raw $file);
|
||||
Remove-Item $file;
|
||||
} | Receive-Job -Wait;
|
||||
|
|
|
@ -8,11 +8,11 @@ begin
|
|||
function installSW -V dir -V source
|
||||
set -l pw (nix-shell -p keepassxc --run "keepassxc-cli generate --length 32")
|
||||
set -l userKey ".services.anki.environment.SYNC_USER1"
|
||||
set -l user (yq --raw-output "$userKey" "$source" | sed "s/:.*\$/:$pw/")
|
||||
set -l user (yq "$userKey" "$source" | sed "s/:.*\$/:$pw/")
|
||||
initializeServiceInstallation $argv
|
||||
sudo cp "$dir/docker-compose.base.yml" (getServiceRoot $argv)
|
||||
|
||||
USER=$user yq "$userKey = env.USER" "$source" | \
|
||||
USER=$user yq "$userKey = env(USER)" "$source" | \
|
||||
sudo tee (getServiceSecretsConfig $argv) >/dev/null
|
||||
|
||||
installDockerService $argv
|
||||
|
|
|
@ -12,9 +12,9 @@ begin
|
|||
set -l root (getServiceRoot $argv)
|
||||
set -l config "$root/docker-compose.base.yml"
|
||||
set -l secrets (getServiceSecretsConfig $argv)
|
||||
set -l ciTemplate (yq (getServiceKey ci-template) "$source")
|
||||
set -l dockerTemplate (yq (getServiceKey docker-template) "$source")
|
||||
set -l sshTemplate (yq (getServiceKey ssh-template) "$source")
|
||||
set -l ciTemplate (yq -oj (getServiceKey ci-template) "$source")
|
||||
set -l dockerTemplate (yq -oj (getServiceKey docker-template) "$source")
|
||||
set -l sshTemplate (yq -oj (getServiceKey ssh-template) "$source")
|
||||
initializeServiceInstallation $argv
|
||||
echo "{}" | sudo tee "$config" >/dev/null
|
||||
echo "{}" | sudo tee "$secrets" >/dev/null
|
||||
|
@ -63,30 +63,27 @@ begin
|
|||
echo "DRONE_RPC_SECRET=$secret" | sudo tee "$root/$SECRET_ENV" >/dev/null
|
||||
|
||||
yq "$ciKey = $ciTemplate" "$tmpConfig" | \
|
||||
ENTRY="./data/$name:/data" yq "$ciKey.volumes = [ env.ENTRY ]" | \
|
||||
yq "$ciKey.env_file |= . + [ env.SECRET_ENV ]" | \
|
||||
PROTO=https yq "$ciEnv.DRONE_SERVER_PROTO = env.PROTO" | \
|
||||
HOST=(getServiceDomain "$subdomain" "$domain") yq "$ciEnv.DRONE_SERVER_HOST = env.HOST" | \
|
||||
ENTRY="./data/$name:/data" yq "$ciKey.volumes = [ env(ENTRY) ]" | \
|
||||
yq "$ciKey.env_file |= . + [ env(SECRET_ENV) ]" | \
|
||||
PROTO=https yq "$ciEnv.DRONE_SERVER_PROTO = env(PROTO)" | \
|
||||
HOST=(getServiceDomain "$subdomain" "$domain") yq "$ciEnv.DRONE_SERVER_HOST = env(HOST)" | \
|
||||
yq "$dockerKey = $dockerTemplate" | \
|
||||
yq "$sshKey = $sshTemplate" | \
|
||||
yq "$dockerKey.depends_on = [ env.CI_NAME ]" | \
|
||||
yq -y "." | \
|
||||
yq "$dockerKey.depends_on = [ env(CI_NAME) ]" | \
|
||||
sudo tee "$config" >/dev/null
|
||||
|
||||
for key in $dockerKey $sshKey
|
||||
set -l file (mktemp)
|
||||
|
||||
yq "$key.depends_on = [ env.CI_NAME ]" "$config" | \
|
||||
yq "$key.env_file |= . + [ env.RUNNER_ENV, env.SECRET_ENV ]" | \
|
||||
yq -y "." | \
|
||||
yq "$key.depends_on = [ env(CI_NAME) ]" "$config" | \
|
||||
yq "$key.env_file |= . + [ env(RUNNER_ENV), env(SECRET_ENV) ]" | \
|
||||
tee "$file" >/dev/null
|
||||
|
||||
sudo cp "$file" "$config"
|
||||
rm "$file"
|
||||
end
|
||||
|
||||
PORT="127.0.0.1:1337:80" yq "$ciKey.ports = [ env.PORT ]" "$tmpSecrets" | \
|
||||
yq -y "." | \
|
||||
PORT="127.0.0.1:1337:80" yq "$ciKey.ports = [ env(PORT) ]" "$tmpSecrets" | \
|
||||
sudo tee "$secrets" >/dev/null
|
||||
end
|
||||
end
|
||||
|
|
|
@ -20,20 +20,19 @@ begin
|
|||
initializeServiceInstallation $argv
|
||||
sudo cp "$dir/docker-compose.base.yml" "$root"
|
||||
|
||||
set port (yq (getSSHPortKey) "$source" --raw-output | mutatePort "$port")
|
||||
set port (yq (getSSHPortKey) "$source" | mutatePort "$port")
|
||||
|
||||
DOMAIN=(getServiceDomain $server) PW=$pw DB=Git USER=forgejo PW=$pw begin
|
||||
set -l gitEnv "$(getServiceKey "$service").environment"
|
||||
set -l dbEnv "$(getServiceKey "db").environment"
|
||||
|
||||
PORT=$port yq "$(getSSHPortKey) = env.PORT" "$source" | \
|
||||
yq "$gitEnv.FORGEJO__database__NAME = env.DB" | \
|
||||
yq "$gitEnv.FORGEJO__database__USER = env.USER" | \
|
||||
yq "$gitEnv.FORGEJO__database__PASSWD = env.PW" | \
|
||||
yq "$dbEnv.MARIADB_DATABASE = env.DB" | \
|
||||
yq "$dbEnv.MARIADB_USER = env.USER" | \
|
||||
yq "$dbEnv.MARIADB_PASSWORD = env.PW" | \
|
||||
yq -y . | \
|
||||
PORT=$port yq "$(getSSHPortKey) = env(PORT)" "$source" | \
|
||||
yq "$gitEnv.FORGEJO__database__NAME = env(DB)" | \
|
||||
yq "$gitEnv.FORGEJO__database__USER = env(USER)" | \
|
||||
yq "$gitEnv.FORGEJO__database__PASSWD = env(PW)" | \
|
||||
yq "$dbEnv.MARIADB_DATABASE = env(DB)" | \
|
||||
yq "$dbEnv.MARIADB_USER = env(USER)" | \
|
||||
yq "$dbEnv.MARIADB_PASSWORD = env(PW)" | \
|
||||
sudo tee "$secrets" >/dev/null
|
||||
end
|
||||
|
||||
|
@ -66,14 +65,13 @@ begin
|
|||
|
||||
and yq "$envKey.USER_UID = $uid" "$file" | \
|
||||
yq "$envKey.USER_GID = $gid" | \
|
||||
yq -y . |
|
||||
sudo tee "$config" >/dev/null
|
||||
|
||||
mkdir -p "$dir"
|
||||
and chown -R $uid:$gid "$dir"
|
||||
rm "$file"
|
||||
|
||||
set port (yq (getSSHPortKey) "$secrets" --raw-output | extractPort)
|
||||
set port (yq (getSSHPortKey) "$secrets" | extractPort)
|
||||
|
||||
begin
|
||||
printf "%s\n" \
|
||||
|
|
|
@ -50,7 +50,7 @@ begin
|
|||
for name in $service $flood
|
||||
set -l userKey "$(getServiceKey "$name").user"
|
||||
cp "$config" "$file"
|
||||
USER=$uid:$gid yq -y "$userKey = env.USER" "$file" | sudo tee "$config" >/dev/null
|
||||
USER=$uid:$gid yq "$userKey = env(USER)" "$file" | sudo tee "$config" >/dev/null
|
||||
end
|
||||
|
||||
for name in $servarr rtorrent
|
||||
|
@ -59,13 +59,11 @@ begin
|
|||
|
||||
and yq "$envKey.PUID = $uid" "$file" | \
|
||||
yq "$envKey.PGID = $gid" | \
|
||||
yq -y . | \
|
||||
sudo tee "$config" >/dev/null
|
||||
end
|
||||
|
||||
cp "$config" "$file"
|
||||
URL="https://$(getServiceDomain "$domain" "")/" yq "$(getServiceKey "$service").environment.JELLYFIN_PublishedServerUrl = env.URL" "$file" | \
|
||||
yq -y . | \
|
||||
URL="https://$(getServiceDomain "$domain" "")/" yq "$(getServiceKey "$service").environment.JELLYFIN_PublishedServerUrl = env(URL)" "$file" | \
|
||||
sudo tee "$config" >/dev/null
|
||||
|
||||
for dir in "$root"/{downloads,config/{,jellyfin,flood,rtorrent,radarr,sonarr,lidarr,prowlarr},media/{,movies,series,music}}
|
||||
|
|
|
@ -30,13 +30,12 @@ begin
|
|||
set uid (id -u $user)
|
||||
set gid (id -g $user)
|
||||
|
||||
for service in (yq --raw-output0 ".services | keys[]" "$config" | string split0)
|
||||
for service in (yq -0 ".services | keys[]" "$config" | string split0)
|
||||
set -l envKey "$(getServiceKey "$service").environment"
|
||||
cp "$config" "$file"
|
||||
|
||||
and yq "$envKey.UID = $uid" "$file" | \
|
||||
yq "$envKey.GID = $gid" | \
|
||||
yq -y . | \
|
||||
sudo tee "$config" >/dev/null
|
||||
end
|
||||
|
||||
|
|
|
@ -65,16 +65,14 @@ begin
|
|||
PROTO="https" DOMAIN="$domain" begin
|
||||
set -l envKey "$(getServiceKey nextcloud).environment"
|
||||
|
||||
yq "$envKey.NEXTCLOUD_TRUSTED_DOMAINS = env.DOMAIN" "$source" | \
|
||||
yq "$envKey.OVERWRITEPROTOCOL = env.PROTO" | \
|
||||
yq "$envKey.OVERWRITEHOST = env.DOMAIN" | \
|
||||
URL="$PROTO://$DOMAIN" yq "$envKey.OVERWRITECLIURL = env.URL" | \
|
||||
yq -y . | \
|
||||
yq "$envKey.NEXTCLOUD_TRUSTED_DOMAINS = env(DOMAIN)" "$source" | \
|
||||
yq "$envKey.OVERWRITEPROTOCOL = env(PROTO)" | \
|
||||
yq "$envKey.OVERWRITEHOST = env(DOMAIN)" | \
|
||||
URL="$PROTO://$DOMAIN" yq "$envKey.OVERWRITECLIURL = env(URL)" | \
|
||||
sudo tee "$core" >/dev/null
|
||||
|
||||
DOMAIN=(getServiceDomain $officeDomain) yq "$officeEnv.server_name = env.DOMAIN" "$baseSource" | \
|
||||
URL="https://$(string escape --style regex "$DOMAIN"):443" yq "$officeEnv.aliasgroup1 = env.URL" | \
|
||||
yq -y . | \
|
||||
DOMAIN=(getServiceDomain $officeDomain) yq "$officeEnv.server_name = env(DOMAIN)" "$baseSource" | \
|
||||
URL="https://$(string escape --style regex "$DOMAIN"):443" yq "$officeEnv.aliasgroup1 = env(URL)" | \
|
||||
sudo tee "$base" >/dev/null
|
||||
end
|
||||
|
||||
|
@ -83,17 +81,16 @@ begin
|
|||
|
||||
PW="--static-auth-secret=$turnPW" \
|
||||
DOMAIN="--realm=$domain" \
|
||||
yq "$key |= . + [env.PW, env.DOMAIN]" "$secretsSource" | \
|
||||
yq -y . | \
|
||||
yq "$key |= . + [env(PW), env(DOMAIN)]" "$secretsSource" | \
|
||||
sudo tee "$secrets" >/dev/null
|
||||
end
|
||||
|
||||
installDockerService $argv
|
||||
set turnPort (yq --raw-output (getServicePortKey "$turn") "$secrets" | extractPort)
|
||||
set turnPort (yq --raw-output "$portKey" "$secrets" | mutatePort "$turnPort")
|
||||
set turnPort (yq (getServicePortKey "$turn") "$secrets" | extractPort)
|
||||
set turnPort (yq "$portKey" "$secrets" | mutatePort "$turnPort")
|
||||
|
||||
cp "$secrets" "$file"
|
||||
PORT="$turnPort" yq -y "$portKey = env.PORT" "$file" | sudo tee "$secrets" >/dev/null
|
||||
PORT="$turnPort" yq "$portKey = env(PORT)" "$file" | sudo tee "$secrets" >/dev/null
|
||||
rm "$file"
|
||||
end
|
||||
|
||||
|
|
|
@ -13,12 +13,12 @@ begin
|
|||
set -l pw (nix-shell -p keepassxc --run "keepassxc-cli generate --length 32")
|
||||
set -l envKey ".services.$service.environment"
|
||||
set -l dbKey "$envKey.DATABASE_URL"
|
||||
set -l dbUrl (yq --raw-output "$dbKey" "$source" | sed "s/^\(.*:\/\/.*:\).*\(@.*\/.*\)\$/\1$pw\2/")
|
||||
set -l dbUrl (yq "$dbKey" "$source" | sed "s/^\(.*:\/\/.*:\).*\(@.*\/.*\)\$/\1$pw\2/")
|
||||
initializeServiceInstallation $argv
|
||||
sudo cp "$file" "$root"
|
||||
|
||||
URL=$dbUrl yq "$dbKey = env.URL" "$source" | \
|
||||
PW=$pw yq ".services.db.environment.POSTGRES_PASSWORD = env.PW" | \
|
||||
URL=$dbUrl yq "$dbKey = env(URL)" "$source" | \
|
||||
PW=$pw yq ".services.db.environment.POSTGRES_PASSWORD = env(PW)" | \
|
||||
sudo tee (getServiceSecretsConfig $argv) >/dev/null
|
||||
|
||||
installDockerService $argv
|
||||
|
|
|
@ -80,7 +80,7 @@ begin
|
|||
set -l url
|
||||
set -l config (getServiceSecretsConfig $argv)
|
||||
set -l portKey (getServicePortKey "$service")
|
||||
set -l port (yq --raw-output "$portKey" "$config" | extractPort)
|
||||
set -l port (yq "$portKey" "$config" | extractPort)
|
||||
|
||||
if [ -n "$_flag_url" ]
|
||||
set url "$_flag_url"
|
||||
|
@ -136,8 +136,8 @@ begin
|
|||
sudo mkdir -p "$nginxRoot"
|
||||
cp "$config" "$file"
|
||||
|
||||
set exposedPort (yq --raw-output "$portKey" "$file" | mutatePort $port)
|
||||
PORT=$exposedPort yq -y "$portKey = env.PORT" "$file" | sudo tee "$config" >/dev/null
|
||||
set exposedPort (yq "$portKey" "$file" | mutatePort $port)
|
||||
PORT=$exposedPort yq "$portKey = env(PORT)" "$file" | sudo tee "$config" >/dev/null
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -14,18 +14,17 @@ begin
|
|||
cp "$dir/docker-compose.base.yml" (getServiceRoot $argv)
|
||||
|
||||
USER="$service" begin
|
||||
yq "$tsEnv.TS3SERVER_DB_USER = env.USER" "$source" | \
|
||||
yq "$dbEnv.MARIADB_USER = env.USER"
|
||||
yq "$tsEnv.TS3SERVER_DB_USER = env(USER)" "$source" | \
|
||||
yq "$dbEnv.MARIADB_USER = env(USER)"
|
||||
end | \
|
||||
PW="$pw" begin
|
||||
yq "$tsEnv.TS3SERVER_DB_PASSWORD = env.PW" | \
|
||||
yq "$dbEnv.MARIADB_PASSWORD = env.PW"
|
||||
yq "$tsEnv.TS3SERVER_DB_PASSWORD = env(PW)" | \
|
||||
yq "$dbEnv.MARIADB_PASSWORD = env(PW)"
|
||||
end | \
|
||||
DB="$db" begin
|
||||
yq "$tsEnv.TS3SERVER_DB_NAME = env.DB" | \
|
||||
yq "$dbEnv.MARIADB_DATABASE = env.DB"
|
||||
yq "$tsEnv.TS3SERVER_DB_NAME = env(DB)" | \
|
||||
yq "$dbEnv.MARIADB_DATABASE = env(DB)"
|
||||
end | \
|
||||
yq . | \
|
||||
sudo tee (getServiceSecretsConfig $argv) >/dev/null
|
||||
|
||||
installDockerService $argv
|
||||
|
|
|
@ -10,15 +10,15 @@ begin
|
|||
set -l pw (nix-shell -p keepassxc --run "keepassxc-cli generate --length 32")
|
||||
set -l envKey ".services.vaultwarden.environment"
|
||||
set -l dbKey "$envKey.DATABASE_URL"
|
||||
set -l dbUrl (yq --raw-output "$dbKey" "$source" | sed "s/^\(.*:\/\/.*:\).*\(@.*\/.*\)\$/\1$pw\2/")
|
||||
set -l dbUrl (yq "$dbKey" "$source" | sed "s/^\(.*:\/\/.*:\).*\(@.*\/.*\)\$/\1$pw\2/")
|
||||
initializeServiceInstallation $argv
|
||||
|
||||
URL="https://$domain.$(getMachineFQDN)" yq "$envKey.DOMAIN = env.URL" "$file" | \
|
||||
ADDRESS="noreply@$(getMachineFQDN)" yq -y "$envKey.SMTP_FROM = env.ADDRESS" | \
|
||||
URL="https://$domain.$(getMachineFQDN)" yq "$envKey.DOMAIN = env(URL)" "$file" | \
|
||||
ADDRESS="noreply@$(getMachineFQDN)" yq "$envKey.SMTP_FROM = env(ADDRESS)" | \
|
||||
sudo tee "$(getServiceRoot $argv)/$(basename "$file")" >/dev/null
|
||||
|
||||
URL=$dbUrl yq "$dbKey = env.URL" "$source" | \
|
||||
PW=$pw yq ".services.db.environment.MARIADB_PASSWORD = env.PW" | \
|
||||
URL=$dbUrl yq "$dbKey = env(URL)" "$source" | \
|
||||
PW=$pw yq ".services.db.environment.MARIADB_PASSWORD = env(PW)" | \
|
||||
sudo tee (getServiceSecretsConfig $argv) >/dev/null
|
||||
|
||||
installDockerService $argv
|
||||
|
|
Loading…
Reference in a new issue