1{
2 buildRebar3,
3 fetchFromGitHub,
4 fetchHex,
5 fetchgit,
6 lib,
7 rebar3Relx,
8 writeScript,
9}:
10
11rebar3Relx rec {
12 releaseType = "escript";
13 pname = "elvis-erlang";
14 version = "4.1.1";
15
16 src = fetchFromGitHub {
17 owner = "inaka";
18 repo = "elvis";
19 hash = "sha256-9aOJpKYb+M07bi6aEMt5Gtr/edOGm+jyA8bxiLyUd0g=";
20 tag = version;
21 };
22
23 beamDeps = builtins.attrValues (
24 import ./rebar-deps.nix {
25 inherit fetchHex fetchgit fetchFromGitHub;
26 builder = buildRebar3;
27 }
28 );
29
30 passthru.updateScript = writeScript "update.sh" ''
31 #!/usr/bin/env nix-shell
32 #!nix-shell -i bash -p bash common-updater-scripts git nix-prefetch-git gnutar gzip "rebar3WithPlugins {globalPlugins = [beamPackages.rebar3-nix];}"
33
34 set -euo pipefail
35
36 latest=$(list-git-tags | sort -V | tail -1)
37 if [ "$latest" != "${version}" ]; then
38 nixpkgs="$(git rev-parse --show-toplevel)"
39 nix_path="$nixpkgs/pkgs/development/beam-modules/elvis-erlang"
40 update-source-version elvis-erlang "$latest" --version-key=version --print-changes --file="$nix_path/default.nix"
41 tmpdir=$(mktemp -d)
42 cp -R $(nix-build $nixpkgs --no-out-link -A elvis-erlang.src)/* "$tmpdir"
43 (cd "$tmpdir" && HOME=. rebar3 nix lock -o "$nix_path/rebar-deps.nix")
44 nixfmt "$nix_path/rebar-deps.nix"
45 else
46 echo "elvis-erlang is already up-to-date"
47 fi
48 '';
49
50 meta = {
51 homepage = "https://github.com/inaka/elvis";
52 description = "Erlang Style Reviewer";
53 platforms = lib.platforms.unix;
54 license = lib.licenses.asl20;
55 maintainers = with lib.maintainers; [ dlesl ];
56 mainProgram = "elvis";
57 };
58}