|
|
@@ -0,0 +1,49 @@
|
|
|
+// Licensed to Cloudera, Inc. under one
|
|
|
+// or more contributor license agreements. See the NOTICE file
|
|
|
+// distributed with this work for additional information
|
|
|
+// regarding copyright ownership. Cloudera, Inc. 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.
|
|
|
+
|
|
|
+const fs = require('fs');
|
|
|
+
|
|
|
+const invalidVersionRegex = /^[<>~^]/;
|
|
|
+
|
|
|
+const runCheck = async () => {
|
|
|
+ // eslint-disable-next-line no-restricted-syntax
|
|
|
+ console.log('Checking if package.json contains invalid versions...');
|
|
|
+
|
|
|
+ const packageJson = await fs.promises.readFile('package.json');
|
|
|
+ const { dependencies, devDependencies } = JSON.parse(packageJson);
|
|
|
+
|
|
|
+ const allDependencies = Object.entries(dependencies).concat(Object.entries(devDependencies));
|
|
|
+ const invalidDependencies = allDependencies
|
|
|
+ .filter(([, version]) => invalidVersionRegex.test(version))
|
|
|
+ .map(([name, version]) => `${name}: ${version}`);
|
|
|
+
|
|
|
+ if (invalidDependencies.length) {
|
|
|
+ console.warn(
|
|
|
+ `Found invalid version(s):\n\n${invalidDependencies.join(
|
|
|
+ '\n'
|
|
|
+ )}\n\nPlease fix by "pinning" to a specific version (remove ~, ^, > or < prefixes).`
|
|
|
+ );
|
|
|
+ process.exitCode = 1;
|
|
|
+ } else {
|
|
|
+ // eslint-disable-next-line no-restricted-syntax
|
|
|
+ console.log(`Done! No invalid versions found.`);
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+runCheck().catch(e => {
|
|
|
+ console.error(e);
|
|
|
+ process.exitCode = 1;
|
|
|
+});
|