adapt-cli 3.0.2 → 3.0.6
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/.bowerrc +2 -2
- package/.eslintignore +1 -1
- package/.eslintrc.json +14 -14
- package/.github/CONTRIBUTING.md +8 -0
- package/.github/ISSUE_TEMPLATE.md +17 -0
- package/.github/pull_request_template.md +25 -0
- package/.github/workflows/addtomainproject.yml +19 -0
- package/.github/workflows/releases.yml +25 -0
- package/.travis.yml +46 -46
- package/README.md +266 -266
- package/bin/adapt.js +3 -3
- package/json/help-create/component.json +9 -9
- package/json/help-create/course.json +9 -9
- package/json/help-create/question.json +9 -9
- package/json/help-create.json +12 -12
- package/json/help-devinstall.json +9 -9
- package/json/help-install.json +10 -10
- package/json/help-ls.json +7 -7
- package/json/help-register.json +7 -7
- package/json/help-rename.json +7 -7
- package/json/help-search.json +8 -8
- package/json/help-uninstall.json +7 -7
- package/json/help-unregister.json +8 -8
- package/json/help-update.json +12 -12
- package/json/help-version.json +7 -7
- package/json/help.json +19 -19
- package/lib/api.js +260 -260
- package/lib/cli.js +69 -69
- package/lib/commands/authenticate.js +18 -18
- package/lib/commands/create/component.js +64 -64
- package/lib/commands/create/course.js +26 -26
- package/lib/commands/create/question.js +18 -18
- package/lib/commands/create.js +94 -85
- package/lib/commands/devinstall.js +35 -35
- package/lib/commands/help.js +31 -31
- package/lib/commands/install.js +16 -16
- package/lib/commands/ls.js +9 -9
- package/lib/commands/register.js +11 -11
- package/lib/commands/rename.js +14 -14
- package/lib/commands/search.js +11 -11
- package/lib/commands/uninstall.js +9 -9
- package/lib/commands/unregister.js +12 -12
- package/lib/commands/update.js +12 -12
- package/lib/commands/version.js +13 -13
- package/lib/integration/AdaptFramework/build.js +42 -42
- package/lib/integration/AdaptFramework/clone.js +27 -27
- package/lib/integration/AdaptFramework/deleteSrcCore.js +9 -9
- package/lib/integration/AdaptFramework/deleteSrcCourse.js +9 -9
- package/lib/integration/AdaptFramework/download.js +21 -21
- package/lib/integration/AdaptFramework/erase.js +34 -34
- package/lib/integration/AdaptFramework/getLatestVersion.js +79 -79
- package/lib/integration/AdaptFramework/npmInstall.js +21 -21
- package/lib/integration/AdaptFramework.js +19 -19
- package/lib/integration/Plugin.js +404 -404
- package/lib/integration/PluginManagement/autenticate.js +56 -56
- package/lib/integration/PluginManagement/install.js +224 -224
- package/lib/integration/PluginManagement/print.js +52 -52
- package/lib/integration/PluginManagement/register.js +130 -130
- package/lib/integration/PluginManagement/rename.js +101 -101
- package/lib/integration/PluginManagement/schemas.js +8 -8
- package/lib/integration/PluginManagement/search.js +46 -46
- package/lib/integration/PluginManagement/uninstall.js +141 -141
- package/lib/integration/PluginManagement/unregister.js +101 -101
- package/lib/integration/PluginManagement/update.js +224 -224
- package/lib/integration/PluginManagement.js +21 -21
- package/lib/integration/Project.js +146 -146
- package/lib/integration/Target.js +299 -299
- package/lib/integration/getBowerRegistryConfig.js +34 -34
- package/lib/logger.js +28 -28
- package/lib/util/JSONReadValidate.js +34 -34
- package/lib/util/constants.js +38 -38
- package/lib/util/createPromptTask.js +7 -7
- package/lib/util/download.js +45 -45
- package/lib/util/errors.js +58 -58
- package/lib/util/extract.js +24 -24
- package/lib/util/getDirNameFromImportMeta.js +6 -6
- package/lib/util/promises.js +36 -36
- package/package.json +74 -40
@@ -1,146 +1,146 @@
|
|
1
|
-
import fs from 'fs-extra'
|
2
|
-
import path from 'path'
|
3
|
-
import globs from 'globs'
|
4
|
-
import { readValidateJSON, readValidateJSONSync } from '../util/JSONReadValidate.js'
|
5
|
-
import Plugin from './Plugin.js'
|
6
|
-
import Target from './Target.js'
|
7
|
-
export const MANIFEST_FILENAME = 'adapt.json'
|
8
|
-
export const FRAMEWORK_FILENAME = 'package.json'
|
9
|
-
|
10
|
-
/**
|
11
|
-
* A representation of the target Adapt Framework project
|
12
|
-
*/
|
13
|
-
export default class Project {
|
14
|
-
constructor ({
|
15
|
-
cwd = process.cwd(),
|
16
|
-
logger
|
17
|
-
} = {}) {
|
18
|
-
this.logger = logger
|
19
|
-
this.cwd = cwd
|
20
|
-
this.manifestFilePath = path.resolve(this.cwd, MANIFEST_FILENAME)
|
21
|
-
this.frameworkPackagePath = path.resolve(this.cwd, FRAMEWORK_FILENAME)
|
22
|
-
}
|
23
|
-
|
24
|
-
/** @returns {boolean} */
|
25
|
-
get isAdaptDirectory () {
|
26
|
-
try {
|
27
|
-
// are we inside an existing adapt_framework project.
|
28
|
-
const packageJSON = fs.readJSONSync(this.cwd + '/package.json')
|
29
|
-
return (packageJSON.name === 'adapt_framework')
|
30
|
-
} catch (err) {
|
31
|
-
// don't worry, we're not inside a framework directory.
|
32
|
-
}
|
33
|
-
return false
|
34
|
-
}
|
35
|
-
|
36
|
-
/** @returns {boolean} */
|
37
|
-
get containsManifestFile () {
|
38
|
-
if (!this.isAdaptDirectory) return false
|
39
|
-
return fs.existsSync(this.manifestFilePath)
|
40
|
-
}
|
41
|
-
|
42
|
-
/** @returns {string} */
|
43
|
-
get version () {
|
44
|
-
try {
|
45
|
-
return readValidateJSONSync(this.frameworkPackagePath).version
|
46
|
-
} catch (ex) {
|
47
|
-
return null
|
48
|
-
}
|
49
|
-
}
|
50
|
-
|
51
|
-
tryThrowInvalidPath () {
|
52
|
-
if (this.containsManifestFile) return
|
53
|
-
this.logger?.error('Fatal error: please run above commands in adapt course directory.')
|
54
|
-
throw new Error('Fatal error: please run above commands in adapt course directory.')
|
55
|
-
}
|
56
|
-
|
57
|
-
/** @returns {[Target]} */
|
58
|
-
async getInstallTargets () {
|
59
|
-
return Object.entries(await this.getManifestDependencies()).map(([name, requestedVersion]) => new Target({ name, requestedVersion, project: this, logger: this.logger }))
|
60
|
-
}
|
61
|
-
|
62
|
-
/** @returns {[string]} */
|
63
|
-
async getManifestDependencies () {
|
64
|
-
const manifest = await readValidateJSON(this.manifestFilePath)
|
65
|
-
return manifest.dependencies
|
66
|
-
}
|
67
|
-
|
68
|
-
/** @returns {[Plugin]} */
|
69
|
-
async getInstalledPlugins () {
|
70
|
-
return Object.entries(await this.getInstalledDependencies()).map(([name]) => new Plugin({ name, project: this, logger: this.logger }))
|
71
|
-
}
|
72
|
-
|
73
|
-
/** @returns {[Target]} */
|
74
|
-
async getUninstallTargets () {
|
75
|
-
return Object.entries(await this.getInstalledDependencies()).map(([name]) => new Target({ name, project: this, logger: this.logger }))
|
76
|
-
}
|
77
|
-
|
78
|
-
/** @returns {[Target]} */
|
79
|
-
async getUpdateTargets () {
|
80
|
-
return Object.entries(await this.getInstalledDependencies()).map(([name]) => new Target({ name, project: this, logger: this.logger }))
|
81
|
-
}
|
82
|
-
|
83
|
-
async getInstalledDependencies () {
|
84
|
-
const getDependencyBowerJSONs = async () => {
|
85
|
-
const glob = `${this.cwd.replace(/\\/g, '/')}/src/**/bower.json`
|
86
|
-
const bowerJSONPaths = await new Promise((resolve, reject) => {
|
87
|
-
globs(glob, (err, matches) => {
|
88
|
-
if (err) return reject(err)
|
89
|
-
resolve(matches)
|
90
|
-
})
|
91
|
-
})
|
92
|
-
const bowerJSONs = []
|
93
|
-
for (const bowerJSONPath of bowerJSONPaths) {
|
94
|
-
try {
|
95
|
-
bowerJSONs.push(await fs.readJSON(bowerJSONPath))
|
96
|
-
} catch (err) {}
|
97
|
-
}
|
98
|
-
return bowerJSONs
|
99
|
-
}
|
100
|
-
const dependencies = (await getDependencyBowerJSONs())
|
101
|
-
.filter(bowerJSON => bowerJSON?.name && bowerJSON?.version)
|
102
|
-
.reduce((dependencies, bowerJSON) => {
|
103
|
-
dependencies[bowerJSON.name] = bowerJSON.version
|
104
|
-
return dependencies
|
105
|
-
}, {})
|
106
|
-
return dependencies
|
107
|
-
}
|
108
|
-
|
109
|
-
async getSchemaPaths () {
|
110
|
-
const glob = `${this.cwd.replace(/\\/g, '/')}/src/**/*.schema.json`
|
111
|
-
const bowerJSONPaths = await new Promise((resolve, reject) => {
|
112
|
-
globs(glob, (err, matches) => {
|
113
|
-
if (err) return reject(err)
|
114
|
-
resolve(matches)
|
115
|
-
})
|
116
|
-
})
|
117
|
-
return bowerJSONPaths
|
118
|
-
}
|
119
|
-
|
120
|
-
/**
|
121
|
-
* @param {Plugin} plugin
|
122
|
-
*/
|
123
|
-
add (plugin) {
|
124
|
-
if (typeof Plugin !== 'object' && !(plugin instanceof Plugin)) {
|
125
|
-
plugin = new Plugin({ name: plugin })
|
126
|
-
}
|
127
|
-
let manifest = { version: '0.0.0', dependencies: {} }
|
128
|
-
if (this.containsManifestFile) {
|
129
|
-
manifest = readValidateJSONSync(this.manifestFilePath)
|
130
|
-
}
|
131
|
-
manifest.dependencies[plugin.packageName] = plugin.sourcePath || plugin.requestedVersion || plugin.version
|
132
|
-
fs.writeJSONSync(this.manifestFilePath, manifest, { spaces: 2, replacer: null })
|
133
|
-
}
|
134
|
-
|
135
|
-
/**
|
136
|
-
* @param {Plugin} plugin
|
137
|
-
*/
|
138
|
-
remove (plugin) {
|
139
|
-
if (typeof Plugin !== 'object' && !(plugin instanceof Plugin)) {
|
140
|
-
plugin = new Plugin({ name: plugin })
|
141
|
-
}
|
142
|
-
const manifest = readValidateJSONSync(this.manifestFilePath)
|
143
|
-
delete manifest.dependencies[plugin.packageName]
|
144
|
-
fs.writeJSONSync(this.manifestFilePath, manifest, { spaces: 2, replacer: null })
|
145
|
-
}
|
146
|
-
}
|
1
|
+
import fs from 'fs-extra'
|
2
|
+
import path from 'path'
|
3
|
+
import globs from 'globs'
|
4
|
+
import { readValidateJSON, readValidateJSONSync } from '../util/JSONReadValidate.js'
|
5
|
+
import Plugin from './Plugin.js'
|
6
|
+
import Target from './Target.js'
|
7
|
+
export const MANIFEST_FILENAME = 'adapt.json'
|
8
|
+
export const FRAMEWORK_FILENAME = 'package.json'
|
9
|
+
|
10
|
+
/**
|
11
|
+
* A representation of the target Adapt Framework project
|
12
|
+
*/
|
13
|
+
export default class Project {
|
14
|
+
constructor ({
|
15
|
+
cwd = process.cwd(),
|
16
|
+
logger
|
17
|
+
} = {}) {
|
18
|
+
this.logger = logger
|
19
|
+
this.cwd = cwd
|
20
|
+
this.manifestFilePath = path.resolve(this.cwd, MANIFEST_FILENAME)
|
21
|
+
this.frameworkPackagePath = path.resolve(this.cwd, FRAMEWORK_FILENAME)
|
22
|
+
}
|
23
|
+
|
24
|
+
/** @returns {boolean} */
|
25
|
+
get isAdaptDirectory () {
|
26
|
+
try {
|
27
|
+
// are we inside an existing adapt_framework project.
|
28
|
+
const packageJSON = fs.readJSONSync(this.cwd + '/package.json')
|
29
|
+
return (packageJSON.name === 'adapt_framework')
|
30
|
+
} catch (err) {
|
31
|
+
// don't worry, we're not inside a framework directory.
|
32
|
+
}
|
33
|
+
return false
|
34
|
+
}
|
35
|
+
|
36
|
+
/** @returns {boolean} */
|
37
|
+
get containsManifestFile () {
|
38
|
+
if (!this.isAdaptDirectory) return false
|
39
|
+
return fs.existsSync(this.manifestFilePath)
|
40
|
+
}
|
41
|
+
|
42
|
+
/** @returns {string} */
|
43
|
+
get version () {
|
44
|
+
try {
|
45
|
+
return readValidateJSONSync(this.frameworkPackagePath).version
|
46
|
+
} catch (ex) {
|
47
|
+
return null
|
48
|
+
}
|
49
|
+
}
|
50
|
+
|
51
|
+
tryThrowInvalidPath () {
|
52
|
+
if (this.containsManifestFile) return
|
53
|
+
this.logger?.error('Fatal error: please run above commands in adapt course directory.')
|
54
|
+
throw new Error('Fatal error: please run above commands in adapt course directory.')
|
55
|
+
}
|
56
|
+
|
57
|
+
/** @returns {[Target]} */
|
58
|
+
async getInstallTargets () {
|
59
|
+
return Object.entries(await this.getManifestDependencies()).map(([name, requestedVersion]) => new Target({ name, requestedVersion, project: this, logger: this.logger }))
|
60
|
+
}
|
61
|
+
|
62
|
+
/** @returns {[string]} */
|
63
|
+
async getManifestDependencies () {
|
64
|
+
const manifest = await readValidateJSON(this.manifestFilePath)
|
65
|
+
return manifest.dependencies
|
66
|
+
}
|
67
|
+
|
68
|
+
/** @returns {[Plugin]} */
|
69
|
+
async getInstalledPlugins () {
|
70
|
+
return Object.entries(await this.getInstalledDependencies()).map(([name]) => new Plugin({ name, project: this, logger: this.logger }))
|
71
|
+
}
|
72
|
+
|
73
|
+
/** @returns {[Target]} */
|
74
|
+
async getUninstallTargets () {
|
75
|
+
return Object.entries(await this.getInstalledDependencies()).map(([name]) => new Target({ name, project: this, logger: this.logger }))
|
76
|
+
}
|
77
|
+
|
78
|
+
/** @returns {[Target]} */
|
79
|
+
async getUpdateTargets () {
|
80
|
+
return Object.entries(await this.getInstalledDependencies()).map(([name]) => new Target({ name, project: this, logger: this.logger }))
|
81
|
+
}
|
82
|
+
|
83
|
+
async getInstalledDependencies () {
|
84
|
+
const getDependencyBowerJSONs = async () => {
|
85
|
+
const glob = `${this.cwd.replace(/\\/g, '/')}/src/**/bower.json`
|
86
|
+
const bowerJSONPaths = await new Promise((resolve, reject) => {
|
87
|
+
globs(glob, (err, matches) => {
|
88
|
+
if (err) return reject(err)
|
89
|
+
resolve(matches)
|
90
|
+
})
|
91
|
+
})
|
92
|
+
const bowerJSONs = []
|
93
|
+
for (const bowerJSONPath of bowerJSONPaths) {
|
94
|
+
try {
|
95
|
+
bowerJSONs.push(await fs.readJSON(bowerJSONPath))
|
96
|
+
} catch (err) {}
|
97
|
+
}
|
98
|
+
return bowerJSONs
|
99
|
+
}
|
100
|
+
const dependencies = (await getDependencyBowerJSONs())
|
101
|
+
.filter(bowerJSON => bowerJSON?.name && bowerJSON?.version)
|
102
|
+
.reduce((dependencies, bowerJSON) => {
|
103
|
+
dependencies[bowerJSON.name] = bowerJSON.version
|
104
|
+
return dependencies
|
105
|
+
}, {})
|
106
|
+
return dependencies
|
107
|
+
}
|
108
|
+
|
109
|
+
async getSchemaPaths () {
|
110
|
+
const glob = `${this.cwd.replace(/\\/g, '/')}/src/**/*.schema.json`
|
111
|
+
const bowerJSONPaths = await new Promise((resolve, reject) => {
|
112
|
+
globs(glob, (err, matches) => {
|
113
|
+
if (err) return reject(err)
|
114
|
+
resolve(matches)
|
115
|
+
})
|
116
|
+
})
|
117
|
+
return bowerJSONPaths
|
118
|
+
}
|
119
|
+
|
120
|
+
/**
|
121
|
+
* @param {Plugin} plugin
|
122
|
+
*/
|
123
|
+
add (plugin) {
|
124
|
+
if (typeof Plugin !== 'object' && !(plugin instanceof Plugin)) {
|
125
|
+
plugin = new Plugin({ name: plugin })
|
126
|
+
}
|
127
|
+
let manifest = { version: '0.0.0', dependencies: {} }
|
128
|
+
if (this.containsManifestFile) {
|
129
|
+
manifest = readValidateJSONSync(this.manifestFilePath)
|
130
|
+
}
|
131
|
+
manifest.dependencies[plugin.packageName] = plugin.sourcePath || plugin.requestedVersion || plugin.version
|
132
|
+
fs.writeJSONSync(this.manifestFilePath, manifest, { spaces: 2, replacer: null })
|
133
|
+
}
|
134
|
+
|
135
|
+
/**
|
136
|
+
* @param {Plugin} plugin
|
137
|
+
*/
|
138
|
+
remove (plugin) {
|
139
|
+
if (typeof Plugin !== 'object' && !(plugin instanceof Plugin)) {
|
140
|
+
plugin = new Plugin({ name: plugin })
|
141
|
+
}
|
142
|
+
const manifest = readValidateJSONSync(this.manifestFilePath)
|
143
|
+
delete manifest.dependencies[plugin.packageName]
|
144
|
+
fs.writeJSONSync(this.manifestFilePath, manifest, { spaces: 2, replacer: null })
|
145
|
+
}
|
146
|
+
}
|