config
)Query or define Murex runtime settings
Rather than Murex runtime settings being definable via obscure
environmental variables, Murex instead supports a registry of config
defined via the config
command. This means any preferences
and/or runtime config becomes centralised and discoverable.
The following terms have special means with regards to
config
:
app refers to a grouped category of settings. For example the name of an integration or builtin.
Other app names include
shell
: for “global” (system wide) Murex settingsproc
: for scoped Murex settingshttp
: for settings that are applied to any processes
which use the builtin HTTP user agent (eg open
,
get
, getfile
, post
)test
: settings for Murex’s test frameworksindex
: settings for [
(index)key refers to the config setting itself. For example the
app might be http
but the key might be
timeout
- where the key, in this instance, holds
the value for how long any HTTP user agents might wait before timing
out.
value is the actual value of a setting. So the value for
app: http
, key: timeout
might be 10
. eg
» config get http timeout
10
config get app key -> <stdout>
config set app key value
<stdin> -> config set app key
config eval app key { code-block }
!config app key
config default app key
config define app key { json }
Using eval
to append to an array (in this instance,
adding a function name to the list of “safe” commands):
» config eval shell safe-commands { -> append function-name }
You could also use the ~>
operator too:
» config eval shell safe-commands { ~> %[function-name] }
default
Reset a the value of app’s
key to its default value (the default value
is defined by the same process that defines the config field)define
Allows you to create custom config options. See
Custom
Config Directives to learn how to use define
get
Output the currently held config value
without changing itset
Change the value of an app’s
key. set
does not print any outputSettings in config
, by default, are scoped per function
and module. Any functions called will inherit the settings of it’s
caller parent. However any child functions that then change the settings
will only change settings for it’s own function and not the parent
caller.
Global settings defined inside a function will affect settings queried inside another executing function (same concept as global variables).
This section relates to creating custom configs via
config define
. You do not need to refer to this for any regular usage ofconfig
.
Where “default value” is what will be auto-populated if you don’t include that directive (or “required” if the directive must be included).
Value:
str
(required)
This is the Murex data-type for the value.
Value:
str
(required)
Description is a required field to force developers into writing meaning hints enabling the discoverability of settings within Murex.
Value:
bool
(default:false
)
This defines whether this setting is global or scoped.
All Dynamic config must also be Global. This is because Dynamic config rely on a state that likely isn’t scoped (eg the contents of a file on disk or environmental variable).
Value: any (required)
This is the initialized and default value.
Value: array (default:
null
)
Some suggested options (if known) to provide as autocompletion suggestions in the interactive command line.
Value: map of strings (default:
null
)
Only use this if config options need to be more than just static
values stored inside Murex’s runtime. Using Dynamic
means autocomplete get app key
and
autocomplete set app key value
will spawn off a subshell
running a code block defined from the Read
and
Write
mapped values. eg
# Create the example config file
out "this is the default value" |> example.conf
config define example test5 %{
Description: This is only an example
DataType: str
Global: true
Dynamic: {
Read: '{
open example.conf
}'
Write: '{
|> example.conf
}'
},
# read the config file to get the default value
Default: ${open example.conf}
}
It’s also worth noting the different syntax between Read and Default. The Read code block is being executed when the Read directive is being requested, whereas the Default code block is being executed when the JSON is being read.
In technical terms, the Default code block is being
executed by Murex when config define
is getting executed
where as the Read and Write code
blocks are getting stored as a JSON string and then executed only when
those hooks are getting triggered.
Value:
str
(default: empty)
This is executed when autocomplete get app key
is ran.
The stdout of the code block is the setting’s value.
Value:
str
(default: empty)
This is executed when autocomplete
is setting a value
(eg set
, default
, eval
). is ran.
The stdin of the code block is the new value.
config
!config
alter
/ ~>
): Change a value within a
structured data-type and pass that change along the pipeline without
altering the original source inputappend
): Add data to the end of an arraygetfile
): Makes a standard HTTP request and return the
contents as Murex-aware data type for passing along Murex
pipelines.[ Index ]
): Outputs an element from an array, map or
table[[ Element ]]
): Outputs an element from a nested
structureget
):
Makes a standard HTTP request and returns the result as a JSON
objectmatch
): Match an exact value in an arrayevent
): Event driven programming for shell
scriptsopen
):
Open a file with a preferred handlerpost
):
HTTP POST request with a JSON-parsable returnfunction
): Define a function blockruntime
): Returns runtime information on the internal
state of Murex%{}
Object
Builder: Quickly generate objects (dictionaries / maps)This document was generated from builtins/core/config/config_doc.yaml.
This site's content is rebuilt automatically from murex's source code after each merge to the master
branch. Downloadable murex binaries are also built with the website.
Last built on Wed Jan 15 23:07:50 UTC 2025 against commit b4c4296b4c429617fd41527ea0efef33c52c15ef2b64972.
Current version is 6.4.2063 (develop) which has been verified against tests cases.