mirror of
https://github.com/ragestudio/relic.git
synced 2025-06-09 02:24:18 +00:00
56 lines
1.3 KiB
JavaScript
56 lines
1.3 KiB
JavaScript
import Logger from "../logger"
|
|
|
|
import ISM_GIT_CLONE from "./git_clone"
|
|
import ISM_GIT_PULL from "./git_pull"
|
|
import ISM_GIT_RESET from "./git_reset"
|
|
import ISM_HTTP from "./http"
|
|
import ISM_TORRENT from "./torrent"
|
|
|
|
const InstallationStepsMethods = {
|
|
git_clone: ISM_GIT_CLONE,
|
|
git_pull: ISM_GIT_PULL,
|
|
git_reset: ISM_GIT_RESET,
|
|
http_file: ISM_HTTP,
|
|
torrent: ISM_TORRENT,
|
|
}
|
|
|
|
const StepsOrders = [
|
|
"git_clones",
|
|
"git_pull",
|
|
"git_reset",
|
|
"torrent",
|
|
"http_file",
|
|
]
|
|
|
|
export default async function processGenericSteps(pkg, steps, logger = Logger, abortController) {
|
|
logger.info(`Processing generic steps...`)
|
|
|
|
if (!Array.isArray(steps)) {
|
|
throw new Error(`Steps must be an array`)
|
|
}
|
|
|
|
if (steps.length === 0) {
|
|
return pkg
|
|
}
|
|
|
|
steps = steps.sort((a, b) => {
|
|
return StepsOrders.indexOf(a.type) - StepsOrders.indexOf(b.type)
|
|
})
|
|
|
|
for await (let step of steps) {
|
|
step.type = step.type.toLowerCase()
|
|
|
|
if (abortController?.signal?.aborted) {
|
|
return false
|
|
}
|
|
|
|
if (!InstallationStepsMethods[step.type]) {
|
|
throw new Error(`Unknown step: ${step.type}`)
|
|
}
|
|
|
|
await InstallationStepsMethods[step.type](pkg, step, logger, abortController)
|
|
}
|
|
|
|
return pkg
|
|
}
|