const { join } = require("path"); const { isString, last } = require("lodash/fp"); const { common } = require("@budibase/core"); const runtimePackagesDirectory = "./runtime_apps"; const LATEST_VERSIONID = "##LATEST##"; const { $, splitKey } = common; const getRuntimeAppsDirectory = (appName) => join(runtimePackagesDirectory, appName); const getLatestDirectory = (appContext, appname) => join(appContext.config.latestPackagesFolder, appname); module.exports.LATEST_VERSIONID = LATEST_VERSIONID; module.exports.runtimePackagesDirectory = runtimePackagesDirectory; module.exports.getRuntimePackageDirectory = (appContext, appName, versionId) => versionId === LATEST_VERSIONID ? getLatestDirectory(appContext, appName) : join(getRuntimeAppsDirectory(appName), versionId); module.exports.getRuntimeAppsDirectory = getRuntimeAppsDirectory; // the point of this in mainly to support running in dev // i.e. if no "versions" are in use, then it will route // to the latest package module.exports.determineVersionId = (version) => { let versionKey = isString(version) ? version : null; if(!versionKey && version && version.key) versionKey = version.key; return versionKey ? $(versionKey, [ splitKey, last]) : LATEST_VERSIONID; }