Last active
September 5, 2018 20:00
-
-
Save andrewiankidd/b7327917339b4fc402f1e484c66b7f42 to your computer and use it in GitHub Desktop.
Helper userscript for VSTS (TFS Release Management)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @name VSTS Helper | |
// @namespace http://andrewiankidd.co.uk/ | |
// @version 0.2 | |
// @description Adds a button to set latest versions of all artifacts, adds a button to set all environments to manual deployment, autofills name in kanban board | |
// @author Andrew Kidd | |
// @match http://*/tfs/* | |
// @grant none | |
// @require https://gist.github.com/raw/2625891/waitForKeyElements.js | |
// @require https://cdnjs.cloudflare.com/ajax/libs/jQuery-linkify/2.1.6/linkify.min.js | |
// @require https://cdnjs.cloudflare.com/ajax/libs/jQuery-linkify/2.1.6/linkify-jquery.min.js | |
// ==/UserScript== | |
(function() { | |
'use strict'; | |
logger('Loaded'); | |
waitForKeyElements(".create-release-deployments-message", addButtons); | |
waitForKeyElements(".release-live-logs-view, .buildvnext-logs-console", linkifyLogs); | |
waitForKeyElements(".clickable-title", autoFilterKanban); | |
$('body').on('click', '#vsts_selectLatest', function(){ | |
var parentg = $('.create-release-artifacts-grid-table'); | |
var dropdowns = parentg.find('div.drop.bowtie-icon.bowtie-triangle-down'); | |
logger('Setting latest versions'); | |
dropdowns.each(function() { | |
$(this).trigger( "click" ); | |
var values = $(this).next(); | |
values.find('li').first().trigger( "click" ); | |
}); | |
}); | |
$('body').on('click', '#vsts_selectManual', function(){ | |
var parentg = $('.create-rel-automated-deployment-grid-table tbody'); | |
var dropdowns = parentg.find('div.drop.bowtie-icon.bowtie-triangle-down'); | |
logger('Setting Manual Deployments'); | |
dropdowns.each(function() { | |
$(this).trigger( "click" ); | |
var values = $(this).next(); | |
values.find('li').last().trigger( "click" ); | |
}); | |
}); | |
function autoFilterKanban() | |
{ | |
logger('filtering Kanban board'); | |
let myName = $('span.alignment-marker.text').text(); | |
$('.agile-board-search-container input.text-filter-input').val(myName).trigger("keyup"); | |
} | |
function addButtons() | |
{ | |
if ($('#vsts_selectLatest').length) | |
{ | |
logger('"Latest" button exists'); | |
} | |
else{ | |
logger('Injecting "Latest" button'); | |
var verTable = $(".create-release-linked-artifacts-table-body"); | |
verTable.prepend("<tr><td></td><td><input type='button' id='vsts_selectLatest' value='Set Latest Versions'></td></tr>"); | |
} | |
if ($('#vsts_selectManual').length) | |
{ | |
logger('"Manual" button exists'); | |
} | |
else{ | |
logger('Injecting "Manual" button'); | |
var autoTable = $(".create-rel-automated-deployment-grid-table tbody"); | |
autoTable.prepend("<tr><td></td><td><input type='button' id='vsts_selectManual' value='Set Manual Deployments' style='width:100%'></td></tr>"); | |
} | |
} | |
function linkifyLogs() | |
{ | |
logger('not implemented'); | |
return; | |
$('.release-live-logs-view, .buildvnext-logs-console').bind('DOMSubtreeModified', function(e) { | |
if (e.target.innerHTML.length > 0) { | |
logger('log updated: ' + (e.target.textContent).substring(0,50)); | |
$(e.target).linkify({ | |
target: "_blank" | |
}); | |
} | |
}); | |
} | |
function logger(text){ | |
console.log('[VSTS Helper] ' + text); | |
} | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment