Open shiftj2019 opened 4 years ago
same as SBoudrias/Inquirer.js#518, spawn(hookName, args, {stdio: 'inherit'}) will finish, not wait for user input(by inquirer.js).
my code is:
// .githooks/pre-commit/hello.js #!/usr/bin/env node console.log('start select ...'); 'use strict'; var inquirer = require('inquirer'); var config = require('../../config/var-app'); var fs = require('fs'); var path = require('path'); inquirer .prompt([ { type: 'list', name: 'appid', message: 'What mini application do you want?', choices: config.APPS } ]) .then(answers => { var appId = answers.appid; var filePath = path.resolve(__dirname, '../../config/var-app.js'); console.log('appid: ' + appId); fs.readFile(filePath, 'utf8', function(err, data) { if (err) return console.log(err); var res = data.replace(/\$appid\s*=\s*\'[^']*\'/g, "$appid = '" + appId + "'"); fs.writeFile(filePath, res, 'utf8', function(err) { if (err) return console.log(err); console.log('select mini application finished!') }); }); });
entry code is:
git add -A && git commit -m "test" // this will skip user input; but use 'node ./.githooks/pre-commit/hello.js', everything is ok.
Can solve it temporarily like:
// .githooks/pre-commit/hello
#!/bin/sh
exec < /dev/tty
node ./githooks/scripts/pre-commit.js
// .githooks/scripts/pre-commit.js
#!/usr/bin/env node
'use strict';
var inquirer = require('inquirer');
inquirer
.prompt([
...
])
.then(answers => {
...
});
same as https://github.com/SBoudrias/Inquirer.js/issues/518, spawn(hookName, args, {stdio: 'inherit'}) will finish, not wait for user input(by inquirer.js).
my code is:
entry code is: