_(apps) .map(app => app.relationships || []) .flatten() .thru(relationships => relationships[0]) .map((relationship, alias) => ({ alias, service: relationship.split(':')[0], endpoint: relationship.split(':')[1], creds: _.get(open, alias, {}), })) .groupBy('service') .value()
/* * Helper to get appMount */ const getAppMount = (app, base, files) => { if (_.has(app, 'source.root')) return path.join(base, app.source.root); return _(files) .filter(file => file.name === app.name) .thru(file => file[0].dir) .value(); }
_(loadCacheFile(config.toolingRouter)) .map(route => _.merge({}, route, { closeness: _.indexOf(pathsToRoot(), route.route), })) .filter(route => route.closeness !== -1) .orderBy('closeness') .thru(routes => routes[0]) .value()
_(files) .flatMap(file => traverseUp(path.resolve(startFrom, file))) .sortBy().reverse() .filter(file => fs.existsSync(file) && path.isAbsolute(file)) .thru(files => _.isEmpty(files) ? [] : [_.first(files)]) .flatMap(dirFile => _.map(files, file => path.join(path.dirname(dirFile), file))) .filter(file => fs.existsSync(file)) .value()
thru<T1, T2>(value: T1, interceptor: (value: T1) => T2)
// Helper to get tokens const getTokens = (home, tokens = []) => _(utils.sortTokens(utils.getPlatformshTokens(home), tokens)) .map(token => ({name: token.email, value: token.token})) .thru(tokens => tokens.concat([{name: 'add or refresh a token', value: 'more'}])) .value()
_(_.merge(_.get(data, 'Config.ExposedPorts', []), {'443/tcp': {}})) .map((value, port) => ({ port: _.head(port.split('/')), protocol: (_.includes(secured, port.split('/')[0])) ? 'https' : 'http'} )) .filter(exposed => _.includes(scan, exposed.port)) .flatMap(ports => _.map(_.get(data, `NetworkSettings.Ports.${ports.port}/tcp`, []), i => _.merge({}, ports, i))) .filter(ports => _.includes([bindAddress, '0.0.0.0'], ports.HostIp)) .map(ports => url.format({ protocol: ports.protocol, hostname: 'localhost', port: _.includes(scan, ports.port) ? ports.HostPort : '', })) .thru(urls => ({service: data.Config.Labels['com.docker.compose.service'], urls})) .value()
_(files) .filter(file => fs.existsSync(file)) .map(file => yaml.safeLoad(fs.readFileSync(file))) .thru(data => _.merge({}, ...data)) .thru(data => { // Set the php version // @TODO: what is the best version here? data.php = _.toString(_.get(data, 'php_version', '5.6')); // Set the webroot data.webroot = (_.get(data, 'web_docroot', false)) ? 'web' : '.'; // Set the drush version data.drush = _.toString(_.get(data, 'drush_version', '8')); // if drush version is less than 8, use 8 anyway if (data.drush < 8) data.drush = 8; // return return data; }) .value()
_(excludes) .thru(excludes => toObject(getNamedVolumeNames(excludes))) .value()
_(data) .map((value, index) => new Table(value, opts)) .map(table => table.toString()) .thru(data => data.join(os.EOL)) .value()
_(routes) // Add implicit data and defaults .map((config, url) => ([url, _.merge({primary: false, attributes: {}, id: null, original_url: url}, config)])) // Replace URL defaults .map(route => ([replaceDefault(route[0], domain), route[1]])) // Replace config defaults .map(route => ([route[0], _.merge(route[1], replaceDefault(_.omit(route[1], ['original_url']), domain))])) // Strip upstream if needed .map(route => { if (route[1].upstream) route[1].upstream = _.first(route[1].upstream.split(':')); return [route[0], route[1]]; }) // Back to object .fromPairs() // Set the primary route .thru(routes => setPrimaryRoute(routes)) // Return .value()
_(apps) .filter(app => app.closeness !== -1) .orderBy('closeness') .thru(apps => apps[0]) .value()
_(keys) .map(service => data) .map((service, index) => _.set({}, keys[index], service)) .thru(services => _.reduce(services, (sum, service) => _.merge(sum, service), {})) .value()
// Helper to get tokens const getTokens = (home, tokens = []) => _(utils.sortTokens(utils.getTerminusTokens(home), tokens)) .map(token => ({name: token.email, value: token.token})) .thru(tokens => tokens.concat([{name: 'add or refresh a token', value: 'more'}])) .value()
thru<T1, T2>(value: T1, interceptor: (value: T1) => T2)