All files / create-gas-project/config eslintrc.config.js

0% Statements 0/28
0% Branches 0/8
0% Functions 0/6
0% Lines 0/26

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80                                                                                                                                                               
const fs = require( 'fs' );
const path = require( 'path' );
const yaml = require( 'js-yaml' );
const ajv = require( 'ajv' );
const configOptions = require( './eslint-config-associations.json' );
// SECTION Development modules
const { print } = require( 'q-i' );
const chalk = require( 'chalk' );
// !SECTION Development modules
 
 
 
let config = {};
 
 
/**
 * Modifies the imported eslintrc config object with rules specialized for GAS development
 */
function modifyConfig() {
  Object.keys( defaultConfig ).forEach( ( key ) => {
    if ( key === 'extends' ) {
      /* Don't overwrite the user's existing base config */
      return;
    }
 
    if ( key === 'plugins' ) {
      if ( config[ key ] instanceof Array ) {
        /* Only add to the existing plugin array - don't overwrite it */
        config[ key ] = config[ key ].concat( defaultConfig[ key ] );
      } else config[ key ] = defaultConfig[ key ]; /* Unless there isn't one */
 
      return;
    }
 
    /* Overwrite */
    config[ key ] = defaultConfig[ key ];
  } );
}
 
/**
 * Handle the import-existing strategy
 * @param {*} options
 * @returns
 */
function useExistingEslintObj( filePath, modify ) {
  const eslintRulePath = filePath;
  config = importConfig( eslintRulePath );
 
  if ( modify ) modifyConfig();
 
}
 
/**
 * Handle the create-new strategy
 * @param {*} options
 * @returns
 */
function createNewEslintObj( extendsConfig ) {
  config = defaultConfig;
 
  const configType = extendsConfig;
  config.extends = configType;
 
  const associatedPlugins = configOptions[ configType ].eslintrc;
  associatedPlugins.plugins.forEach( plugin => config.plugins.push( plugin ) );
 
}
 
/**
 * Validated the produced object against the official schema
 * @param {*} rules
 */
function verifyRuleObject( rules ) {
 
}
 
 
module.exports = eslintConfigObj;