git-ftp: use resholve.mkDerivation

This commit is contained in:
Travis A. Everett 2022-01-29 19:09:19 -06:00
parent 58de79e9a6
commit c5181ce2d7

View file

@ -1,5 +1,22 @@
{ lib, stdenv, fetchFromGitHub, pandoc, man }:
stdenv.mkDerivation rec {
{ lib
, resholve
, fetchFromGitHub
, fetchpatch
, bash
, coreutils
, git
, gnugrep
, gawk
, curl
, hostname
, gnused
, findutils
, lftp
, pandoc
, man
}:
resholve.mkDerivation rec {
pname = "git-ftp";
version = "1.6.0";
src = fetchFromGitHub {
@ -11,11 +28,66 @@ stdenv.mkDerivation rec {
dontBuild = true;
# fix bug/typo; PRed upstream @
# https://github.com/git-ftp/git-ftp/pull/628
patches = [
(fetchpatch {
name = "fix-function-invocation-typo.patch";
url = "https://github.com/git-ftp/git-ftp/commit/cddf7cbba80e710758f6aac0ec0d77552ea8cd75.patch";
sha256 = "sha256-2B0QaMJi78Bg3bA1jp41aiyql1/LCryoaDs7+xmS1HY=";
})
];
installPhase = ''
make install-all prefix=$out
'';
buildInputs = [pandoc man];
nativeBuildInputs = [ pandoc man ];
solutions = {
git-ftp = {
scripts = [ "bin/git-ftp" ];
interpreter = "${bash}/bin/bash";
inputs = [
coreutils
git
gnugrep
gawk
curl
hostname
gnused
findutils
lftp
];
fake = {
# don't resolve impure system macOS security
# caution: will still be fragile if PATH is bad
# TODO: fixable once we figure out how to handle
# this entire class of problem...
"external" = [ "security" ];
};
keep = {
# looks like run-time user/env/git-config controlled
"$GIT_PAGER" = true;
"$hook" = true; # presumably git hooks given context
};
execer = [
# TODO: rm when binlore/resholve handle git; manually
# checked and see no obvious subexec for now
"cannot:${git}/bin/git"
/*
Mild uncertainty here. There *are* commandlikes in
the arguments (especially wait & cd), but I think they are
fine as-is, because I'm reading them as:
1. ftp commands
2. running on the remote anyways
See https://github.com/git-ftp/git-ftp/blob/057f7d8e9f00ffc5a8c6ceaa4be30af2939df41a/git-ftp#L1214-L1221
*/
"cannot:${lftp}/bin/lftp"
];
};
};
meta = with lib; {
description = "Git powered FTP client written as shell script";