mirror of
https://github.com/microsoft/vscode.git
synced 2026-03-03 15:29:23 +00:00
try to detect terminal encoding when reading from stdin (for #6161)
This commit is contained in:
@@ -15,6 +15,8 @@ import * as os from 'os';
|
||||
import * as fs from 'fs';
|
||||
import { whenDeleted } from 'vs/base/node/pfs';
|
||||
import { findFreePort } from 'vs/base/node/ports';
|
||||
import { resolveTerminalEncoding } from 'vs/base/node/encoding';
|
||||
import * as iconv from 'iconv-lite';
|
||||
|
||||
function shouldSpawnCliProcess(argv: ParsedArgs): boolean {
|
||||
return !!argv['install-source']
|
||||
@@ -93,10 +95,13 @@ export async function main(argv: string[]): TPromise<any> {
|
||||
let stdinFileError: Error;
|
||||
stdinFilePath = paths.join(os.tmpdir(), `stdin-${Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 6)}.txt`);
|
||||
try {
|
||||
const stdinFileStream = fs.createWriteStream(stdinFilePath);
|
||||
resolveTerminalEncoding(verbose).done(encoding => {
|
||||
|
||||
// Pipe into tmp file
|
||||
process.stdin.setEncoding('utf8');
|
||||
process.stdin.pipe(fs.createWriteStream(stdinFilePath));
|
||||
// Pipe into tmp file using terminals encoding
|
||||
const converterStream = iconv.decodeStream(encoding);
|
||||
process.stdin.pipe(converterStream).pipe(stdinFileStream);
|
||||
});
|
||||
|
||||
// Make sure to open tmp file
|
||||
argv.push(stdinFilePath);
|
||||
|
||||
Reference in New Issue
Block a user