summary refs log tree commit diff
path: root/pkgs/desktops/deepin/update.nix
blob: 089d9289827eba67fb816ca24cbba86aac4df505 (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
{ stdenv, lib, writeScript, coreutils, curl, gnugrep, gnused, jq, common-updater-scripts, nix }:
{ name, ignored-versions ? "^2014(\\.|rc)|^v[0-9]+" }:

let
  nameAndVersion = builtins.parseDrvName name;
  packageVersion = nameAndVersion.version;
  packageName = nameAndVersion.name;
  attrPath = "deepin.${packageName}";
in

writeScript "update-${packageName}" ''
  #!${stdenv.shell}
  set -o errexit
  set -x

  # search for the latest version of the package on github
  PATH=${lib.makeBinPath [ common-updater-scripts coreutils curl gnugrep gnused jq ]}
  tags=$(curl -s https://api.github.com/repos/linuxdeepin/${packageName}/tags)
  tags=$(echo "$tags" | jq -r '.[] | .name')
  echo "# ${name}" >> git-commits.txt
  echo "#   available tags:" >> git-commits.txt
  echo "$tags" | ${gnused}/bin/sed -e 's/^/#      /' >> git-commits.txt
  if [ -n "${ignored-versions}" ]; then
    tags=$(echo "$tags" | grep -vE "${ignored-versions}")
  fi
  latest_tag=$(echo "$tags" | sort --version-sort | tail -1)

  # generate commands to commit the changes
  if [ "${packageVersion}" != "$latest_tag" ]; then
    pfile=$(EDITOR=echo ${nix}/bin/nix edit -f. ${attrPath})
    echo "   git add $pfile " >> git-commits.txt
    echo "   git commit -m \"${attrPath}: ${packageVersion} -> $latest_tag\"" >> git-commits.txt
  fi

  # update the nix expression
  update-source-version "${attrPath}" "$latest_tag"
  echo "" >> git-commits.txt
''