about summary refs log tree commit diff
path: root/pkgs/by-name/el
diff options
context:
space:
mode:
authorAnderson Torres <torres.anderson.85@protonmail.com>2023-09-18 14:24:35 -0300
committerAnderson Torres <torres.anderson.85@protonmail.com>2023-09-19 00:02:22 -0300
commitc3f4c7f54ce38f1bf69d2a557c4c37c036436073 (patch)
treee861bae240f40cd4d8595dadae2f4871e33a8e03 /pkgs/by-name/el
parent88a627e01273c4301e3ab533a5e85fea51d5ecd9 (diff)
elvish: refactor
- move installCheck to passthru.tests
- migrate to by-name
Diffstat (limited to 'pkgs/by-name/el')
-rw-r--r--pkgs/by-name/el/elvish/package.nix53
-rw-r--r--pkgs/by-name/el/elvish/tests/expect-version.elv8
-rw-r--r--pkgs/by-name/el/elvish/tests/expect-version.nix25
3 files changed, 86 insertions, 0 deletions
diff --git a/pkgs/by-name/el/elvish/package.nix b/pkgs/by-name/el/elvish/package.nix
new file mode 100644
index 0000000000000..0069dad4f0c69
--- /dev/null
+++ b/pkgs/by-name/el/elvish/package.nix
@@ -0,0 +1,53 @@
+{ lib
+, buildGoModule
+, fetchFromGitHub
+, callPackage
+}:
+
+let
+  pname = "elvish";
+  version = "0.19.2";
+in
+buildGoModule {
+  inherit pname version;
+
+  src = fetchFromGitHub {
+    owner = "elves";
+    repo = "elvish";
+    rev = "v${version}";
+    hash = "sha256-eCPJXCgmMvrJ2yVqYgXHXJWb6Ec0sutc91LNs4yRBYk=";
+  };
+
+  vendorHash = "sha256-VMI20IP1jVkUK3rJm35szaFDfZGEEingUEL/xfVJ1cc=";
+
+  subPackages = [ "cmd/elvish" ];
+
+  ldflags = [
+    "-s"
+    "-w"
+    "-X src.elv.sh/pkg/buildinfo.Version==${version}"
+  ];
+
+  strictDeps = true;
+
+  doCheck = false;
+
+  passthru = {
+    shellPath = "/bin/elvish";
+    tests = {
+      expectVersion = callPackage ./tests/expect-version.nix { };
+    };
+  };
+
+  meta = {
+    homepage = "https://elv.sh/";
+    description = "A friendly and expressive command shell";
+    longDescription = ''
+      Elvish is a friendly interactive shell and an expressive programming
+      language. It runs on Linux, BSDs, macOS and Windows. Despite its pre-1.0
+      status, it is already suitable for most daily interactive use.
+    '';
+    license = lib.licenses.bsd2;
+    maintainers = with lib.maintainers; [ AndersonTorres ];
+  };
+}
diff --git a/pkgs/by-name/el/elvish/tests/expect-version.elv b/pkgs/by-name/el/elvish/tests/expect-version.elv
new file mode 100644
index 0000000000000..72f8c081f61bc
--- /dev/null
+++ b/pkgs/by-name/el/elvish/tests/expect-version.elv
@@ -0,0 +1,8 @@
+fn expect {|key expected|
+  var actual = $buildinfo[$key]
+  if (not-eq $actual $expected) {
+    fail '$buildinfo['$key']: expected '(to-string $expected)', got '(to-string $actual)
+  }
+}
+
+expect version @version@
diff --git a/pkgs/by-name/el/elvish/tests/expect-version.nix b/pkgs/by-name/el/elvish/tests/expect-version.nix
new file mode 100644
index 0000000000000..406f2131199d3
--- /dev/null
+++ b/pkgs/by-name/el/elvish/tests/expect-version.nix
@@ -0,0 +1,25 @@
+{ lib
+, stdenv
+, elvish
+, substituteAll
+}:
+
+stdenv.mkDerivation {
+  pname = "elvish-simple-test";
+  inherit (elvish) version;
+
+  nativeBuildInputs = [ elvish ];
+
+  dontInstall = true;
+
+  buildCommand = ''
+    elvish ${substituteAll {
+      src = ./expect-version.elv;
+      inherit (elvish) version;
+    }}
+
+    touch $out
+  '';
+
+  meta.timeout = 10;
+}