forked from haskell-servant/servant
/
update-nixpkgs.sh
executable file
·83 lines (69 loc) · 1.87 KB
/
update-nixpkgs.sh
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#!/bin/bash -
#===============================================================================
#
# FILE: update-nixpkgs.sh
#
# USAGE: ./update-nixpkgs.sh
#
# DESCRIPTION: Update servant packages in nixpkgs.
#
# OPTIONS: -d <NIXPKGS DIR>
# REQUIREMENTS: cabal2nix, git, hub
# BUGS: ---
# NOTES: ---
# AUTHOR: Julian Arni <jkarni@gmail.com>,
# ORGANIZATION: Zalora SEA
# CREATED: 09.01.2015 15:38
# REVISION: ---
#===============================================================================
set -o nounset
set -e
# Variables
declare -ar -x PKGS=(servant servant-client servant-server servant-jquery servant-docs)
declare -a CHANGED
PKG_NO=${#PKGS[@]}
GIT_DIR=$(mktemp -d)
FORK=""
BRANCH_NAME=servant-changes
HASKELL_LIBS=pkgs/development/libraries/haskell
cleanup () {
echo "Removing temporary directory $GIT_DIR"
rm -rf $GIT_DIR
}
while getopts f: OPT ; do
case $OPT in
f) FORK=$OPTARG ;;
esac
done
# Check if we can proceed
if [[ -z "$FORK" ]] ; then
echo "Your fork must be specified with -f FORK"
exit 1
fi
cd $GIT_DIR
git clone --depth 1 git@github.com:NixOS/nixpkgs.git && cd nixpkgs
trap cleanup INT TERM EXIT
for ((i = 0 ; i < PKG_NO ; i++ )); do
PKG=${PKGS[$i]}
echo -n "Checking $PKG... "
FILE="pkgs/development/libraries/haskell/$PKG/default.nix"
TEMPFILE=$(tempfile)
cabal2nix cabal://$PKG >> $TEMPFILE
if [[ -n "$(diff -q $TEMPFILE $FILE)" ]] ; then
CHANGED+=( $PKG )
echo "Package updated"
cat $TEMPFILE > $FILE
else
echo "No changes"
fi
rm $TEMPFILE
done
git checkout -b $BRANCH_NAME
if [[ ${#CHANGED[@]} -ne 0 ]]; then
git add pkgs/development/libraries/haskell
git commit -m "Updated haskell packages ${CHANGED[@]}"
git remote add fork $FORK
git push fork $BRANCH_NAME
hub pull-request
fi
cleanup