81 lines
3.4 KiB
JavaScript
81 lines
3.4 KiB
JavaScript
// *****************************************************************************
|
|
// Copyright (C) 2022 Ericsson and others.
|
|
//
|
|
// This program and the accompanying materials are made available under the
|
|
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
// http://www.eclipse.org/legal/epl-2.0.
|
|
//
|
|
// This Source Code may also be made available under the following Secondary
|
|
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
// with the GNU Classpath Exception which is available at
|
|
// https://www.gnu.org/software/classpath/license.html.
|
|
//
|
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
// *****************************************************************************
|
|
|
|
const fs = require('fs-extra');
|
|
const glob = require('glob');
|
|
const util = require('util');
|
|
|
|
const realpath = util.promisify(require('fs').realpath.native);
|
|
|
|
const oldHeaderRegexp = new RegExp(String.raw`
|
|
\/\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
|
|
\* Copyright \(C\) (.+)
|
|
\*
|
|
\* This program and the accompanying materials are made available under the
|
|
\* terms of the Eclipse Public License v\. 2\.0 which is available at
|
|
\* http:\/\/www\.eclipse\.org\/legal\/epl-2\.0\.
|
|
\*
|
|
\* This Source Code may also be made available under the following Secondary
|
|
\* Licenses when the conditions for such availability set forth in the Eclipse
|
|
\* Public License v\. 2\.0 are satisfied: GNU General Public License, version 2
|
|
\* with the GNU Classpath Exception which is available at
|
|
\* https:\/\/www\.gnu\.org\/software\/classpath\/license\.html\.
|
|
\*
|
|
\* SPDX-License-Identifier: (.+)
|
|
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\/`
|
|
.slice(1), // remove leading \n
|
|
'i');
|
|
|
|
const newHeaderTemplate = `\
|
|
// *****************************************************************************
|
|
// Copyright (C) $1
|
|
//
|
|
// This program and the accompanying materials are made available under the
|
|
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
// http://www.eclipse.org/legal/epl-2.0.
|
|
//
|
|
// This Source Code may also be made available under the following Secondary
|
|
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
// with the GNU Classpath Exception which is available at
|
|
// https://www.gnu.org/software/classpath/license.html.
|
|
//
|
|
// SPDX-License-Identifier: $2
|
|
// *****************************************************************************`;
|
|
|
|
const search = new glob.Glob('**/*.{ts,tsx,js,jsx,c,cc,cpp,cxx}', {
|
|
ignore: [
|
|
'**/node_modules/**/*',
|
|
'**/lib/**/*'
|
|
]
|
|
});
|
|
let matches = 0;
|
|
const seen = new Set();
|
|
search.on('match', async file => {
|
|
file = await realpath(file);
|
|
if (seen.has(file)) {
|
|
return;
|
|
}
|
|
seen.add(file);
|
|
const original = await fs.readFile(file, 'utf8');
|
|
const replaced = original.replace(oldHeaderRegexp, newHeaderTemplate);
|
|
if (original !== replaced) {
|
|
matches += 1;
|
|
console.log('Rewriting', file, matches);
|
|
await fs.writeFile(file, replaced);
|
|
}
|
|
});
|