Files
sofmani/docs/command-line-interface.md

3.9 KiB
Executable File

Command Line Interface (CLI)

Table of Contents

The sofmani CLI will iterate through each of your install steps (called "Installers") and execute them in sequence.

Installers can be grouped and nested arbitrarily, and loaded either directly from your config, or loaded from an external additional config, either a local file or a remote file hosted on a git repository.

CLI Flags

You can call sofmani with the following flags to alter the behavior for the current run:

Flag Description
-d, --debug Enable debug mode.
-D, --no-debug Disable debug mode (default).
-u, --update Enable update checking.
-U, --no-update Disable update checking (default).
-s, --summary Enable installation summary (default).
-S, --no-summary Disable installation summary.
-f, --filter Filter by installer name (can be used multiple times)*
-l, --log-file Set log file path, or show current path if no value.
-m, --machine-id Show machine ID and exit.
--ignore-frequency Ignore frequency limits and run all installers.
-h, --help Display help information and exit.
-v, --version Display version information and exit.

Each of these flags overrides the loaded config file, so while your default config can choose not to check for updates by default, you or another user can add the --update flag to override this behavior for a single run of the CLI.

Installer Filters

The filter argument accepts multiple values.

The following filter types are available:

  • -f <name> - filter by name
  • -f tag:<tag> - filter by tag name
  • -f type:<type> - filter by type (brew, shell, etc)

Each of the above filters can be negated by prefixing with !. For example, to exclude installers containing the tag "system", use -f "!tag:system". See more information about tags in the documentation for (Installer Configuration)[./installer-configuration.md#fields].

If there are no filters in the command flags, then all the installers will run.

If there are filters, each installer will have to match an inclusion filter. Exclusion filters can be combined to then remove from the filtered installers, even if they already matched to be included.

  • To only run installers that contain "sofmani" in their name, use -f sofmani.
  • To run all installers except those that contain "sofmani", use -f "!sofmani".
  • To only installers that contain "sofmani", but exclude ones tagged "config", use -f sofmani -f "!tag:config".

Machine ID

The machine ID is a unique, deterministic identifier for the current machine. It is generated from stable system identifiers (hardware UUID on macOS, /etc/machine-id on Linux, registry GUID on Windows) and remains constant even if hostname or other system settings change.

To view the current machine's ID:

sofmani --machine-id

This ID can be used with the machines configuration option to run specific installers only on certain machines. See Installer Configuration for details.

Examples

Search for the config in one of the default directories, and enable update checking:

sofmani -u

Load a specific config file, and enable debug mode:

sofmani -d sofmani.yml

Load a config file, and only run installers of type brew:

sofmani -f type:brew sofmani.yml