Add 'eslint-plugin-header' to check license
Add eslint rule to verify that source files have the required license
header.
Convert `.eslintrc.json` to `.eslintrc.cjs` to add header plugin
configuration.
Gitlab: #45
Change-Id: I7a2331d68a418be35e6bea425eede92087451980
diff --git a/.eslintrc.cjs b/.eslintrc.cjs
new file mode 100644
index 0000000..537f3e4
--- /dev/null
+++ b/.eslintrc.cjs
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2022 Savoir-faire Linux Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation; either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program. If not, see
+ * <https://www.gnu.org/licenses/>.
+ */
+
+const header = [
+ 'error',
+ 'block',
+ [
+ '',
+ {
+ pattern: ' \\* Copyright \\(C\\) (\\d{4}|(\\d{4}-\\d{4})) Savoir-faire Linux Inc\\.',
+ template: ` * Copyright (C) ${new Date().getFullYear()} Savoir-faire Linux Inc.`,
+ },
+ ' *',
+ ' * This program is free software; you can redistribute it and/or modify',
+ ' * it under the terms of the GNU Affero General Public License as',
+ ' * published by the Free Software Foundation; either version 3 of the',
+ ' * License, or (at your option) any later version.',
+ ' *',
+ ' * This program is distributed in the hope that it will be useful,',
+ ' * but WITHOUT ANY WARRANTY; without even the implied warranty of',
+ ' * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the',
+ ' * GNU Affero General Public License for more details.',
+ ' *',
+ ' * You should have received a copy of the GNU Affero General Public',
+ ' * License along with this program. If not, see',
+ ' * <https://www.gnu.org/licenses/>.',
+ ' ',
+ ],
+];
+
+module.exports = {
+ env: {
+ browser: true,
+ es2021: true,
+ node: true,
+ },
+ extends: [
+ 'eslint:recommended',
+ 'plugin:@typescript-eslint/recommended',
+ /* TODO: Enable these configs once the project is fully converted to typescript */
+ // "plugin:@typescript-eslint/recommended-requiring-type-checking",
+ // "plugin:@typescript-eslint/strict",
+ 'prettier',
+ ],
+ ignorePatterns: ['node_modules/', 'dist/', 'daemon/', 'test/'],
+ overrides: [
+ {
+ files: ['**/*.test.{js,jsx,ts,tsx}'],
+ env: {
+ jest: true,
+ },
+ },
+ ],
+ parser: '@typescript-eslint/parser',
+ parserOptions: {
+ ecmaVersion: 'latest',
+ sourceType: 'module',
+ },
+ plugins: ['@typescript-eslint', 'header', 'simple-import-sort', 'unused-imports'],
+ rules: {
+ '@typescript-eslint/ban-ts-comment': 'off',
+ '@typescript-eslint/no-empty-function': 'off',
+ '@typescript-eslint/no-explicit-any': 'off',
+ '@typescript-eslint/no-unused-vars': 'off',
+ eqeqeq: ['warn', 'smart'],
+ 'header/header': header,
+ 'no-constant-condition': ['error', { checkLoops: false }],
+ 'simple-import-sort/exports': 'warn',
+ 'simple-import-sort/imports': 'warn',
+ 'unused-imports/no-unused-imports': 'error',
+ 'unused-imports/no-unused-vars': [
+ 'warn',
+ { vars: 'all', varsIgnorePattern: '^_', args: 'after-used', argsIgnorePattern: '^_' },
+ ],
+ },
+};