ics-builder 4.4.3 → 4.4.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.prettierignore +1 -0
- package/.prettierrc +7 -0
- package/.vscode/launch.json +15 -0
- package/.vscode/settings.json +6 -0
- package/Dockerfile +32 -0
- package/build/modules.yaml +7 -0
- package/build.template.yml +51 -0
- package/dist/jest.config.js +4 -0
- package/dist/package.json +76 -0
- package/{src → dist/src}/builder/ui/webpackUiBuilder.js +30 -0
- package/{src → dist/src}/index.js +0 -0
- package/dist/src/services/source/assets/hostList.yml +12 -0
- package/dist/src/services/source/assets/sourceList.yml +50 -0
- package/package.json +4 -1
- package/src/app.ts +64 -0
- package/src/builder/api/csprojFile.ts +15 -0
- package/src/builder/api/dotnetApiBuilder.ts +145 -0
- package/src/builder/api/net5Builder.ts +181 -0
- package/src/builder/api/webConfigFile.ts +11 -0
- package/src/builder/api/xmlFile.ts +24 -0
- package/src/builder/baseBuilder.ts +71 -0
- package/src/builder/data/dataBuilder.ts +28 -0
- package/src/builder/db/dbBuilder.ts +167 -0
- package/src/builder/e2e/e2eBuilder.ts +23 -0
- package/src/builder/schema/schemaBuilder.ts +156 -0
- package/src/builder/ui/customUiBuilder.ts +50 -0
- package/src/builder/ui/webpackUiBuilder.ts +497 -0
- package/src/builder/uiDependency/dependencyBuilder.ts +38 -0
- package/src/builder/winservice/winserviceBuilder.ts +11 -0
- package/src/dotnetUtils.ts +41 -0
- package/src/exceptions/BuilderException.ts +7 -0
- package/src/index.ts +34 -0
- package/src/services/buildManager.ts +151 -0
- package/src/services/commandManager.ts +78 -0
- package/src/services/configManager.ts +82 -0
- package/src/services/packageManager.ts +180 -0
- package/src/services/packageStructure/legacyPackageStructureManager.ts +34 -0
- package/src/services/packageStructure/packageStructureManager.ts +75 -0
- package/src/services/packageStructure/structureUtils.ts +66 -0
- package/src/services/source/loadPackages.ts +18 -0
- package/src/services/source/loaders/baseLoader.ts +28 -0
- package/src/services/source/loaders/gitScmProvider.ts +73 -0
- package/src/services/source/loaders/hgScmProvider.ts +63 -0
- package/src/services/source/sourceManager.ts +95 -0
- package/src/services/testManager.ts +27 -0
- package/src/testRunners/apiTestRunner.ts +68 -0
- package/src/testRunners/baseTestRunner.ts +19 -0
- package/src/testRunners/uiTestRunner.ts +8 -0
- package/src/utils.ts +228 -0
- package/test/sourceManager.test.ts +17 -0
- package/tsconfig.json +18 -0
- package/wallaby.js +14 -0
- /package/{src → dist/src}/app.js +0 -0
- /package/{src → dist/src}/builder/api/csprojFile.js +0 -0
- /package/{src → dist/src}/builder/api/dotnetApiBuilder.js +0 -0
- /package/{src → dist/src}/builder/api/net5Builder.js +0 -0
- /package/{src → dist/src}/builder/api/webConfigFile.js +0 -0
- /package/{src → dist/src}/builder/api/xmlFile.js +0 -0
- /package/{src → dist/src}/builder/baseBuilder.js +0 -0
- /package/{src → dist/src}/builder/data/dataBuilder.js +0 -0
- /package/{src → dist/src}/builder/db/dbBuilder.js +0 -0
- /package/{src → dist/src}/builder/e2e/e2eBuilder.js +0 -0
- /package/{src → dist/src}/builder/schema/schemaBuilder.js +0 -0
- /package/{src → dist/src}/builder/ui/customUiBuilder.js +0 -0
- /package/{src → dist/src}/builder/uiDependency/dependencyBuilder.js +0 -0
- /package/{src → dist/src}/builder/winservice/winserviceBuilder.js +0 -0
- /package/{src → dist/src}/dotnetUtils.js +0 -0
- /package/{src → dist/src}/exceptions/BuilderException.js +0 -0
- /package/{src → dist/src}/services/buildManager.js +0 -0
- /package/{src → dist/src}/services/commandManager.js +0 -0
- /package/{src → dist/src}/services/configManager.js +0 -0
- /package/{src → dist/src}/services/packageManager.js +0 -0
- /package/{src → dist/src}/services/packageStructure/legacyPackageStructureManager.js +0 -0
- /package/{src → dist/src}/services/packageStructure/packageStructureManager.js +0 -0
- /package/{src → dist/src}/services/packageStructure/structureUtils.js +0 -0
- /package/{src → dist/src}/services/source/loadPackages.js +0 -0
- /package/{src → dist/src}/services/source/loaders/baseLoader.js +0 -0
- /package/{src → dist/src}/services/source/loaders/gitScmProvider.js +0 -0
- /package/{src → dist/src}/services/source/loaders/hgScmProvider.js +0 -0
- /package/{src → dist/src}/services/source/sourceManager.js +0 -0
- /package/{src → dist/src}/services/testManager.js +0 -0
- /package/{src → dist/src}/testRunners/apiTestRunner.js +0 -0
- /package/{src → dist/src}/testRunners/baseTestRunner.js +0 -0
- /package/{src → dist/src}/testRunners/uiTestRunner.js +0 -0
- /package/{src → dist/src}/utils.js +0 -0
package/.prettierignore
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
*.yml
|
package/.prettierrc
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
// Use IntelliSense to learn about possible attributes.
|
|
3
|
+
// Hover to view descriptions of existing attributes.
|
|
4
|
+
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
|
5
|
+
"version": "0.2.0",
|
|
6
|
+
"configurations": [
|
|
7
|
+
{
|
|
8
|
+
"type": "node",
|
|
9
|
+
"request": "launch",
|
|
10
|
+
"name": "Launch Program",
|
|
11
|
+
"runtimeArgs": ["-r", "ts-node/register"],
|
|
12
|
+
"args": ["${workspaceFolder}/src/app.ts", "source"]
|
|
13
|
+
}
|
|
14
|
+
]
|
|
15
|
+
}
|
package/Dockerfile
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
ARG CPU_ARCH
|
|
2
|
+
|
|
3
|
+
FROM gitlab.ics-it.ru:4567/devops/oci-images:7.0-sdk-alpine-${CPU_ARCH} AS NET7
|
|
4
|
+
ARG NPM_REGISTRY
|
|
5
|
+
WORKDIR /app/builder
|
|
6
|
+
COPY . .
|
|
7
|
+
RUN npm set registry ${NPM_REGISTRY} && \
|
|
8
|
+
npm install && \
|
|
9
|
+
npx tsc && \
|
|
10
|
+
cp -R ./src/services/source/assets ./dist/src/services/source && \
|
|
11
|
+
cp ./package.json ./dist && \
|
|
12
|
+
cp ./jest.config.js ./dist && \
|
|
13
|
+
cd dist && \
|
|
14
|
+
npm pack && \
|
|
15
|
+
cd ../ && \
|
|
16
|
+
npm install -g ./dist
|
|
17
|
+
|
|
18
|
+
FROM gitlab.ics-it.ru:4567/devops/oci-images:6.0-sdk-alpine-${CPU_ARCH} AS NET6
|
|
19
|
+
ARG NPM_REGISTRY
|
|
20
|
+
COPY --from=NET7 /app/builder /app/builder
|
|
21
|
+
COPY --from=NET7 /root/.npm /root/.npm
|
|
22
|
+
WORKDIR /app/builder
|
|
23
|
+
RUN npm set registry ${NPM_REGISTRY} && \
|
|
24
|
+
npm install -g ./dist
|
|
25
|
+
|
|
26
|
+
FROM gitlab.ics-it.ru:4567/devops/oci-images:5.0-sdk-alpine-${CPU_ARCH} AS NET5
|
|
27
|
+
ARG NPM_REGISTRY
|
|
28
|
+
COPY --from=NET7 /app/builder /app/builder
|
|
29
|
+
COPY --from=NET7 /root/.npm /root/.npm
|
|
30
|
+
WORKDIR /app/builder
|
|
31
|
+
RUN npm set registry ${NPM_REGISTRY} && \
|
|
32
|
+
npm install -g ./dist
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
version: "4.1"
|
|
2
|
+
mode: dev
|
|
3
|
+
using:
|
|
4
|
+
mdt: '#ui-webpack'
|
|
5
|
+
rb: '#RB-978'
|
|
6
|
+
data: default
|
|
7
|
+
ent: default
|
|
8
|
+
paths:
|
|
9
|
+
source: source
|
|
10
|
+
build: build
|
|
11
|
+
modules:
|
|
12
|
+
- mdt.admin
|
|
13
|
+
- mdt.audit
|
|
14
|
+
- mdt.oauth
|
|
15
|
+
- mdt.binding
|
|
16
|
+
- mdt.dataext
|
|
17
|
+
- mdt.dbm
|
|
18
|
+
- mdt.directory
|
|
19
|
+
- mdt.dm
|
|
20
|
+
- mdt.feedback
|
|
21
|
+
- mdt.import
|
|
22
|
+
- mdt.inline
|
|
23
|
+
- mdt.job
|
|
24
|
+
- mdt.log
|
|
25
|
+
- mdt.mapping
|
|
26
|
+
- mdt.password
|
|
27
|
+
- mdt.status
|
|
28
|
+
- mdt.tag
|
|
29
|
+
- mdt.odata
|
|
30
|
+
- mdt.apps
|
|
31
|
+
- ent.em
|
|
32
|
+
- ent.routes
|
|
33
|
+
- data.server.etl
|
|
34
|
+
- data.geo
|
|
35
|
+
- data.dadata
|
|
36
|
+
- data.calendar
|
|
37
|
+
- rb
|
|
38
|
+
- rb.geo
|
|
39
|
+
- rb.dadata
|
|
40
|
+
- rb.mtx
|
|
41
|
+
- rb.pnl
|
|
42
|
+
- rb.qst
|
|
43
|
+
- rb.binding
|
|
44
|
+
ui:
|
|
45
|
+
theme: 'mdt.coffee'
|
|
46
|
+
themes:
|
|
47
|
+
- mdt.coffee
|
|
48
|
+
- mdt.pink
|
|
49
|
+
- mdt.dark-blue
|
|
50
|
+
- mdt.light-blue
|
|
51
|
+
- mdt.modern-blue
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ics-builder",
|
|
3
|
+
"version": "4.4.10",
|
|
4
|
+
"description": "",
|
|
5
|
+
"main": "./src/index.js",
|
|
6
|
+
"preferGlobal": true,
|
|
7
|
+
"scripts": {
|
|
8
|
+
"test": "jest",
|
|
9
|
+
"dev": "ts-node ./src/index.ts",
|
|
10
|
+
"copy-assets": "xcopy \"src/services/source/assets\" \"dist/src/services/source/assets\" /e /i",
|
|
11
|
+
"patch": "npx tsc && npm run copy-assets && npm version patch && copy package.json dist && copy jest.config.js dist && cd dist && npm publish",
|
|
12
|
+
"minor": "npx tsc && npm run copy-assets && npm version minor && copy package.json dist && copy jest.config.js dist && cd dist && npm publish",
|
|
13
|
+
"major": "npx tsc && npm run copy-assets && npm version major && copy package.json dist && copy jest.config.js dist && cd dist && npm publish",
|
|
14
|
+
"pack": "npx tsc && npm run copy-assets && copy package.json dist && copy jest.config.js dist && cd dist && npm pack"
|
|
15
|
+
},
|
|
16
|
+
"bin": {
|
|
17
|
+
"builder": "./src/index.js"
|
|
18
|
+
},
|
|
19
|
+
"keywords": [
|
|
20
|
+
"build tool"
|
|
21
|
+
],
|
|
22
|
+
"repository": {
|
|
23
|
+
"type": "hg",
|
|
24
|
+
"url": "https://bitbucket.org/icsit/builder"
|
|
25
|
+
},
|
|
26
|
+
"author": "Sergey Voinkov <sergey.voinkov@ics-it.ru>",
|
|
27
|
+
"license": "ISC",
|
|
28
|
+
"devDependencies": {
|
|
29
|
+
"@types/jest": "^25.1.2",
|
|
30
|
+
"@types/jest-cli": "^24.3.0",
|
|
31
|
+
"@types/node": "^11.13.5",
|
|
32
|
+
"@types/shelljs": "^0.8.5",
|
|
33
|
+
"@types/webpack": "^4.4.31",
|
|
34
|
+
"@types/webpack-dev-server": "^3.1.5",
|
|
35
|
+
"@types/xml2js": "^0.4.5",
|
|
36
|
+
"@types/yamljs": "^0.2.30",
|
|
37
|
+
"ts-node": "^8.1.0"
|
|
38
|
+
},
|
|
39
|
+
"dependencies": {
|
|
40
|
+
"@babel/core": "^7.12.0",
|
|
41
|
+
"@babel/preset-env": "^7.12.0",
|
|
42
|
+
"autoprefixer": "^9.5.1",
|
|
43
|
+
"babel-loader": "^8.3.0",
|
|
44
|
+
"bundle-loader": "^0.5.6",
|
|
45
|
+
"chokidar": "^4.0.1",
|
|
46
|
+
"copy-webpack-plugin": "^5.0.3",
|
|
47
|
+
"css-loader": "^2.1.1",
|
|
48
|
+
"file-loader": "^3.0.1",
|
|
49
|
+
"html-webpack-plugin": "^3.2.0",
|
|
50
|
+
"jest-cli": "^26.6.3",
|
|
51
|
+
"jest-junit": "^12.0.0",
|
|
52
|
+
"just-task": "^0.9.9",
|
|
53
|
+
"less": "^3.13.1",
|
|
54
|
+
"less-loader": "^5.0.0",
|
|
55
|
+
"mini-css-extract-plugin": "^0.6.0",
|
|
56
|
+
"postcss-loader": "^3.0.0",
|
|
57
|
+
"shelljs": "^0.8.3",
|
|
58
|
+
"strip-bom-buf": "^2.0.0",
|
|
59
|
+
"style-loader": "^0.23.1",
|
|
60
|
+
"svg-inline-loader": "^0.8.0",
|
|
61
|
+
"ts-jest": "^25.5.1",
|
|
62
|
+
"ts-loader": "^6.2.1",
|
|
63
|
+
"tsconfig-paths-webpack-plugin": "^3.2.0",
|
|
64
|
+
"typescript": "^3.8.3",
|
|
65
|
+
"typescript-json-schema": "^0.51.0",
|
|
66
|
+
"virtual-module-webpack-plugin": "^0.4.1",
|
|
67
|
+
"webpack": "^4.42.1",
|
|
68
|
+
"webpack-cli": "^3.3.2",
|
|
69
|
+
"webpack-concat-plugin": "^3.0.0",
|
|
70
|
+
"webpack-dev-server": "^3.10.3",
|
|
71
|
+
"webpack-fix-style-only-entries": "^0.2.1",
|
|
72
|
+
"xml2js": "=0.4.17",
|
|
73
|
+
"yamljs": "^0.3.0",
|
|
74
|
+
"yargs": "^16.2.0"
|
|
75
|
+
}
|
|
76
|
+
}
|
|
@@ -247,6 +247,9 @@ var WebpackUiBuilder = /** @class */ (function (_super) {
|
|
|
247
247
|
resolveAlias["react"] = path.resolve(basePath, "ui", "./node_modules/react");
|
|
248
248
|
resolveAlias["react-dom"] = path.resolve(basePath, "ui", "./node_modules/react-dom");
|
|
249
249
|
}
|
|
250
|
+
// Библиотеки с современным синтаксисом, которые нужно транспилировать для webpack 4
|
|
251
|
+
var packagesToTranspile = ["ics-ui-kit", "zustand-computed"];
|
|
252
|
+
var transpileRegex = new RegExp(packagesToTranspile.join("|"));
|
|
250
253
|
return {
|
|
251
254
|
context: path.join(this.config.paths.source, "mdt/ui"),
|
|
252
255
|
mode: this.isProd() ? "production" : "development",
|
|
@@ -279,6 +282,33 @@ var WebpackUiBuilder = /** @class */ (function (_super) {
|
|
|
279
282
|
},
|
|
280
283
|
module: {
|
|
281
284
|
rules: [
|
|
285
|
+
// Обработка современного JS из библиотеки ics-ui-kit для совместимости со старыми браузерами (IE 10+)
|
|
286
|
+
// Babel транспилирует ES2020+ синтаксис (nullish coalescing ??, optional chaining ?.) в ES5
|
|
287
|
+
{
|
|
288
|
+
test: /\.m?js$/,
|
|
289
|
+
include: transpileRegex,
|
|
290
|
+
use: {
|
|
291
|
+
loader: require.resolve("babel-loader"),
|
|
292
|
+
options: {
|
|
293
|
+
cacheDirectory: true,
|
|
294
|
+
cacheCompression: false,
|
|
295
|
+
presets: [
|
|
296
|
+
[
|
|
297
|
+
require.resolve("@babel/preset-env"),
|
|
298
|
+
{
|
|
299
|
+
targets: {
|
|
300
|
+
browsers: ["IE 10", "Chrome 33", "Firefox 33"]
|
|
301
|
+
},
|
|
302
|
+
exclude: ["transform-async-to-generator", "transform-regenerator"],
|
|
303
|
+
modules: false,
|
|
304
|
+
useBuiltIns: false
|
|
305
|
+
}
|
|
306
|
+
]
|
|
307
|
+
],
|
|
308
|
+
compact: this.isProd()
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
},
|
|
282
312
|
{
|
|
283
313
|
test: /\.tsx?$/,
|
|
284
314
|
use: {
|
|
File without changes
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
CART:
|
|
2
|
+
cartis:
|
|
3
|
+
host: cartis
|
|
4
|
+
cartis-mdt:
|
|
5
|
+
host: cartis
|
|
6
|
+
ics:
|
|
7
|
+
ics-components:
|
|
8
|
+
host: gitlab
|
|
9
|
+
data:
|
|
10
|
+
host: gitlab
|
|
11
|
+
ics:
|
|
12
|
+
host: gitlab
|
|
13
|
+
dwh-etl:
|
|
14
|
+
host: gitlab
|
|
15
|
+
sellout:
|
|
16
|
+
host: gitlab
|
|
17
|
+
sellout-connector:
|
|
18
|
+
host: gitlab
|
|
19
|
+
mdt:
|
|
20
|
+
host: gitlab
|
|
21
|
+
ent:
|
|
22
|
+
host: gitlab
|
|
23
|
+
mdlz:
|
|
24
|
+
host: gitlab
|
|
25
|
+
alcon:
|
|
26
|
+
host: gitlab
|
|
27
|
+
libs:
|
|
28
|
+
host: gitlab
|
|
29
|
+
rb:
|
|
30
|
+
host: gitlab
|
|
31
|
+
jacobs:
|
|
32
|
+
host: gitlab
|
|
33
|
+
tasks:
|
|
34
|
+
host: gitlab
|
|
35
|
+
nordfox:
|
|
36
|
+
host: gitlab
|
|
37
|
+
fmd:
|
|
38
|
+
host: gitlab
|
|
39
|
+
etl:
|
|
40
|
+
host: gitlab
|
|
41
|
+
mars:
|
|
42
|
+
host: gitlab
|
|
43
|
+
cloud:
|
|
44
|
+
host: gitlab
|
|
45
|
+
kc:
|
|
46
|
+
host: gitlab
|
|
47
|
+
templates:
|
|
48
|
+
host: gitlab
|
|
49
|
+
valeant:
|
|
50
|
+
host: gitlab
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ics-builder",
|
|
3
|
-
"version": "4.4.
|
|
3
|
+
"version": "4.4.10",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "./src/index.js",
|
|
6
6
|
"preferGlobal": true,
|
|
@@ -37,7 +37,10 @@
|
|
|
37
37
|
"ts-node": "^8.1.0"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
+
"@babel/core": "^7.12.0",
|
|
41
|
+
"@babel/preset-env": "^7.12.0",
|
|
40
42
|
"autoprefixer": "^9.5.1",
|
|
43
|
+
"babel-loader": "^8.3.0",
|
|
41
44
|
"bundle-loader": "^0.5.6",
|
|
42
45
|
"chokidar": "^4.0.1",
|
|
43
46
|
"copy-webpack-plugin": "^5.0.3",
|
package/src/app.ts
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import * as path from "path";
|
|
2
|
+
import { ConfigManager } from "./services/configManager";
|
|
3
|
+
import { CommandManager } from "./services/commandManager";
|
|
4
|
+
import * as yargs from "yargs";
|
|
5
|
+
import { Utils } from "./utils";
|
|
6
|
+
|
|
7
|
+
const configs: { name: string; defaultValue: string | Function; alias: string; description: string }[] = [
|
|
8
|
+
{
|
|
9
|
+
name: "c",
|
|
10
|
+
defaultValue: () => path.join(process.cwd(), "build.yml"),
|
|
11
|
+
alias: "configName",
|
|
12
|
+
description: "Build configuration file name"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
name: "w",
|
|
16
|
+
defaultValue: "false",
|
|
17
|
+
alias: "watch",
|
|
18
|
+
description: "Run tests in watch mode"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
name: "m",
|
|
22
|
+
defaultValue: "false",
|
|
23
|
+
alias: "multiple",
|
|
24
|
+
description: "Generate multiple files"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
name: "tbp",
|
|
28
|
+
defaultValue: process.cwd(),
|
|
29
|
+
alias: "testBasePath",
|
|
30
|
+
description: "Path to test files"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
name: "trp",
|
|
34
|
+
defaultValue: () => path.join(process.cwd() + "/result.xml"),
|
|
35
|
+
alias: "testResultPath",
|
|
36
|
+
description: "Path to test output"
|
|
37
|
+
}
|
|
38
|
+
];
|
|
39
|
+
|
|
40
|
+
let yargsArgs = yargs.usage("Usage: $0 <cmd> [args]");
|
|
41
|
+
configs.forEach(config => {
|
|
42
|
+
yargsArgs = yargsArgs
|
|
43
|
+
.default(config.name, typeof config.defaultValue == "string" ? config.defaultValue : config.defaultValue())
|
|
44
|
+
.alias(config.name, config.alias)
|
|
45
|
+
.describe(config.name, config.description);
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
let args = yargsArgs.argv;
|
|
49
|
+
|
|
50
|
+
let config =
|
|
51
|
+
!Utils.ensurePath(args["c"] as string) && args["_"].findIndex(c => c == "test-api" || c == "test-ui") != -1
|
|
52
|
+
? null
|
|
53
|
+
: ConfigManager.getConfig(args["c"] as string, args["m"] == "true");
|
|
54
|
+
|
|
55
|
+
let testConfig = {
|
|
56
|
+
basePath: args["tbp"] as string,
|
|
57
|
+
resultPath: args["trp"] as string,
|
|
58
|
+
watch: args["w"] === "true" || args["w"] === true
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
let commandManager = new CommandManager(config, testConfig);
|
|
62
|
+
|
|
63
|
+
commandManager.addTasks(args["_"] as string[]);
|
|
64
|
+
commandManager.runTasks();
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import {XmlFile} from "./xmlFile"
|
|
2
|
+
|
|
3
|
+
export class CsprojFile extends XmlFile {
|
|
4
|
+
setPublishPath(publishPath: string): void {
|
|
5
|
+
if (!this._xmlObj) this._readFile();
|
|
6
|
+
if (!this._xmlObj.Project)
|
|
7
|
+
this._xmlObj.Project = {};
|
|
8
|
+
if (!this._xmlObj.Project.PropertyGroup)
|
|
9
|
+
this._xmlObj.Project.PropertyGroup = {};
|
|
10
|
+
let propertyGroup = Array.isArray(this._xmlObj.Project.PropertyGroup)
|
|
11
|
+
? this._xmlObj.Project.PropertyGroup[0]
|
|
12
|
+
: this._xmlObj.Project.PropertyGroup;
|
|
13
|
+
propertyGroup.PublishDir = publishPath;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import * as path from "path";
|
|
2
|
+
import * as shell from "shelljs";
|
|
3
|
+
import * as fs from "fs";
|
|
4
|
+
|
|
5
|
+
import { Package, PackageInfoLegacy } from "../../services/configManager";
|
|
6
|
+
import { Utils, Logger } from "../../utils";
|
|
7
|
+
import { BaseBuilder, BuilderConfig } from "../baseBuilder";
|
|
8
|
+
import { Net5ApiBuilder } from "../api/net5Builder";
|
|
9
|
+
import { packageStructureManager } from "../../services/packageStructure/packageStructureManager";
|
|
10
|
+
|
|
11
|
+
export class DotnetApiBuilder extends BaseBuilder {
|
|
12
|
+
constructor(config: BuilderConfig) {
|
|
13
|
+
super(config);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
run(): void | Promise<void> {
|
|
17
|
+
if (this.config.api && this.config.api.framework && this.config.api.framework === ".net5") {
|
|
18
|
+
new Net5ApiBuilder(this.config).run();
|
|
19
|
+
} else {
|
|
20
|
+
this.config.packages.forEach(pkg => {
|
|
21
|
+
let pkgInfo = pkg.packageInfo as PackageInfoLegacy;
|
|
22
|
+
if (pkgInfo.api && pkgInfo.api.project) {
|
|
23
|
+
let apiSourceDir = path.join(this.config.paths.source, pkg.name, "api");
|
|
24
|
+
this.buildApiModule(path.dirname(path.join(apiSourceDir, pkgInfo.api.project)), pkg.name);
|
|
25
|
+
} else {
|
|
26
|
+
this.buildApiModules(pkg);
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
let buildInfo = this.packageManager.getAllPackages().map(pkg => {
|
|
32
|
+
return {
|
|
33
|
+
name: pkg.name,
|
|
34
|
+
version: pkg.version,
|
|
35
|
+
modules: pkg.modules.map(module => {
|
|
36
|
+
return `${pkg.name}.${module.name}`;
|
|
37
|
+
})
|
|
38
|
+
};
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
let infoDir = path.join(this.config.paths.build, "api");
|
|
42
|
+
|
|
43
|
+
if (Utils.ensurePath(infoDir)) {
|
|
44
|
+
this.writeBuildInfo(
|
|
45
|
+
path.join(this.config.paths.build, "api/settings"),
|
|
46
|
+
{
|
|
47
|
+
version: buildInfo
|
|
48
|
+
.map(pkg => {
|
|
49
|
+
return `${pkg.name} ${pkg.version}`;
|
|
50
|
+
})
|
|
51
|
+
.join(" / ")
|
|
52
|
+
},
|
|
53
|
+
"yml"
|
|
54
|
+
);
|
|
55
|
+
this.writeBuildInfo(path.join(this.config.paths.build, "build"), buildInfo, "json");
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
private buildApiModules(pkg: Package) {
|
|
60
|
+
packageStructureManager.getModuleSourcePaths(pkg, "api", this.config).forEach(({ moduleName, sourcePath }) => {
|
|
61
|
+
this.buildApiModule(sourcePath, `${pkg.name}.${moduleName}`);
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
private buildApiModule(moduleDir: string, moduleName: string) {
|
|
66
|
+
let projectFile = null;
|
|
67
|
+
|
|
68
|
+
let moduleConfig = this.parsePackageInfoLegacy(path.join(moduleDir, "module.yml"));
|
|
69
|
+
|
|
70
|
+
if (moduleConfig && moduleConfig.api && moduleConfig.api.project)
|
|
71
|
+
projectFile = path.join(moduleDir, moduleConfig.api.project);
|
|
72
|
+
else {
|
|
73
|
+
let files = shell.ls(path.join(moduleDir, "*.csproj"));
|
|
74
|
+
if (files.length) projectFile = files[0];
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
let targetDir = path.join(this.config.paths.build, "api");
|
|
78
|
+
let info = Array<string>();
|
|
79
|
+
|
|
80
|
+
if (Utils.ensurePath(projectFile)) {
|
|
81
|
+
let configuration = (this.config.api && this.config.api.configuration) || "debug";
|
|
82
|
+
|
|
83
|
+
moduleDir = path.dirname(projectFile);
|
|
84
|
+
let projectBinDir = path.join(moduleDir, "bin");
|
|
85
|
+
let webAppPath = path.join(moduleDir, "global.asax");
|
|
86
|
+
|
|
87
|
+
this.clearCache(moduleDir);
|
|
88
|
+
if (Utils.ensurePath(webAppPath)) {
|
|
89
|
+
Utils.copyFile(path.join(moduleDir, "web.config.template"), path.join(moduleDir, "web.config"));
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
this.msbuild(
|
|
93
|
+
projectFile,
|
|
94
|
+
["Clean", "Build"],
|
|
95
|
+
[
|
|
96
|
+
`Configuration=${configuration}`,
|
|
97
|
+
"PostBuildEvent=",
|
|
98
|
+
"PreBuildEvent="
|
|
99
|
+
// "RestoreAdditionalProjectSources=https://stage.ics-it.ru/nuget/nuget"
|
|
100
|
+
]
|
|
101
|
+
);
|
|
102
|
+
info.push(path.basename(projectFile) + " is built");
|
|
103
|
+
|
|
104
|
+
// web project?
|
|
105
|
+
if (Utils.ensurePath(webAppPath)) {
|
|
106
|
+
Utils.copyFile(path.join(moduleDir, "web.config.template"), path.join(targetDir, "web.config"));
|
|
107
|
+
Utils.copyFile(webAppPath, path.join(targetDir, "global.asax"));
|
|
108
|
+
} else {
|
|
109
|
+
projectBinDir = path.join(projectBinDir, configuration);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// remove *.dll.config and *.xml files from BIN
|
|
113
|
+
let files = fs.readdirSync(projectBinDir);
|
|
114
|
+
files.forEach(fileName => {
|
|
115
|
+
if (/(dll\.config|\.xml)$/.test(fileName)) fs.unlinkSync(path.join(projectBinDir, fileName));
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
// copy BIN and content directories
|
|
119
|
+
Utils.copyFolder(projectBinDir, path.join(targetDir, "bin"));
|
|
120
|
+
Utils.copyFolder(path.join(moduleDir, "content"), path.join(targetDir, "content"));
|
|
121
|
+
files = fs.readdirSync(moduleDir);
|
|
122
|
+
files.forEach(fileName => {
|
|
123
|
+
if (/(\.svc)$/.test(fileName))
|
|
124
|
+
Utils.copyFile(path.join(moduleDir, fileName), path.join(targetDir, fileName));
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
const moduleConfigFileName = "app.config";
|
|
128
|
+
this.copyModuleConfig(moduleDir, targetDir, moduleConfigFileName, moduleName + "." +moduleConfigFileName);
|
|
129
|
+
Utils.deleteFiles(targetDir, ["packages.config", "web.config.template"]);
|
|
130
|
+
Logger.info(moduleName.replace("._core", "") + ": " + info.join(", "));
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
private msbuild(project: string, targets: Array<string>, props: Array<string>): void {
|
|
135
|
+
let args = targets.map(t => "/t:" + t).join(" ") + " " + props.map(p => "/p:" + p).join(" ");
|
|
136
|
+
Utils.exec(`msbuild /restore /nologo /clp:ErrorsOnly;WarningsOnly /verbosity:quiet ${project} ${args}`, {
|
|
137
|
+
silent: false
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
private clearCache(folderPath: string): void {
|
|
142
|
+
Utils.deleteAllFoldersRecursively(folderPath, "bin");
|
|
143
|
+
Utils.deleteAllFoldersRecursively(folderPath, "obj");
|
|
144
|
+
}
|
|
145
|
+
}
|