Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(179)

Unified Diff: node_modules/vulcanize/lib/optparser.js

Issue 800513006: Added vulcanize under third_party/npm_modules (Closed) Base URL: https://chromium.googlesource.com/infra/third_party/npm_modules.git@master
Patch Set: Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « node_modules/vulcanize/lib/constants.js ('k') | node_modules/vulcanize/lib/pathresolver.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: node_modules/vulcanize/lib/optparser.js
diff --git a/node_modules/vulcanize/lib/optparser.js b/node_modules/vulcanize/lib/optparser.js
new file mode 100644
index 0000000000000000000000000000000000000000..99502d555354144ecaad0b4a02f08c0e0a2c47d3
--- /dev/null
+++ b/node_modules/vulcanize/lib/optparser.js
@@ -0,0 +1,104 @@
+/**
+ * @license
+ * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
+ * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+ * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+ * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+ * Code distributed by Google as part of the polymer project is also
+ * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+ */
+
+var fs = require('fs');
+var path = require('path');
+
+var CONSTANTS = require('./constants.js');
+var ABS_URL = CONSTANTS.ABS_URL;
+var REMOTE_ABS_URL = CONSTANTS.REMOTE_ABS_URL;
+var DEFAULT = 'vulcanized.html';
+
+// validate options with boolean return
+function processOptions(options, callback) {
+ var config = {};
+ var excludes = {
+ imports: [],
+ scripts: [],
+ styles: []
+ };
+
+ options = options || Object.create(null);
+
+ if (options.config) {
+ var configBlob;
+ try {
+ // TODO(dfreedm): Make this async
+ configBlob = fs.readFileSync(options.config, 'utf8');
+ } catch(e) {
+ return callback('Config file not found!');
+ }
+ try {
+ config = JSON.parse(configBlob);
+ } catch(e) {
+ return callback('Malformed config JSON!');
+ }
+ }
+
+ options.input = options.input || config.input;
+ if (!options.input && !options.inputSrc) {
+ return callback('No input file or source string given!');
+ }
+
+ options.excludes = options.excludes || config.excludes;
+ if (options.excludes) {
+ var e = options.excludes;
+ try {
+ if (e.imports) {
+ e.imports.forEach(function(r) {
+ excludes.imports.push(new RegExp(r));
+ });
+ }
+ if (e.scripts) {
+ e.scripts.forEach(function(r) {
+ excludes.scripts.push(new RegExp(r));
+ });
+ }
+ if (e.styles) {
+ e.styles.forEach(function(r) {
+ excludes.styles.push(new RegExp(r));
+ });
+ }
+ } catch(_) {
+ return callback('Malformed import exclude config');
+ }
+ }
+
+ options.output = options.output || config.output;
+ if (!options.output) {
+ options.output = path.resolve(path.dirname(options.input), DEFAULT);
+ }
+ options.outputDir = path.dirname(options.output);
+
+ options.csp = options.csp || config.csp;
+ if (options.csp) {
+ options.csp = options.output.replace(/\.html$/, '.js');
+ }
+
+ options.abspath = options.abspath || config.abspath;
+ if (options.abspath) {
+ options.abspath = path.resolve(options.abspath);
+ excludes.imports.push(REMOTE_ABS_URL);
+ excludes.scripts.push(REMOTE_ABS_URL);
+ excludes.styles.push(REMOTE_ABS_URL);
+ } else {
+ excludes.imports.push(ABS_URL);
+ excludes.scripts.push(ABS_URL);
+ excludes.styles.push(ABS_URL);
+ }
+
+ options.excludes = excludes;
+
+ options.keepExcludes = options['strip-excludes'] === false || config['strip-excludes'] === false;
+
+ callback(null, options);
+}
+
+exports.processOptions = processOptions;
« no previous file with comments | « node_modules/vulcanize/lib/constants.js ('k') | node_modules/vulcanize/lib/pathresolver.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698