code: function handleRecipeFile(recipePath) {
      var contents = null;
      try {
          contents = fs.readFileSync(recipePath);
      } catch (err) {
          // Not finding a recipe is OK
          return;
      }
  
      var config = null;
      try {
          config = JSON.parse(contents.toString());
      } catch (err) {
          // Finding a recipe that cannot be parsed is a disaster
          console.log('Error in parsing JSON for ' + recipePath);
          process.exit(-1);
      }
  
      // Determine the glob patterns
      var filesGlob = ['**/*.ts'];
      if (typeof config.filesGlob === 'string') {
          filesGlob = [config.filesGlob];
      } else if (Array.isArray(config.filesGlob)) {
          filesGlob = config.filesGlob;
      }
  
      var resultConfig = {};
      for (var prop in config) {
          resultConfig[prop] = config[prop];
      }
      resultConfig.files = findFiles(recipePath, filesGlob);
  
      var resultTxt = JSON.stringify(resultConfig, null, '  ');
      var resultPath = path.join(path.dirname(recipePath), 'tsconfig.json');
      fs.writeFileSync(resultPath, resultTxt);
      console.log('Updated ' + resultPath);
  }
docs: Given a recipe is found at `recipePath`, create a `tsconfig.json` sibling file with the glob resolved.