adapt-authoring-adaptframework 2.4.0 → 2.5.0
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/lib/AdaptFrameworkBuild.js +28 -11
- package/package.json +1 -1
|
@@ -40,11 +40,12 @@ class AdaptFrameworkBuild {
|
|
|
40
40
|
* @property {String} userId The user executing the build
|
|
41
41
|
* @property {String} expiresAt When the build expires
|
|
42
42
|
* @property {Boolean} compress Whether output files should be compressed into an archive file
|
|
43
|
+
* @property {String} outputDir If set, uses this as the build root. If the directory already exists, only content data and assets are written (framework copy and compilation are skipped)
|
|
43
44
|
*
|
|
44
45
|
* @constructor
|
|
45
46
|
* @param {AdaptFrameworkBuildOptions} options
|
|
46
47
|
*/
|
|
47
|
-
constructor ({ action, courseId, userId, expiresAt, compress }) {
|
|
48
|
+
constructor ({ action, courseId, userId, expiresAt, compress, outputDir }) {
|
|
48
49
|
/**
|
|
49
50
|
* The MongoDB collection name
|
|
50
51
|
* @type {String}
|
|
@@ -150,6 +151,11 @@ class AdaptFrameworkBuild {
|
|
|
150
151
|
* @type {Hook}
|
|
151
152
|
*/
|
|
152
153
|
this.postBuildHook = new Hook({ mutable: true })
|
|
154
|
+
/**
|
|
155
|
+
* Custom output directory. If the directory already exists, only content and assets are written
|
|
156
|
+
* @type {String}
|
|
157
|
+
*/
|
|
158
|
+
this.outputDir = outputDir ?? null
|
|
153
159
|
}
|
|
154
160
|
|
|
155
161
|
/**
|
|
@@ -164,17 +170,26 @@ class AdaptFrameworkBuild {
|
|
|
164
170
|
if (!this.expiresAt) {
|
|
165
171
|
this.expiresAt = await AdaptFrameworkBuild.getBuildExpiry()
|
|
166
172
|
}
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
173
|
+
if (this.outputDir) {
|
|
174
|
+
this.dir = this.outputDir
|
|
175
|
+
} else {
|
|
176
|
+
// random suffix to account for parallel builds executed at exactly the same millisecond
|
|
177
|
+
const randomSuffix = `_${Math.floor(Math.random() * 1000).toString().padStart(4, '0')}`
|
|
178
|
+
this.dir = path.resolve(framework.getConfig('buildDir'), Date.now() + randomSuffix)
|
|
179
|
+
}
|
|
170
180
|
this.buildDir = path.join(this.dir, 'build')
|
|
171
181
|
this.courseDir = path.join(this.buildDir, 'course')
|
|
172
182
|
|
|
183
|
+
const dirExists = await fs.access(this.dir).then(() => true, () => false)
|
|
184
|
+
const contentOnly = this.outputDir && dirExists
|
|
185
|
+
|
|
173
186
|
const cacheDir = path.join(framework.getConfig('buildDir'), 'cache')
|
|
174
187
|
|
|
175
188
|
await ensureDir(this.dir)
|
|
176
189
|
await ensureDir(this.buildDir)
|
|
177
|
-
|
|
190
|
+
if (!contentOnly) {
|
|
191
|
+
await ensureDir(cacheDir)
|
|
192
|
+
}
|
|
178
193
|
|
|
179
194
|
logDir('dir', this.dir)
|
|
180
195
|
logDir('buildDir', this.buildDir)
|
|
@@ -182,21 +197,23 @@ class AdaptFrameworkBuild {
|
|
|
182
197
|
|
|
183
198
|
await this.loadCourseData()
|
|
184
199
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
copyFrameworkSource({
|
|
200
|
+
const tasks = [this.copyAssets()]
|
|
201
|
+
if (!contentOnly) {
|
|
202
|
+
tasks.push(copyFrameworkSource({
|
|
188
203
|
destDir: this.dir,
|
|
189
204
|
enabledPlugins: this.enabledPlugins.map(p => p.name),
|
|
190
205
|
linkNodeModules: !this.isExport
|
|
191
|
-
})
|
|
192
|
-
|
|
206
|
+
}))
|
|
207
|
+
}
|
|
208
|
+
await Promise.all(tasks)
|
|
209
|
+
|
|
193
210
|
await this.preBuildHook.invoke(this)
|
|
194
211
|
|
|
195
212
|
await this.writeContentJson()
|
|
196
213
|
|
|
197
214
|
logDir('courseDir', this.courseDir)
|
|
198
215
|
|
|
199
|
-
if (!this.isExport) {
|
|
216
|
+
if (!contentOnly && !this.isExport) {
|
|
200
217
|
try {
|
|
201
218
|
logMemory()
|
|
202
219
|
await AdaptCli.buildCourse({
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "adapt-authoring-adaptframework",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.5.0",
|
|
4
4
|
"description": "Adapt framework integration for the Adapt authoring tool",
|
|
5
5
|
"homepage": "https://github.com/adapt-security/adapt-authoring-adaptframework",
|
|
6
6
|
"license": "GPL-3.0",
|