summary refs log tree commit diff
diff options
context:
space:
mode:
authorfigsoda <figsoda@pm.me>2023-03-11 16:38:06 -0500
committerGitHub <noreply@github.com>2023-03-11 16:38:06 -0500
commitd4f33014402bcf61c030070e8c59fc5d0a2c1a8f (patch)
treeeb95a3dd626ab50ffaf2bcd8afc6782e4a0e9c04
parent69326363f710ba45d722fa4e1e57d78b01a1513c (diff)
parent6acf10c7f351d3ac0471cffd0e21f7ee0298ab4a (diff)
downloadnixpkgs-d4f33014402bcf61c030070e8c59fc5d0a2c1a8f.tar
nixpkgs-d4f33014402bcf61c030070e8c59fc5d0a2c1a8f.tar.gz
nixpkgs-d4f33014402bcf61c030070e8c59fc5d0a2c1a8f.tar.bz2
nixpkgs-d4f33014402bcf61c030070e8c59fc5d0a2c1a8f.tar.lz
nixpkgs-d4f33014402bcf61c030070e8c59fc5d0a2c1a8f.tar.xz
nixpkgs-d4f33014402bcf61c030070e8c59fc5d0a2c1a8f.tar.zst
nixpkgs-d4f33014402bcf61c030070e8c59fc5d0a2c1a8f.zip
Merge pull request #220514 from figsoda/csvquote
-rw-r--r--pkgs/tools/text/csvquote/csvquote-path.patch14
-rw-r--r--pkgs/tools/text/csvquote/default.nix47
-rw-r--r--pkgs/top-level/all-packages.nix2
3 files changed, 63 insertions, 0 deletions
diff --git a/pkgs/tools/text/csvquote/csvquote-path.patch b/pkgs/tools/text/csvquote/csvquote-path.patch
new file mode 100644
index 00000000000..a3f87055f23
--- /dev/null
+++ b/pkgs/tools/text/csvquote/csvquote-path.patch
@@ -0,0 +1,14 @@
+--- a/csvheader
++++ b/csvheader
+@@ -29,10 +29,6 @@ while getopts "d:tq:r:" arg; do
+     esac
+ done
+ 
+-CSVQUOTE=`which csvquote` || CSVQUOTE="./csvquote"
+-if [ ! -f $CSVQUOTE ]; then
+-    echo "csvquote program not found. exiting"
+-    exit 1
+-fi
++CSVQUOTE=@out@/bin/csvquote
+ 
+ $CSVQUOTE $@ | head -n 1 | tr "$DEL" '\n' | nl -ba | $CSVQUOTE -u -d "$DEL" -q "$QUO" -r "$REC"
diff --git a/pkgs/tools/text/csvquote/default.nix b/pkgs/tools/text/csvquote/default.nix
new file mode 100644
index 00000000000..2812de20841
--- /dev/null
+++ b/pkgs/tools/text/csvquote/default.nix
@@ -0,0 +1,47 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, patsh
+}:
+
+stdenv.mkDerivation rec {
+  pname = "csvquote";
+  version = "0.1.5";
+
+  src = fetchFromGitHub {
+    owner = "dbro";
+    repo = "csvquote";
+    rev = "v${version}";
+    hash = "sha256-847JAoDEfA9K4LB8z9cqSw+GTImqmITBylB/4odLDb0=";
+  };
+
+  patches = [
+    # patch csvheader to use csvquote from the derivation
+    ./csvquote-path.patch
+  ];
+
+  nativeBuildInputs = [
+    patsh
+  ];
+
+  makeFlags = [
+    "BINDIR=$(out)/bin"
+  ];
+
+  preInstall = ''
+    mkdir -p "$out/bin"
+  '';
+
+  postInstall = ''
+    substituteAllInPlace $out/bin/csvheader
+    patsh $out/bin/csvheader -fs ${builtins.storeDir}
+  '';
+
+  meta = with lib; {
+    description = "Enables common unix utlities like cut, awk, wc, head to work correctly with csv data containing delimiters and newlines";
+    homepage = "https://github.com/dbro/csvquote";
+    license = licenses.mit;
+    maintainers = with maintainers; [ figsoda ];
+    platforms = platforms.all;
+  };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 12382fb2162..fe6f34f8119 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -4317,6 +4317,8 @@ with pkgs;
 
   csvkit = callPackage ../tools/text/csvkit { };
 
+  csvquote = callPackage ../tools/text/csvquote { };
+
   csvtool = callPackage ../development/ocaml-modules/csv/csvtool.nix { };
 
   csv2latex = callPackage ../tools/misc/csv2latex { };