[ADD] odoo-bin cloc cli subcommand.
Odoo cloc is a tool to count the number of relevant lines written in Python,
Javascript or XML. This can be used as rough metric for pricing maintenance of
customizations.
It has two modes of operation, either by providing a path:
odoo-bin cloc -p module_path
Or by providing the name of a database:
odoo-bin cloc --addons-path=dirs -d database
In the latter mode, only the custom code is accounted for.
Both modes can be used simultaneously.
Files that cannot be parsed are shown at the end of the report.
Parsing can fail due to syntax errors or excessive file size.
closes odoo/odoo#52635
X-original-commit: ae858c3ac66267b4726db459032b91a6be1cc1d6
Related: odoo/enterprise#11018
Signed-off-by: Olivier Dony (odo) <odo@openerp.com>
Co-authored-by: Thibault Francois <tfr@odoo.com>
Co-authored-by: Antoine Vandevenne (anv) <anv@odoo.com>
This commit is contained in:
committed by
Olivier Dony
co-authored by
Thibault Francois
Antoine Vandevenne
parent
061ff011df
commit
1c522ee778
@@ -6,6 +6,7 @@ import odoo
|
||||
|
||||
from .command import Command, main
|
||||
|
||||
from . import cloc
|
||||
from . import deploy
|
||||
from . import scaffold
|
||||
from . import server
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
import argparse
|
||||
import os
|
||||
import sys
|
||||
import textwrap
|
||||
|
||||
from odoo.tools import cloc, config
|
||||
from . import Command
|
||||
|
||||
class Cloc(Command):
|
||||
"""\
|
||||
Odoo cloc is a tool to count the number of relevant lines written in
|
||||
Python, Javascript or XML. This can be used as rough metric for pricing
|
||||
maintenance of customizations.
|
||||
|
||||
It has two modes of operation, either by providing a path:
|
||||
|
||||
odoo-bin cloc -p module_path
|
||||
|
||||
Or by providing the name of a database:
|
||||
|
||||
odoo-bin cloc --addons-path=dirs -d database
|
||||
|
||||
In the latter mode, only the custom code is accounted for.
|
||||
"""
|
||||
def run(self, args):
|
||||
parser = argparse.ArgumentParser(
|
||||
prog="%s cloc" % sys.argv[0].split(os.path.sep)[-1],
|
||||
description=textwrap.dedent(self.__doc__),
|
||||
formatter_class=argparse.RawDescriptionHelpFormatter
|
||||
)
|
||||
parser.add_argument('--database', '-d', dest="database", help="Database name")
|
||||
parser.add_argument('--path', '-p', action='append', help="File or directory path")
|
||||
parser.add_argument('--verbose', '-v', action='count', default=0)
|
||||
opt, unknown = parser.parse_known_args(args)
|
||||
if not opt.database and not opt.path:
|
||||
parser.print_help()
|
||||
sys.exit()
|
||||
|
||||
c = cloc.Cloc()
|
||||
if opt.database:
|
||||
config.parse_config(['-d', opt.database] + unknown)
|
||||
c.count_database(opt.database)
|
||||
if opt.path:
|
||||
for i in opt.path:
|
||||
c.count_path(i)
|
||||
c.report(opt.verbose)
|
||||
Reference in New Issue
Block a user