From e33af0d78aad9a5232c3c049c6b8ba767928456d Mon Sep 17 00:00:00 2001 From: Akos Kitta Date: Thu, 21 Jan 2021 21:25:48 +0100 Subject: [PATCH] Use `init` instead of `dump` for config fallback. Signed-off-by: Akos Kitta --- .../src/node/config-service-impl.ts | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/arduino-ide-extension/src/node/config-service-impl.ts b/arduino-ide-extension/src/node/config-service-impl.ts index abe7c221..dfa24b44 100644 --- a/arduino-ide-extension/src/node/config-service-impl.ts +++ b/arduino-ide-extension/src/node/config-service-impl.ts @@ -1,4 +1,5 @@ import * as path from 'path'; +import * as temp from 'temp'; import * as yaml from 'js-yaml'; import * as grpc from '@grpc/grpc-js'; import * as deepmerge from 'deepmerge'; @@ -21,6 +22,7 @@ import { Deferred } from '@theia/core/lib/common/promise-util'; import { EnvVariablesServer } from '@theia/core/lib/common/env-variables'; const debounce = require('lodash.debounce'); +const track = temp.track(); @injectable() export class ConfigServiceImpl implements BackendApplicationContribution, ConfigService { @@ -113,7 +115,17 @@ export class ConfigServiceImpl implements BackendApplicationContribution, Config protected async getFallbackCliConfig(): Promise { const cliPath = await this.daemon.getExecPath(); - const rawYaml = await spawnCommand(`"${cliPath}"`, ['config', 'dump']); + const throwawayDirPath = await new Promise((resolve, reject) => { + track.mkdir({}, (err, dirPath) => { + if (err) { + reject(err); + return; + } + resolve(dirPath); + }); + }); + await spawnCommand(`"${cliPath}"`, ['config', 'init', '--dest-dir', throwawayDirPath]); + const rawYaml = await fs.readFile(path.join(throwawayDirPath, CLI_CONFIG), { encoding: 'utf-8' }); const model = yaml.safeLoad(rawYaml.trim()); return model as DefaultCliConfig; }