All code related to linter/binary specified in internal
directory
Internal directory contain some subdirectories:
- app (run logic and DI)
- models (shared DTO for usage in all other layers)
- operations (entrypoint for every binary command (check, graph, version, etc..))
- services (additional code that can be reused between
operations
) -
- checker - code related to
check
cmd and go code linter main process itself.
- checker - code related to
-
- project - code related to working with project files (scan, group, mapping to components, etc..)
-
- render - code related to terminal output and ascii rendering
-
- schema - json schemas for every supported version of the DSL config
-
- spec - code related to work with yaml DSL config (parse/validate/transform)
- view - stdout templates for every command
- Use DI containers for all struct constructors (see app/internal/container)
- All other struct/processors should be injected only wia constructor as interface
- All injected interfaces should be described in file called "types.go"
Please use external linters and quality control tools, such as IDE
-
Before push, check unit and functional tests
make tests
-
if command output changed, functional tests will fall. You can update test files wia command
make tests-functional-update-ct
Use semver for git tags
CI will build docker image for some refs:
git tag | docker image | description | example |
---|---|---|---|
master | :latest | latest dev | |
vX.Y.Z | :release-vX.Y.Z | release version | v1.3.0 |
vX.Y.Z-rcX | :dev-vX.Y.Z-rcX | dev version | v1.3.0-rc1, v1.3.0-rc16 |