diff options
| author | EuAndreh <eu@euandre.org> | 2019-05-25 13:33:19 -0300 |
|---|---|---|
| committer | EuAndreh <eu@euandre.org> | 2019-05-25 13:33:19 -0300 |
| commit | f1792cb9e6e5557f0983997a011defaa1f19e639 (patch) | |
| tree | f0751cf27e3c1cc19f2b1ac89703767a4c2ab597 /default.nix | |
| parent | Format vps.tf (diff) | |
| download | toph-f1792cb9e6e5557f0983997a011defaa1f19e639.tar.gz toph-f1792cb9e6e5557f0983997a011defaa1f19e639.tar.xz | |
Add lint checks and a pipeline to check using Nix
Diffstat (limited to 'default.nix')
| -rw-r--r-- | default.nix | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/default.nix b/default.nix new file mode 100644 index 0000000..d43e113 --- /dev/null +++ b/default.nix @@ -0,0 +1,93 @@ +let + pkgsUnstable = import <nixpkgs> { }; + pkgsPinned = import (pkgsUnstable.fetchzip { + url = "https://github.com/NixOS/nixpkgs/archive/18.03.zip"; + sha256 = "0hk4y2vkgm1qadpsm4b0q1vxq889jhxzjx3ragybrlwwg54mzp4f"; + }) { }; + pkgs = pkgsUnstable; + + rootSrc = pkgs.nix-gitignore.gitignoreSource [] ./.; + nixfmt = import (builtins.fetchTarball + "https://github.com/serokell/nixfmt/archive/master.tar.gz") { }; + + baseTask = pkgs.stdenv.mkDerivation { + name = "vps-task"; + src = rootSrc; + phases = "unpackPhase buildPhase"; + buildInputs = []; + buildPhase = '' + echo "ERROR: base task buildPhase not overriden." + exit 1 + ''; + }; +in with pkgs; +with pkgs.stdenv; rec { + subtasks = rec { + shellCheck = baseTask.overrideAttrs(baseAttrs: { + name = "${baseAttrs.name}-shellcheck"; + buildInputs = [ shellcheck ]; + buildPhase = '' + find . -type f -name '*.sh' | xargs shellcheck + touch $out + ''; + }); + fixme = baseTask.overrideAttrs (baseAttrs: { + name = "${baseAttrs.name}-fixme"; + buildInputs = [ag]; + buildPhase = '' + ag FIXME --ignore default.nix|| { + touch $out + } + ''; + }); + # docker lint + formatTerraform = baseTask.overrideAttrs (baseAttrs: { + name = "${baseAttrs.name}-format-terraform"; + buildInputs = baseAttrs.buildInputs ++ [nixfmt]; + buildPhase = '' + terraform fmt -check=true -diff=true || { + echo "Terraform files are unformatted. To fix it, run:" + echo " terraform fmt" + exit 1 + } + touch $out + ''; + }); + formatNix = baseTask.overrideAttrs (baseAttrs: { + name = "${baseAttrs.name}-nixfmt"; + buildInputs = baseAttrs.buildInputs ++ [nixfmt]; + buildPhase = '' + diff <(nixfmt < default.nix) default.nix || { + echo "The default.nix is unformatted. To fix it, run:" + echo " nixfmt default.nix" + exit 1 + } + touch $out + ''; + }); + }; + test = baseTask.overrideAttrs (baseAttrs: rec { + name = "${baseAttrs.name}-test"; + buildInputs = [ + subtasks.shellcheck + subtasks.fixme + subtasks.formatTerraform + subtasks.formatNix + ]; + buildPhase = '' + echo "Ran tests for:" + for d in ${builtins.toString buildInputs}; do + echo " $d" + done + echo "All tests passed!" + touch $out + ''; + }); + shell = mkShell rec { + name = "vps-shell"; + buildInputs = [ + nixfmt + terraform-full + ]; + }; +} |
