Files
odoo_source/addons/web/tooling/enable.sh
T
Simon Genin (ges) 729647493f [IMP] dx: tooling js: improvements and preparation for runbot lint
- Use of jsconfig instead of tsconfig
- jsconfig deployed with tooling, no need for CLI
- ecmascript bumped to version es2022 (static properties)
- prettierrc merged inside the eslintrc
- add a few globals
- cleanup package.json scripts
- add script to lint/format only the diff (opposed to staged files)
- bump up node packages versions
- use eslint as cli instead of prettier-eslint, as eslint does provide
parsable output for runbot.
- add the typescrit types of libs as dependencies + main.d.ts to
improve autompletion.

This upgrade makes it easier to deploy and use the js tooling, as it is
expected more and more people will use it if a lint check is added to
the runbot.

About the runbot:
The commit gets the code ready to enable the lint on the runbot.
It will lint the code with the same rules and same ignore file.
The only difference is the runbot will check only the diff and not the
entire commited file.
The goal will be to progressively (and aggressively) whitelist modules
to converge to a nice formatted codebase.

closes odoo/odoo#105165

Related: odoo/enterprise#34048
Signed-off-by: Michaël Mattiello <mcm@odoo.com>
2022-11-17 13:57:19 +01:00

48 lines
1.6 KiB
Bash
Executable File

#!/bin/bash
community=$(cd -- "$(dirname "$0")" &> /dev/null && cd ../../.. && pwd)
tooling="$community/addons/web/tooling"
testRealPath="$(realpath --relative-to=. "$tooling/hooks")"
if [[ $testRealPath == "" ]]; then
echo "Please install realpath"
exit 1
fi
enableInDir () {
cd $1
hooksPath="$(realpath --relative-to=. "$tooling/hooks")"
git config core.hooksPath "$hooksPath"
cp "$tooling/_eslintignore" .eslintignore
cp "$tooling/_eslintrc.json" .eslintrc.json
cp "$tooling/_jsconfig.json" jsconfig.json
cp "$tooling/_package.json" package.json
if [[ $2 == "copy" ]]; then
# copy over node_modules and package-lock to avoid double "npm install"
cp "$community/package-lock.json" package-lock.json
cp -a "$community/node_modules" node_modules
else
npm install
fi
cd - &> /dev/null
}
read -p "Do you want the tooling installed in enterprise too ? [y, n]" willingToInstallToolingInEnterprise
if [[ $willingToInstallToolingInEnterprise != "n" ]]
then
read -p "What is the relative path from community to enterprise ? (../enterprise)" pathToEnterprise
pathToEnterprise=${pathToEnterprise:-../enterprise}
pathToEnterprise=$(realpath $community/$pathToEnterprise)
fi
enableInDir "$community"
if [[ $willingToInstallToolingInEnterprise != "n" ]]
then
enableInDir "$pathToEnterprise" copy
fi
echo ""
echo "JS tooling have been added to the roots"
echo "Make sure to refresh the eslint and typescript service and configure your IDE so it uses the config files"
echo 'For VSCode, look inside your .vscode/settings.json file ("editor.defaultFormatter": "dbaeumer.vscode-eslint")'
echo ""