summaryrefslogtreecommitdiff
blob: 191d3a7815925c53a8d57ebc6103758fe959df7e (plain)
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
#!/bin/bash
# review - Move a certain revision from sunrise/ to reviewed/
# Released into the public domain

source /etc/init.d/functions.sh

BLUE=$'\033[34;01m'
BOLD=$'\e[0;01m'
DARKGREEN=$'\e[32m'
GREEN=$'\e[32;01m'
LIGHTBLUE=$HILITE
RED=$'\033[31;01m'
YELLOW=$'\033[33;01m'
opt_norepoman=0
opt_noupdate=0
opt_quiet=0
opt_verbose=0

DIFF="${DIFF:-diff}"
DIFF_OPTS="${DIFF_OPTS:--Nur}"

repoman_check() {
	if [[ "$opt_norepoman" == "0" ]] ; then
		ebegin "Running repoman"
		export PORTDIR_OVERLAY="$(pwd)"
		repoman
		eend $?
		return $?
	fi
}

usage() {
cat << EOF
${BOLD}Usage:${NORMAL} ${LIGHTBLUE}$0${NORMAL} [ ${GREEN}options${NORMAL} ] ${BLUE}revision${NORMAL}

${GREEN}options${NORMAL}:
  ${BOLD}--help, -h${NORMAL}       Show help
  ${BOLD}--norepoman, -p${NORMAL}  Skip repoman check
  ${BOLD}--noupdate, -d${NORMAL}   Don't update from repository before committing
  ${BOLD}--quiet, -q${NORMAL}      Don't ask for confirmation
  ${BOLD}--verbose, -v${NORMAL}    Show detailed information during commit
EOF
	exit ${1:-0}
}

while [[ $# > 0 ]] ; do
	case "$1" in
		--help|-h)
			usage ;;

		--norepoman|-p)
			opt_norepoman=1
			shift ;;

		--noupdate|-d)
			opt_noupdate=1
			shift ;;

		--quiet|-q)
			opt_quiet=1
			shift ;;

		--verbose|-v)
			opt_verbose=1
			shift ;;

		-*)
   			echo "!!! Error: Unknown option ${1}. See: $0 -h"
   			exit 1 ;;

		*)
			break ;;
	esac
done

LC_ALL="C" ls -d *-* > profiles/categories
if [[ $(git diff profiles/categories) ]]; then
	git diff profiles/categories | if [[ "$opt_quiet" == "0" ]] ; then less; else cat; fi
	echo -n "${BOLD}Commit changes?${NORMAL} [${GREEN}Yes${NORMAL}/${RED}No${NORMAL}] "
	read choice
	echo
	case "$choice" in
		y*|Y*|"")
			git commit -m "Automatic update to categories" profiles/categories || exit 1
			;;
		*)
			echo "Quitting."
			echo
			exit ;;
	esac
fi

egencache --ignore-default-opts --portdir-overlay=. \
	--repo=sunrise --update-use-local-desc || exit $?

if [[ $(git diff profiles/use.local.desc) ]]; then
	git diff profiles/use.local.desc | if [[ "$opt_quiet" == "0" ]] ; then less; else cat; fi
	echo -n "${BOLD}Commit changes?${NORMAL} [${GREEN}Yes${NORMAL}/${RED}No${NORMAL}] "
	read choice
	echo
	case "$choice" in
		y*|Y*|"")
			git commit -m "Automatic update to use.local.desc" profiles/use.local.desc || exit 1
			;;
		*)
			echo "Quitting."
			echo
			exit ;;
	esac
fi

ebegin "Updating working copy to latest version from repository"
git pull --rebase

(
repoman_check || exit $?

ebegin "Running portdupe"
scripts/portdupe
eend $?

if [[ "$opt_quiet" == "0" ]] ; then
	git diff reviewed/master master
fi
) | if [[ "$opt_quiet" == "0" ]] ; then less; else cat; fi

if [[ "$opt_quiet" == "0" ]] ; then
	echo
	echo -n "${BOLD}Commit changes?${NORMAL} [${GREEN}Yes${NORMAL}/${RED}No${NORMAL}] "
	read choice
	echo

	case "$choice" in
		y*|Y*|"")
			;;

		*)
			echo "Quitting."
			echo
			exit ;;
	esac
fi

ebegin "Pushing changes..."
if [[ "$opt_verbose" == "1" ]] ; then
	git push -v origin master
	git push -v reviewed master
	git push -v bitbucket master
	git push -v github master
else
	git push origin master
	git push reviewed master
	git push bitbucket master
	git push github master
fi
eend ${?}