text: 
  'use strict';
  
  // Hierarchical node.js configuration with command-line arguments, environment
  // variables, and files.
  const nconf = (module.exports = require('nconf'));
  const path = require('path');
  
  nconf
    // 1. Command-line arguments
    .argv()
    // 2. Environment variables
    .env([
      'CLOUD_BUCKET',
      'DATA_BACKEND',
      'MYSQL_USER',
      'MYSQL_PASSWORD',
      'INSTANCE_CONNECTION_NAME',
      'NODE_ENV',
      'OAUTH2_CLIENT_ID',
      'OAUTH2_CLIENT_SECRET',
      'OAUTH2_CALLBACK',
      'PORT',
      'SECRET',
    ])
    // 3. Config file
    .file({file: path.join(__dirname, 'config.json')})
    // 4. Defaults
    .defaults({
      // Typically you will create a bucket with the same name as your project ID.
      CLOUD_BUCKET: 'amorray-pt',
  
      // dataBackend can be 'datastore' or 'cloudsql'. Be sure to
      // configure the appropriate settings for each storage engine below.
      // If you are unsure, use datastore as it requires no additional
      // configuration.
      DATA_BACKEND: 'datastore',
  
      MYSQL_USER: '',
      MYSQL_PASSWORD: '',
  
      OAUTH2_CLIENT_ID: '552433092268-8uaeuqmlqs29uonbni6ilfbdqunmje0b.apps.googleusercontent.com',
      OAUTH2_CLIENT_SECRET: 'rE3TW-TQTOT4RZ80kb04sLDP',
      OAUTH2_CALLBACK: 'http://localhost:8080/auth/google/callback',
  
      PORT: 8080,
  
      // Set this a secret string of your choosing
      SECRET: 'keyboardcat',
    });
  
  // Check for required settings
  checkConfig('CLOUD_BUCKET');
  checkConfig('OAUTH2_CLIENT_ID');
  checkConfig('OAUTH2_CLIENT_SECRET');
  
  if (nconf.get('DATA_BACKEND') === 'cloudsql') {
    checkConfig('MYSQL_USER');
    checkConfig('MYSQL_PASSWORD');
    if (nconf.get('NODE_ENV') === 'production') {
      checkConfig('INSTANCE_CONNECTION_NAME');
    }
  }
  
  function checkConfig(setting) {
    if (!nconf.get(setting)) {
      throw new Error(
        `You must set ${setting} as an environment variable or in config.json!`
      );
    }
  }
  