Skip to content

Commit aa5ee25

Browse files
committed
fix: disable interactivity for non-tty terminals
fixes ionic-team#3047
1 parent 330e8c6 commit aa5ee25

7 files changed

Lines changed: 35 additions & 17 deletions

File tree

packages/@ionic/cli-framework/src/definitions.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,11 @@ export interface Colors {
2020
input: Chalk;
2121
}
2222

23+
export interface TerminalInfo {
24+
tty: boolean;
25+
ci: boolean;
26+
}
27+
2328
export type ParsedArg = string | boolean | null | undefined | string[];
2429
export type Validator = (input?: string, key?: string) => true | string;
2530

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import * as Debug from 'debug';
2+
3+
import { TerminalInfo } from '../definitions';
4+
5+
const debug = Debug('ionic:cli-framework:utils:terminal');
6+
7+
/**
8+
* These environment variables work for: Travis CI, CircleCI, Gitlab CI,
9+
* AppVeyor, CodeShip, Jenkins, TeamCity, Bitbucket Pipelines, AWS CodeBuild
10+
*/
11+
export const CI_ENVIRONMENT_VARIABLES = ['CI', 'BUILD_ID', 'BUILD_NUMBER', 'BITBUCKET_COMMIT', 'CODEBUILD_BUILD_ARN'];
12+
13+
export function getTerminalInfo(): TerminalInfo {
14+
const vars = CI_ENVIRONMENT_VARIABLES.filter(v => !!process.env[v]);
15+
const detectedCI = vars.length > 0;
16+
17+
if (detectedCI) {
18+
debug(`Environment variables for CI detected: ${vars.join(', ')}`);
19+
}
20+
21+
return {
22+
tty: process.stdout.isTTY ? true : false,
23+
ci: detectedCI,
24+
};
25+
}

packages/@ionic/cli-utils/package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@
4040
"@ionic/cli-framework": "1.0.0-rc.1",
4141
"@ionic/discover": "1.0.0-rc.1",
4242
"chalk": "^2.3.0",
43-
"ci-info": "^1.1.2",
4443
"cross-spawn": "^6.0.3",
4544
"debug": "^3.1.0",
4645
"diff": "^3.4.0",

packages/@ionic/cli-utils/src/index.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ import * as path from 'path';
33

44
import chalk from 'chalk';
55
import * as Debug from 'debug';
6-
import { isCI } from 'ci-info';
76

87
import { PackageJson, parseArgs } from '@ionic/cli-framework';
98
import { findBaseDirectory } from '@ionic/cli-framework/utils/fs';
109
import { readPackageJsonFile } from '@ionic/cli-framework/utils/npm';
10+
import { getTerminalInfo } from '@ionic/cli-framework/utils/terminal';
1111

1212
import * as inquirerType from 'inquirer';
1313

@@ -73,8 +73,10 @@ export async function generateIonicEnvironment(ctx: IonicContext, pargv: string[
7373
let prefix: LogPrefix = '';
7474

7575
const configData = await config.load();
76+
const terminalInfo = getTerminalInfo();
77+
debug('Terminal info: %o', terminalInfo);
7678

77-
if (isCI || configData.interactive === false) {
79+
if (configData.interactive === false || !terminalInfo.tty || terminalInfo.ci) {
7880
flags.interactive = false;
7981
}
8082

packages/@ionic/cli-utils/src/lib/command.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ export abstract class Command extends BaseCommand<ICommand, INamespace, CommandM
3232
await this.validate(inputs);
3333
} catch (e) {
3434
if (!this.env.flags.interactive) {
35-
this.env.log.warn(`Command ran non-interactively due to ${chalk.green('--no-interactive')} flag, CI being detected, or a config setting.`);
35+
this.env.log.warn(`Command ran non-interactively due to ${chalk.green('--no-interactive')} flag, CI being detected, non-TTY, or a config setting.`);
3636
}
3737

3838
throw e;

packages/@ionic/cli-utils/tsconfig.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
"outDir": "./"
55
},
66
"include": [
7-
"../../../types/ci-info.d.ts",
87
"../../../types/cross-spawn.d.ts",
98
"../../../types/elementtree.d.ts",
109
"../../../types/leek.d.ts",

types/ci-info.d.ts

Lines changed: 0 additions & 12 deletions
This file was deleted.

0 commit comments

Comments
 (0)