Default pull request reviewers

Allows you to create a list of default reviewers by stash project.

  1. // ==UserScript==
  2. // @name Default pull request reviewers
  3. // @namespace http://www.regretless.com/
  4. // @version 0.1
  5. // @description Allows you to create a list of default reviewers by stash project.
  6. // @author Ying Zhang
  7. // @require http://code.jquery.com/jquery-latest.js
  8. // @match https://stash.meredith.com/*pull-requests?create*
  9. // @grant none
  10. // ==/UserScript==
  11.  
  12. // update this accordingly. You will need the reviewers AD usernames. You can get this by search for the user using the regular stash reviewer search function.
  13. var reviewersByProject = {
  14. 'mdp.drp.parents': ['gchilds', 'abothun', 'mmoser', 'cpurcell', 'jsteward', 'sphillips', 'lwalangi', 'tflanaga']
  15. };
  16.  
  17. $(document).ready(function() {
  18. for(var project in reviewersByProject) {
  19. if(window.location.href.indexOf(project)) {
  20. setTimeout(function() {
  21. var reviewers = reviewersByProject[project];
  22. tamperInjectStashReviewers(reviewers);
  23. }, 300);
  24. }
  25. }
  26. });
  27.  
  28. function tamperInjectStashReviewers(reviewers) {
  29. var delimiter = '|!|';
  30. var $description = $('.pull-request-reviewers .description');
  31. var $reviewers = $('#reviewers').removeClass('select2-offscreen').attr('placeholder', 'This is the hidden reviewer input that you couldn\'t see before.');
  32. var $reviewerSuggestions = $('<p/>').insertBefore($description);
  33. $('<br/>').insertBefore($reviewers);
  34.  
  35. var reviewerSuggestionsHtml = '<b>Add reviewer(s):</b> ';
  36. for(var i in reviewers) {
  37. var reviewer = reviewers[i];
  38. reviewerSuggestionsHtml += '<a href="#" class="tamperAddStashReviewer" data-reviewer="' + reviewer + '">' + reviewer + '</a>' + ' \n';
  39. }
  40. $reviewerSuggestions.html(reviewerSuggestionsHtml);
  41. $('.tamperAddStashReviewer').on('click', function(e) {
  42. e.preventDefault();
  43. var reviewer = $(this).data('reviewer');
  44. var oldVal = $reviewers.val();
  45. if(jQuery.trim(oldVal) === '') {
  46. $reviewers.val(reviewer);
  47. } else if(oldVal.indexOf(reviewer) > -1) {
  48. var index = oldVal.indexOf(reviewer);
  49. if(index - delimiter.length >= 0) {
  50. $reviewers.val(oldVal.replace(delimiter + reviewer, ''));
  51. } else {
  52. $reviewers.val(oldVal.replace(reviewer, ''));
  53. }
  54. } else {
  55. $reviewers.val(oldVal + delimiter + reviewer);
  56. }
  57. });
  58. }