mirror of
https://github.com/bringout/oca-ocb-core.git
synced 2026-04-20 03:11:58 +02:00
Initial commit: Core packages
This commit is contained in:
commit
12c29a983b
9512 changed files with 8379910 additions and 0 deletions
133
odoo-bringout-oca-ocb-base/odoo/cli/tsconfig.py
Normal file
133
odoo-bringout-oca-ocb-base/odoo/cli/tsconfig.py
Normal file
|
|
@ -0,0 +1,133 @@
|
|||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
import argparse
|
||||
import glob
|
||||
import json
|
||||
import os
|
||||
import re
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
from . import Command
|
||||
from odoo.modules.module import MANIFEST_NAMES
|
||||
|
||||
|
||||
class TSConfig(Command):
|
||||
""" Generates tsconfig files for javascript code """
|
||||
|
||||
def get_module_list(self, path):
|
||||
return [
|
||||
mod.split(os.path.sep)[-2]
|
||||
for mname in MANIFEST_NAMES
|
||||
for mod in glob.glob(os.path.join(path, f'*/{mname}'))
|
||||
]
|
||||
|
||||
def clean_path(self, path):
|
||||
return re.sub(r"/{2,}", "/", path)
|
||||
|
||||
def prefix_suffix_path(self, path, prefix, suffix):
|
||||
return self.clean_path(f"{prefix}/{path}/{suffix}")
|
||||
|
||||
def remove_(self, modules, module):
|
||||
for name, path in modules:
|
||||
if module == name:
|
||||
modules.remove((name, path))
|
||||
|
||||
def run(self, cmdargs):
|
||||
parser = argparse.ArgumentParser(
|
||||
prog=f'{Path(sys.argv[0]).name} {self.name}',
|
||||
description=self.__doc__.strip()
|
||||
)
|
||||
parser.add_argument('--addons-path', type=str, nargs=1, dest="paths")
|
||||
args = parser.parse_args(args=cmdargs)
|
||||
|
||||
paths = list(map(self.clean_path, args.paths[0].split(',')))
|
||||
modules = {}
|
||||
owl_path = ""
|
||||
for path in paths:
|
||||
for module in self.get_module_list(path):
|
||||
modules[module] = self.prefix_suffix_path(module, path, "/static/src/*")
|
||||
if module == "web":
|
||||
owl_path = self.prefix_suffix_path(module, path, "/static/lib/owl/owl.js")
|
||||
|
||||
content = self.generate_file_content(modules, paths)
|
||||
content["compilerOptions"]["paths"]["@odoo/owl"] = [owl_path]
|
||||
# pylint: disable=bad-builtin
|
||||
print(json.dumps(content, indent=2))
|
||||
|
||||
def generate_imports(self, modules):
|
||||
return {
|
||||
f'@{module}/*': [path]
|
||||
for module, path in modules.items()
|
||||
}
|
||||
|
||||
def generate_file_content(self, modules, paths):
|
||||
return {
|
||||
'compilerOptions': {
|
||||
"baseUrl": ".",
|
||||
"target": "es2019",
|
||||
"checkJs": True,
|
||||
"allowJs": True,
|
||||
"noEmit": True,
|
||||
"typeRoots": list(map(lambda p: p + "/web/tooling/types", paths)),
|
||||
"paths": self.generate_imports(modules)
|
||||
}, "exclude": self.generate_excludes()
|
||||
}
|
||||
|
||||
def generate_excludes(self):
|
||||
return [
|
||||
"/**/*.po",
|
||||
"/**/*.py",
|
||||
"/**/*.pyc",
|
||||
"/**/*.xml",
|
||||
"/**/*.png",
|
||||
"/**/*.md",
|
||||
"/**/*.dat",
|
||||
"/**/*.scss",
|
||||
"/**/*.jpg",
|
||||
"/**/*.svg",
|
||||
"/**/*.pot",
|
||||
"/**/*.csv",
|
||||
"/**/*.mo",
|
||||
"/**/*.txt",
|
||||
"/**/*.less",
|
||||
"/**/*.bcmap",
|
||||
"/**/*.properties",
|
||||
"/**/*.html",
|
||||
"/**/*.ttf",
|
||||
"/**/*.rst",
|
||||
"/**/*.css",
|
||||
"/**/*.pack",
|
||||
"/**/*.idx",
|
||||
"/**/*.h",
|
||||
"/**/*.map",
|
||||
"/**/*.gif",
|
||||
"/**/*.sample",
|
||||
"/**/*.doctree",
|
||||
"/**/*.so",
|
||||
"/**/*.pdf",
|
||||
"/**/*.xslt",
|
||||
"/**/*.conf",
|
||||
"/**/*.woff",
|
||||
"/**/*.xsd",
|
||||
"/**/*.eot",
|
||||
"/**/*.jst",
|
||||
"/**/*.flow",
|
||||
"/**/*.sh",
|
||||
"/**/*.yml",
|
||||
"/**/*.pfb",
|
||||
"/**/*.jpeg",
|
||||
"/**/*.crt",
|
||||
"/**/*.template",
|
||||
"/**/*.pxd",
|
||||
"/**/*.dylib",
|
||||
"/**/*.pem",
|
||||
"/**/*.rng",
|
||||
"/**/*.xsl",
|
||||
"/**/*.xls",
|
||||
"/**/*.cfg",
|
||||
"/**/*.pyi",
|
||||
"/**/*.pth",
|
||||
"/**/*.markdown",
|
||||
"/**/*.key",
|
||||
"/**/*.ico",
|
||||
]
|
||||
Loading…
Add table
Add a link
Reference in a new issue