- 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>
48 lines
1.6 KiB
Bash
Executable File
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 ""
|