mirror of https://github.com/pulumi/pulumi.git
65 lines
2.4 KiB
TypeScript
65 lines
2.4 KiB
TypeScript
// Copyright 2016-2018, Pulumi Corporation.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
// Copy of real 'config.ts' file to ensure that if we capture somehting marked as
|
|
// deployment-time that any code it captures (even through modules), should be captured by value.
|
|
|
|
import { getConfig } from "./runtimeConfig";
|
|
|
|
/**
|
|
* Config is a bag of related configuration state. Each bag contains any number of configuration variables, indexed by
|
|
* simple keys, and each has a name that uniquely identifies it; two bags with different names do not share values for
|
|
* variables that otherwise share the same key. For example, a bag whose name is `pulumi:foo`, with keys `a`, `b`,
|
|
* and `c`, is entirely separate from a bag whose name is `pulumi:bar` with the same simple key names. Each key has a
|
|
* fully qualified names, such as `pulumi:foo:a`, ..., and `pulumi:bar:a`, respectively.
|
|
*/
|
|
export class Config {
|
|
/**
|
|
* name is the configuration bag's logical name and uniquely identifies it. The default is the name of the current
|
|
* project.
|
|
*/
|
|
public readonly name: string;
|
|
|
|
constructor(name: string) {
|
|
if (name.endsWith(":config")) {
|
|
name = name.replace(/:config$/, "");
|
|
}
|
|
|
|
this.name = name;
|
|
}
|
|
|
|
/**
|
|
* get loads an optional configuration value by its key, or undefined if it doesn't exist.
|
|
*
|
|
* @param key The key to lookup.
|
|
* @param opts An options bag to constrain legal values.
|
|
*/
|
|
public get(key: string): string | undefined {
|
|
const v = getConfig(this.fullKey(key));
|
|
if (v === undefined) {
|
|
return undefined;
|
|
}
|
|
return v;
|
|
}
|
|
|
|
/**
|
|
* fullKey turns a simple configuration key into a fully resolved one, by prepending the bag's name.
|
|
*
|
|
* @param key The key to lookup.
|
|
*/
|
|
private fullKey(key: string): string {
|
|
return this.name + ":" + key;
|
|
}
|
|
}
|