OCA-git-bot
5 years ago
No known key found for this signature in database
GPG Key ID: BCAB2555446B5B92
8 changed files with 295 additions and 365 deletions
-
4.editorconfig
-
291.eslintrc
-
180.eslintrc.yml
-
2.isort.cfg
-
161.pre-commit-config.yaml
-
8.prettierrc.yml
-
11.travis.yml
-
3CONTRIBUTING.md
@ -1,291 +0,0 @@ |
|||
{ |
|||
"globals": { |
|||
"$": false, |
|||
"_": false, |
|||
"fuzzy": false, |
|||
"jQuery": false, |
|||
"moment": false, |
|||
"odoo": false, |
|||
"openerp": false, |
|||
"self": false |
|||
}, |
|||
"env": { |
|||
"browser": true |
|||
}, |
|||
"rules": { |
|||
"no-alert": "warn", |
|||
"no-array-constructor": "warn", |
|||
"no-bitwise": "off", |
|||
"no-caller": "warn", |
|||
"no-case-declarations": "warn", |
|||
"no-catch-shadow": "warn", |
|||
"no-class-assign": "warn", |
|||
"no-cond-assign": "warn", |
|||
"no-confusing-arrow": "warn", |
|||
"no-console": "off", |
|||
"no-const-assign": "warn", |
|||
"no-constant-condition": "warn", |
|||
"no-continue": "off", |
|||
"no-control-regex": "warn", |
|||
"no-debugger": "warn", |
|||
"no-delete-var": "warn", |
|||
"no-div-regex": "warn", |
|||
"no-dupe-args": "warn", |
|||
"no-dupe-class-members": "warn", |
|||
"no-dupe-keys": "warn", |
|||
"no-duplicate-case": "warn", |
|||
"no-duplicate-imports": "warn", |
|||
"no-else-return": "warn", |
|||
"no-empty": "warn", |
|||
"no-empty-character-class": "warn", |
|||
"no-empty-function": "warn", |
|||
"no-empty-pattern": "warn", |
|||
"no-eq-null": "warn", |
|||
"no-eval": "warn", |
|||
"no-ex-assign": "warn", |
|||
"no-extend-native": "warn", |
|||
"no-extra-bind": "warn", |
|||
"no-extra-boolean-cast": "warn", |
|||
"no-extra-label": "warn", |
|||
"no-extra-parens": "warn", |
|||
"no-extra-semi": "warn", |
|||
"no-fallthrough": "warn", |
|||
"no-floating-decimal": "warn", |
|||
"no-func-assign": "warn", |
|||
"no-implicit-coercion": ["warn", { |
|||
"allow": ["~"] |
|||
}], |
|||
"no-implicit-globals": "warn", |
|||
"no-implied-eval": "warn", |
|||
"no-inline-comments": "warn", |
|||
"no-inner-declarations": "warn", |
|||
"no-invalid-regexp": "warn", |
|||
"no-invalid-this": "off", |
|||
"no-irregular-whitespace": "warn", |
|||
"no-iterator": "warn", |
|||
"no-label-var": "warn", |
|||
"no-labels": "warn", |
|||
"no-lone-blocks": "warn", |
|||
"no-lonely-if": "warn", |
|||
"no-loop-func": "off", |
|||
"no-magic-numbers": "off", |
|||
"no-mixed-operators": "warn", |
|||
"no-mixed-requires": "warn", |
|||
"no-mixed-spaces-and-tabs": "warn", |
|||
"no-multi-spaces": "warn", |
|||
"no-multi-str": "warn", |
|||
"no-multiple-empty-lines": "warn", |
|||
"no-native-reassign": "warn", |
|||
"no-negated-condition": "warn", |
|||
"no-negated-in-lhs": "warn", |
|||
"no-nested-ternary": "off", |
|||
"no-new": "warn", |
|||
"no-new-func": "warn", |
|||
"no-new-object": "warn", |
|||
"no-new-require": "warn", |
|||
"no-new-symbol": "warn", |
|||
"no-new-wrappers": "warn", |
|||
"no-obj-calls": "warn", |
|||
"no-octal": "warn", |
|||
"no-octal-escape": "warn", |
|||
"no-param-reassign": "warn", |
|||
"no-path-concat": "warn", |
|||
"no-plusplus": "off", |
|||
"no-process-env": "warn", |
|||
"no-process-exit": "warn", |
|||
"no-proto": "warn", |
|||
"no-prototype-builtins": "warn", |
|||
"no-redeclare": "warn", |
|||
"no-regex-spaces": "warn", |
|||
"no-restricted-globals": "warn", |
|||
"no-restricted-imports": "warn", |
|||
"no-restricted-modules": "warn", |
|||
"no-restricted-syntax": "warn", |
|||
"no-return-assign": "warn", |
|||
"no-script-url": "warn", |
|||
"no-self-assign": "warn", |
|||
"no-self-compare": "warn", |
|||
"no-sequences": "warn", |
|||
"no-shadow": "warn", |
|||
"no-shadow-restricted-names": "warn", |
|||
"no-whitespace-before-property": "warn", |
|||
"no-spaced-func": "warn", |
|||
"no-sparse-arrays": "warn", |
|||
"no-sync": "warn", |
|||
"no-tabs": "warn", |
|||
"no-ternary": "off", |
|||
"no-trailing-spaces": "warn", |
|||
"no-this-before-super": "warn", |
|||
"no-throw-literal": "warn", |
|||
"no-undef": "warn", |
|||
"no-undef-init": "warn", |
|||
"no-undefined": "off", |
|||
"no-unexpected-multiline": "warn", |
|||
"no-underscore-dangle": "off", |
|||
"no-unmodified-loop-condition": "warn", |
|||
"no-unneeded-ternary": "warn", |
|||
"no-unreachable": "warn", |
|||
"no-unsafe-finally": "warn", |
|||
"no-unused-expressions": "warn", |
|||
"no-unused-labels": "warn", |
|||
"no-unused-vars": "warn", |
|||
"no-use-before-define": "warn", |
|||
"no-useless-call": "warn", |
|||
"no-useless-computed-key": "warn", |
|||
"no-useless-concat": "warn", |
|||
"no-useless-constructor": "warn", |
|||
"no-useless-escape": "warn", |
|||
"no-useless-rename": "warn", |
|||
"no-void": "warn", |
|||
"no-var": "off", |
|||
"no-warning-comments": "off", |
|||
"no-with": "warn", |
|||
"array-bracket-spacing": "off", |
|||
"array-callback-return": "warn", |
|||
"arrow-body-style": "warn", |
|||
"arrow-parens": "warn", |
|||
"arrow-spacing": "off", |
|||
"accessor-pairs": "warn", |
|||
"block-scoped-var": "off", |
|||
"block-spacing": ["warn", "always"], |
|||
"brace-style": "warn", |
|||
"callback-return": "warn", |
|||
"camelcase": "off", |
|||
"capitalized-comments": ["warn", "always", { |
|||
"ignoreConsecutiveComments": true, |
|||
"ignoreInlineComments": true |
|||
}], |
|||
"comma-dangle": ["warn", "always-multiline"], |
|||
"comma-spacing": ["warn", { |
|||
"before": false, |
|||
"after": true |
|||
}], |
|||
"comma-style": "warn", |
|||
"complexity": [ |
|||
"warn", |
|||
15 |
|||
], |
|||
"computed-property-spacing": "off", |
|||
"consistent-return": "off", |
|||
"consistent-this": "off", |
|||
"constructor-super": "warn", |
|||
"curly": "warn", |
|||
"default-case": "off", |
|||
"dot-location": ["warn", "property"], |
|||
"dot-notation": "warn", |
|||
"eol-last": "warn", |
|||
"eqeqeq": "warn", |
|||
"func-names": "off", |
|||
"func-style": "off", |
|||
"generator-star-spacing": "off", |
|||
"global-require": "warn", |
|||
"guard-for-in": "off", |
|||
"handle-callback-err": "warn", |
|||
"id-blacklist": "warn", |
|||
"id-length": "off", |
|||
"id-match": "warn", |
|||
"indent": "warn", |
|||
"init-declarations": "warn", |
|||
"jsx-quotes": "warn", |
|||
"key-spacing": "off", |
|||
"keyword-spacing": "warn", |
|||
"linebreak-style": [ |
|||
"warn", |
|||
"unix" |
|||
], |
|||
"lines-around-comment": "warn", |
|||
"max-depth": "warn", |
|||
"max-len": ["warn", { |
|||
"code": 88, |
|||
"ignorePattern": "odoo\\.define\\(", |
|||
"tabWidth": 4 |
|||
}], |
|||
"max-lines": "off", |
|||
"max-nested-callbacks": "warn", |
|||
"max-params": "off", |
|||
"max-statements": "off", |
|||
"max-statements-per-line": "warn", |
|||
"multiline-ternary": "off", |
|||
"new-cap": "off", |
|||
"new-parens": "warn", |
|||
"newline-after-var": "off", |
|||
"newline-before-return": "off", |
|||
"newline-per-chained-call": "off", |
|||
"object-curly-newline": ["warn", { "consistent": true }], |
|||
"object-curly-spacing": ["warn", "never"], |
|||
"object-property-newline": ["warn", { |
|||
"allowAllPropertiesOnSameLine": true |
|||
}], |
|||
"object-shorthand": "off", |
|||
"one-var": "off", |
|||
"one-var-declaration-per-line": "off", |
|||
"operator-assignment": "warn", |
|||
"operator-linebreak": "warn", |
|||
"padded-blocks": "off", |
|||
"prefer-arrow-callback": "off", |
|||
"prefer-const": "warn", |
|||
"prefer-reflect": "off", |
|||
"prefer-rest-params": "off", |
|||
"prefer-spread": "off", |
|||
"prefer-template": "off", |
|||
"quote-props": "off", |
|||
"quotes": "off", |
|||
"radix": "warn", |
|||
"require-yield": "warn", |
|||
"rest-spread-spacing": "off", |
|||
"semi": [ |
|||
"warn", |
|||
"always" |
|||
], |
|||
"semi-spacing": "warn", |
|||
"sort-imports": "warn", |
|||
"sort-vars": "off", |
|||
"space-before-blocks": "warn", |
|||
"space-before-function-paren": "warn", |
|||
"space-in-parens": "off", |
|||
"space-infix-ops": "off", |
|||
"space-unary-ops": "off", |
|||
"spaced-comment": ["warn", "always"], |
|||
"strict": ["warn", "function"], |
|||
"template-curly-spacing": "off", |
|||
"unicode-bom": "warn", |
|||
"use-isnan": "warn", |
|||
"valid-jsdoc": ["warn", { |
|||
"prefer": { |
|||
"arg": "param", |
|||
"argument": "param", |
|||
"augments": "extends", |
|||
"constructor": "class", |
|||
"exception": "throws", |
|||
"func": "function", |
|||
"method": "function", |
|||
"prop": "property", |
|||
"return": "returns", |
|||
"virtual": "abstract", |
|||
"yield": "yields" |
|||
}, |
|||
"preferType": { |
|||
"array": "Array", |
|||
"bool": "Boolean", |
|||
"boolean": "Boolean", |
|||
"number": "Number", |
|||
"object": "Object", |
|||
"str": "String", |
|||
"string": "String" |
|||
}, |
|||
"requireParamDescription": false, |
|||
"requireReturn": false, |
|||
"requireReturnDescription": false, |
|||
"requireReturnType": false |
|||
}], |
|||
"valid-typeof": "warn", |
|||
"vars-on-top": "off", |
|||
"wrap-iife": "warn", |
|||
"wrap-regex": "warn", |
|||
"yield-star-spacing": "off", |
|||
"yoda": "warn" |
|||
}, |
|||
"parserOptions": { |
|||
"ecmaVersion": 2017 |
|||
} |
|||
} |
@ -0,0 +1,180 @@ |
|||
env: |
|||
browser: true |
|||
|
|||
# See https://github.com/OCA/odoo-community.org/issues/37#issuecomment-470686449 |
|||
parserOptions: |
|||
ecmaVersion: 2017 |
|||
|
|||
# Globals available in Odoo that shouldn't produce errorings |
|||
globals: |
|||
_: readonly |
|||
$: readonly |
|||
fuzzy: readonly |
|||
jQuery: readonly |
|||
moment: readonly |
|||
odoo: readonly |
|||
openerp: readonly |
|||
Promise: readonly |
|||
|
|||
# Styling is handled by Prettier, so we only need to enable AST rules; |
|||
# see https://github.com/OCA/maintainer-quality-tools/pull/618#issuecomment-558576890 |
|||
rules: |
|||
accessor-pairs: warn |
|||
array-callback-return: warn |
|||
callback-return: warn |
|||
capitalized-comments: |
|||
- warn |
|||
- always |
|||
- ignoreConsecutiveComments: true |
|||
ignoreInlineComments: true |
|||
complexity: |
|||
- warn |
|||
- 15 |
|||
constructor-super: warn |
|||
dot-notation: warn |
|||
eqeqeq: warn |
|||
global-require: warn |
|||
handle-callback-err: warn |
|||
id-blacklist: warn |
|||
id-match: warn |
|||
init-declarations: error |
|||
max-depth: warn |
|||
max-nested-callbacks: warn |
|||
max-statements-per-line: warn |
|||
no-alert: warn |
|||
no-array-constructor: warn |
|||
no-caller: warn |
|||
no-case-declarations: warn |
|||
no-class-assign: warn |
|||
no-cond-assign: error |
|||
no-const-assign: error |
|||
no-constant-condition: warn |
|||
no-control-regex: warn |
|||
no-debugger: error |
|||
no-delete-var: warn |
|||
no-div-regex: warn |
|||
no-dupe-args: error |
|||
no-dupe-class-members: error |
|||
no-dupe-keys: error |
|||
no-duplicate-case: error |
|||
no-duplicate-imports: error |
|||
no-else-return: warn |
|||
no-empty-character-class: warn |
|||
no-empty-function: error |
|||
no-empty-pattern: error |
|||
no-empty: warn |
|||
no-eq-null: error |
|||
no-eval: error |
|||
no-ex-assign: error |
|||
no-extend-native: warn |
|||
no-extra-bind: warn |
|||
no-extra-boolean-cast: warn |
|||
no-extra-label: warn |
|||
no-fallthrough: warn |
|||
no-func-assign: error |
|||
no-global-assign: error |
|||
no-implicit-coercion: |
|||
- warn |
|||
- allow: ["~"] |
|||
no-implicit-globals: warn |
|||
no-implied-eval: warn |
|||
no-inline-comments: warn |
|||
no-inner-declarations: warn |
|||
no-invalid-regexp: warn |
|||
no-irregular-whitespace: warn |
|||
no-iterator: warn |
|||
no-label-var: warn |
|||
no-labels: warn |
|||
no-lone-blocks: warn |
|||
no-lonely-if: error |
|||
no-mixed-requires: error |
|||
no-multi-str: warn |
|||
no-native-reassign: error |
|||
no-negated-condition: warn |
|||
no-negated-in-lhs: error |
|||
no-new-func: warn |
|||
no-new-object: warn |
|||
no-new-require: warn |
|||
no-new-symbol: warn |
|||
no-new-wrappers: warn |
|||
no-new: warn |
|||
no-obj-calls: warn |
|||
no-octal-escape: warn |
|||
no-octal: warn |
|||
no-param-reassign: warn |
|||
no-path-concat: warn |
|||
no-process-env: warn |
|||
no-process-exit: warn |
|||
no-proto: warn |
|||
no-prototype-builtins: warn |
|||
no-redeclare: warn |
|||
no-regex-spaces: warn |
|||
no-restricted-globals: warn |
|||
no-restricted-imports: warn |
|||
no-restricted-modules: warn |
|||
no-restricted-syntax: warn |
|||
no-return-assign: error |
|||
no-script-url: warn |
|||
no-self-assign: warn |
|||
no-self-compare: warn |
|||
no-sequences: warn |
|||
no-shadow-restricted-names: warn |
|||
no-shadow: warn |
|||
no-sparse-arrays: warn |
|||
no-sync: warn |
|||
no-this-before-super: warn |
|||
no-throw-literal: warn |
|||
no-undef-init: warn |
|||
no-undef: error |
|||
no-unmodified-loop-condition: warn |
|||
no-unneeded-ternary: error |
|||
no-unreachable: error |
|||
no-unsafe-finally: error |
|||
no-unused-expressions: error |
|||
no-unused-labels: error |
|||
no-unused-vars: error |
|||
no-use-before-define: error |
|||
no-useless-call: warn |
|||
no-useless-computed-key: warn |
|||
no-useless-concat: warn |
|||
no-useless-constructor: warn |
|||
no-useless-escape: warn |
|||
no-useless-rename: warn |
|||
no-void: warn |
|||
no-with: warn |
|||
operator-assignment: [error, always] |
|||
prefer-const: warn |
|||
radix: warn |
|||
require-yield: warn |
|||
sort-imports: warn |
|||
spaced-comment: [error, always] |
|||
strict: [error, function] |
|||
use-isnan: error |
|||
valid-jsdoc: |
|||
- warn |
|||
- prefer: |
|||
arg: param |
|||
argument: param |
|||
augments: extends |
|||
constructor: class |
|||
exception: throws |
|||
func: function |
|||
method: function |
|||
prop: property |
|||
return: returns |
|||
virtual: abstract |
|||
yield: yields |
|||
preferType: |
|||
array: Array |
|||
bool: Boolean |
|||
boolean: Boolean |
|||
number: Number |
|||
object: Object |
|||
str: String |
|||
string: String |
|||
requireParamDescription: false |
|||
requireReturn: false |
|||
requireReturnDescription: false |
|||
requireReturnType: false |
|||
valid-typeof: warn |
|||
yoda: warn |
@ -1,68 +1,99 @@ |
|||
exclude: "^setup/|/static/lib/|/static/src/lib/" |
|||
exclude: | |
|||
(?x) |
|||
# Files and folders generated by bots, to avoid loops |
|||
^setup/|/static/description/index\.html$| |
|||
# Maybe reactivate this when all README files include prettier ignore tags? |
|||
^README\.md$| |
|||
# Library files can have extraneous formatting (even minimized) |
|||
/static/(src/)?lib/| |
|||
# Repos using Sphinx to generate docs don't need prettying |
|||
^docs/_templates/.*\.html$| |
|||
# You don't usually want a bot to modify your legal texts |
|||
(LICENSE.*|COPYING.*) |
|||
default_language_version: |
|||
python: python3 |
|||
repos: |
|||
- repo: https://github.com/psf/black |
|||
rev: 19.3b0 |
|||
hooks: |
|||
- id: black |
|||
- repo: https://github.com/pre-commit/pre-commit-hooks |
|||
rev: v2.3.0 |
|||
hooks: |
|||
- id: trailing-whitespace |
|||
# exclude autogenerated files |
|||
exclude: /README\.rst$|\.pot?$ |
|||
- id: end-of-file-fixer |
|||
# exclude autogenerated files |
|||
exclude: /README\.rst$|\.pot?$ |
|||
- id: debug-statements |
|||
- id: flake8 |
|||
name: flake8 except __init__.py |
|||
exclude: /__init__\.py$ |
|||
additional_dependencies: ["flake8-bugbear==19.8.0"] |
|||
- id: flake8 |
|||
name: flake8 only __init__.py |
|||
args: ["--extend-ignore=F401"] # ignore unused imports in __init__.py |
|||
files: /__init__\.py$ |
|||
additional_dependencies: ["flake8-bugbear==19.8.0"] |
|||
- id: fix-encoding-pragma |
|||
args: ["--remove"] |
|||
- id: check-case-conflict |
|||
- id: check-docstring-first |
|||
- id: check-executables-have-shebangs |
|||
- id: check-merge-conflict |
|||
- id: check-symlinks |
|||
- id: check-xml |
|||
- id: mixed-line-ending |
|||
args: ["--fix=lf"] |
|||
- repo: https://github.com/pre-commit/mirrors-pylint |
|||
rev: v2.3.1 |
|||
hooks: |
|||
- id: pylint |
|||
name: pylint with optional checks |
|||
args: ["--rcfile=.pylintrc", "--exit-zero"] |
|||
verbose: true |
|||
additional_dependencies: ["pylint-odoo==3.0.3"] |
|||
- id: pylint |
|||
name: pylint with mandatory checks |
|||
args: ["--rcfile=.pylintrc-mandatory"] |
|||
additional_dependencies: ["pylint-odoo==3.0.3"] |
|||
- repo: https://github.com/asottile/pyupgrade |
|||
rev: v1.24.0 |
|||
hooks: |
|||
- id: pyupgrade |
|||
- repo: https://github.com/asottile/seed-isort-config |
|||
rev: v1.9.3 |
|||
hooks: |
|||
- id: seed-isort-config |
|||
- repo: https://github.com/pre-commit/mirrors-isort |
|||
rev: v4.3.21 |
|||
hooks: |
|||
- id: isort |
|||
name: isort except __init__.py |
|||
exclude: /__init__\.py$ |
|||
- repo: https://github.com/pre-commit/mirrors-eslint |
|||
rev: v6.5.1 |
|||
hooks: |
|||
- id: eslint |
|||
verbose: true |
|||
- repo: https://github.com/psf/black |
|||
rev: 19.10b0 |
|||
hooks: |
|||
- id: black |
|||
- repo: https://github.com/prettier/prettier |
|||
rev: "1.19.1" |
|||
hooks: |
|||
- id: prettier |
|||
# TODO Avoid awebdeveloper/pre-commit-prettier if possible |
|||
# HACK https://github.com/prettier/prettier/issues/7407 |
|||
- repo: https://github.com/awebdeveloper/pre-commit-prettier |
|||
rev: v0.0.1 |
|||
hooks: |
|||
- id: prettier |
|||
name: prettier xml plugin |
|||
additional_dependencies: |
|||
- "prettier@1.19.1" |
|||
- "@prettier/plugin-xml@0.7.2" |
|||
files: \.xml$ |
|||
- repo: https://github.com/pre-commit/mirrors-eslint |
|||
rev: v6.8.0 |
|||
hooks: |
|||
- id: eslint |
|||
verbose: true |
|||
args: |
|||
- --color |
|||
- --fix |
|||
- repo: https://github.com/pre-commit/pre-commit-hooks |
|||
rev: v2.4.0 |
|||
hooks: |
|||
- id: trailing-whitespace |
|||
# exclude autogenerated files |
|||
exclude: /README\.rst$|\.pot?$ |
|||
- id: end-of-file-fixer |
|||
# exclude autogenerated files |
|||
exclude: /README\.rst$|\.pot?$ |
|||
- id: debug-statements |
|||
- id: flake8 |
|||
name: flake8 except __init__.py |
|||
exclude: /__init__\.py$ |
|||
additional_dependencies: ["flake8-bugbear==19.8.0"] |
|||
- id: flake8 |
|||
name: flake8 only __init__.py |
|||
args: ["--extend-ignore=F401"] # ignore unused imports in __init__.py |
|||
files: /__init__\.py$ |
|||
additional_dependencies: ["flake8-bugbear==19.8.0"] |
|||
- id: fix-encoding-pragma |
|||
args: ["--remove"] |
|||
- id: check-case-conflict |
|||
- id: check-docstring-first |
|||
- id: check-executables-have-shebangs |
|||
- id: check-merge-conflict |
|||
# exclude files where underlines are not distinguishable from merge conflicts |
|||
exclude: /README\.rst$|^docs/.*\.rst$ |
|||
- id: check-symlinks |
|||
- id: check-xml |
|||
- id: mixed-line-ending |
|||
args: ["--fix=lf"] |
|||
- repo: https://github.com/pre-commit/mirrors-pylint |
|||
rev: v2.3.1 |
|||
hooks: |
|||
- id: pylint |
|||
name: pylint with optional checks |
|||
args: ["--rcfile=.pylintrc", "--exit-zero"] |
|||
verbose: true |
|||
additional_dependencies: ["pylint-odoo==3.1.0"] |
|||
- id: pylint |
|||
name: pylint with mandatory checks |
|||
args: ["--rcfile=.pylintrc-mandatory"] |
|||
additional_dependencies: ["pylint-odoo==3.1.0"] |
|||
- repo: https://github.com/asottile/pyupgrade |
|||
rev: v1.26.2 |
|||
hooks: |
|||
- id: pyupgrade |
|||
- repo: https://github.com/pre-commit/mirrors-isort |
|||
rev: v4.3.21 |
|||
hooks: |
|||
- id: isort |
|||
name: isort except __init__.py |
|||
exclude: /__init__\.py$ |
|||
- repo: https://github.com/acsone/setuptools-odoo |
|||
rev: 2.5.2 |
|||
hooks: |
|||
- id: setuptools-odoo-make-default |
@ -0,0 +1,8 @@ |
|||
# Defaults for all prettier-supported languages. |
|||
# Prettier will complete this with settings from .editorconfig file. |
|||
bracketSpacing: false |
|||
printWidth: 88 |
|||
proseWrap: always |
|||
semi: true |
|||
trailingComma: "es5" |
|||
xmlWhitespaceSensitivity: "ignore" |
@ -1,6 +1,7 @@ |
|||
# OCA Guidelines |
|||
|
|||
Please follow the official guide from the [OCA Guidelines page](https://github.com/OCA/maintainer-tools/blob/master/CONTRIBUTING.md). |
|||
Please follow the official guide from the |
|||
[OCA Guidelines page](https://github.com/OCA/maintainer-tools/blob/master/CONTRIBUTING.md). |
|||
|
|||
## Project Specific Guidelines |
|||
|
|||
|
Write
Preview
Loading…
Cancel
Save
Reference in new issue