Skip to content

Commit

Permalink
[ADD] Pre-commit compatibility for odoo < 13
Browse files Browse the repository at this point in the history
  • Loading branch information
josep-tecnativa committed Oct 21, 2024
1 parent f3df4ad commit 08b1bcf
Show file tree
Hide file tree
Showing 6 changed files with 281 additions and 8 deletions.
91 changes: 84 additions & 7 deletions .pre-commit-config.yaml.jinja
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,20 @@
{%- set proj_rev.ruff = "v0.1.3" %}
{%- set proj_rev.pre_commit_hooks = "v4.5.0" %}
{%- set proj_rev.odoo_pre_commit_hooks = "v0.0.29" %}
{%- if odoo_version < 16 %}
{%- set proj_rev.node_version = "18.17.1" %}
{%- set proj_rev.mirrors_prettier = "v2.7.1" %}
{%- set proj_rev.mirrors_prettier_prettier = "[email protected]" %}
{%- set proj_rev.mirrors_prettier_xml = "@prettier/[email protected]" %}
{%- set proj_rev.mirrors_eslint = "v8.49.0" %}
{%- set proj_rev.pylint_odoo = "v8.0.0" %}
{%- if odoo_version < 13 %}
{%- set proj_rev.node_version = "14.14.0" %}
{%- set proj_rev.mirrors_prettier = "v2.1.2" %}
{%- set proj_rev.mirrors_prettier_prettier = "[email protected]" %}
{%- set proj_rev.mirrors_prettier_xml = "@prettier/[email protected]" %}
{%- set proj_rev.pre_commit_hooks = "v3.2.0" %}
{%- set proj_rev.mirrors_eslint = "v7.8.1" %}
{%- elif odoo_version < 16 %}
{%- set proj_rev.pylint_odoo = "v8.0.0" %}
{%- elif odoo_version < 17 %}
{%- set proj_rev.pylint_odoo = "v8.0.20" %}
Expand All @@ -34,7 +47,7 @@ exclude: |
(LICENSE.*|COPYING.*)
default_language_version:
python: python3
node: "18.17.1"
node: "{{ proj_rev.node_version }}"
repos:
- repo: local
hooks:
Expand All @@ -43,6 +56,27 @@ repos:
entry: found forbidden files; remove them
language: fail
files: "\\.rej$"
{% if odoo_version < 13 -%}
- repo: https://github.com/oca/maintainer-tools
rev: b9c963d
hooks:
# update the NOT INSTALLABLE ADDONS section above
- id: oca-update-pre-commit-excluded-addons
args:
- --addons-dir
- odoo/custom/src/private
- repo: https://github.com/myint/autoflake
rev: v1.4
hooks:
- id: autoflake
args:
- --expand-star-imports
- --ignore-init-module-imports
- --in-place
- --remove-all-unused-imports
- --remove-duplicate-keys
- --remove-unused-variables
{% else -%}
- &maintainer_tools
repo: https://github.com/oca/maintainer-tools
rev: 400ffa99242c8b225ab4d34de78721a68b292a61
Expand All @@ -52,6 +86,7 @@ repos:
args:
- --addons-dir
- odoo/custom/src/private
{% endif -%}
{% if odoo_version >= 14 -%}
- repo: https://github.com/OCA/odoo-pre-commit-hooks
rev: {{ proj_rev.odoo_pre_commit_hooks }}
Expand All @@ -68,7 +103,7 @@ repos:
args: [--fix, --exit-non-zero-on-fix]
- id: ruff-format
{% else -%}
- repo: https://github.com/psf/black
- repo: https://github.com/psf/black
rev: 23.9.1
hooks:
- id: black
Expand Down Expand Up @@ -101,15 +136,17 @@ repos:
{% endif -%}
- repo: https://github.com/pre-commit/mirrors-prettier
# HACK https://github.com/prettier/prettier/issues/15696
rev: v2.7.1
rev: {{ proj_rev.mirrors_prettier }}
hooks:
- id: prettier
name: prettier + plugin-xml
{% if odoo_version >= 13 -%}
args: [--plugin=@prettier/plugin-xml]
{% endif -%}
additional_dependencies:
# HACK https://github.com/prettier/pre-commit/issues/16#issuecomment-713474520
- [email protected]
- "@prettier/[email protected]"
- {{ proj_rev.mirrors_prettier_prettier }}
- "{{ proj_rev.mirrors_prettier_xml }}"
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: {{ proj_rev.pre_commit_hooks }}
hooks:
Expand All @@ -126,12 +163,15 @@ repos:
- id: check-docstring-first
- id: check-executables-have-shebangs
- id: check-merge-conflict
{%- if odoo_version >= 11 %}
args: [--assume-in-merge]
exclude: \.rst$ # HACK https://github.com/pre-commit/pre-commit-hooks/issues/985
{%- endif %}
- id: check-symlinks
- id: check-xml
- id: mixed-line-ending
args: ["--fix=lf"]
{%- if odoo_version >= 11 %}
- repo: https://github.com/OCA/pylint-odoo
rev: {{ proj_rev.pylint_odoo }}
hooks:
Expand All @@ -144,14 +184,38 @@ repos:
- id: pylint_odoo
args:
- --rcfile=.pylintrc-mandatory
{%- else %}
- repo: https://github.com/pycqa/pylint
rev: v2.11.1
hooks:
- id: pylint
name: pylint with optional checks
args:
- --valid_odoo_versions=10.0
- --rcfile=.pylintrc
- --exit-zero
verbose: true
additional_dependencies:
- isort==4.3.21
- pylint-odoo==5.0.5
- id: pylint
name: pylint with mandatory checks
args:
- --valid_odoo_versions=10.0
- --rcfile=.pylintrc-mandatory
additional_dependencies:
- isort==4.3.21
- pylint-odoo==5.0.5
{%- endif %}
- repo: https://github.com/pre-commit/mirrors-eslint
rev: v8.49.0
rev: {{ proj_rev.mirrors_eslint }}
hooks:
- id: eslint
verbose: true
args:
- --color
- --fix
{% if odoo_version >= 13 -%}
- <<: *maintainer_tools
hooks:
# Generate readme is last, so its digest includes changes from above
Expand All @@ -165,3 +229,16 @@ repos:
- --if-fragments-changed
- --branch={{ odoo_version }}
- --template-filename=.module-readme.rst.j2
{% else -%}
- repo: https://github.com/oca/maintainer-tools
rev: 05e2174
hooks:
- id: oca-gen-addon-readme
args:
- --addons-dir=odoo/custom/src/private
- --org-name={{ project_author }}
- --repo-name={{ project_name }}
- --gen-html
- --branch={{ odoo_version }}
- --template-filename=.module-readmelt13.rst.j2
{% endif -%}
47 changes: 46 additions & 1 deletion .pylintrc-mandatory.jinja
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,51 @@ valid-odoo-versions={{ odoo_version }}
[MESSAGES CONTROL]
disable=all


{% if odoo_version < 11 %}
enable=anomalous-backslash-in-string,
# api-one-deprecated,
api-one-multi-together,
assignment-from-none,
attribute-deprecated,
class-camelcase,
dangerous-default-value,
dangerous-view-replace-wo-priority,
duplicate-id-csv,
duplicate-key,
duplicate-xml-fields,
duplicate-xml-record-id,
eval-referenced,
eval-used,
incoherent-interpreter-exec-perm,
manifest-author-string,
manifest-deprecated-key,
manifest-required-key,
manifest-version-format,
method-compute,
method-inverse,
method-required-super,
method-search,
missing-import-error,
missing-manifest-dependency,
openerp-exception-warning,
pointless-statement,
pointless-string-statement,
print-used,
redundant-keyword-arg,
redundant-modulename-xml,
reimported,
relative-import,
return-in-init,
rst-syntax-error,
sql-injection,
too-few-format-args,
translation-field,
# translation-required,
unreachable,
use-vim-comment,
wrong-tabs-instead-of-spaces,
xml-syntax-error
{%- else %}
enable=attribute-deprecated,
manifest-author-string,
manifest-deprecated-key,
Expand Down Expand Up @@ -87,6 +131,7 @@ enable=attribute-deprecated,
translation-too-many-args,
translation-unsupported-format
{%- endif %}
{%- endif %}

[REPORTS]
msg-template={path}:{line}: [{msg_id}({symbol}), {obj}] {msg}
Expand Down
65 changes: 65 additions & 0 deletions .pylintrc.jinja
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,70 @@ disable=all
# config as a blocking check.

# messages that do not cause the lint step to fail
{%- if odoo_version < 11%}
enable=anomalous-backslash-in-string,
# api-one-deprecated,
api-one-multi-together,
assignment-from-none,
attribute-deprecated,
class-camelcase,
dangerous-default-value,
dangerous-view-replace-wo-priority,
duplicate-id-csv,
duplicate-key,
duplicate-xml-fields,
duplicate-xml-record-id,
eval-referenced,
eval-used,
incoherent-interpreter-exec-perm,
license-allowed,
manifest-author-string,
manifest-deprecated-key,
{%- if project_author %}
manifest-required-author,
{%- endif %}
manifest-required-key,
manifest-version-format,
method-compute,
method-inverse,
method-required-super,
method-search,
missing-import-error,
missing-manifest-dependency,
openerp-exception-warning,
pointless-statement,
pointless-string-statement,
print-used,
redundant-keyword-arg,
redundant-modulename-xml,
reimported,
relative-import,
return-in-init,
rst-syntax-error,
sql-injection,
too-few-format-args,
translation-field,
# translation-required,
unreachable,
use-vim-comment,
wrong-tabs-instead-of-spaces,
xml-syntax-error,
# messages that do not cause the lint step to fail
consider-merging-classes-inherited,
create-user-wo-reset-password,
dangerous-filter-wo-user,
deprecated-module,
file-not-used,
invalid-commit,
missing-newline-extrafiles,
missing-readme,
no-utf8-coding-comment,
odoo-addons-relative-import,
old-api7-method-defined,
redefined-builtin,
too-complex,
unnecessary-utf8-coding-comment
{%- else %}
enable=attribute-deprecated,
consider-merging-classes-inherited,
invalid-commit,
Expand Down Expand Up @@ -120,6 +184,7 @@ enable=attribute-deprecated,
translation-unsupported-format,
website-manifest-key-not-valid-uri
{%- endif %}
{%- endif %}

[REPORTS]
msg-template={path}:{line}: [{msg_id}({symbol}), {obj}] {msg}
Expand Down
84 changes: 84 additions & 0 deletions {% if odoo_version <= 12 %}.module-readme.rst.j2{% endif %}.jinja
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
{% raw -%}
{%- macro fragment(name, title, sub='=') %}
{%- if name in fragments %}
{{- title }}
{{ sub * title|length }}

{{ fragments[name] }}
{% endif %}
{%- endmacro -%}

{{ '=' * manifest.name|length }}
{{ manifest.name }}
{{ '=' * manifest.name|length }}

.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |badge_devstat| image:: https://img.shields.io/badge/maturity-{{ development_status | replace("-", "--") | urlencode }}-brightgreen.png
:target: https://odoo-community.org/page/development-status
:alt: {{ development_status | title }}

.. |badge_license| image:: https://img.shields.io/badge/license-{{ manifest.license | d("Unknown") | replace("-", "--") | urlencode }}-blue.png
:alt: {{ manifest.license | d("Unknown") }}

|badge_devstat| |badge_license|

{{ fragments.get('DESCRIPTION', '') }}
{% if development_status == 'alpha' -%}

.. IMPORTANT::
This is an alpha version, the data model and design can change at any time without warning.
Only for development or testing purpose, do not use in production.
`More details on development status <https://odoo-community.org/page/development-status>`_

{% endif -%}

**Table of contents**

.. contents::
:local:

{{ fragment('INSTALL', 'Installation') }}
{{- fragment('CONFIGURE', 'Configuration') }}
{{- fragment('USAGE', 'Usage') }}
{{- fragment('DEVELOP', 'Development') }}
{{- fragment('ROADMAP', 'Known issues / Roadmap') -}}
{{- fragment('HISTORY', 'Changelog') -}}

Credits
{{ "=======" }}

{% if authors -%}
Authors
~~~~~~~

{% for author in authors if author -%}
* {{ author }}
{% endfor %}
{% endif -%}

{{ fragment('CONTRIBUTORS', 'Contributors', sub='~') }}
{{- fragment('CREDITS', 'Other credits', sub='~') -}}
Maintainers
~~~~~~~~~~~

This module is maintained by {{ org_name }}.

Contact the maintainer through their official support channels in case you find
any issues with this module.
{% if manifest.maintainers %}

{% for maintainer in manifest.maintainers %}
.. |maintainer-{{ maintainer }}| image:: https://github.com/{{ maintainer }}.png?size=40px
:target: https://github.com/{{ maintainer }}
:alt: {{ maintainer}}
{%- endfor %}

Current maintainer{% if manifest.maintainers|length > 1 %}s{% endif %}:

{% for maintainer in manifest.maintainers %}|maintainer-{{ maintainer }}|{% if not loop.last %} {% endif %}{% endfor %}
{% endif %}
{% endraw -%}
Loading

0 comments on commit 08b1bcf

Please sign in to comment.