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