mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-16 10:58:30 -05:00
Add check for the expected files when install service (#9722)
* async-await install service; add check for the files after downloading * remove del * use the same function for installing service * fix for unix * fix ssmin on linux * fix syntax * fix script * fix issue
This commit is contained in:
@@ -9,7 +9,6 @@ const util = require('./lib/util');
|
||||
const tsfmt = require('typescript-formatter');
|
||||
const es = require('event-stream');
|
||||
const filter = require('gulp-filter');
|
||||
const del = require('del');
|
||||
const serviceDownloader = require('service-downloader').ServiceDownloadProvider;
|
||||
const platform = require('service-downloader/out/platform').PlatformInformation;
|
||||
const path = require('path');
|
||||
@@ -18,9 +17,8 @@ const task = require('./lib/task');
|
||||
const glob = require('glob');
|
||||
const vsce = require('vsce');
|
||||
const mkdirp = require('mkdirp');
|
||||
|
||||
gulp.task('clean-mssql-extension', util.rimraf('extensions/mssql/node_modules'));
|
||||
gulp.task('clean-credentials-extension', util.rimraf('extensions/credentials/node_modules'));
|
||||
const fs = require('fs').promises;
|
||||
const assert = require('assert');
|
||||
|
||||
gulp.task('fmt', () => formatStagedFiles());
|
||||
const formatFiles = (some) => {
|
||||
@@ -96,50 +94,39 @@ const formatStagedFiles = () => {
|
||||
});
|
||||
};
|
||||
|
||||
function installService() {
|
||||
let config = require('../extensions/mssql/config.json');
|
||||
return platform.getCurrent().then(p => {
|
||||
let runtime = p.runtimeId;
|
||||
// fix path since it won't be correct
|
||||
config.installDirectory = path.join(__dirname, '../extensions/mssql/src', config.installDirectory);
|
||||
let installer = new serviceDownloader(config);
|
||||
installer.eventEmitter.onAny((event, ...values) => {
|
||||
console.log(`ServiceDownloader Event : ${event}${values && values.length > 0 ? ` - ${values.join(' ')}` : ''}`);
|
||||
});
|
||||
let serviceInstallFolder = installer.getInstallDirectory(runtime);
|
||||
console.log('Cleaning up the install folder: ' + serviceInstallFolder);
|
||||
return del(serviceInstallFolder + '/*').then(() => {
|
||||
console.log('Installing the service. Install folder: ' + serviceInstallFolder);
|
||||
return installer.installService(runtime);
|
||||
}, delError => {
|
||||
console.log('failed to delete the install folder error: ' + delError);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
gulp.task('install-sqltoolsservice', () => {
|
||||
return installService();
|
||||
});
|
||||
|
||||
gulp.task('install-ssmsmin', () => {
|
||||
const config = require('../extensions/admin-tool-ext-win/config.json');
|
||||
const runtime = 'Windows_64'; // admin-tool-ext is a windows only extension, and we only ship a 64 bit version, so locking the binaries as such
|
||||
async function installService(configPath, runtimId) {
|
||||
const absoluteConfigPath = require.resolve(configPath);
|
||||
const config = require(absoluteConfigPath);
|
||||
const runtime = runtimId || (await platform.getCurrent()).runtimeId;
|
||||
// fix path since it won't be correct
|
||||
config.installDirectory = path.join(__dirname, '..', 'extensions', 'admin-tool-ext-win', config.installDirectory);
|
||||
config.installDirectory = path.join(path.dirname(absoluteConfigPath), config.installDirectory);
|
||||
console.log('install diectory', config.installDirectory);
|
||||
let installer = new serviceDownloader(config);
|
||||
installer.eventEmitter.onAny((event, ...values) => {
|
||||
console.log(`ServiceDownloader Event : ${event}${values && values.length > 0 ? ` - ${values.join(' ')}` : ''}`);
|
||||
});
|
||||
const serviceInstallFolder = installer.getInstallDirectory(runtime);
|
||||
const serviceCleanupFolder = path.join(serviceInstallFolder, '..');
|
||||
console.log('Cleaning up the install folder: ' + serviceCleanupFolder);
|
||||
return del(serviceCleanupFolder + '/*').then(() => {
|
||||
console.log('Installing the service. Install folder: ' + serviceInstallFolder);
|
||||
return installer.installService(runtime);
|
||||
}, delError => {
|
||||
console.log('failed to delete the install folder error: ' + delError);
|
||||
});
|
||||
});
|
||||
let serviceInstallFolder = installer.getInstallDirectory(runtime);
|
||||
console.log('Cleaning up the install folder: ' + serviceInstallFolder);
|
||||
try {
|
||||
await util.rimraf(serviceInstallFolder)();
|
||||
} catch (e) {
|
||||
console.error('failed to delete the install folder error: ' + e);
|
||||
throw e;
|
||||
}
|
||||
await installer.installService(runtime);
|
||||
let stat;
|
||||
for (const file of config.executableFiles) {
|
||||
try {
|
||||
stat = await fs.stat(path.join(serviceInstallFolder, file));
|
||||
} catch (e) { }
|
||||
}
|
||||
|
||||
assert(stat);
|
||||
}
|
||||
|
||||
gulp.task('install-sqltoolsservice', () => installService('../extensions/mssql/config.json'));
|
||||
|
||||
gulp.task('install-ssmsmin', () => installService('../extensions/admin-tool-ext-win/config.json', 'Windows_64')); // admin-tool-ext is a windows only extension, and we only ship a 64 bit version, so locking the binaries as such
|
||||
|
||||
const root = path.dirname(__dirname);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user