1+ 'use strict' ;
2+
3+ import * as sqlops from 'sqlops' ;
4+ import * as vscode from 'vscode' ;
5+ import * as request from 'request-promise-native' ;
6+ import * as apiConfig from './apiconfig' ;
7+ let apiconfig : apiConfig . apiconfig = require ( '../apiconfig.json' ) ;
8+
9+ export class updatecheck {
10+ public async checkForUpdates ( context : sqlops . ObjectExplorerContext ) {
11+ let baseUrl = "https://api.github.com/repos/BrentOzarULTD/SQL-Server-First-Responder-Kit/releases/latest" ;
12+ // /repos/:owner/:repo/releases/latest
13+ let apitoken = 'token ' + apiconfig . token ;
14+ let queryProvider = sqlops . dataprotocol . getProvider < sqlops . QueryProvider > ( context . connectionProfile . providerName , sqlops . DataProviderType . QueryProvider ) ;
15+ vscode . window . showInformationMessage ( "Checking First Responder Kit for Updates" ) ;
16+ try {
17+ let connection = await sqlops . connection . getCurrentConnection ( ) ;
18+ let query = `declare @versionno datetime
19+ exec sp_blitz @help = 1, @versiondate = @versionno output
20+ select convert(varchar(10),@versionno,112) as versionno` ;
21+ let connectionUri = await sqlops . connection . getUriForConnection ( connection . connectionId ) ;
22+ if ( connection ) {
23+ let results = await queryProvider . runQueryAndReturn ( connectionUri , query ) ;
24+ //vscode.window.showInformationMessage(results.rowCount.toString());
25+ let cell = results . rows [ 0 ] [ 0 ] ;
26+ let currentVersion = cell . displayValue ;
27+
28+ //get live most recent version
29+ var options = {
30+ uri : baseUrl ,
31+ headers : {
32+ 'Authorization' : apitoken ,
33+ 'User-Agent' : 'Request-Promise'
34+ } ,
35+ json : true ,
36+ simple : false
37+ } ;
38+ var scriptText = await request . get ( options ) ;
39+ //vscode.window.showInformationMessage("newest version: " + scriptText.tag_name);
40+
41+ let recentVersion = scriptText . tag_name ;
42+ //compare against db version
43+ if ( recentVersion > currentVersion ) {
44+ vscode . window . showInformationMessage ( "New Version of First Responder Kit available." , { modal :false } , "Get It" , "Tell Me More" ) ;
45+
46+ //tell me more : https://github.com/BrentOzarULTD/SQL-Server-First-Responder-Kit/releases/tag/<tag>
47+
48+ //get it : download all command
49+
50+ } else {
51+ vscode . window . showInformationMessage ( "You're up to date!" , { modal :false } , "Close" )
52+ }
53+
54+ //confirm if user wants to update scripts
55+ }
56+ } catch ( e ) {
57+ vscode . window . showErrorMessage ( e ) ;
58+ }
59+ }
60+ }
0 commit comments