From 28f68fd831ed06c13c85f5519f05bd164b5cc696 Mon Sep 17 00:00:00 2001 From: "Travis A. Everett" Date: Wed, 16 Dec 2020 00:08:43 -0600 Subject: [PATCH] bashup-events: init at it's-complicated --- .../libraries/bashup-events/3.2.nix | 26 ++++++ .../libraries/bashup-events/4.4.nix | 20 +++++ .../libraries/bashup-events/default.nix | 6 ++ .../libraries/bashup-events/generic.nix | 83 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 + 5 files changed, 137 insertions(+) create mode 100644 pkgs/development/libraries/bashup-events/3.2.nix create mode 100644 pkgs/development/libraries/bashup-events/4.4.nix create mode 100644 pkgs/development/libraries/bashup-events/default.nix create mode 100644 pkgs/development/libraries/bashup-events/generic.nix diff --git a/pkgs/development/libraries/bashup-events/3.2.nix b/pkgs/development/libraries/bashup-events/3.2.nix new file mode 100644 index 000000000000..f7e88c382511 --- /dev/null +++ b/pkgs/development/libraries/bashup-events/3.2.nix @@ -0,0 +1,26 @@ +{ callPackage, fetchFromGitHub }: + +callPackage ./generic.nix { + variant = "3.2"; + version = "2019-07-27"; + branch = "master"; + src = fetchFromGitHub { + owner = "bashup"; + repo = "events"; + rev = "83744c21bf720afb8325343674c62ab46a8f3d94"; + hash = "sha256-0VDjd+1T1JBmSDGovWOOecUZmNztlwG32UcstfdigbI="; + }; + fake = { + # Note: __ev.encode is actually defined, but it happens in a + # quoted arg to eval, which resholve currently doesn't (and may + # never) parse into. See abathur/resholve/issues/2. + function = [ "__ev.encode" ]; + }; + keep = { + # allow vars in eval + eval = [ "e" "f" "q" "r" ]; + # allow vars executed as commands + "$f" = true; + "$n" = true; + }; +} diff --git a/pkgs/development/libraries/bashup-events/4.4.nix b/pkgs/development/libraries/bashup-events/4.4.nix new file mode 100644 index 000000000000..f880009ea71a --- /dev/null +++ b/pkgs/development/libraries/bashup-events/4.4.nix @@ -0,0 +1,20 @@ +{ callPackage, fetchFromGitHub }: + +callPackage ./generic.nix { + variant = "4.4"; + version = "2020-04-04"; + branch = "bash44"; + src = fetchFromGitHub { + owner = "bashup"; + repo = "events"; + rev = "e97654f5602fc4e31083b27afa18dcc89b3e8296"; + hash = "sha256-51OSIod3mEg3MKs4rrMgRcOimDGC+3UIr4Bl/cTRyGM="; + }; + keep = { + # allow vars in eval + eval = [ "e" "bashup_ev" "n" ]; + # allow vars executed as commands + "$f" = true; + "$n" = true; + }; +} diff --git a/pkgs/development/libraries/bashup-events/default.nix b/pkgs/development/libraries/bashup-events/default.nix new file mode 100644 index 000000000000..bcefdd0fcacf --- /dev/null +++ b/pkgs/development/libraries/bashup-events/default.nix @@ -0,0 +1,6 @@ +{ callPackage }: + +{ + bashup-events32 = callPackage ./3.2.nix { }; + bashup-events44 = callPackage ./4.4.nix { }; +} diff --git a/pkgs/development/libraries/bashup-events/generic.nix b/pkgs/development/libraries/bashup-events/generic.nix new file mode 100644 index 000000000000..78ef4c2f3369 --- /dev/null +++ b/pkgs/development/libraries/bashup-events/generic.nix @@ -0,0 +1,83 @@ +{ + # general + lib +, callPackage +, runCommand +, resholvePackage +, bash +, shellcheck +, doCheck ? true +, doInstallCheck ? true + # variant-specific +, variant +, version +, branch +, src +, fake ? false +, keep +}: +let + # extracting this so that it's trivial to test in other shells + installCheck = shell: + '' + echo "testing bashup.events in ${shell}" + ${shell} <<'EOF' + source $out/bin/bashup.events + neat(){ + echo $0: Hi from event \'test event\'. I can have both $1 and $2 arguments. + exit 0 + } + event on "test event" @2 neat curried + echo event registered + event emit "test event" runtime + exit 1 # fail if emitting event didn't exit clean + EOF + ''; + +in +resholvePackage rec { + # bashup.events doesn't version yet but it has two variants with + # differing features/performance characteristics: + # - branch master: a variant for bash 3.2+ + # - branch bash44: a variant for bash 4.4+ + pname = "bashup-events${variant}-unstable"; + # should be YYYY-MM-DD + inherit version; + inherit src; + + installPhase = '' + install -Dt $out/bin bashup.events + ''; + + inherit doCheck; + checkInputs = [ shellcheck bash ]; + + # check based on https://github.com/bashup/events/blob/master/.dkrc + checkPhase = '' + SHELLCHECK_OPTS='-e SC2016,SC2145' ${shellcheck}/bin/shellcheck ./bashup.events + ${bash}/bin/bash -n ./bashup.events + ${bash}/bin/bash ./bashup.events + ''; + + solutions = { + events = { + inputs = [ ]; + interpreter = "none"; + scripts = [ "bin/bashup.events" ]; + inherit keep; + } // lib.optionalAttrs (lib.isAttrs fake) { inherit fake; }; + }; + + inherit doInstallCheck; + installCheckInputs = [ bash ]; + installCheckPhase = installCheck "${bash}/bin/bash"; + + meta = with lib; { + inherit branch; + description = "An event listener/callback API for creating extensible bash programs"; + homepage = "https://github.com/bashup/events"; + license = licenses.cc0; + maintainers = with maintainers; [ abathur ]; + platforms = platforms.all; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 1b6e3b9cba70..d0c3a9d6b8af 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -12594,6 +12594,8 @@ in bamf = callPackage ../development/libraries/bamf { }; + inherit (callPackages ../development/libraries/bashup-events { }) bashup-events32 bashup-events44; + bcg729 = callPackage ../development/libraries/bcg729 { }; bctoolbox = callPackage ../development/libraries/bctoolbox { };