Guest User

Untitled

a guest
Oct 17th, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.86 KB | None | 0 0
  1. #!/bin/bash
  2. # vim: set ts=8 sts=8 sw=8 noet:
  3.  
  4. GERRIT_HOSTNAME=${GERRIT_HOSTNAME:-cr.joyent.us}
  5. COLUMN_COUNT=${COLUMN_COUNT:-60}
  6.  
  7. #
  8. # Detect the Gerrit username and project by listing the URLs for each
  9. # remote and looking for one which matches our Gerrit hostname:
  10. #
  11. if ! git_config=$(git config --local --list); then
  12. printf 'ERROR: could not get git config\n' >&2
  13. exit 1
  14. fi
  15.  
  16. url=
  17. if ! url=$(/usr/bin/nawk -v pat="@$GERRIT_HOSTNAME:" '
  18. BEGIN {
  19. pushurl = 0;
  20. url = 0;
  21. }
  22.  
  23. {
  24. FS = "=";
  25. $0 = $0;
  26.  
  27. key = $1;
  28. val = $2;
  29.  
  30. FS = ".";
  31. $0 = $1;
  32. }
  33.  
  34. NF == 3 && $1 == "remote" && $3 ~ "url$" &&
  35. index(val, pat) != 0 {
  36. if ($3 == "pushurl") {
  37. pushurl = val;
  38. } else {
  39. url = val;
  40. }
  41. }
  42.  
  43. END {
  44. if (!pushurl && !url) {
  45. exit(1);
  46. }
  47.  
  48. printf("%s", pushurl ? pushurl : url);
  49. exit (0);
  50. }
  51. ' <<< "$git_config") ; then #|| [[ -z $url ]]; then
  52. printf 'ERROR: could not find a Gerrit remote\n' >&2
  53. exit 1
  54. fi
  55.  
  56. #
  57. # Trim the username and project name out of the Gerrit remote URL:
  58. #
  59. url=${url%.git}
  60. project=${url##*@${GERRIT_HOSTNAME}:}
  61. user=${url%@${GERRIT_HOSTNAME}:*}
  62.  
  63. if [[ -n $V ]]; then
  64. printf 'user: %s\n' "$user" >&2
  65. printf 'project: %s\n' "$project" >&2
  66. fi
  67.  
  68. query="status:open project:$project"
  69. if [[ $1 != "-a" ]]; then
  70. query="$query owner:$user"
  71. fi
  72.  
  73. if ! res=$(ssh "$user@cr.joyent.us" gerrit query "$query"); then
  74. printf 'ERROR: could not query gerrit\n' >&2
  75. exit 1
  76. fi
  77.  
  78. /usr/bin/nawk -v cc=$COLUMN_COUNT '
  79. BEGIN {
  80. count = 0;
  81. }
  82.  
  83. /^change/ {
  84. number = -1;
  85. subject = 0;
  86. }
  87.  
  88. $1 == "number:" {
  89. number = $2
  90. }
  91.  
  92. $1 == "subject:" {
  93. subject = $0;
  94. gsub(".*subject: ", "", subject);
  95. extra = "";
  96. if (length(subject) >= cc) {
  97. extra = "...";
  98. }
  99. subject = substr(subject, 1, cc) "" extra;
  100. }
  101.  
  102. /^$/ {
  103. printf("%d -- %s\n", number, subject);
  104. count++;
  105. }
  106.  
  107. END {
  108. if (count == 0) {
  109. printf("no open reviews found!\n");
  110. }
  111. }
  112. ' <<< "$res"
Add Comment
Please, Sign In to add comment