From 19ee3d4affff795fdaa4d51a2f8a18ff5963087d Mon Sep 17 00:00:00 2001 From: David Baker Date: Mon, 17 Feb 2020 15:44:06 +0000 Subject: [PATCH] Add some checks for the tools we need May not be exhastive, but useful on Windows where you need to remember to install stuff. --- hak/matrix-seshat/check.js | 57 ++++++++++++++++++++++++++++++++++++++ scripts/hak/index.js | 3 ++ 2 files changed, 60 insertions(+) create mode 100644 hak/matrix-seshat/check.js diff --git a/hak/matrix-seshat/check.js b/hak/matrix-seshat/check.js new file mode 100644 index 0000000..c5ca259 --- /dev/null +++ b/hak/matrix-seshat/check.js @@ -0,0 +1,57 @@ +/* +Copyright 2020 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +const childProcess = require('child_process'); + +module.exports = async function(hakEnv, moduleInfo) { + // of course tcl doesn't have a --version + await new Promise((resolve, reject) => { + const proc = childProcess.spawn('tclsh', [], { + stdio: ['pipe', 'ignore', 'ignore'], + }); + proc.on('exit', (code) => { + if (code !== 0) { + reject("Can't find tclsh - have you installed TCL?"); + } else { + resolve(); + } + }); + proc.stdin.end(); + }); + + const tools = []; + if (hakEnv.isWin()) { + tools.push('perl'); // for openssl configure + tools.push('nmake'); + } else { + tools.push('make'); + } + + for (const tool of tools) { + await new Promise((resolve, reject) => { + const proc = childProcess.spawn(tool, ['--version'], { + stdio: ['ignore'], + }); + proc.on('exit', (code) => { + if (code !== 0) { + reject("Can't find " + tool); + } else { + resolve(); + } + }); + }); + } +}; diff --git a/scripts/hak/index.js b/scripts/hak/index.js index 61fcce0..8737517 100644 --- a/scripts/hak/index.js +++ b/scripts/hak/index.js @@ -26,6 +26,7 @@ const GENERALCOMMANDS = [ // These can only be run on specific modules const MODULECOMMANDS = [ + 'check', 'fetch', 'link', 'fetchDeps', @@ -34,7 +35,9 @@ const MODULECOMMANDS = [ 'clean', ]; +// Scripts valid in a hak.json 'scripts' section const HAKSCRIPTS = [ + 'check', 'fetch', 'fetchDeps', 'build',