init — Generate Configuration

Interactive Mode

Running metis init with no flags launches an interactive wizard:

$ cd /path/to/project
$ metis init

Press enter to accept the default value shown in [bracket value info]. Type a value to override. Invalid input is rejected with a warning and the prompt repeats.

$ metis init --interactive

Passing any flag (e.g. --style google) after init disables the interactive wizard and uses CLI-only mode.

With clang-tidy

# standard preset
$ metis init --enable-clang-tidy

# strict preset
$ metis init --enable-clang-tidy --tidy-preset strict

# compiler warnings only
$ metis init --enable-clang-tidy --tidy-severity warning

With --enable-clang-tidy, three files are created:

Formatter & Analyzer Options

# available styles: google, llvm, chromium, mozilla, webkit, microsoft, gnu
$ metis init --style llvm

# clang-tidy preset: minimal, standard (default), strict, custom
$ metis init --enable-clang-tidy --tidy-preset standard

# tidy severity: note (off), warning (compiler only), error (all)
$ metis init --enable-clang-tidy --tidy-severity warning

# header filter: 0=none, 1=project, 2=all
$ metis init --enable-clang-tidy --tidy-header-filter 1

Full Customization

$ metis init \
  --style google \
  --name my-project \
  --indent-width 4 \
  --column-limit 120 \
  --pointer-alignment Left \
  --brace-style Attach \
  --enable-clang-tidy \
  --tidy-preset strict \
  --tidy-severity error

Custom Config Path

$ metis --config /path/to/.metis.toml init

Dependencies

# add a dependency (name:git_url:git_tag, tag defaults to main)
$ metis init --enable-cmake --add-dep fmt:https://github.com/fmtlib/fmt.git:11.0.2

# repeatable — add several
$ metis init --enable-cmake \
  --add-dep fmt:https://github.com/fmtlib/fmt.git:11.0.2 \
  --add-dep tomlplusplus:https://github.com/marzer/tomlplusplus.git:v3.4.0

Security Checks

$ metis init --enable-security-checks

Adds metis-security (hardcoded secrets / dangerous functions) and metis-dep-security (dependency vulnerability scan) checks to .metis.toml.

Compiler Checks

# enable compiler warnings-as-errors check
$ metis init --enable-compiler-checks

# specify compiler
$ metis init --enable-compiler-checks --compiler gcc

# set C++ standard for compiler checks
$ metis init --enable-compiler-checks --compiler-cpp-standard 20

# treat warnings as errors (default)
$ metis init --enable-compiler-checks --compiler-werror

# disable warnings-as-errors
$ metis init --enable-compiler-checks --compiler-no-werror

# run checks in both Debug and Release
$ metis init --enable-compiler-checks --compiler-debug-and-release