Unverified Commit fd4377f2 authored by Peder Bergebakken Sundt's avatar Peder Bergebakken Sundt Committed by GitHub
Browse files

gaw: 20220315 -> 20250128 (#399902)

parents beb11d38 e77add9e
Loading
Loading
Loading
Loading
+67 −8
Original line number Diff line number Diff line
{
  stdenv,
  fetchurl,
  runCommandLocal,
  lib,
  htmlq,
  curl,
  cacert,
  gtk3,
  pkg-config,
}:

stdenv.mkDerivation rec {
  pname = "gaw";
  version = "20220315";
  pname = "gaw3";
  version = "20250128";

  src = fetchurl {
    url = "https://download.tuxfamily.org/gaw/download/gaw3-${version}.tar.gz";
    sha256 = "0j2bqi9444s1mfbr7x9rqp232xf7ab9z7ifsnl305jsklp6qmrbg";
  };
  # https://www.rvq.fr/php/ndl.php?id=gaw.*
  # https://www.rvq.fr/php/ndl.php?id=gaw3-20250128.tar.gz
  src =
    runCommandLocal "gaw3-${version}.tar.gz"
      {
        BASE = "https://www.rvq.fr/php/ndl.php";
        FNAME = "gaw3-${version}.tar.gz";

        nativeBuildInputs = [
          htmlq
          curl
        ];
        SSL_CERT_FILE = "${cacert}/etc/ssl/certs/ca-bundle.crt";

        outputHashMode = "recursive";
        outputHashAlgo = "sha256";
        outputHash = "sha256-3uO+209+cmu231iabyYmABmgegyxAxswWDWA/v8WSy0=";
      }
      ''
        # fetch download page
        html_form=$(
          curl "$BASE?id=$FNAME" |
            tr '\n' ' ' | tr -s ' ' | # minimize whitespace
            htmlq tr | # select table rows, one per line
            grep "<td>$FNAME</td>" | # filter for row of interest
            head -n1 | # first match, just in case
            htmlq form --base "$BASE"
        )

        declare -a curl_args=()

        # hidden fields
        declare -a input_names=()
        readarray -td $'\n' input_names < <(
          htmlq <<<"$html_form" "input[type=hidden]" -a name
        )
        for input_name in "''${input_names[@]}"; do
          input_value=$(
            htmlq <<<"$html_form" "input[type=hidden][name=''${input_name}]" -a value
          )
          echo "$input_name = $input_value"
          curl_args+=( --form "$input_name=$input_value" )
        done

        # destination
        curl_args+=(
          "https://www.rvq.fr/$( htmlq <<<"$html_form"  form -a action )"
        )

        # POST and download
        (set -x
          curl -X POST "''${curl_args[@]}" $NIX_CURL_FLAGS --output "$FNAME"
        )

        # unpack and strip root dir
        mkdir unpack/
        tar xvf "$FNAME" --directory=unpack/
        [[ "$(printf "%s\n" unpack/* | wc -l)" -eq 1 ]]
        cp -a unpack/* $out
      '';

  nativeBuildInputs = [ pkg-config ];

@@ -28,7 +87,7 @@ stdenv.mkDerivation rec {
      input from sound cards. Data can be imported to gaw using files,
      direct tcp/ip connection or directly from the sound card.
    '';
    homepage = "http://gaw.tuxfamily.org";
    homepage = "https://www.rvq.fr/linux/gaw.php";
    license = licenses.gpl2Plus;
    maintainers = with maintainers; [ fbeffa ];
    platforms = platforms.linux;