154 lines
5.2 KiB
JavaScript
154 lines
5.2 KiB
JavaScript
'use strict';
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
module.exports = function(environment, $ = process.env) {
|
|
let ENV = {
|
|
modulePrefix: 'consul-ui',
|
|
environment,
|
|
rootURL: '/ui/',
|
|
locationType: 'auto',
|
|
// We use a complete dynamically (from Consul) configured
|
|
// torii provider. We provide this object here to
|
|
// prevent ember from giving a log message when starting ember up
|
|
torii: {},
|
|
'ember-cli-app-version': {
|
|
version: 'consul-ui',
|
|
},
|
|
EmberENV: {
|
|
FEATURES: {
|
|
// Here you can enable experimental features on an ember canary build
|
|
// e.g. EMBER_NATIVE_DECORATOR_SUPPORT: true
|
|
},
|
|
EXTEND_PROTOTYPES: {
|
|
// Prevent Ember Data from overriding Date.parse.
|
|
Date: false,
|
|
},
|
|
},
|
|
APP: {
|
|
// Here you can pass flags/options to your application instance
|
|
// when it is created
|
|
},
|
|
resizeServiceDefaults: {
|
|
injectionFactories: ['view', 'controller', 'component'],
|
|
},
|
|
};
|
|
// TODO: These should probably go onto APP
|
|
ENV = Object.assign({}, ENV, {
|
|
CONSUL_UI_DISABLE_REALTIME: typeof process.env.CONSUL_UI_DISABLE_REALTIME !== 'undefined',
|
|
CONSUL_UI_DISABLE_ANCHOR_SELECTION:
|
|
typeof process.env.CONSUL_UI_DISABLE_ANCHOR_SELECTION !== 'undefined',
|
|
CONSUL_COPYRIGHT_YEAR: (function(val) {
|
|
if (val) {
|
|
return val;
|
|
}
|
|
return require('child_process')
|
|
.execSync('git show -s --format=%ci HEAD')
|
|
.toString()
|
|
.trim()
|
|
.split('-')
|
|
.shift();
|
|
})(process.env.CONSUL_COPYRIGHT_YEAR),
|
|
CONSUL_VERSION: (function(val) {
|
|
if (val) {
|
|
return val;
|
|
}
|
|
// see /scripts/dist.sh:8
|
|
const version_go = `${path.dirname(path.dirname(__dirname))}/version/version.go`;
|
|
const contents = fs.readFileSync(version_go).toString();
|
|
return contents
|
|
.split('\n')
|
|
.find(function(item, i, arr) {
|
|
return item.indexOf('Version =') !== -1;
|
|
})
|
|
.trim()
|
|
.split('"')[1];
|
|
})(process.env.CONSUL_VERSION),
|
|
CONSUL_BINARY_TYPE: process.env.CONSUL_BINARY_TYPE ? process.env.CONSUL_BINARY_TYPE : 'oss',
|
|
CONSUL_ACLS_ENABLED: false,
|
|
CONSUL_NSPACES_ENABLED: false,
|
|
CONSUL_SSO_ENABLED: false,
|
|
|
|
CONSUL_HOME_URL: 'https://www.consul.io',
|
|
CONSUL_REPO_ISSUES_URL: 'https://github.com/hashicorp/consul/issues/new/choose',
|
|
CONSUL_DOCS_URL: 'https://www.consul.io/docs',
|
|
CONSUL_DOCS_LEARN_URL: 'https://learn.hashicorp.com',
|
|
CONSUL_DOCS_API_URL: 'https://www.consul.io/api',
|
|
CONSUL_COPYRIGHT_URL: 'https://www.hashicorp.com',
|
|
});
|
|
const isTestLike = ['staging', 'test'].indexOf(environment) > -1;
|
|
const isDevLike = ['development', 'staging', 'test'].indexOf(environment) > -1;
|
|
const isProdLike = ['production', 'staging'].indexOf(environment) > -1;
|
|
switch (true) {
|
|
case environment === 'test':
|
|
ENV = Object.assign({}, ENV, {
|
|
locationType: 'none',
|
|
CONSUL_NSPACES_TEST: true,
|
|
CONSUL_NSPACES_ENABLED:
|
|
typeof $['CONSUL_NSPACES_ENABLED'] !== 'undefined'
|
|
? !!JSON.parse(String($['CONSUL_NSPACES_ENABLED']).toLowerCase())
|
|
: true,
|
|
CONSUL_SSO_ENABLED:
|
|
typeof $['CONSUL_SSO_ENABLED'] !== 'undefined'
|
|
? !!JSON.parse(String($['CONSUL_SSO_ENABLED']).toLowerCase())
|
|
: false,
|
|
'@hashicorp/ember-cli-api-double': {
|
|
'auto-import': false,
|
|
enabled: true,
|
|
endpoints: {
|
|
'/v1': '/node_modules/@hashicorp/consul-api-double/v1',
|
|
},
|
|
},
|
|
APP: Object.assign({}, ENV.APP, {
|
|
LOG_ACTIVE_GENERATION: false,
|
|
LOG_VIEW_LOOKUPS: false,
|
|
|
|
rootElement: '#ember-testing',
|
|
autoboot: false,
|
|
}),
|
|
});
|
|
break;
|
|
case environment === 'staging':
|
|
ENV = Object.assign({}, ENV, {
|
|
CONSUL_NSPACES_ENABLED: true,
|
|
CONSUL_SSO_ENABLED: true,
|
|
'@hashicorp/ember-cli-api-double': {
|
|
enabled: true,
|
|
endpoints: {
|
|
'/v1': '/node_modules/@hashicorp/consul-api-double/v1',
|
|
},
|
|
},
|
|
});
|
|
break;
|
|
case environment === 'production':
|
|
// Make sure all templated variables check for existence first
|
|
// before outputting them, this means they all should be conditionals
|
|
ENV = Object.assign({}, ENV, {
|
|
// This ENV var is a special placeholder that Consul will replace
|
|
// entirely with multiple vars from the runtime config for example
|
|
// CONSUL_ACLs_ENABLED and CONSUL_NSPACES_ENABLED. The actual key here
|
|
// won't really exist in the actual ember ENV when it's being served
|
|
// through Consul. See settingsInjectedIndexFS.Open in Go code for the
|
|
// details.
|
|
CONSUL_UI_SETTINGS_PLACEHOLDER: "__CONSUL_UI_SETTINGS_GO_HERE__",
|
|
});
|
|
break;
|
|
}
|
|
switch (true) {
|
|
case isTestLike:
|
|
ENV = Object.assign({}, ENV, {
|
|
CONSUL_ACLS_ENABLED: true,
|
|
// 'APP': Object.assign({}, ENV.APP, {
|
|
// 'LOG_RESOLVER': true,
|
|
// 'LOG_ACTIVE_GENERATION': true,
|
|
// 'LOG_TRANSITIONS': true,
|
|
// 'LOG_TRANSITIONS_INTERNAL': true,
|
|
// 'LOG_VIEW_LOOKUPS': true,
|
|
// })
|
|
});
|
|
break;
|
|
case isProdLike:
|
|
break;
|
|
}
|
|
return ENV;
|
|
};
|