| // Licensed to the Software Freedom Conservancy (SFC) under one | |
| // or more contributor license agreements. See the NOTICE file | |
| // distributed with this work for additional information | |
| // regarding copyright ownership. The SFC licenses this file | |
| // to you under the Apache License, Version 2.0 (the | |
| // "License"); you may not use this file except in compliance | |
| // with the License. You may obtain a copy of the License at | |
| // | |
| // http://www.apache.org/licenses/LICENSE-2.0 | |
| // | |
| // Unless required by applicable law or agreed to in writing, | |
| // software distributed under the License is distributed on an | |
| // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
| // KIND, either express or implied. See the License for the | |
| // specific language governing permissions and limitations | |
| // under the License. | |
| 'use strict'; | |
| const fs = require('fs'), | |
| path = require('path'); | |
| const COPYRIGHT_TEXT = [ | |
| '// Licensed to the Software Freedom Conservancy (SFC) under one', | |
| '// or more contributor license agreements. See the NOTICE file', | |
| '// distributed with this work for additional information', | |
| '// regarding copyright ownership. The SFC licenses this file', | |
| '// to you under the Apache License, Version 2.0 (the', | |
| '// "License"); you may not use this file except in compliance', | |
| '// with the License. You may obtain a copy of the License at', | |
| '//', | |
| '// http://www.apache.org/licenses/LICENSE-2.0', | |
| '//', | |
| '// Unless required by applicable law or agreed to in writing,', | |
| '// software distributed under the License is distributed on an', | |
| '// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY', | |
| '// KIND, either express or implied. See the License for the', | |
| '// specific language governing permissions and limitations', | |
| '// under the License.', | |
| '' | |
| ].join('\n'); | |
| let BASE_PATH = path.normalize(path.join(__dirname, '../javascript')); | |
| // Ignore files whose copyright is not SFC or need manual inspection. | |
| let IGNORE_PATHS = [ | |
| path.join(BASE_PATH, 'atoms/test/jquery.min.js'), | |
| ]; | |
| updateDir(BASE_PATH); | |
| function updateDir(dirname) { | |
| dirname = path.normalize(dirname); | |
| console.log('Scanning directory %s', dirname); | |
| fs.readdirSync(dirname).forEach(function(filePath) { | |
| if (filePath === 'node_modules') return; | |
| filePath = path.normalize(path.join(dirname, filePath)); | |
| if (IGNORE_PATHS.indexOf(filePath) !== -1) { | |
| return; | |
| } | |
| if (fs.statSync(filePath).isDirectory()) { | |
| updateDir(filePath); | |
| } else if (/.*\.js$/.test(filePath)) { | |
| let index = -1; | |
| let lines = fs.readFileSync(filePath, 'utf8').split(/\n/); | |
| lines.some(function(line) { | |
| if (line.slice(0, 2) === '//') { | |
| index += 1; | |
| return false; | |
| } | |
| return true; | |
| }); | |
| let content = COPYRIGHT_TEXT; | |
| if (index === -1) { | |
| console.log('...file is missing copyright header: %s', filePath); | |
| content += '\n' + lines.join('\n'); | |
| } else { | |
| let current = lines.slice(0, index + 1).join('\n') + '\n'; | |
| if (current === content) { | |
| // console.log('...header is up-to-date: %s', filePath); | |
| return; | |
| } else { | |
| console.log('...replacing copyright header: %s', filePath); | |
| content += lines.slice(index + 1).join('\n'); | |
| } | |
| } | |
| fs.writeFileSync(filePath, content, 'utf8'); | |
| } | |
| }) | |
| } |