Merge pull request #194648 from jtojnar/epgstation-updatescript

epgstation.updateScript: Fix eval and clean up

Changed files
+50 -67
pkgs
applications
video
epgstation
+4 -16
pkgs/applications/video/epgstation/default.nix
···
{ lib
, stdenv
, fetchFromGitHub
-
, gitUpdater
-
, writers
, makeWrapper
, bash
, nodejs
, gzip
-
, jq
-
, yq
+
, callPackage
}:
let
···
});
server = nodejs.pkgs.epgstation.override (drv: {
-
inherit src;
+
# NOTE: updateScript relies on version matching the src.
+
inherit version src;
# This is set to false to keep devDependencies at build time. Build time
# dependencies are pruned afterwards.
···
# NOTE: this may take a while since it has to update all packages in
# nixpkgs.nodePackages
-
passthru.updateScript = import ./update.nix {
-
inherit lib;
-
inherit (src.meta) homepage;
-
inherit
-
pname
-
version
-
gitUpdater
-
writers
-
jq
-
yq;
-
};
+
passthru.updateScript = callPackage ./update.nix { };
# nodePackages.epgstation is a stub package to fetch npm dependencies and
# its meta.platforms is made empty to prevent users from installing it
+46 -51
pkgs/applications/video/epgstation/update.nix
···
-
{ pname
-
, version
-
, homepage
-
, lib
-
, gitUpdater
+
{ gitUpdater
, writers
, jq
, yq
, gnused
+
, _experimental-update-script-combinators
}:
let
-
updater = gitUpdater {
-
inherit pname version;
-
attrPath = lib.toLower pname;
+
updateSource = gitUpdater {
rev-prefix = "v";
};
-
updateScript = builtins.elemAt updater.command 0;
-
updateArgs = map (lib.escapeShellArg) (builtins.tail updater.command);
-
in writers.writeBash "update-epgstation" ''
-
set -euxo pipefail
+
updateLocks = writers.writeBash "update-epgstation" ''
+
set -euxo pipefail
-
# bump the version
-
${updateScript} ${lib.concatStringsSep " " updateArgs}
+
cd "$1"
-
cd "${toString ./.}"
+
# Get the path to the latest source. Note that we can't just pass the value
+
# of epgstation.src directly because it'd be evaluated before we can run
+
# updateScript.
+
SRC="$(nix-build ../../../.. --no-out-link -A epgstation.src)"
+
if [[ "$UPDATE_NIX_OLD_VERSION" == "$(${jq}/bin/jq -r .version "$SRC/package.json")" ]]; then
+
echo "[INFO] Already using the latest version of $UPDATE_NIX_PNAME" >&2
+
exit
+
fi
-
# Get the path to the latest source. Note that we can't just pass the value
-
# of epgstation.src directly because it'd be evaluated before we can run
-
# updateScript.
-
SRC="$(nix-build ../../../.. --no-out-link -A epgstation.src)"
-
if [[ "${version}" == "$(${jq}/bin/jq -r .version "$SRC/package.json")" ]]; then
-
echo "[INFO] Already using the latest version of ${pname}" >&2
-
exit
-
fi
+
# Regenerate package.json from the latest source.
+
${jq}/bin/jq '. + {
+
dependencies: (.dependencies + .devDependencies),
+
} | del(.devDependencies, .main, .scripts)' \
+
"$SRC/package.json" \
+
> package.json
+
${jq}/bin/jq '. + {
+
dependencies: (.dependencies + .devDependencies),
+
} | del(.devDependencies, .main, .scripts)' \
+
"$SRC/client/package.json" \
+
> client/package.json
-
# Regenerate package.json from the latest source.
-
${jq}/bin/jq '. + {
-
dependencies: (.dependencies + .devDependencies),
-
} | del(.devDependencies, .main, .scripts)' \
-
"$SRC/package.json" \
-
> package.json
-
${jq}/bin/jq '. + {
-
dependencies: (.dependencies + .devDependencies),
-
} | del(.devDependencies, .main, .scripts)' \
-
"$SRC/client/package.json" \
-
> client/package.json
-
-
# Fix issue with old sqlite3 version pinned that depends on very old node-gyp 3.x
-
${gnused}/bin/sed -i -e 's/"sqlite3":\s*"5.0.[0-9]\+"/"sqlite3": "5.0.11"/' package.json
+
# Fix issue with old sqlite3 version pinned that depends on very old node-gyp 3.x
+
${gnused}/bin/sed -i -e 's/"sqlite3":\s*"5.0.[0-9]\+"/"sqlite3": "5.0.11"/' package.json
-
# Regenerate node packages to update the pre-overriden epgstation derivation.
-
# This must come *after* package.json has been regenerated.
-
pushd ../../../development/node-packages
-
./generate.sh
-
popd
+
# Regenerate node packages to update the pre-overriden epgstation derivation.
+
# This must come *after* package.json has been regenerated.
+
pushd ../../../development/node-packages
+
./generate.sh
+
popd
-
# Generate default streaming settings for the nixos module.
-
pushd ../../../../nixos/modules/services/video/epgstation
-
${yq}/bin/yq -j '{ urlscheme , stream }' \
-
"$SRC/config/config.yml.template" \
-
> streaming.json
+
# Generate default streaming settings for the nixos module.
+
pushd ../../../../nixos/modules/services/video/epgstation
+
${yq}/bin/yq -j '{ urlscheme , stream }' \
+
"$SRC/config/config.yml.template" \
+
> streaming.json
-
# Fix generated output for EditorConfig compliance
-
printf '\n' >> streaming.json # rule: insert_final_newline
-
popd
-
''
+
# Fix generated output for EditorConfig compliance
+
printf '\n' >> streaming.json # rule: insert_final_newline
+
popd
+
'';
+
in
+
_experimental-update-script-combinators.sequence [
+
updateSource
+
[updateLocks ./.]
+
]