# README
explanation
The essential package is provided in lint.go
, which just provides two functions, Lint()
and Spew()
. Lint()
is the important function; it will take a filename and a []byte
representing an input file, and return a []string
where each line contains an error message. Spew()
will print the internal representation of a YAML file for debug purposes.
Each subdirectory contains a small package used in lint.go
. workflow/
contains the Go types used to represent the YAML structure, separated into different files for the different possible pieces of a GitHub workflow. Each other directory contains a small package for linting that section of the workflow, supplying a single Lint()
function to be called in lint.go
.
For future maintainers: as you can see, only root/
, name/
, jobs/
, and on/
have directories right now, and of those only the first three have useful lints. When extending development, consider making a new directory for each of the other top-level GitHub properties, putting a small package in each, and continuing the pattern already established. As for the workflow/
directory, most of the code there is finished, but you can double check that all the data in the YAML file is represented by adding the -d
flag or running Spew()
. The workflow/on/
directory is most likely to need another look; there are several interface{}
values that can be replaced with a more descriptive type system.