OsProcessEnvironment
Provides abstraction for cross-platform process environment (i.e. environment variables). Exposes a limited <KeyedCollection> interface for accessing, adding, removing env variables
Startup Environment On Startup, the environment is cached and can be accessed with [OsProcessEnvironment startUpEnvironment]
Current Environment You can request the current environment (lazily cached) with [OsProcessEnvironment current]. The current environment is special in that changes to it will be reflected in the underlying OS
New Environment Environments can be created simply with [OsProcessEnvironment new] and passed to new spawned processes
Class Methods
current
Answer the current environment for Smalltalk.
This is equivalent to typing 'set' at a Windows shell prompt.
Answers:
<OsProcessEnvironment>
new
Answer a new instance of the receiver. The new environment is empty.
Answers:
<OsProcessEnvironment>
startUpEnvironment
Answer the startUp environment for the user process. This
provides a snapshot of the environment that Smalltalk
was run from.
Answers:
<OsProcessEnvironment>
Instance Methods
asKeyedCollection
Answer the environment as keys and values in a keyed collection.
The keys and values are encoded using the current code page.
Answers
<KeyedCollection>
asUtf8KeyedCollection
Answer the environment values in the receiver.
Answers
<Collection>
at:
Answer the environment value at key @aKey
If an equivalent key is not found, then answer nil
Arguments:
aKey - <String> code page encoded env key
Answers:
<String> code page encoded env value
<UndefinedObject> if absent key, then answer nil
at:ifAbsent:
Answer the environment value at key @aKey
If an equivalent key is not found, then answer the result
of evaluating the zero argument block, aBlock.
Fail if the key is not found and aBlock is not a zero-argument Block.
NOTE: aKey is expected to be encoded using the current code page.
Internally it will be stored in UTF-8 format.
Use the utf8* APIs to work more directly with UTF-8 bytes
Arguments:
aKey - <String | ByteArray> code page encoded env key
aBlock - <Block> 0-arg block
Answers:
<String | ByteArray> code page encoded env value
<Object> if absent key, then answer the result of @aBlock evaluation
at:put:
Answer the value currently associated with aKey (or nil if absent),
after associating the argument aValue with the
argument aKey, in the receiver.
If the receiver does not
contain a key equivalent to the argument aKey, then create a new entry
in the receiver for that key.
If @aValue is nil, then remove the environment variable entry
NOTE: If the receiver is the Current environement, then push this change
out to the operating system also
Arguments:
aKey - <String | ByteArray>
aValue - <String | ByteArray> or nil if removing the entry
Asnwers:
<String | ByteArray> or nil if there was no old value
includesKey:
Answer a <Boolean> which is true if the the environment variable is present,
false otherwise
Arguments:
aKey - <String> code page encoded
Asnwers:
<Boolean>
keys
Answer the environment keys in the receiver.
The keys are encoded using the current code page.
Answers
<Collection>
removeKey:
Answer the value currently associated with aKey (or nil if absent),
after removing the key @aKey
If the receiver does not contain a key equivalent to the argument aKey, then create a new entry
NOTE: If the receiver is the Current environement, then push this change
out to the operating system also. It will be in UTF-8 format in the OS
Arguments:
aKey - <String> code page encoded
Asnwers:
<String> code page encoded str or nil if there was no old value
utf8At:
Answer the UTF-8 environment value at UTF-8 key @aUtf8Key
If an equivalent key is not found, then answer nil
Arguments:
aUtf8Key - <String | ByteArray> env key
Answers:
<String | ByteArray> env value
<Object> if absent key, then answer the result of @aBlock evaluation
utf8At:ifAbsent:
Answer the UTF-8 environment value at UTF-8 key @aUtf8Key
If an equivalent key is not found, then answer the result
of evaluating the zero argument block, aBlock.
Fail if the key is not found and aBlock is not a zero-argument Block.
Arguments:
aUtf8Key - <String | ByteArray> env key
aBlock - <Block> 0-arg block
Answers:
<String | ByteArray> env value
<Object> if absent key, then answer the result of @aBlock evaluation
utf8At:put:
Answer the value currently associated with the UTF-8 @aUtf8Key (or nil if absent),
after associating the UTF-8 argument @aUtf8Value with the
aUtf8Key, in the receiver.
If the receiver does not
contain a key equivalent to the argument aUtf8Key, then create a new entry
in the receiver for that key.
If @aUtf8Value is nil, then remove the environment variable entry
NOTE: If the receiver is the Current environment, then push this change
out to the operating system also
Arguments:
aKey - <String | ByteArray>
aValue - <String ByteArray> or nil if removing the entry
Asnwers:
<String | ByteArray> or nil if there was no old value
utf8IncludesKey:
Answer a <Boolean> which is true if the the environment variable is present,
false otherwise
Arguments:
aKey - <String>
Asnwers:
<Boolean>
utf8Keys
Answer the environment keys in the receiver.
Answers
<Collection>
utf8RemoveKey:
Answer the value currently associated with aKey (or nil if absent),
after removing the key @aKey
If the receiver does not contain a key equivalent to the argument aKey, then create a new entry
NOTE: If the receiver is the Current environement, then push this change
out to the operating system also
Arguments:
aKey - <String>
Asnwers:
<String> or nil if there was no old value
utf8Values
Answer the environment values in the receiver.
Answers
<Collection>
values
Answer the environment values in the receiver.
The keys are encoded using the current code page.
Answers
<Collection>
Last modified date: 02/23/2021