Chromium Code Reviews| Index: third_party/polymer/v1_0/gendeps.js |
| diff --git a/third_party/polymer/v1_0/gendeps.js b/third_party/polymer/v1_0/gendeps.js |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..33b4a03fd6aea6fb5ff9ec35f65c4deacf0ea0e7 |
| --- /dev/null |
| +++ b/third_party/polymer/v1_0/gendeps.js |
| @@ -0,0 +1,75 @@ |
| +var fs = require('fs'); |
| +var path = require('path'); |
| +var glob = require('glob').sync; |
| + |
| +var ignoreFolders = new Set(['polymer', 'polymer-externs']); |
| +var srcDir = path.resolve(path.join(__dirname, 'components-chromium')); |
| + |
| +var folders = fs.readdirSync(srcDir).filter(function(folder) { |
| + return !ignoreFolders.has(folder); |
| +}).map(function(folder) { |
| + return path.join(srcDir, folder); |
| +}); |
| + |
| +var chromiumHeader = |
| + '# Copyright 2016 The Chromium Authors. All rights reserved.\n' + |
| + '# Use of this source code is governed by a BSD-style license that can be\n' + |
| + '# found in the LICENSE file.\n'; |
| + |
| +var ignoreFiles = new Set(['index']); |
| +function processFolder(folder) { |
| + |
| + var htmlFiles = glob(folder + '/**/*.html').filter(function(file) { |
| + return !ignoreFiles.has(path.basename(file, '.html')); |
| + }); |
| + var targets = htmlFiles.map(function(file) { |
| + return createTarget(file, detectDependencies(file)); |
| + }); |
| + //console.log( |
| + // JSON.stringify({targets: targets}, undefined, 2)); |
| + var compiledResourcesContents = chromiumHeader + |
| + JSON.stringify({targets: targets}, undefined, 2).replace(/"/g, '\''); |
| + fs.writeFileSync( |
| + path.join(folder, 'compiled_resources2.gyp'), |
| + compiledResourcesContents); |
| +} |
| + |
| +function detectDependencies(file) { |
| + var fileContents = fs.readFileSync(file, {encoding: 'utf8'}); |
| + var regexp = /^<link rel="import" href="(.*)"/; |
|
Dan Beam
2016/02/16 07:01:08
BeautifulSoup is a better candidate for this, IMO:
|
| + var lines = fileContents.split('\n'); |
| + var dependencies = []; |
| + lines.forEach(function(line) { |
| + var results = regexp.exec(line); |
| + if (results && results[1].indexOf('/polymer.html') == -1) { |
| + dependencies.push(results[1]); |
| + } |
| + }); |
| + return dependencies; |
| +} |
| + |
| + |
| +folders.forEach(processFolder); |
| + |
| +function fileToTarget(file) { |
| + return path.basename(file, '.html') + '-extracted'; |
| +} |
| + |
| +function createTarget(file, fileDependencies) { |
| + var gypDependencies = fileDependencies.map(function(dep) { |
| + var parts = dep.split(path.sep); |
| + if (parts.length == 1) { |
| + return fileToTarget(parts[0]); |
| + } |
| + return path.join(parts[0], parts[1], 'compiled_resources2.gyp:') + |
| + fileToTarget(parts[parts.length -1]); |
| + }); |
| + var obj = { |
| + target_name: fileToTarget(file), |
| + }; |
| + if (gypDependencies.length > 0) { |
| + obj.dependencies = gypDependencies; |
| + } |
| + obj.includes = ['../../../../closure_compiler/compile_js2.gypi']; |
| + return obj; |
| +} |