From e898bc62db033b4ee8acedf9bcf73b6b177ab16d Mon Sep 17 00:00:00 2001 From: Emery Hemingway Date: Thu, 18 May 2023 17:48:50 +0100 Subject: [PATCH] Add preserve_process_environment --- README.md | 5 +++++ src/preserve_process_environment.nim | 21 +++++++++++++++++++++ syndicate_utils.nimble | 2 +- 3 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 src/preserve_process_environment.nim diff --git a/README.md b/README.md index 8f6c790..a7c8d65 100644 --- a/README.md +++ b/README.md @@ -13,3 +13,8 @@ Do not send messages immediately to the dataspace passed `json_socket_translator ## msg A utility that sends a message to $SYNDICATE_SOCK in the form ``. + +## preserve_process_environment + +This utility serializes it's process environment to Preserves and prints it to stdout. +It can be used to feed the environment variables of a nested child of the Syndicate server back to the server. For example, to retreive the environmental variables that a desktop manager passed on to its children. diff --git a/src/preserve_process_environment.nim b/src/preserve_process_environment.nim new file mode 100644 index 0000000..95d0f4d --- /dev/null +++ b/src/preserve_process_environment.nim @@ -0,0 +1,21 @@ +# SPDX-FileCopyrightText: ☭ Emery Hemingway +# SPDX-License-Identifier: Unlicense + +import std/[tables, os] +import preserves + +type ProcessInfo {.preservesDictionary.} = object + program: string + argv: seq[string] + env: Table[string, string] + dir: string + +proc main = + var info: ProcessInfo + info.program = getAppFilename() + info.argv = commandLineParams() + for key, val in envPairs(): info.env[key] = val + info.dir = getCurrentDir() + writeLine(stdout, info.toPreserve) + +main() diff --git a/syndicate_utils.nimble b/syndicate_utils.nimble index 63a50f1..ecef121 100644 --- a/syndicate_utils.nimble +++ b/syndicate_utils.nimble @@ -5,7 +5,7 @@ author = "Emery Hemingway" description = "Utilites for Syndicated Actors and Synit" license = "unlicense" srcDir = "src" -bin = @["json_socket_translator", "json_translator", "msg"] +bin = @["json_socket_translator", "json_translator", "msg", "preserve_process_environment"] # Dependencies