From 684c0e50607a1180b828a193bb1bfee5248ba0ee Mon Sep 17 00:00:00 2001 From: Martin Joerg Date: Sun, 15 Sep 2024 08:14:42 +0000 Subject: [PATCH 1/2] pdf-parser: add updateScript --- pkgs/tools/misc/pdf-parser/default.nix | 35 ++++++++++++++++++++------ 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/pkgs/tools/misc/pdf-parser/default.nix b/pkgs/tools/misc/pdf-parser/default.nix index 593960c4d2cf..614bb9d30826 100644 --- a/pkgs/tools/misc/pdf-parser/default.nix +++ b/pkgs/tools/misc/pdf-parser/default.nix @@ -1,12 +1,19 @@ -{ lib, python3Packages, fetchzip }: +{ + lib, + python3Packages, + fetchzip, + writeScript, +}: -python3Packages.buildPythonApplication { +python3Packages.buildPythonApplication rec { pname = "pdf-parser"; version = "0.7.4"; src = fetchzip { - url = "https://didierstevens.com/files/software/pdf-parser_V0_7_4.zip"; - sha256 = "1j39yww2yl4cav8xgd4zfl5jchbbkvffnrynkamkzvz9dd5np2mh"; + url = "https://didierstevens.com/files/software/pdf-parser_V${ + lib.replaceStrings [ "." ] [ "_" ] version + }.zip"; + hash = "sha256-sIprS2vp7z+rmtZn69yea0EmC3WftNfRVoxQLzj3acg="; }; format = "other"; @@ -20,16 +27,28 @@ python3Packages.buildPythonApplication { --replace '/usr/bin/python' '${python3Packages.python}/bin/python' ''; - meta = with lib; { + passthru.updateScript = writeScript "update-pdf-parser" '' + #!/usr/bin/env nix-shell + #!nix-shell -i bash -p common-updater-scripts curl pcre2 + + set -eu -o pipefail + + version="$(curl -s https://blog.didierstevens.com/programs/pdf-tools/ | + pcre2grep -O '$1.$2.$3' '\bpdf-parser_V(\d+)_(\d+)_(\d+)\.zip\b.*')" + + update-source-version "$UPDATE_NIX_ATTR_PATH" "$version" + ''; + + meta = { description = "Parse a PDF document"; longDescription = '' This tool will parse a PDF document to identify the fundamental elements used in the analyzed file. It will not render a PDF document. ''; homepage = "https://blog.didierstevens.com/programs/pdf-tools/"; - license = licenses.publicDomain; - maintainers = [ maintainers.lightdiscord ]; - platforms = platforms.all; + license = lib.licenses.publicDomain; + maintainers = [ lib.maintainers.lightdiscord ]; + platforms = lib.platforms.all; mainProgram = "pdf-parser.py"; }; } From f23cdfedfa6ce783fa97edfa88f63bb49e4a8cb3 Mon Sep 17 00:00:00 2001 From: Martin Joerg Date: Sun, 15 Sep 2024 08:14:42 +0000 Subject: [PATCH 2/2] pdf-parser: 0.7.4 -> 0.7.9 https://github.com/DidierStevens/DidierStevensSuite/compare/5f81a8f7a8aac15b580413f6f3a2ec3d72c5d10c..91faa8f5d101e9216de0206af44d9864818ba233#diff-901accb21b87dbbf58011e6c337f4f45cd040ed7b65e61cbc266089767e3fb38 --- pkgs/tools/misc/pdf-parser/default.nix | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/pkgs/tools/misc/pdf-parser/default.nix b/pkgs/tools/misc/pdf-parser/default.nix index 614bb9d30826..b083ebd3e4ed 100644 --- a/pkgs/tools/misc/pdf-parser/default.nix +++ b/pkgs/tools/misc/pdf-parser/default.nix @@ -7,16 +7,26 @@ python3Packages.buildPythonApplication rec { pname = "pdf-parser"; - version = "0.7.4"; + version = "0.7.9"; + pyproject = false; src = fetchzip { url = "https://didierstevens.com/files/software/pdf-parser_V${ lib.replaceStrings [ "." ] [ "_" ] version }.zip"; - hash = "sha256-sIprS2vp7z+rmtZn69yea0EmC3WftNfRVoxQLzj3acg="; + hash = "sha256-1mFThtTe1LKkM/MML44RgskGv3FZborNVBsTqSKanks="; }; - format = "other"; + postPatch = '' + # quote regular expressions correctly + substituteInPlace pdf-parser.py \ + --replace-fail \ + "re.sub('" \ + "re.sub(r'" \ + --replace-fail \ + "re.match('" \ + "re.match(r'" + ''; installPhase = '' install -Dm555 pdf-parser.py $out/bin/pdf-parser.py @@ -24,7 +34,7 @@ python3Packages.buildPythonApplication rec { preFixup = '' substituteInPlace $out/bin/pdf-parser.py \ - --replace '/usr/bin/python' '${python3Packages.python}/bin/python' + --replace-fail '/usr/bin/python' '${python3Packages.python}/bin/python' ''; passthru.updateScript = writeScript "update-pdf-parser" ''