@salesforce/core
Version:
Core libraries to interact with SFDX projects, orgs, and APIs.
60 lines • 2.27 kB
JavaScript
;
/*
* Copyright (c) 2020, salesforce.com, inc.
* All rights reserved.
* Licensed under the BSD 3-Clause license.
* For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.retrieveKeychain = void 0;
const kit_1 = require("@salesforce/kit");
const keyChainImpl_1 = require("./keyChainImpl");
const logger_1 = require("./logger");
const sfdxError_1 = require("./sfdxError");
/**
* Gets the os level keychain impl.
*
* @param platform The os platform.
* @ignore
*/
const retrieveKeychain = async (platform) => {
const logger = await logger_1.Logger.child('keyChain');
logger.debug(`platform: ${platform}`);
const useGenericUnixKeychainVar = kit_1.env.getBoolean('SFDX_USE_GENERIC_UNIX_KEYCHAIN');
const shouldUseGenericUnixKeychain = useGenericUnixKeychainVar && useGenericUnixKeychainVar;
if (platform.startsWith('win')) {
return keyChainImpl_1.keyChainImpl.generic_windows;
}
else if (platform.includes('darwin')) {
// OSX can use the generic keychain. This is useful when running under an
// automation user.
if (shouldUseGenericUnixKeychain) {
return keyChainImpl_1.keyChainImpl.generic_unix;
}
else {
return keyChainImpl_1.keyChainImpl.darwin;
}
}
else if (platform.includes('linux')) {
// Use the generic keychain if specified
if (shouldUseGenericUnixKeychain) {
return keyChainImpl_1.keyChainImpl.generic_unix;
}
else {
// otherwise try and use the builtin keychain
try {
await keyChainImpl_1.keyChainImpl.linux.validateProgram();
return keyChainImpl_1.keyChainImpl.linux;
}
catch (e) {
// If the builtin keychain is not available use generic
return keyChainImpl_1.keyChainImpl.generic_unix;
}
}
}
else {
throw sfdxError_1.SfdxError.create('@salesforce/core', 'encryption', 'UnsupportedOperatingSystemError', [platform]);
}
};
exports.retrieveKeychain = retrieveKeychain;
//# sourceMappingURL=keyChain.js.map