Unverified Commit 96fbb517 authored by Paul Meyer's avatar Paul Meyer Committed by GitHub
Browse files

Merge pull request #301204 from marsam/vale-styles

valeStyles: init
parents 1114b274 c354f956
Loading
Loading
Loading
Loading
+25 −7
Original line number Diff line number Diff line
{ lib, buildGoModule, fetchFromGitHub }:
{ lib
, buildGoModule
, fetchFromGitHub
, makeBinaryWrapper
, runCommand
, symlinkJoin
, vale
, valeStyles
}:

buildGoModule rec {
  pname = "vale";
  version = "3.4.1";

  subPackages = [ "cmd/vale" ];
  outputs = [ "out" "data" ];

  src = fetchFromGitHub {
    owner = "errata-ai";
@@ -16,18 +23,29 @@ buildGoModule rec {

  vendorHash = "sha256-HMzFLSmO6sBDNU89UoIvHcPPd3ubpti2ii4sFMKUDmI=";

  postInstall = ''
    mkdir -p $data/share/vale
    cp -r testdata/styles $data/share/vale
  '';

  ldflags = [ "-s" "-w" "-X main.version=${version}" ];

  # Tests require network access
  doCheck = false;

  passthru.withStyles = selector: symlinkJoin {
    name = "vale-with-styles-${vale.version}";
    paths = [ vale ] ++ selector valeStyles;
    nativeBuildInputs = [ makeBinaryWrapper ];
    postBuild = ''
      wrapProgram "$out/bin/vale" \
        --set VALE_STYLES_PATH "$out/share/vale/styles/"
    '';
  };

  meta = with lib; {
    description = "A syntax-aware linter for prose built with speed and extensibility in mind";
    longDescription = ''
      Vale in Nixpkgs offers the helper `.withStyles` allow you to install it
      predefined styles:

          vale.withStyles (s: [ s.alex s.google ])
    '';
    homepage = "https://vale.sh/";
    changelog = "https://github.com/errata-ai/vale/releases/tag/v${version}";
    mainProgram = "vale";
+144 −0
Original line number Diff line number Diff line
{ lib, stdenvNoCC, fetchFromGitHub, fetchzip, nix-update-script }:

let
  buildStyle =
    { name
    , stylePath ? name
    , ...
    }@args:
    stdenvNoCC.mkDerivation ({
      pname = "vale-style-${lib.toLower name}";

      dontConfigure = true;
      dontBuild = true;
      doCheck = false;
      dontFixup = true;

      installPhase = ''
        runHook preInstall
        mkdir -p $out/share/vale/styles
        cp -R ${stylePath} "$out/share/vale/styles/${name}"
        runHook postInstall
      '';

      passthru.updateScript = nix-update-script { };

      meta = {
        platforms = lib.platforms.all;
        maintainers = with lib.maintainers; [ katexochen ];
      } // (args.meta or { });
    } // removeAttrs args [ "meta" "name" ]);
in
{
  alex = buildStyle rec {
    name = "alex";
    version = "0.2.1";
    src = fetchFromGitHub {
      owner = "errata-ai";
      repo = "alex";
      rev = "v${version}";
      hash = "sha256-xNF7se2FwKgNe5KYx/zvGWpIwBsBADYGH4JV1lUww+Q=";
    };
    meta = {
      description = "A Vale-compatible implementation of the guidelines enforced by the alex linter";
      homepage = "https://github.com/errata-ai/alex";
      license = lib.licenses.mit;
    };
  };

  google = buildStyle rec {
    name = "Google";
    version = "0.6.0";
    src = fetchFromGitHub {
      owner = "errata-ai";
      repo = "Google";
      rev = "v${version}";
      hash = "sha256-TQS/hgS6tEWPSuZpEbX65MdYSE/+HJVcnzIuQbhIG2M=";
    };
    meta = {
      description = "A Vale-compatible implementation of the Google Developer Documentation Style Guide";
      homepage = "https://github.com/errata-ai/Google";
      license = lib.licenses.mit;
    };
  };

  joblint = buildStyle rec {
    name = "Joblint";
    version = "0.4.1";
    src = fetchFromGitHub {
      owner = "errata-ai";
      repo = "Joblint";
      rev = "v${version}";
      hash = "sha256-zRz5ThOg5RLTZj3dYPe0PDvOF5DjO31lduSpi2Us87U=";
    };
    meta = {
      description = "A Vale-compatible implementation of the Joblint linter";
      homepage = "https://github.com/errata-ai/Joblint";
      license = lib.licenses.mit;
    };
  };

  microsoft = buildStyle rec {
    name = "Microsoft";
    version = "0.14.0";
    src = fetchFromGitHub {
      owner = "errata-ai";
      repo = "Microsoft";
      rev = "v${version}";
      hash = "sha256-22rGNLZOsWYQ+H3CcM2b1zOXV3kNPcgYqDpaCg1iv9o=";
    };
    meta = {
      description = "A Vale-compatible implementation of the Microsoft Writing Style Guide";
      homepage = "https://github.com/errata-ai/Microsoft";
      license = lib.licenses.mit;
    };
  };

  proselint = buildStyle rec {
    name = "proselint";
    version = "0.3.3";
    src = fetchFromGitHub {
      owner = "errata-ai";
      repo = "proselint";
      rev = "v${version}";
      hash = "sha256-faeWr1bRhnKsycJY89WqnRv8qIowUmz3EQvDyjtl63w=";
    };
    meta = {
      description = "A Vale-compatible implementation of Python's proselint linter";
      homepage = "https://github.com/errata-ai/proselint";
      license = lib.licenses.bsd3;
    };
  };

  readability = buildStyle rec {
    name = "Readability";
    version = "0.1.1";
    src = fetchFromGitHub {
      owner = "errata-ai";
      repo = "readability";
      rev = "v${version}";
      hash = "sha256-5Y9v8QsZjC2w3/pGIcL5nBdhpogyJznO5IFa0s8VOOI=";
    };
    meta = {
      description = "Vale-compatible implementations of many popular \"readability\" metrics";
      homepage = "https://github.com/errata-ai/readability";
      license = lib.licenses.mit;
    };
  };

  write-good = buildStyle rec {
    name = "write-good";
    version = "0.4.0";
    src = fetchFromGitHub {
      owner = "errata-ai";
      repo = "write-good";
      rev = "v${version}";
      hash = "sha256-KQzY6MeHV/owPVmUAfzGUO0HmFPkD7wdQqOvBkipwP8=";
    };
    meta = {
      description = "A Vale-compatible implementation of the write-good linter";
      homepage = "https://github.com/errata-ai/write-good";
      license = lib.licenses.mit;
    };
  };
}
+2 −0
Original line number Diff line number Diff line
@@ -24917,6 +24917,8 @@ with pkgs;
  vale = callPackage ../tools/text/vale { };
  valeStyles = recurseIntoAttrs (callPackages ../tools/text/vale/styles.nix { });
  valhalla = callPackage ../development/libraries/valhalla {
    boost = boost.override { enablePython = true; python = python3; };
    protobuf = protobuf_21.override {