@echo off setlocal enableDelayedExpansion set "current_dir=%~dp0" set "is_test=false" if "%~1" == "test" ( set "is_test=true" set "current_dir=%~dp0target\" if not exist "!current_dir!" ( mkdir "!current_dir!" ) set "USERPROFILE=!current_dir!\user" if not exist "!USERPROFILE!" ( mkdir "!USERPROFILE!" ) ) set "default_modules=" set "config_file=!current_dir!pdc-xdce-setup.conf" set "module_name_key=installed_modules" if exist %config_file% ( for /f "tokens=1,2 delims==" %%A in ('findstr /R "^%module_name_key%=.*" %config_file%') do ( set "default_modules=%%B" ) ) :: Prompt for the module to watch set /p modules="Enter the module or modules (separated with coma) to watch [!default_modules!]: " if "!modules!"=="" set "modules=!default_modules!" :: Scrivi il valore nel file pdc-xdce-setup.conf echo %module_name_key%=%modules%> "!current_dir!pdc-xdce-setup.conf" echo I moduli da installare sono: %modules% :: Controllo della versione di Node.js for /f "tokens=*" %%v in ('node -v 2^>nul') do set "node_version=%%v" if not defined node_version ( echo Node.js non e' installato. exit /b 1 ) if not "%node_version%"=="v10.24.1" ( echo Versione di Node.js non compatibile. Richiesta: v10.24.1, trovata: %node_version% exit /b 1 ) :: Check if git is installed where git >nul 2>nul if %errorlevel% neq 0 ( echo Git could not be found. Please install Git. endlocal pause exit /b ) if not exist "!current_dir!package.json" ( ( echo { echo "name": "package-json-master", echo "version": "0.1.0", echo "scripts": ^{ echo "ng": "ng" echo ^}, echo "repository": ^{ echo "type": "git", echo "url": "example.com" echo ^}, echo "author": ^{ echo "name": "ARCH", echo "email": "arch@isp.com" echo ^}, echo "keywords": ^[ echo "angular" echo ^], echo "license": "MIT", echo "bugs": ^{ echo "url": "example.com/issues" echo ^}, echo "engines": ^{ echo "node": ">=6.0.0" echo ^}, echo "dependencies": ^{ echo "@angular-devkit/architect": "0.11.0", echo "@angular-devkit/build-angular": "0.11.0", echo "@angular-devkit/build-optimizer": "0.11.0", echo "@angular-devkit/core": "7.1.0", echo "@angular-devkit/schematics": "7.1.0", echo "@angular-devkit/schematics-cli": "0.11.0", echo "@angular/cli": "7.1.0", echo "@isp/xdce-build-utils": "1", echo "@isp/xdce-schematics": "1", echo "@schematics/angular": "7.1.0", echo "@schematics/update": "0.11.0", echo "node-sass": "^4.9.3", echo "node-sass-tilde-importer": "1.0.1" echo ^} echo ^} ) > "!current_dir!package.json" ) :: Create .angular.json file if not exist "!current_dir!.angular.json" ( ( echo ^{ echo "$schema": "./node_modules/@angular/cli/lib/config/schema.json", echo "version": 1, echo "newProjectRoot": "projects", echo "projects": ^{ echo "showcase-webapp": ^{ echo "root": "", echo "sourceRoot": "src", echo "projectType": "application", echo "architect": ^{ echo "build": ^{ echo "builder": "@angular-devkit/build-angular:browser", echo "options": ^{ echo "outputPath": "target/app", echo "index": "src/index.html", echo "main": "src/main.ts", echo "tsConfig": "src/tsconfig.app.json", echo "polyfills": "src/polyfills.ts", echo "extractCss":true, echo "assets": ^[ echo "src/assets", echo "src/nginx-cfg", echo "src/nginx-default-cfg", echo "src/favicon.ico", echo "src/login", echo ^{ echo "glob": "**/*", echo "input": "node_modules/@isp/xdce-module-tutorial/e2e", echo "output": "/e2e/xdce-module-tutorial" echo ^}, echo ^{ echo "glob": "**/*", echo "input": "node_modules/@isp/xdce-module-tutorial/assets", echo "output": "/assets" echo ^}, echo ^{ echo "glob": "**/*", echo "input": "node_modules/@isp/xdce-module-docs/assets", echo "output": "/assets" echo ^}, echo ^{ echo "glob": "**/*", echo "input": "node_modules/@isp/showcase-arch-pluggable-impl/assets", echo "output": "/assets" echo ^}, echo ^{ echo "glob": "**/*", echo "input": "node_modules/@isp/xdce-arch-core-base/assets", echo "output": "/assets" echo ^}, echo ^{ echo "glob": "**/*", echo "input": "node_modules/@isp/xdce-arch-core/assets", echo "output": "/assets" echo ^}, echo ^{ echo "glob": "**/*", echo "input": "node_modules/@isp/xdce-module-tutorial/docs", echo "output": "/docs" echo ^}, echo ^{ echo "glob": "**/*", echo "input": "node_modules/@isp/showcase-ui/docs", echo "output": "/docs" echo ^}, echo ^{ echo "glob": "**/*", echo "input": "node_modules/@isp/showcase-arch-pluggable-impl/docs", echo "output": "/docs" echo ^}, echo ^{ echo "glob": "**/*", echo "input": "node_modules/@isp/xdce-arch-core/docs", echo "output": "/docs" echo ^}, echo ^{ echo "glob": "**/*", echo "input": "node_modules/@isp/xdce-arch-core-base/docs", echo "output": "/docs" echo ^}, echo ^{ echo "glob": "**/*", echo "input": "node_modules/@isp/xdce-module-widgetdemo/assets", echo "output": "/assets" echo ^}, echo ^{ echo "glob": "**/*", echo "input": "node_modules/@isp/xdce-module-common-docs/assets", echo "output": "/assets" echo ^}, echo ^{ echo "glob": "**/*", echo "input": "node_modules/@isp/showcase-ui/assets", echo "output": "/assets" echo ^}, echo ^{ echo "glob": "**/*", echo "input": "node_modules/@isp/xdce-widget/docs", echo "output": "/docs" echo ^}, echo ^{ echo "glob": "**/*", echo "input": "node_modules/@isp/xdce-widget/assets", echo "output": "/assets" echo ^} echo ^], echo "styles": ^[ echo ^{ echo "input": "node_modules/@isp/xdce-arch-core/bootstrap/bootstrap.min.css", echo "bundleName": "bootstrap.css" echo ^}, echo ^{ echo "input": "node_modules/@isp/xdce-arch-core-base/style/xdce-arch-core-base.css", echo "bundleName": "xdce-arch-core-base.css" echo ^}, echo ^{ echo "input": "node_modules/@isp/xdce-arch-core/style/xdce-arch-core.css", echo "bundleName": "xdce-arch-core.css" echo ^}, echo ^{ echo "input": "node_modules/@isp/showcase-ui/style/showcase-ui.css", echo "bundleName": "showcase-ui.css" echo ^}, echo ^{ echo "input": "src/theme-colors.green.scss", echo "lazy": true, echo "bundleName": "theme-colors.green.css" echo ^}, echo ^{ echo "input": "src/theme-colors.blue.scss", echo "lazy": true, echo "bundleName": "theme-colors.blue.css" echo ^}, echo ^{ echo "input": "src/theme-colors.ipo.scss", echo "lazy": true, echo "bundleName": "theme-colors.ipo.css" echo ^}, echo ^{ echo "input": "src/widget-colors.green.scss", echo "lazy": true, echo "bundleName": "widget-colors.green.css" echo ^}, echo ^{ echo "input": "src/widget-colors.blue.scss", echo "lazy": true, echo "bundleName": "widget-colors.blue.css" echo ^}, echo ^{ echo "input": "src/widget-colors.ipo.scss", echo "lazy": true, echo "bundleName": "widget-colors.ipo.css" echo ^}, echo "src/styles.scss" echo ^], echo "scripts": ^[ echo ^{ echo "input": "node_modules/prismjs/prism.js" echo ^}, echo ^{ echo "input": "node_modules/prismjs/components/prism-typescript.js" echo ^}, echo ^{ echo "input": "node_modules/prismjs/components/prism-sass.js" echo ^}, echo ^{ echo "input": "node_modules/prismjs/components/prism-javascript.js" echo ^}, echo ^{ echo "input": "node_modules/prismjs/components/prism-json.js" echo ^} echo ^] echo ^}, echo "configurations": ^{ echo "production": ^{ echo "optimization": true, echo "outputHashing": "all", echo "sourceMap": false, echo "extractCss": true, echo "namedChunks": false, echo "aot": true, echo "extractLicenses": true, echo "vendorChunk": false, echo "buildOptimizer": true, echo "fileReplacements": ^[ echo ^{ echo "replace": "src/environments/environment.ts", echo "with": "src/environments/environment.prod.ts" echo ^} echo ^] echo ^} echo ^} echo ^}, echo "serve": ^{ echo "builder": "@angular-devkit/build-angular:dev-server", echo "options": ^{ echo "browserTarget": "showcase-webapp:build", echo "proxyConfig": "proxy.conf.json" echo ^}, echo "configurations": ^{ echo "production": ^{ echo "extractCss": true, echo "browserTarget": "showcase-webapp:build:production" echo ^} echo ^} echo ^}, echo "extract-i18n": ^{ echo "builder": "@angular-devkit/build-angular:extract-i18n", echo "options": ^{ echo "browserTarget": "showcase-webapp:build" echo ^} echo ^}, echo "test": ^{ echo "builder": "@angular-devkit/build-angular:karma", echo "options": ^{ echo "main": "src/test.ts", echo "karmaConfig": "./karma.conf.js", echo "polyfills": "src/polyfills.ts", echo "tsConfig": "src/tsconfig.spec.json", echo "scripts": ^[ echo ^{ echo "input": "node_modules/prismjs/prism.js" echo ^}, echo ^{ echo "input": "node_modules/prismjs/components/prism-typescript.js" echo ^}, echo ^{ echo "input": "node_modules/prismjs/components/prism-sass.js" echo ^}, echo ^{ echo "input": "node_modules/prismjs/components/prism-javascript.js" echo ^}, echo ^{ echo "input": "node_modules/prismjs/components/prism-json.js" echo ^} echo ^], echo "styles": ^[ echo ^{ echo "input": "node_modules/@isp/xdce-arch-core/bootstrap/bootstrap.min.css", echo "bundleName": "bootstrap.css" echo ^}, echo ^{ echo "input": "node_modules/@isp/xdce-arch-core/style/xdce-arch-core.css", echo "bundleName": "xdce-arch-core.css" echo ^}, echo ^{ echo "input": "node_modules/@isp/showcase-ui/style/showcase-ui.css", echo "bundleName": "showcase-ui.css" echo ^}, echo ^{ echo "input": "src/theme-colors.green.scss", echo "lazy": true, echo "bundleName": "theme-colors.green.css" echo ^}, echo ^{ echo "input": "src/theme-colors.blue.scss", echo "lazy": true, echo "bundleName": "theme-colors.blue.css" echo ^}, echo ^{ echo "input": "src/theme-colors.ipo.scss", echo "lazy": true, echo "bundleName": "theme-colors.ipo.css" echo ^}, echo ^{ echo "input": "src/widget-colors.green.scss", echo "lazy": true, echo "bundleName": "widget-colors.green.css" echo ^}, echo ^{ echo "input": "src/widget-colors.blue.scss", echo "lazy": true, echo "bundleName": "widget-colors.blue.css" echo ^}, echo ^{ echo "input": "src/widget-colors.ipo.scss", echo "lazy": true, echo "bundleName": "widget-colors.ipo.css" echo ^}, echo "src/styles.scss" echo ^], echo "assets": ^[ echo "src/assets", echo "src/favicon.ico", echo ^{ echo "glob": "**/*", echo "input": "node_modules/@isp/xdce-module-tutorial/assets", echo "output": "/assets" echo ^}, echo ^{ echo "glob": "**/*", echo "input": "node_modules/@isp/xdce-module-docs/assets", echo "output": "/assets" echo ^}, echo ^{ echo "glob": "**/*", echo "input": "node_modules/@isp/xdce-module-bear-docs/assets", echo "output": "/assets" echo ^}, echo ^{ echo "glob": "**/*", echo "input": "node_modules/@isp/showcase-arch-pluggable-impl/assets", echo "output": "/assets" echo ^}, echo ^{ echo "glob": "**/*", echo "input": "node_modules/@isp/xdce-arch-core/assets", echo "output": "/assets" echo ^}, echo ^{ echo "glob": "**/*", echo "input": "node_modules/@isp/xdce-module-tutorial/docs", echo "output": "/docs" echo ^}, echo ^{ echo "glob": "**/*", echo "input": "node_modules/@isp/showcase-ui/docs", echo "output": "/docs" echo ^}, echo ^{ echo "glob": "**/*", echo "input": "node_modules/@isp/showcase-arch-pluggable-impl/docs", echo "output": "/docs" echo ^}, echo ^{ echo "glob": "**/*", echo "input": "node_modules/@isp/xdce-arch-core/docs", echo "output": "/docs" echo ^}, echo ^{ echo "glob": "**/*", echo "input": "node_modules/@isp/xdce-module-widgetdemo/assets", echo "output": "/assets" echo ^}, echo ^{ echo "glob": "**/*", echo "input": "node_modules/@isp/xdce-module-common-docs/assets", echo "output": "/assets" echo ^}, echo ^{ echo "glob": "**/*", echo "input": "node_modules/@isp/xdce-widget/assets", echo "output": "/assets" echo ^} echo ^] echo ^} echo ^}, echo "lint": ^{ echo "builder": "@angular-devkit/build-angular:tslint", echo "options": ^{ echo "tsConfig": ^[ echo "src/tsconfig.app.json", echo "src/tsconfig.spec.json" echo ^], echo "exclude": ^[ echo "**/node_modules/**" echo ^] echo ^} echo ^} echo ^} echo ^}, echo "showcase-webapp-e2e": ^{ echo "root": "", echo "sourceRoot": "", echo "projectType": "application", echo "architect": ^{ echo "e2e": ^{ echo "builder": "@angular-devkit/build-angular:protractor", echo "options": ^{ echo "protractorConfig": "./protractor.conf.js", echo "devServerTarget": "showcase-webapp:serve" echo ^} echo ^}, echo "lint": ^{ echo "builder": "@angular-devkit/build-angular:tslint", echo "options": ^{ echo "tsConfig": ^[ echo "e2e/tsconfig.e2e.json" echo ^], echo "exclude": ^[ echo "**/node_modules/**" echo ^] echo ^} echo ^} echo ^} echo ^} echo ^}, echo "defaultProject": "showcase-webapp", echo "schematics": ^{ echo "@schematics/angular:component": ^{ echo "prefix": "app", echo "styleext": "scss" echo ^}, echo "@schematics/angular:directive": ^{ echo "prefix": "app" echo ^} echo ^} echo ^} ) > "!current_dir!.angular.json" ) call :set_npmrc @REM call :npm_install call :set_sass_binary_file for %%a in (!modules!) do ( echo %%a set "module=%%a" call :check_repo_exists !module! if %errorlevel% neq 0 ( echo Repository does not exist or is not accessible. endlocal pause exit /b ) call :install_module !module! ) echo Setup complete. endlocal exit /b :: #region Functions :: Funzione per settare il corretto .npmrc :set_npmrc set "npmrc_path=!USERPROFILE!\.npmrc" if exist "!npmrc_path!" ( echo Il file .npmrc esiste. :: Controlla se contiene la stringa "arti0-artifactory.sede.corp.sanpaoloimi.com" findstr /C:"arti0-artifactory.sede.corp.sanpaoloimi.com" "!npmrc_path!" >nul if errorlevel 1 ( echo La stringa "arti0-artifactory.sede.corp.sanpaoloimi.com" non e' presente. :: Rinomina il file esistente ren "!npmrc_path!" ".npmrc_old" echo Creazione di un nuovo file .npmrc con informazioni predefinite. ( echo registry=https://arti0-artifactory.sede.corp.sanpaoloimi.com/artifactory/api/npm/npm-repos echo strict-ssl=false echo insecure=true echo rejectUnauthorized=false echo always-auth=true echo email=cm.dipartimentale@intesasanpaolo.com echo //arti0-artifactory.sede.corp.sanpaoloimi.com/artifactory/api/npm/:_auth="bnBtLXNuYXBzaG90LWRlcGxveWVyOkFQOTQ0SGd4YlR2ZFZkY1RmenVySkpFZ1c0ag==" ) > "!npmrc_path!" ) else ( echo La stringa "arti0-artifactory.sede.corp.sanpaoloimi.com" e' presente. ) ) else ( echo Il file .npmrc non esiste. Creazione del file con informazioni predefinite. ( echo registry=https://arti0-artifactory.sede.corp.sanpaoloimi.com/artifactory/api/npm/npm-repos echo strict-ssl=false echo insecure=true echo rejectUnauthorized=false echo always-auth=true echo email=cm.dipartimentale@intesasanpaolo.com echo //arti0-artifactory.sede.corp.sanpaoloimi.com/artifactory/api/npm/:_auth="bnBtLXNuYXBzaG90LWRlcGxveWVyOkFQOTQ0SGd4YlR2ZFZkY1RmenVySkpFZ1c0ag==" ) > "!npmrc_path!" ) exit /b :: Funzione che setta il sass_binary_file :set_sass_binary_file set "npmrc_path=!USERPROFILE!\.npmrc" :: Controlla se contiene la stringa "sass_binary_path" findstr /C:"sass_binary_path" "!npmrc_path!" >nul if errorlevel 1 ( echo La stringa "sass_binary_path" non e' presente. Aggiungo il path al "binding.node". echo sass_binary_path=!current_dir!node_modules\node-sass\vendor\win32-x64-64\binding.node >> "!npmrc_path!" for /d %%d in ("!current_dir!*") do ( if exist "%%d\node_modules\node-sass" ( echo Trovata cartella node-sass in "%%d". Cancello... rmdir /s /q "%%d\node_modules\node-sass" rmdir /s /q "%%d\node_modules\node-sass-tilde-importer" echo Eseguo npm install in "%%d"... pushd "%%d" npm install popd ) ) ) else ( echo La stringa "sass_binary_path" e' presente. ) exit /b :: Install dependencies if either node_modules or package-lock.json does not exist :npm_install set "folder_name=" if "%~1" neq "" ( set "folder_name=%~1\" ) if "!is_test!" == "false" ( if not exist "!current_dir!!folder_name!node_modules" ( cd "!current_dir!!folder_name!" npm install cd "!current_dir!" ) if not exist "!current_dir!!folder_name!package-lock.json" ( cd "!current_dir!!folder_name!" npm install cd "!current_dir!" ) ) exit /b :: Check if the repository exists :check_repo_exists set "module_name=%~1" git ls-remote "https://bitbucket.intesasanpaolo.com/scm/pdca0/!module_name!.git" >nul 2>nul exit /b :: Clone the repository if it does not exist :clone_repo set "module_name=%~1" echo !current_dir!!module_name! if not exist "!current_dir!!module_name!" ( cd "!current_dir!" git clone "https://bitbucket.intesasanpaolo.com/scm/pdca0/!module_name!.git" "!module_name!" cd "!current_dir!!module_name!" git checkout env/svil git pull cd "!current_dir!" ) exit /b :: Install the module :install_module set "module_name=%~1" call :clone_repo !module_name! @REM call :npm_install !module_name! exit /b :: #endregion