docs: function makeRuntimeSettings(commandDesc, config, opts)
  {
      let settings = {};
      
      if(commandDesc.hasSmartOutput) {
          /* istanbul ignore else */
          if(opts.force_smart) {
              // This is a testing flag. If stdout isn't a TTY, we will fake its getWindowSize()
              settings.smartOutput = true;
  
              /* istanbul ignore else */
              if(!process.stdout.isTTY) {
                  process.stdout.getWindowSize = () => [80, 1];
              }
          }
          else if(process.stdout.isTTY) {
              if(opts.no_disable_smart) settings.smartOutput = true;
              else if(opts.disable_smart || config.disableSmartOutput) settings.smartOutput = false;
              else settings.smartOutput = true;
          }
          else settings.smartOutput = false;
      }
  
      if(commandDesc.outputsObject) {
          let prettyPrinting = false;
  
          if(opts.no_pretty_print)
              settings.outputFormatter = config.unprettyPrinter;
          else if(opts.pretty_print || config.alwaysPrettyPrint || settings.smartOutput) {
              settings.outputFormatter = config.prettyPrinter;
              prettyPrinting = true;
          }
          else
              settings.outputFormatter = config.unprettyPrinter;
  
          if(prettyPrinting) {
              let colorOption = opts.color || config.color;
  
              /* istanbul ignore else */
              if(colorOption == 'auto') {
                  settings.colorizeIfNotPaging = supportsColor;
              }
              else if(colorOption == 'auto+pager') {
                  settings.colorizeIfNotPaging = settings.colorizeIfPaging = supportsColor;
              }
              else if(colorOption == 'force') {
                  settings.colorizeIfNotPaging = settings.colorizeIfPaging = true;
              }
          }
  
          if(opts.no_sort_keys) { }
          else if(opts.sort_keys || config.alwaysSortKeys) settings.sortKeys = true;
      }
      
      if(commandDesc.hasWithClauseOpt) {
          if(opts.no_disable_with) settings.withClause = true;
          else if(opts.disable_with) settings.withClause = false;
          else settings.withClause = !config.disableWithClause;
      }
      
      if(opts.no_auto_unwrap) { }
      else if(opts.auto_unwrap || config.alwaysAutoUnwrap)
          settings.unwrapper = config.autoUnwrapper;
      
      if(opts.unwrap_prop)
          settings.unwrapper = (config, obj) => objectPath.get(obj, opts.unwrap_prop);
      
      settings.verbose = opts.verbose;
  
      settings.inputParser = config.inputParser;
      
      if(commandDesc.hasFileOption === undefined || commandDesc.hasFileOption) {
          if(opts.file)
              settings.file = opts.file;
          else
              settings.file = '/dev/stdin';
  
          settings.data = utils.loadJSON(settings.file, settings, config);
      }
      
      // Find modules and load them into a sandbox if the command needs it,
      // and throw the data in there too as $$
      if(commandDesc.needsSandbox) {
          if(opts.no_module_dir)
              settings.modulePaths = [];
          else if(opts.module_dir) {
              let dirs = opts.module_dir;
              dirs.push.apply(dirs, config.moduleDirectories);
              settings.modulePaths = findModules(dirs);
          }
          else
              settings.modulePaths = findModules(config.moduleDirectories);
          
          if(opts.module && opts.module[0] !== false)
              settings.modulePaths.push.apply(settings.modulePaths, opts.module);
      
          settings.sandbox = vm.createContext({
              $config: config,
              $$: settings.data,
              console: console,
              out: console.log,
              process: process,
              require: require
          });
          
          loadModules(settings.modulePaths, settings.sandbox);
      }
      
      return settings;
  }