@jsreport/jsreport-cli 3.0.0-beta.2 → 3.1.1

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.
Files changed (41) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +16 -12
  3. package/cli.js +93 -93
  4. package/example.config.json +43 -43
  5. package/example.server.js +14 -14
  6. package/index.js +20 -22
  7. package/jsreport.config.js +8 -8
  8. package/lib/cliExtension.js +59 -59
  9. package/lib/{createCommandParser.js → commander/createCommandParser.js} +44 -45
  10. package/lib/commander/createCustomCommandBuilder.js +150 -0
  11. package/lib/commander/createLogger.js +51 -0
  12. package/lib/commander/executeCommand.js +37 -0
  13. package/lib/commander/getCommandEventName.js +4 -0
  14. package/lib/commander/index.js +279 -0
  15. package/lib/commander/jsreportInstance.js +98 -0
  16. package/lib/commander/registerCommand.js +91 -0
  17. package/lib/commander/startCommand.js +234 -0
  18. package/lib/commander/startProcessing.js +208 -0
  19. package/lib/commands/_initializeApp.js +206 -208
  20. package/lib/commands/configure.js +393 -395
  21. package/lib/commands/help.js +453 -454
  22. package/lib/commands/init.js +76 -77
  23. package/lib/commands/kill.js +85 -86
  24. package/lib/commands/render.js +490 -488
  25. package/lib/commands/repair.js +55 -56
  26. package/lib/commands/start.js +72 -74
  27. package/lib/commands/win-install.js +124 -126
  28. package/lib/commands/win-uninstall.js +100 -102
  29. package/lib/daemonHandler.js +164 -164
  30. package/lib/daemonInstance.js +225 -225
  31. package/lib/{registerExtensionsCommands.js → detectAndRegisterExtensionsCommands.js} +74 -74
  32. package/lib/instanceHandler.js +316 -316
  33. package/lib/keepAliveProcess.js +205 -205
  34. package/lib/{errorUtils.js → utils/error.js} +149 -127
  35. package/lib/{getTempPaths.js → utils/getTempPaths.js} +39 -39
  36. package/lib/{normalizePathOptionOrArg.js → utils/normalizePathOptionOrArg.js} +41 -41
  37. package/lib/{normalizeSocketPath.js → utils/normalizeSocketPath.js} +9 -9
  38. package/lib/{startSocketServer.js → utils/startSocketServer.js} +53 -53
  39. package/package.json +105 -106
  40. package/test/testUtils.js +197 -198
  41. package/lib/commander.js +0 -1108
@@ -1,208 +1,206 @@
1
- 'use strict'
2
-
3
- const path = require('path')
4
- const fs = require('fs')
5
- const install = require('npm-install-package')
6
-
7
- function initializeApp (cwd, logger, force, selectedVersion, customInstall) {
8
- return new Promise((resolve, reject) => {
9
- const existsPackageJson = fs.existsSync(path.join(cwd, './package.json'))
10
- let isMainJsreport = false
11
-
12
- checkOrInstallJsreport(cwd, logger, existsPackageJson, selectedVersion, customInstall, (err, jsreportPkgInfo) => {
13
- if (err) {
14
- const error = new Error('Unexpected error happened while checking jsreport installation')
15
-
16
- error.originalError = err
17
-
18
- return reject(error)
19
- }
20
-
21
- isMainJsreport = (jsreportPkgInfo.name === 'jsreport')
22
-
23
- if (!fs.existsSync(path.join(cwd, './server.js')) || force) {
24
- logger.info('Creating server.js')
25
- fs.writeFileSync(
26
- path.join(cwd, './server.js'),
27
- fs.readFileSync(
28
- path.join(__dirname, '../../example.server.js')
29
- ).toString().replace('$moduleName$', jsreportPkgInfo.name)
30
- )
31
- }
32
-
33
- if (!existsPackageJson || force) {
34
- logger.info('Creating package.json')
35
-
36
- const serverPackageJson = {
37
- name: 'jsreport-server',
38
- main: 'server.js',
39
- scripts: {
40
- start: 'node server'
41
- },
42
- jsreport: {
43
- entryPoint: 'server.js'
44
- },
45
- dependencies: {
46
- }
47
- }
48
-
49
- serverPackageJson.dependencies[jsreportPkgInfo.name] = jsreportPkgInfo.versionMeta != null
50
- ? (
51
- jsreportPkgInfo.versionMeta
52
- )
53
- : jsreportPkgInfo.version
54
-
55
- if (isMainJsreport) {
56
- serverPackageJson.scripts.jsreport = 'jsreport'
57
- }
58
-
59
- fs.writeFileSync(path.join(cwd, './package.json'), JSON.stringify(serverPackageJson, null, 2))
60
- }
61
-
62
- if ((!fs.existsSync(path.join(cwd, './jsreport.config.json')) || force) && isMainJsreport) {
63
- logger.info('Creating default config jsreport.config.json')
64
-
65
- const conf = JSON.parse(fs.readFileSync(path.join(__dirname, '../../example.config.json').toString()))
66
- fs.writeFileSync(path.join(cwd, './jsreport.config.json'), JSON.stringify(conf, null, 2))
67
- }
68
-
69
- logger.info('Initialized')
70
-
71
- resolve({
72
- name: jsreportPkgInfo.name,
73
- version: jsreportPkgInfo.version
74
- })
75
- })
76
- })
77
- }
78
-
79
- function checkOrInstallJsreport (cwd, logger, existsPackageJson, version, customInstall, cb) {
80
- let detectedJsreport
81
- let detectedVersion
82
- const originalCWD = process.cwd()
83
-
84
- if (existsPackageJson) {
85
- const userPkg = require(path.join(cwd, './package.json'))
86
- const userDependencies = userPkg.dependencies || {}
87
-
88
- if (userDependencies.jsreport) {
89
- detectedJsreport = 'jsreport'
90
- detectedVersion = userDependencies.jsreport
91
- } else if (userDependencies['@jsreport/jsreport-core']) {
92
- detectedJsreport = '@jsreport/jsreport-core'
93
- detectedVersion = userDependencies['@jsreport/jsreport-core']
94
- } else if (userDependencies['jsreport-core']) {
95
- detectedJsreport = 'jsreport-core'
96
- detectedVersion = userDependencies['jsreport-core']
97
- }
98
- }
99
-
100
- if (!detectedJsreport) {
101
- if (fs.existsSync(path.join(cwd, 'node_modules/jsreport'))) {
102
- detectedJsreport = 'jsreport'
103
- } else if (fs.existsSync(path.join(cwd, 'node_modules/@jsreport/jsreport-core'))) {
104
- detectedJsreport = '@jsreport/jsreport-core'
105
- } else if (fs.existsSync(path.join(cwd, 'node_modules/jsreport-core'))) {
106
- detectedJsreport = 'jsreport-core'
107
- }
108
-
109
- if (detectedJsreport) {
110
- try {
111
- detectedVersion = requireJsreportPkg(cwd, detectedJsreport).version
112
- } catch (e) {
113
- return cb(e)
114
- }
115
- }
116
- }
117
-
118
- if (!detectedJsreport) {
119
- let versionToInstall
120
-
121
- detectedJsreport = 'jsreport'
122
-
123
- if (version) {
124
- if (version.startsWith('jsreport/jsreport')) {
125
- detectedJsreport = 'jsreport'
126
- versionToInstall = version
127
- } else if (version.startsWith('jsreport/jsreport-core')) {
128
- detectedJsreport = 'jsreport-core'
129
- versionToInstall = version
130
- } else {
131
- versionToInstall = 'jsreport@' + version
132
- }
133
-
134
- logger.info(`jsreport installation not found, installing ${versionToInstall} now, wait a moment...`)
135
- } else {
136
- versionToInstall = 'jsreport'
137
- logger.info(`jsreport installation not found, installing ${detectedJsreport} the latest version now, wait a moment...`)
138
- }
139
-
140
- process.chdir(cwd)
141
-
142
- // creating basic package.json in order to make npm install
143
- // work normally in current directory, later the real package.json
144
- // will be created
145
- if (!existsPackageJson) {
146
- fs.writeFileSync(
147
- path.join(cwd, './package.json'),
148
- JSON.stringify({
149
- name: 'jsreport-server'
150
- }, null, 2))
151
- }
152
-
153
- const runInstall = customInstall != null ? customInstall : install
154
-
155
- runInstall(versionToInstall, { save: true }, (installErr) => {
156
- process.chdir(originalCWD)
157
-
158
- if (installErr) {
159
- return cb(installErr)
160
- }
161
-
162
- logger.info('jsreport installation finished..')
163
-
164
- let versionMeta
165
-
166
- if (!existsPackageJson) {
167
- try {
168
- versionMeta = JSON.parse(fs.readFileSync(path.join(cwd, './package.json')).toString()).dependencies[detectedJsreport]
169
- } catch (e) {}
170
- }
171
-
172
- try {
173
- detectedVersion = requireJsreportPkg(cwd, detectedJsreport).version
174
- } catch (e) {
175
- return cb(e)
176
- }
177
-
178
- cb(null, {
179
- name: detectedJsreport,
180
- version: detectedVersion,
181
- versionMeta: versionMeta
182
- })
183
- })
184
- } else {
185
- cb(null, {
186
- name: detectedJsreport,
187
- version: detectedVersion
188
- })
189
- }
190
- }
191
-
192
- function requireJsreportPkg (cwd, jsreportPkgName) {
193
- try {
194
- const jsreportModule = require(path.join(cwd, 'node_modules/' + jsreportPkgName + '/package.json'))
195
- const jsreportVersion = jsreportModule.version
196
-
197
- return {
198
- name: jsreportPkgName,
199
- version: jsreportVersion
200
- }
201
- } catch (err) {
202
- const errorToReject = new Error(`problem while trying to require ${jsreportPkgName} package`)
203
- errorToReject.originalError = err
204
- throw errorToReject
205
- }
206
- }
207
-
208
- module.exports = initializeApp
1
+ const path = require('path')
2
+ const fs = require('fs')
3
+ const install = require('npm-install-package')
4
+
5
+ function initializeApp (cwd, logger, force, selectedVersion, customInstall) {
6
+ return new Promise((resolve, reject) => {
7
+ const existsPackageJson = fs.existsSync(path.join(cwd, './package.json'))
8
+ let isMainJsreport = false
9
+
10
+ checkOrInstallJsreport(cwd, logger, existsPackageJson, selectedVersion, customInstall, (err, jsreportPkgInfo) => {
11
+ if (err) {
12
+ const error = new Error('Unexpected error happened while checking jsreport installation')
13
+
14
+ error.originalError = err
15
+
16
+ return reject(error)
17
+ }
18
+
19
+ isMainJsreport = (jsreportPkgInfo.name === 'jsreport')
20
+
21
+ if (!fs.existsSync(path.join(cwd, './server.js')) || force) {
22
+ logger.info('Creating server.js')
23
+ fs.writeFileSync(
24
+ path.join(cwd, './server.js'),
25
+ fs.readFileSync(
26
+ path.join(__dirname, '../../example.server.js')
27
+ ).toString().replace('$moduleName$', jsreportPkgInfo.name)
28
+ )
29
+ }
30
+
31
+ if (!existsPackageJson || force) {
32
+ logger.info('Creating package.json')
33
+
34
+ const serverPackageJson = {
35
+ name: 'jsreport-server',
36
+ main: 'server.js',
37
+ scripts: {
38
+ start: 'node server'
39
+ },
40
+ jsreport: {
41
+ entryPoint: 'server.js'
42
+ },
43
+ dependencies: {
44
+ }
45
+ }
46
+
47
+ serverPackageJson.dependencies[jsreportPkgInfo.name] = jsreportPkgInfo.versionMeta != null
48
+ ? (
49
+ jsreportPkgInfo.versionMeta
50
+ )
51
+ : jsreportPkgInfo.version
52
+
53
+ if (isMainJsreport) {
54
+ serverPackageJson.scripts.jsreport = 'jsreport'
55
+ }
56
+
57
+ fs.writeFileSync(path.join(cwd, './package.json'), JSON.stringify(serverPackageJson, null, 2))
58
+ }
59
+
60
+ if ((!fs.existsSync(path.join(cwd, './jsreport.config.json')) || force) && isMainJsreport) {
61
+ logger.info('Creating default config jsreport.config.json')
62
+
63
+ const conf = JSON.parse(fs.readFileSync(path.join(__dirname, '../../example.config.json').toString()))
64
+ fs.writeFileSync(path.join(cwd, './jsreport.config.json'), JSON.stringify(conf, null, 2))
65
+ }
66
+
67
+ logger.info('Initialized')
68
+
69
+ resolve({
70
+ name: jsreportPkgInfo.name,
71
+ version: jsreportPkgInfo.version
72
+ })
73
+ })
74
+ })
75
+ }
76
+
77
+ function checkOrInstallJsreport (cwd, logger, existsPackageJson, version, customInstall, cb) {
78
+ let detectedJsreport
79
+ let detectedVersion
80
+ const originalCWD = process.cwd()
81
+
82
+ if (existsPackageJson) {
83
+ const userPkg = require(path.join(cwd, './package.json'))
84
+ const userDependencies = userPkg.dependencies || {}
85
+
86
+ if (userDependencies.jsreport) {
87
+ detectedJsreport = 'jsreport'
88
+ detectedVersion = userDependencies.jsreport
89
+ } else if (userDependencies['@jsreport/jsreport-core']) {
90
+ detectedJsreport = '@jsreport/jsreport-core'
91
+ detectedVersion = userDependencies['@jsreport/jsreport-core']
92
+ } else if (userDependencies['jsreport-core']) {
93
+ detectedJsreport = 'jsreport-core'
94
+ detectedVersion = userDependencies['jsreport-core']
95
+ }
96
+ }
97
+
98
+ if (!detectedJsreport) {
99
+ if (fs.existsSync(path.join(cwd, 'node_modules/jsreport'))) {
100
+ detectedJsreport = 'jsreport'
101
+ } else if (fs.existsSync(path.join(cwd, 'node_modules/@jsreport/jsreport-core'))) {
102
+ detectedJsreport = '@jsreport/jsreport-core'
103
+ } else if (fs.existsSync(path.join(cwd, 'node_modules/jsreport-core'))) {
104
+ detectedJsreport = 'jsreport-core'
105
+ }
106
+
107
+ if (detectedJsreport) {
108
+ try {
109
+ detectedVersion = requireJsreportPkg(cwd, detectedJsreport).version
110
+ } catch (e) {
111
+ return cb(e)
112
+ }
113
+ }
114
+ }
115
+
116
+ if (!detectedJsreport) {
117
+ let versionToInstall
118
+
119
+ detectedJsreport = 'jsreport'
120
+
121
+ if (version) {
122
+ if (version.startsWith('jsreport/jsreport')) {
123
+ detectedJsreport = 'jsreport'
124
+ versionToInstall = version
125
+ } else if (version.startsWith('jsreport/jsreport-core')) {
126
+ detectedJsreport = 'jsreport-core'
127
+ versionToInstall = version
128
+ } else {
129
+ versionToInstall = 'jsreport@' + version
130
+ }
131
+
132
+ logger.info(`jsreport installation not found, installing ${versionToInstall} now, wait a moment...`)
133
+ } else {
134
+ versionToInstall = 'jsreport'
135
+ logger.info(`jsreport installation not found, installing ${detectedJsreport} the latest version now, wait a moment...`)
136
+ }
137
+
138
+ process.chdir(cwd)
139
+
140
+ // creating basic package.json in order to make npm install
141
+ // work normally in current directory, later the real package.json
142
+ // will be created
143
+ if (!existsPackageJson) {
144
+ fs.writeFileSync(
145
+ path.join(cwd, './package.json'),
146
+ JSON.stringify({
147
+ name: 'jsreport-server'
148
+ }, null, 2))
149
+ }
150
+
151
+ const runInstall = customInstall != null ? customInstall : install
152
+
153
+ runInstall(versionToInstall, { save: true }, (installErr) => {
154
+ process.chdir(originalCWD)
155
+
156
+ if (installErr) {
157
+ return cb(installErr)
158
+ }
159
+
160
+ logger.info('jsreport installation finished..')
161
+
162
+ let versionMeta
163
+
164
+ if (!existsPackageJson) {
165
+ try {
166
+ versionMeta = JSON.parse(fs.readFileSync(path.join(cwd, './package.json')).toString()).dependencies[detectedJsreport]
167
+ } catch (e) {}
168
+ }
169
+
170
+ try {
171
+ detectedVersion = requireJsreportPkg(cwd, detectedJsreport).version
172
+ } catch (e) {
173
+ return cb(e)
174
+ }
175
+
176
+ cb(null, {
177
+ name: detectedJsreport,
178
+ version: detectedVersion,
179
+ versionMeta: versionMeta
180
+ })
181
+ })
182
+ } else {
183
+ cb(null, {
184
+ name: detectedJsreport,
185
+ version: detectedVersion
186
+ })
187
+ }
188
+ }
189
+
190
+ function requireJsreportPkg (cwd, jsreportPkgName) {
191
+ try {
192
+ const jsreportModule = require(path.join(cwd, 'node_modules/' + jsreportPkgName + '/package.json'))
193
+ const jsreportVersion = jsreportModule.version
194
+
195
+ return {
196
+ name: jsreportPkgName,
197
+ version: jsreportVersion
198
+ }
199
+ } catch (err) {
200
+ const errorToReject = new Error(`problem while trying to require ${jsreportPkgName} package`)
201
+ errorToReject.originalError = err
202
+ throw errorToReject
203
+ }
204
+ }
205
+
206
+ module.exports = initializeApp