Skip to content

Commit

Permalink
Add linting
Browse files Browse the repository at this point in the history
  • Loading branch information
dsheeler committed May 23, 2024
1 parent c85116b commit fcc253f
Show file tree
Hide file tree
Showing 4 changed files with 225 additions and 0 deletions.
15 changes: 15 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# EditorConfig is awesome: https://EditorConfig.org

# top-most EditorConfig file
root = true

[*]
indent_style = space
indent_size = 4
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

[*.js]
quote_type = single
143 changes: 143 additions & 0 deletions .eslint.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
// SPDX-License-Identifier: CC0-1.0
// SPDX-FileCopyrightText: No rights reserved

import js from '@eslint/js';

export default [
js.configs.recommended,
{
languageOptions: {
globals: {
ARGV: 'readonly',
Debugger: 'readonly',
GIRepositoryGType: 'readonly',
globalThis: 'readonly',
imports: 'readonly',
Intl: 'readonly',
log: 'readonly',
logError: 'readonly',
pkg: 'readonly',
print: 'readonly',
printerr: 'readonly',
window: 'readonly',
TextEncoder: 'readonly',
TextDecoder: 'readonly',
console: 'readonly',
setTimeout: 'readonly',
setInterval: 'readonly',
clearTimeout: 'readonly',
clearInterval: 'readonly',
},
parserOptions: {
ecmaVersion: 2022,
sourceType: 'module',
},
},
rules: {
// See: https://eslint.org/docs/latest/rules/#possible-problems
'array-callback-return': 'error',
'no-await-in-loop': 'error',
'no-constant-binary-expression': 'error',
'no-constructor-return': 'error',
'no-new-native-nonconstructor': 'error',
'no-promise-executor-return': 'error',
'no-self-compare': 'error',
'no-template-curly-in-string': 'error',
'no-unmodified-loop-condition': 'error',
'no-unreachable-loop': 'error',
'no-unused-private-class-members': 'error',
'no-use-before-define': [
'error',
{
functions: false,
classes: true,
variables: true,
allowNamedExports: true,
},
],
// See: https://eslint.org/docs/latest/rules/#suggestions
'block-scoped-var': 'error',
'complexity': 'warn',
'consistent-return': 'error',
'default-param-last': 'error',
'eqeqeq': 'error',
'no-array-constructor': 'error',
'no-caller': 'error',
'no-extend-native': 'error',
'no-extra-bind': 'error',
'no-extra-label': 'error',
'no-iterator': 'error',
'no-label-var': 'error',
'no-loop-func': 'error',
'no-multi-assign': 'warn',
'no-new-object': 'error',
'no-new-wrappers': 'error',
'no-proto': 'error',
'no-shadow': 'warn',
'no-unused-vars': [
'error',
{
varsIgnorePattern: '^_',
argsIgnorePattern: '^_',
},
],
'no-var': 'warn',
'unicode-bom': 'error',
// GJS Restrictions
'no-restricted-globals': [
'error',
{
name: 'Debugger',
message: 'Internal use only',
},
{
name: 'GIRepositoryGType',
message: 'Internal use only',
},
{
name: 'log',
message: 'Use console.log()',
},
{
name: 'logError',
message: 'Use console.warn() or console.error()',
},
],
'no-restricted-properties': [
'error',
{
object: 'imports',
property: 'format',
message: 'Use template strings',
},
{
object: 'pkg',
property: 'initFormat',
message: 'Use template strings',
},
{
object: 'Lang',
property: 'copyProperties',
message: 'Use Object.assign()',
},
{
object: 'Lang',
property: 'bind',
message: 'Use arrow notation or Function.prototype.bind()',
},
{
object: 'Lang',
property: 'Class',
message: 'Use ES6 classes',
},
],
'no-restricted-syntax': [
'error',
{
selector: 'MethodDefinition[key.name="_init"] CallExpression[arguments.length<=1][callee.object.type="Super"][callee.property.name="_init"]',
message: 'Use constructor() and super()',
},
],
},
},
];
39 changes: 39 additions & 0 deletions .github/workflows/eslint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: ESLint

on:
push:
branches: [ 'main' ]
pull_request:
branches: [ 'main' ]
schedule:
- cron: '33 14 * * 5'

jobs:
eslint:
name: Run eslint scanning
runs-on: ubuntu-latest
permissions:
contents: read
security-events: write
# Required for private repositories by github/codeql-action/upload-sarif
actions: read
steps:
- name: Checkout
uses: actions/checkout@v3

- name: Install
run: |
npm install eslint@^8.0.0
npm install @microsoft/[email protected]
- name: Lint
run: npx eslint .
--format @microsoft/eslint-formatter-sarif
--output-file eslint-results.sarif
continue-on-error: true

- name: Report
uses: github/codeql-action/upload-sarif@v2
with:
sarif_file: eslint-results.sarif
wait-for-processing: true
28 changes: 28 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
{
"name": "gnome-shell-extensions-gravatar",
"version": "1.0.0",
"description": "Synchronize user icon with Gravatar",
"main": "index.js",
"directories": {
"lib": "lib"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "."
},
"author": "Daniel Sheeler",
"license": "MIT",
"devDependencies": {
"@eslint/eslintrc": "^3.0.2",
"@eslint/js": "^9.3.0",
"eslint": "^8.57.0",
"eslint-config-standard": "^17.1.0",
"eslint-plugin-import": "^2.29.1",
"eslint-plugin-n": "^16.6.2",
"eslint-plugin-promise": "^6.1.1",
"globals": "^15.0.0"
}
}

0 comments on commit fcc253f

Please sign in to comment.