Merge pull request #102850 from NeQuissimus/oh-my-zsh_update

oh-my-zsh: Update script, test

Changed files
+58 -21
nixos
pkgs
shells
zsh
+1
nixos/tests/all-tests.nix
···
novacomd = handleTestOn ["x86_64-linux"] ./novacomd.nix {};
nsd = handleTest ./nsd.nix {};
nzbget = handleTest ./nzbget.nix {};
+
oh-my-zsh = handleTest ./oh-my-zsh.nix {};
openarena = handleTest ./openarena.nix {};
openldap = handleTest ./openldap.nix {};
opensmtpd = handleTest ./opensmtpd.nix {};
+18
nixos/tests/oh-my-zsh.nix
···
+
import ./make-test-python.nix ({ pkgs, ... }: {
+
name = "oh-my-zsh";
+
+
machine = { pkgs, ... }:
+
+
{
+
programs.zsh = {
+
enable = true;
+
ohMyZsh.enable = true;
+
};
+
};
+
+
testScript = ''
+
start_all()
+
machine.succeed("touch ~/.zshrc")
+
machine.succeed("zsh -c 'source /etc/zshrc && echo $ZSH | grep oh-my-zsh-${pkgs.oh-my-zsh.version}'")
+
'';
+
})
+39 -2
pkgs/shells/zsh/oh-my-zsh/default.nix
···
# This script was inspired by the ArchLinux User Repository package:
#
# https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=oh-my-zsh-git
-
{ stdenv, fetchFromGitHub }:
+
{ stdenv, fetchFromGitHub, nixosTests, writeScript, common-updater-scripts, git
+
, nix, nixfmt, jq, coreutils, gnused, curl, cacert }:
stdenv.mkDerivation rec {
version = "2020-10-29";
···
inherit rev;
owner = "ohmyzsh";
repo = "ohmyzsh";
-
sha256 = "0021rayw5wiwgjfwy7d6g577xidws58vk7y9xxhidnmk9sr4vri7";
+
sha256 = "J+ZNsk6z2hZh78mfuVHRvMV+TnmmHc+dfDzywr3KQQA=";
};
installPhase = ''
···
fi
EOF
'';
+
+
passthru = {
+
tests = { inherit (nixosTests) oh-my-zsh; };
+
+
updateScript = writeScript "update.sh" ''
+
#!${stdenv.shell}
+
set -o errexit
+
PATH=${
+
stdenv.lib.makeBinPath [
+
common-updater-scripts
+
curl
+
cacert
+
git
+
nixfmt
+
nix
+
jq
+
coreutils
+
gnused
+
]
+
}
+
+
oldVersion="$(nix-instantiate --eval -E "with import ./. {}; lib.getVersion oh-my-zsh" | tr -d '"')"
+
latestSha="$(curl -L -s https://api.github.com/repos/ohmyzsh/ohmyzsh/commits\?sha\=master\&since\=$oldVersion | jq -r '.[0].sha')"
+
+
if [ ! "null" = "$latestSha" ]; then
+
nixpkgs="$(git rev-parse --show-toplevel)"
+
default_nix="$nixpkgs/pkgs/shells/zsh/oh-my-zsh/default.nix"
+
latestDate="$(curl -L -s https://api.github.com/repos/ohmyzsh/ohmyzsh/commits/$latestSha | jq '.commit.author.date' | sed 's|"\(.*\)T.*|\1|g')"
+
update-source-version oh-my-zsh "$latestSha" --version-key=rev
+
update-source-version oh-my-zsh "$latestDate" --ignore-same-hash
+
nixfmt "$default_nix"
+
else
+
echo "${pname} is already up-to-date"
+
fi
+
'';
+
};
meta = with stdenv.lib; {
description = "A framework for managing your zsh configuration";
-19
pkgs/shells/zsh/oh-my-zsh/update.sh
···
-
#!/usr/bin/env nix-shell
-
#!nix-shell -i bash -p curl common-updater-scripts jq
-
-
set -eu -o pipefail
-
-
oldVersion="$(nix-instantiate --eval -E "with import ./. {}; lib.getVersion oh-my-zsh" | tr -d '"')"
-
latestSha="$(curl -L -s https://api.github.com/repos/ohmyzsh/ohmyzsh/commits\?sha\=master\&since\=${oldVersion} | jq -r '.[0].sha')"
-
-
if [ ! "null" = "${latestSha}" ]; then
-
latestDate="$(curl -L -s https://api.github.com/repos/ohmyzsh/ohmyzsh/commits/${latestSha} | jq '.commit.author.date' | sed 's|"\(.*\)T.*|\1|g')"
-
update-source-version oh-my-zsh "${latestSha}" --version-key=rev
-
update-source-version oh-my-zsh "${latestDate}" --ignore-same-hash
-
nixpkgs="$(git rev-parse --show-toplevel)"
-
default_nix="$nixpkgs/pkgs/shells/zsh/oh-my-zsh/default.nix"
-
git add "${default_nix}"
-
git commit -m "oh-my-zsh: ${oldVersion} -> ${latestDate}"
-
else
-
echo "oh-my-zsh is already up-to-date"
-
fi