Initial framework
This adds the basic framework to build linters on.
mvdan.cc/sh/v2/syntax is used to parse shell files and provide an AST of the APKBUILD. Then we have our own parser, which pre-processes the AST to give higher-level constructs (currently only global variables) that can be used in linters.
The linter provides a global linters
slice where each linter module can add individual checks to. A LintingViolation
struct contains the details of individual linting rules, which can be instantiated to add details for specific violations.