about summary refs log tree commit diff
path: root/nixpkgs/pkgs/applications/video/mirakurun/update.nix
blob: 18a4d0ab25629ad255b0e44a87c8f6c8376bb48f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
{ pname
, version
, homepage
, lib
, common-updater-scripts
, genericUpdater
, writers
, jq
, yarn
, yarn2nix
}:

let
  updater = genericUpdater {
    inherit pname version;
    attrPath = lib.toLower pname;

    # exclude prerelease versions
    versionLister = writers.writeBash "list-mirakurun-versions" ''
      ${common-updater-scripts}/bin/list-git-tags --url=${homepage} \
        | grep '^[0-9]\+\.[0-9]\+\.[0-9]\+$'
    '';
  };
  updateScript = builtins.elemAt updater 0;
  updateArgs = map (lib.escapeShellArg) (builtins.tail updater);
in writers.writeBash "update-mirakurun" ''
  set -euxo pipefail

  WORKDIR="$(mktemp -d)"
  cleanup() {
    rm -rf "$WORKDIR"
  }
  trap cleanup EXIT

  # bump the version
  ${updateScript} ${lib.concatStringsSep " " updateArgs}

  # Get the path to the latest source. Note that we can't just pass the value
  # of mirakurun.src directly because it'd be evaluated before we can run
  # updateScript.
  SRC="$(nix-build "${toString ../../../..}" --no-out-link -A mirakurun.src)"
  if [[ "${version}" == "$(${jq}/bin/jq -r .version "$SRC/package.json")" ]]; then
    echo "[INFO] Already using the latest version of ${pname}" >&2
    exit
  fi

  cd "$WORKDIR"

  cp "$SRC/package.json" package.json
  "${yarn}/bin/yarn" install --ignore-scripts

  "${yarn2nix}/bin/yarn2nix" > "${toString ./.}/yarn.nix"
  cp yarn.lock "${toString ./.}/yarn.lock"
  cp package.json "${toString ./.}/package.json"
''