git.iko.soy/typeable/servant
on master help sign in
Upload script and some script refactoring
aec39b5Julian K. Arni
.gitignore+5−5
@@ -1,8 +1,8 @@
1−dist
1+/dist
2−bin
2+/bin
3−lib
3+/lib
4−share
4+/share
5−packages
5+/packages
6*-packages.conf.d
6*-packages.conf.d
7cabal-dev
7cabal-dev
8add-source-timestamps
8add-source-timestamps
scripts/bump-versions.sh+2−19
@@ -16,33 +16,16 @@
16set -o nounset
16set -o nounset
17set -o errexit
17set -o errexit
18
18
19−DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
19+. lib/common.sh
20−DRY_RUN=false
21−POSITION="none"
22−SOURCES_TXT="$( dirname $DIR)/sources.txt"
23−
24−declare -a SOURCES
25−readarray -t SOURCES < "$SOURCES_TXT"
26
20
27usage () {
21usage () {
28− echo " bump-versions <POSITION> [-d|--dry-run]"
22+ echo " bump-versions.sh <POSITION> [-d|--dry-run]"
29 echo " | [-h|--help]"
23 echo " | [-h|--help]"
30 echo " Bumps the specified positional version of all servant packages."
24 echo " Bumps the specified positional version of all servant packages."
31 echo " POSITION is a number between 0 and 3, inclusive."
25 echo " POSITION is a number between 0 and 3, inclusive."
32 exit 0
26 exit 0
33}
27}
34
28
35−join () { local IFS="$1"; shift; echo "$*"; }
36−
37−versions_equal () {
38− local NUM=$(find . -name 'servant*.cabal' | xargs grep "^version:" | awk '{ print $2 }' | uniq -c | wc -l)
39− if [ 1 -eq $NUM ] ; then
40− return 0
41− else
42− echo "versions of packages are not all the same!" && exit 1
43− fi
44−}
45−
46if [ $# -eq 0 ] ; then
29if [ $# -eq 0 ] ; then
47 echo "expecting one or more arguments. Got 0"
30 echo "expecting one or more arguments. Got 0"
48 usage
31 usage
scripts/lib/common.shnew file+31
@@ -0,0 +1,31 @@
1+#!/bin/bash -
2+#===============================================================================
3+#
4+# FILE: lib/common.sh
5+#
6+# DESCRIPTION: Common functions for servant's shell scripts
7+# Meant to be sourced rather than run.
8+#
9+# REQUIREMENTS: bash >= 4
10+#===============================================================================
11+
12+
13+DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
14+DRY_RUN=false
15+POSITION="none"
16+SOURCES_TXT="$( dirname $DIR)/sources.txt"
17+CABAL=${CABAL:-cabal}
18+
19+declare -a SOURCES
20+readarray -t SOURCES < "$SOURCES_TXT"
21+
22+join () { local IFS="$1"; shift; echo "$*"; }
23+
24+versions_equal () {
25+ local NUM=$(find . -name 'servant*.cabal' | xargs grep "^version:" | awk '{ print $2 }' | uniq -c | wc -l)
26+ if [ 1 -eq $NUM ] ; then
27+ return 0
28+ else
29+ echo "versions of packages are not all the same!" && exit 1
30+ fi
31+}
scripts/start-sandbox.sh+1−6
@@ -13,12 +13,7 @@
13set -o nounset
13set -o nounset
14set -o errexit
14set -o errexit
15
15
16−DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
16+. lib/common.sh
17−SOURCES_TXT="$( dirname $DIR)/sources.txt"
18−CABAL=${CABAL:-cabal}
19−
20−declare -a SOURCES
21−readarray -t SOURCES < "$SOURCES_TXT"
22
17
23prepare_sandbox () {
18prepare_sandbox () {
24 $CABAL sandbox init
19 $CABAL sandbox init
scripts/test-all.sh+1−8
@@ -14,14 +14,7 @@
14set -o nounset
14set -o nounset
15set -o errexit
15set -o errexit
16
16
17−DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
17+. lib/common.sh
18−GHC_FLAGS="-Werror"
19−SOURCES_TXT="$( dirname $DIR)/sources.txt"
20−CABAL=${CABAL:-cabal}
21−
22−declare -a SOURCES
23−readarray -t SOURCES < "$SOURCES_TXT"
24−
25
18
26prepare_sandbox () {
19prepare_sandbox () {
27 $CABAL sandbox init
20 $CABAL sandbox init
scripts/update-defaults-nix.sh+1−6
@@ -11,12 +11,7 @@
11set -o nounset
11set -o nounset
12set -o errexit
12set -o errexit
13
13
14−DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
14+. lib/common.sh
15−BASE_DIR="$( dirname $DIR)"
16−SOURCES_TXT="$BASE_DIR/sources.txt"
17−
18−declare -a SOURCES
19−readarray -t SOURCES < "$SOURCES_TXT"
20
15
21for s in ${SOURCES[@]} ; do
16for s in ${SOURCES[@]} ; do
22 echo $s
17 echo $s
scripts/upload.shnew file+51
@@ -0,0 +1,51 @@
1+#!/bin/bash -
2+#===============================================================================
3+#
4+# FILE: upload.sh
5+#
6+# USAGE: ./upload.sh <USER> <PASSWORD>
7+#
8+# DESCRIPTION: Uploads all servant packages to Hackage
9+#
10+# REQUIREMENTS: cabal, bash >= 4
11+# AUTHOR: Julian K. Arni
12+# CREATED: 05.06.2015 13:05
13+#===============================================================================
14+
15+set -o nounset
16+set -o errexit
17+
18+. lib/common.sh
19+
20+usage () {
21+ echo " upload.sh <USER> <PASSWORD>"
22+ echo " Uploads all servant packages to Hackage"
23+ exit 0
24+}
25+
26+
27+upload_package () {
28+ local package="$0"
29+ local cabalFile="$0.cabal"
30+ pushd "$package"
31+ local version=$(grep -i '^version:' $cabalFile | awk '{ print $2 }')
32+ local sdist="${package}-${version}.tar.gz"
33+ cabal sdist
34+ cabal upload --user="$USER" --password="$PASS" "$sdist"
35+ popd
36+}
37+
38+
39+if [ $# -ne 2 ] ; then
40+ echo "expecting two arguments."
41+ usage
42+else
43+ USER="$0"
44+ PASS="$1"
45+fi
46+
47+versions_equal
48+
49+for s in ${SOURCES[@]} ; do
50+ upload_package "$s"
51+done