Skip to content

Latest commit

 

History

History
68 lines (41 loc) · 4.23 KB

paths.md

File metadata and controls

68 lines (41 loc) · 4.23 KB

Paths

yamlfmt can collect paths in three modes: Standard, Doublestar, and Gitignore. The match_type option allows you to select between the modes, using the values standard, doublestar, and gitignore.

Standard (default)

In standard path mode, you can specify a file or directory path directly. If specifying a file, it will simply include the file. If specifying a directory, it will include every file with the correct extension (as specified in extensions, default is yml and yaml).

This mode does not support wildcards, aka. globbing. That means with *.yaml yamlfmt will look for a file named asterisk dot yaml. If you require globbing, use the Doublestar mode instead.

Doublestar

In Doublestar mode, paths are specified using wildcard patterns explained in the doublestar package. It is almost identical to bash and git's style of glob pattern specification.

To enable the doublestar mode, set match_type: doublestar in the config file or use the -match_type doublestar command line flag.

Gitignore

This mode allows you to use a file (or files) using the gitignore syntax to determine which files to include and exclude.

Despite having "ignore" in the name, yamlfmt will format all files that match the patterns listed in the file, unless the patterns are negated. For example, the following file will format all *.yaml and *.yml files, while ignoring other files such as README.md as well as files in testdata directories:

# Include
*.yaml
*.yml

# Exclude
!testdata/

Please read the gitignore manpage for the full syntax description and further examples.

To use the gitignore mode, set match_type: gitignore in the config file or use the -match_type gitignore command line flag. In this mode, positional arguments on the command line and files listed in the include config option are considered to be files using the gitignore syntax. If no file is specified, yamlfmt will look for a file called yamlfmt.patterns in the working directory.

The exclude option is ignored in this mode.

Include and Exclude

In the standard and doublestar modes, yamlfmt will allow you to configure include and exclude paths. These can be paths to files in Standard or Doublestar modes, paths to directories in Standard mode, and valid doublestar patterns in Doublestar mode. These paths should be specified relative to the working directory of yamlfmt. They will work as absolute paths if both the includes and excludes are specified as absolute paths or if both are relative paths, however it will not work as expected if they are mixed together. It usually easier to reason about includes and excludes when always specifying both as relative paths from the directory yamlfmt is going to be run in.

In the gitignore mode, files specified on the command line or via the include config option are expected to contain patterns following the gitignore syntax.

Exclude paths can be specified on the command line using the -exclude flag. Paths excluded from the command line are *added to excluded paths from the config file. The gitignore mode ignores the exclude option.

Include paths can be specified on the command line via the positional arguments, i.e. there is no flag for it. Paths from the command line take precedence over and replace any paths configured in the config file.

yamlfmt will build a list of all files to format using the include list, then discard any files matching the exclude list.

Extensions

Only in standard mode

By default, yamlfmt formats all files ending in .yaml and .yml. You can modify this behavior using the config file and command line flags.

The config file sets the list of extensions. For example, with extensions: ["foo"], yamlfmt will only match files ending in .foo and will not match files ending in .yaml or .yml. An empty list triggers the default behavior.

The -extensions command line flag adds to the list of extensions from the config file. For example, -extensions yaml.gotmpl will match files ending in .yaml.gotmpl in addition to files ending in .yaml and .yml.