49 lines
1.6 KiB
Python
49 lines
1.6 KiB
Python
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||
|
import argparse
|
||
|
import os
|
||
|
import sys
|
||
|
import textwrap
|
||
|
from pathlib import Path
|
||
|
|
||
|
from odoo.tools import cloc, config
|
||
|
from . import Command
|
||
|
|
||
|
class Cloc(Command):
|
||
|
""" Count lines of code per modules """
|
||
|
def run(self, args):
|
||
|
parser = argparse.ArgumentParser(
|
||
|
prog=f'{Path(sys.argv[0]).name} {self.name}',
|
||
|
description="""\
|
||
|
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.
|
||
|
""",
|
||
|
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)
|