69 lines
2.1 KiB
JavaScript
69 lines
2.1 KiB
JavaScript
/*!
|
|
* Copyright (C) Microsoft Corporation. All rights reserved.
|
|
*/
|
|
import { readRepoConfig, setVfs } from '@microsoft/power-apps-actions';
|
|
import { APP_CONFIG_FILE, WORKING_DIRECTORY } from './Constants.js';
|
|
import { CliFS } from './FS/CliFs.js';
|
|
let _cliSettings;
|
|
let _logger;
|
|
export async function initializeCliSettings({ source, interactive, fileConfig = {
|
|
powerConfigPath: `${WORKING_DIRECTORY}/${APP_CONFIG_FILE}`,
|
|
schemaPath: `${WORKING_DIRECTORY}/.power/schemas`,
|
|
codeGenPath: `${WORKING_DIRECTORY}/src`,
|
|
}, }) {
|
|
const cliFs = new CliFS({
|
|
cwd: process.cwd(),
|
|
allowCwdRead: true,
|
|
allowCwdWrite: true,
|
|
});
|
|
// Set VFS at initialize to read the config
|
|
setVfs(cliFs);
|
|
let appConfig;
|
|
try {
|
|
appConfig = await readRepoConfig(fileConfig.powerConfigPath);
|
|
}
|
|
catch (error) {
|
|
// Ignore error, there are commands where a config file is not needed
|
|
}
|
|
_cliSettings = {
|
|
source,
|
|
interactive,
|
|
fileConfig,
|
|
cliFs,
|
|
appConfig,
|
|
};
|
|
return _cliSettings;
|
|
}
|
|
export function setCliLogger(logger) {
|
|
_logger = logger;
|
|
}
|
|
export function getCliLogger() {
|
|
if (!_logger) {
|
|
// return a no-op logger if not initialized to prevent crashes
|
|
/* eslint-disable no-empty-function */
|
|
return {
|
|
trackActivityEvent: (_eventName, _eventData) => { },
|
|
trackErrorEvent: (_eventName, _eventData) => { },
|
|
trackScenario: (_name, _scenarioData) => {
|
|
return {
|
|
scenarioId: '',
|
|
complete: (_endScenarioData) => { },
|
|
failure: (_failureData) => { },
|
|
completeWithError: (_completeWithErrorData) => { },
|
|
};
|
|
},
|
|
stringifyError: (_err) => {
|
|
return null;
|
|
},
|
|
};
|
|
}
|
|
/* eslint-enable no-empty-function */
|
|
return _logger;
|
|
}
|
|
export function getSettings() {
|
|
if (!_cliSettings) {
|
|
throw new Error('CLI settings have not been initialized. Please call initializeCliSettings first.');
|
|
}
|
|
return _cliSettings;
|
|
}
|
|
//# sourceMappingURL=CliSettings.js.map
|