Utilities
Note
These utilities are only those maintained by the MetWork project.
You can find many others provided by other components.
1. Core layers
Note
These utilities are located in core/minimal layers. So they are nearly always available.
1.1 outside
$ outside --help
usage: outside COMMAND COMMAND_ARG1 COMMAND_ARG2 ...
=> execute the given command outside the metwork environement
1.2 components
$ components --help
usage: components [-h] [--module MODULE] [--layer LAYER] [--name NAME]
[--loaded-filter LOADED_FILTER] [--raw] [--json]
[--without-versions] [--full]
list installed/loaded components
options:
-h, --help show this help message and exit
--module MODULE filter output for this module only
--layer LAYER filter output for this layer only
--name NAME filter output for this component only
--loaded-filter LOADED_FILTER
loaded layer filter (default: no filter, possible
values: yes, no)
--raw raw output (can't be used with json option)
--json json output (can't be used with raw option)
--without-versions remove versions in output (ignored with json or raw
options)
--full add all informations (bigger, can't be used with raw
option)
1.3 layers
$ layers --help
Usage:
layers [OPTION…] - list installed layers
Help Options:
-h, --help Show help options
Application Options:
-r, --raw raw output
-m, --loaded-filter Loaded layer filter (default: no filter, possible values: yes, no)
1.4 plugin_wrapper
$ plugin_wrapper --help
usage: plugin_wrapper [-h] [--cwd] [--empty] [--bash-cmds]
[--plugins-base-dir PLUGINS_BASE_DIR] [--ignore-cache]
PLUGIN_NAME_OR_PLUGIN_HOME COMMAND_AND_ARGS
execute a command in a plugin environment
positional arguments:
PLUGIN_NAME_OR_PLUGIN_HOME
plugin name or plugin home (if starting by /)
COMMAND_AND_ARGS command (and args) to execute
options:
-h, --help show this help message and exit
--cwd change working directory to plugin home
--empty unload all layers before
--bash-cmds if set don't execute command but output bash cmds to
be execute in a fresh empty shell (--empty and
COMMAND_AND_ARGS ignored)
--plugins-base-dir PLUGINS_BASE_DIR
can be use to set an alternate plugins-base-dir, if
not set the value of MFMODULE_PLUGINS_BASE_DIR env var
is used (or a hardcoded standard value).
--ignore-cache if set, don't use env cache
1.5 mfext_wrapper
$ mfext_wrapper --help
usage: /opt/metwork-mfext-experimental_python313/bin/mfext_wrapper COMMAND_TO_WRAP [COMMAND_ARG1] [COMMAND_ARG2] [...]
=> launch the given command within metwork/mfext environnent
=> note: the current environnent is cleared before
=> (only MFMODULE_RUNTIME_SUFFIX, MFMODULE_RUNTIME_HOME and some standard env var (HOME, TERM, DISPLAY...)
are keeped intact)
1.6 metwork_debug
$ metwork_debug --help
usage: metwork_debug
print debug informations on stdout
1.7 log
$ log --help
usage: log a message with standard metwork logging system [-h]
[--application-name APPLICATION_NAME]
{ERROR,CRITICAL,WARNING,INFO,DEBUG}
MESSAGE
positional arguments:
{ERROR,CRITICAL,WARNING,INFO,DEBUG}
Log level
MESSAGE message to log
options:
-h, --help show this help message and exit
--application-name, -a APPLICATION_NAME
application name
1.8 echo_ok
$ echo_ok --help
Usage:
echo_ok [OPTION…] [MESSAGE] - write OK (with colors if supported) and a little optional message
Help Options:
-h, --help Show help options
1.9 echo_bold
$ echo_bold --help
Usage:
echo_bold [OPTION…] [MESSAGE] - write MESSAGE in bold
Help Options:
-h, --help Show help options
1.10 echo_clean
$ echo_clean --help
Usage:
echo_clean [OPTION…] - clean waiting status
Help Options:
-h, --help Show help options
1.11 echo_nok
$ echo_nok --help
Usage:
echo_nok [OPTION…] [MESSAGE] - write ERROR (with colors if supported) and a little optional message
Help Options:
-h, --help Show help options
1.12 echo_warning
$ echo_warning --help
Usage:
echo_warning [OPTION…] [MESSAGE] - write WARNING (with colors if supported) and a little optional message
Help Options:
-h, --help Show help options
1.13 echo_running
$ echo_running --help
Usage:
echo_running [OPTION…] - write RUNNING (with colors if supported)
Help Options:
-h, --help Show help options
1.14 is_interactive
$ is_interactive --help
Usage:
is_interactive [OPTION…] - return status code 0 if we guess this is an interactive execution
Help Options:
-h, --help Show help options
1.15 is_layer_installed
$ is_layer_installed --help
Usage:
is_layer_installed [OPTION…] LAYER LABEL - output 1 is the given layer is installed
Help Options:
-h, --help Show help options
1.16 is_layer_loaded
$ is_layer_loaded --help
Usage:
is_layer_loaded [OPTION…] LAYER LABEL OR LAYER HOME - output 1 is the given layer is already loaded
Help Options:
-h, --help Show help options
1.17 layer_wrapper
$ layer_wrapper --help
Usage:
layer_wrapper [OPTION…] -- COMMAND [COMMAND_ARG1] [COMMAND_ARG2] [...] - wrapper to execute the given command in a process with some specific layers loaded
Help Options:
-h, --help Show help options
Application Options:
-d, --debug debug mode
-e, --empty unload all layers before
-c, --cwd change working directory to the last layer home
-x, --extra-env-prefix if set, add three environnement variables {PREFIX}_NAME, {PREFIX}_LABEL and {PREFIX}_DIR containing the last layer name, label and the last layer home
-E, --empty-env empty environnement (imply --empty)
-k, --empty-env-keeps coma separated list of env var to keep with --empty-env
-l, --layers coma separated list of layers labels/homes ('-' before the name of the layer means 'optional dependency')
-p, --prepend-env ENV_VAR,VALUE string to prepend VALUE in : separated ENV_VAR (like PATH) (can be used multiple times)
-f, --force-prepend do not check existing paths in prepend
--dont-load-optional don't load optional layers
1.18 log_proxy
$ log_proxy --help
Usage:
log_proxy [OPTION…] LOGFILE - log proxy
Help Options:
-h, --help Show help options
Application Options:
-s, --rotation-size maximum size (in bytes) for a log file before rotation (0 => no maximum, default: content of environment variable LOGPROXY_ROTATION_SIZE or 104857600 = 100MB)
-t, --rotation-time maximum lifetime (in seconds) for a log file before rotation (0 => no maximum, default: content of environment variable LOGPROXY_ROTATION_TIME or 86400 = 24 hours)
-S, --rotation-suffix strftime based suffix to append to rotated log files (default: content of environment variable LOGPROXY_ROTATION_SUFFIX or .%Y%m%d%H%M%S)
-d, --log-directory directory to store log files (default: content of environment variable LOGPROXY_LOG_DIRECTORY or current directory), directory is created if missing
-n, --rotated-files maximum number of rotated files to keep including main one (0 => no cleaning, default: content of environment variable LOGPROXY_ROTATED_FILES or 5)
-T, --timestamps strftime prefix to prepend to every output line, for example '[%F %T] ' (default: content of environment variable LOGPROXY_TIMESTAMPS or none)
-c, --chmod if set, change mode of log files to this octal value, '0600' for example (default: content of environment variable LOGPROXY_CHMOD or don't change mode)
-o, --chown if set, try (if you don't have sufficient privileges, it will fail silently) to change the owner of the logfile to the given user value
-g, --chgrp if set, try (if you don't have sufficient privileges, it will fail silently) to change the group of the logfile to the given group value
-m, --use-locks use locks to append to main log file (useful if several process writes to the same file)
-f, --fifo if set, read lines on this fifo instead of stdin
-r, --rm-fifo-at-exit if set, drop fifo at then end of the program (you have to use --fifo option of course)
Optional environment variables to override defaults:
LOGPROXY_ROTATION_SIZE
LOGPROXY_ROTATION_TIME
LOGPROXY_ROTATION_SUFFIX
LOGPROXY_LOG_DIRECTORY
LOGPROXY_ROTATED_FILES
LOGPROXY_TIMESTAMPS
Example for rotation-size option:
- If log_proxy is run with the option --rotation-size on the command line, rotation-size will take the provided value
- If the option --rotation-size is not provided on command line :
- If the environment variable LOGPROXY_ROTATION_SIZE is set, rotation-size will take this value
- If the environment variable LOGPROXY_ROTATION_SIZE is not set, rotation-size will take the default value 104857600
1.19 log_proxy_wrapper
$ log_proxy_wrapper --help
Usage:
log_proxy_wrapper [OPTION…] -- COMMAND [COMMAND_ARG1] [COMMAND_ARG2] [...] - log proxy
Help Options:
-h, --help Show help options
Application Options:
-s, --rotation-size maximum size (in bytes) for a log file before rotation (0 => no maximum, default: content of environment variable LOGPROXY_ROTATION_SIZE or 104857600 = 100MB)
-t, --rotation-time maximum lifetime (in seconds) for a log file before rotation (0 => no maximum, default: content of environment variable LOGPROXY_ROTATION_TIME or 86400 = 24 hours)
-S, --rotation-suffix strftime based suffix to append to rotated log files (default: content of environment variable LOGPROXY_ROTATION_SUFFIX or .%Y%m%d%H%M%S)
-d, --log-directory directory to store log files (default: content of environment variable LOGPROXY_LOG_DIRECTORY or current directory), directory is created if missing
-n, --rotated-files maximum number of rotated files to keep including main one (0 => no cleaning, default: content of environment variable LOGPROXY_ROTATED_FILES or 5)
-T, --timestamps strftime prefix to prepend to every output line, for example '[%F %T] ' (default: content of environment variable LOGPROXY_TIMESTAMPS or none)
-c, --chmod if set, change mode of log files to this octal value, '0600' for example (default: content of environment variable LOGPROXY_CHMOD or don't change mode)
-o, --chown if set, try (if you don't have sufficient privileges, it will fail silently) to change the owner of the logfile to the given user value
-g, --chgrp if set, try (if you don't have sufficient privileges, it will fail silently) to change the group of the logfile to the given group value
-m, --use-locks use locks to append to main log file (useful if several process writes to the same file)
-O, --stdout stdout file path (NULL string (default) can be used to redirect to /dev/null)
-E, --stderr stderr file path (STDOUT string (default) can be used to redirect to the same file than stdout)
-F, --fifo-tmp-dir directory where to store tmp FIFO for log_proxy (default: content of environment variable TMPDIR if set, /tmp if not)
1.20 unsafe_pip
$ unsafe_pip --help
usage: unsafe_pip PIP_ARGUMENTS
=> this is a simple pip wrapper to use when you are annoyed with
man-in-the-middle https proxies
=> use it like standard pip cli tool
=> WARNING: it adds some unsafe options
1.21 get_unique_hexa_identifier
$ get_unique_hexa_identifier --help
Usage:
get_unique_hexa_identifier [OPTION…] - return a unique hexa identifier
Help Options:
-h, --help Show help options
1.22 get_layer_home
$ get_layer_home --help
Usage:
get_layer_home [OPTION…] LAYER LABEL - print corresponding layer home
Help Options:
-h, --help Show help options
1.23 get_simple_hostname
$ get_simple_hostname --help
usage: get_simple_hostname [-h]
returns the 'simple' hostname (without network domain)
options:
-h, --help show this help message and exit
1.24 get_full_hostname
$ get_full_hostname --help
usage: get_full_hostname [-h]
returns the 'full' hostname (with network domain)
options:
-h, --help show this help message and exit
1.25 get_domainname
$ get_domainname --help
usage: get_domainname [-h]
returns the network domain
options:
-h, --help show this help message and exit
1.26 get_real_ip
$ get_real_ip --help
usage: get_real_ip [-h]
returns the 'real' ip (not 127.0.0.1)
options:
-h, --help show this help message and exit
1.27 get_ip_for_hostname
$ get_ip_for_hostname --help
usage: get_ip_for_hostname [-h] [hostname]
returns the IP address of the given HOSTNAME (current real IP if no hostname
is given)
positional arguments:
hostname hostname to resolve as ip (can be empty)
options:
-h, --help show this help message and exit
2. Python3 layers
Note
These utilities are only available when "python3" layers are loaded.
2.1 python3_wrapper
$ python3_wrapper --help
usage: python3_wrapper [PYTHON_ARGS]
=> launch a python3 command inside a python3 env
3. Dev layers
Note
These utilities are only available when the "devtools" layers is loaded.
3.1 flake8.sh
3.2 flake8.sh
$ flake8.sh --help
usage: flake8.sh [FLAKE8_ARG1] [FLAGE8_ARG2] [...]
=> execute flake8 command with given args in a python3 env
=> some documentation errors/hints are also ignored here
3.3 pylint.sh
3.4 pylint.sh
$ pylint.sh --help
usage: pylint.sh [PYLINT_ARG1] [PYLINT_ARG2] [...]
=> execute pylint command with given args in a python3 env
3.5 nosetests.sh
3.6 nosetests.sh
$ nosetests.sh --help
usage: nosetests.sh [NOSETESTS_ARG1] [NOSETESTS_ARG2] [...]
=> execute nosetests command with given args in a python3 env
3.7 shellchecks
$ shellchecks --help
execute shellcheck on every shell script files found in the current directory
usage: shellchecks
3.8 test_globals_in_lua.sh
$ test_globals_in_lua.sh --help
usage: test_globals_in_lua.sh LUA_FILE
=> test if there are some global variables in the given lua file
and exit with an error code if there are some.
=> you can also provide a pattern like *.lua as argument
=> if no global variables are found in lua files, exit with 0 return
code
3.9 noutf8.sh
$ noutf8.sh --help
usage: noutf8.sh
=> find utf8 (non ascii) characters in the current directory
(and exit 1 if found some)