terrac
Version:
A minimal private module registry for Terraform and OpenTofu
29 lines (28 loc) • 1.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.BackendFactory = exports.configSchema = void 0;
const Joi = require("joi");
const s3_1 = require("./s3");
const local_1 = require("./local");
const gcp_1 = require("./gcp");
const azure_1 = require("./azure");
exports.configSchema = Joi.alternatives(s3_1.configSchemaS3, local_1.configSchemaLocal, gcp_1.configSchemaGCP, azure_1.configSchemaAzure);
class BackendFactory {
// eslint-disable-next-line @typescript-eslint/no-empty-function, no-useless-constructor
constructor() { }
static create(config) {
switch (config.type) {
case 's3':
return new s3_1.BackendS3(config);
case 'local':
return new local_1.BackendLocal(config);
case 'gcp':
return new gcp_1.BackendGCP(config);
case 'azure':
return new azure_1.BackendAzure(config);
default:
throw new Error('Unrecongized backend type');
}
}
}
exports.BackendFactory = BackendFactory;