Merge pull request #107182 from abathur/init_bashup_events
bashup-events: init at it's-complicated
This commit is contained in:
commit
c0ef7fc246
26
pkgs/development/libraries/bashup-events/3.2.nix
Normal file
26
pkgs/development/libraries/bashup-events/3.2.nix
Normal file
@ -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;
|
||||||
|
};
|
||||||
|
}
|
20
pkgs/development/libraries/bashup-events/4.4.nix
Normal file
20
pkgs/development/libraries/bashup-events/4.4.nix
Normal file
@ -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;
|
||||||
|
};
|
||||||
|
}
|
6
pkgs/development/libraries/bashup-events/default.nix
Normal file
6
pkgs/development/libraries/bashup-events/default.nix
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{ callPackage }:
|
||||||
|
|
||||||
|
{
|
||||||
|
bashup-events32 = callPackage ./3.2.nix { };
|
||||||
|
bashup-events44 = callPackage ./4.4.nix { };
|
||||||
|
}
|
83
pkgs/development/libraries/bashup-events/generic.nix
Normal file
83
pkgs/development/libraries/bashup-events/generic.nix
Normal file
@ -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;
|
||||||
|
};
|
||||||
|
}
|
@ -12963,6 +12963,8 @@ in
|
|||||||
|
|
||||||
bamf = callPackage ../development/libraries/bamf { };
|
bamf = callPackage ../development/libraries/bamf { };
|
||||||
|
|
||||||
|
inherit (callPackages ../development/libraries/bashup-events { }) bashup-events32 bashup-events44;
|
||||||
|
|
||||||
bcg729 = callPackage ../development/libraries/bcg729 { };
|
bcg729 = callPackage ../development/libraries/bcg729 { };
|
||||||
|
|
||||||
bctoolbox = callPackage ../development/libraries/bctoolbox { };
|
bctoolbox = callPackage ../development/libraries/bctoolbox { };
|
||||||
|
Loading…
x
Reference in New Issue
Block a user