Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # vim: set ts=8 sts=8 sw=8 noet:
- GERRIT_HOSTNAME=${GERRIT_HOSTNAME:-cr.joyent.us}
- COLUMN_COUNT=${COLUMN_COUNT:-60}
- #
- # Detect the Gerrit username and project by listing the URLs for each
- # remote and looking for one which matches our Gerrit hostname:
- #
- if ! git_config=$(git config --local --list); then
- printf 'ERROR: could not get git config\n' >&2
- exit 1
- fi
- url=
- if ! url=$(/usr/bin/nawk -v pat="@$GERRIT_HOSTNAME:" '
- BEGIN {
- pushurl = 0;
- url = 0;
- }
- {
- FS = "=";
- $0 = $0;
- key = $1;
- val = $2;
- FS = ".";
- $0 = $1;
- }
- NF == 3 && $1 == "remote" && $3 ~ "url$" &&
- index(val, pat) != 0 {
- if ($3 == "pushurl") {
- pushurl = val;
- } else {
- url = val;
- }
- }
- END {
- if (!pushurl && !url) {
- exit(1);
- }
- printf("%s", pushurl ? pushurl : url);
- exit (0);
- }
- ' <<< "$git_config") ; then #|| [[ -z $url ]]; then
- printf 'ERROR: could not find a Gerrit remote\n' >&2
- exit 1
- fi
- #
- # Trim the username and project name out of the Gerrit remote URL:
- #
- url=${url%.git}
- project=${url##*@${GERRIT_HOSTNAME}:}
- user=${url%@${GERRIT_HOSTNAME}:*}
- if [[ -n $V ]]; then
- printf 'user: %s\n' "$user" >&2
- printf 'project: %s\n' "$project" >&2
- fi
- query="status:open project:$project"
- if [[ $1 != "-a" ]]; then
- query="$query owner:$user"
- fi
- if ! res=$(ssh "$user@cr.joyent.us" gerrit query "$query"); then
- printf 'ERROR: could not query gerrit\n' >&2
- exit 1
- fi
- /usr/bin/nawk -v cc=$COLUMN_COUNT '
- BEGIN {
- count = 0;
- }
- /^change/ {
- number = -1;
- subject = 0;
- }
- $1 == "number:" {
- number = $2
- }
- $1 == "subject:" {
- subject = $0;
- gsub(".*subject: ", "", subject);
- extra = "";
- if (length(subject) >= cc) {
- extra = "...";
- }
- subject = substr(subject, 1, cc) "" extra;
- }
- /^$/ {
- printf("%d -- %s\n", number, subject);
- count++;
- }
- END {
- if (count == 0) {
- printf("no open reviews found!\n");
- }
- }
- ' <<< "$res"
Add Comment
Please, Sign In to add comment