mirror of
https://github.com/Start9Labs/start-os.git
synced 2026-03-31 04:23:40 +00:00
Feature/fe new registry (#2647)
* bugfixes * update fe types * implement new registry types in marketplace and ui * fix marketplace types to have default params * add alt implementation toggle * merge cleanup * more cleanup and notes * fix build * cleanup sync with next/minor * add exver JS parser * parse ValidExVer to string * update types to interface * add VersionRange and comparative functions * Parse ExtendedVersion from string * add conjunction, disjunction, and inversion logic * consider flavor in satisfiedBy fn * consider prerelease for ordering * add compare fn for sorting * rename fns for consistency * refactoring * update compare fn to return null if flavors don't match * begin simplifying dependencies * under construction * wip * add dependency metadata to CurrentDependencyInfo * ditch inheritance for recursive VersionRange constructor. Recursive 'satisfiedBy' fn wip * preprocess manifest * misc fixes * use sdk version as osVersion in manifest * chore: Change the type to just validate and not generate all solutions. * add publishedAt * fix pegjs exports * integrate exver into sdk * misc fixes * complete satisfiedBy fn * refactor - use greaterThanOrEqual and lessThanOrEqual fns * fix tests * update dependency details * update types * remove interim types * rename alt implementation to flavor * cleanup os update * format exver.ts * add s9pk parsing endpoints * fix build * update to exver * exver and bug fixes * update static endpoints + cleanup * cleanup * update static proxy verification * make mocks more robust; fix dep icon fallback; cleanup * refactor alert versions and update fixtures * registry bugfixes * misc fixes * cleanup unused * convert patchdb ui seed to camelCase * update otherVersions type * change otherVersions: null to 'none' * refactor and complete feature * improve static endpoints * fix install params * mask systemd-networkd-wait-online * fix static file fetching * include non-matching versions in otherVersions * convert release notes to modal and clean up displayExver * alert for no other versions * Fix ack-instructions casing * fix indeterminate loader on service install --------- Co-authored-by: Aiden McClelland <me@drbonez.dev> Co-authored-by: Shadowy Super Coder <musashidisciple@proton.me> Co-authored-by: Aiden McClelland <3732071+dr-bonez@users.noreply.github.com> Co-authored-by: J H <dragondef@gmail.com> Co-authored-by: Matt Hill <mattnine@protonmail.com>
This commit is contained in:
@@ -3,20 +3,23 @@ import {
|
||||
PackageId,
|
||||
DependencyRequirement,
|
||||
SetHealth,
|
||||
CheckDependencyResult,
|
||||
CheckDependenciesResult,
|
||||
} from "../types"
|
||||
|
||||
export type CheckAllDependencies = {
|
||||
notRunning: () => Promise<CheckDependencyResult[]>
|
||||
|
||||
notInstalled: () => Promise<CheckDependencyResult[]>
|
||||
|
||||
notInstalled: () => Promise<CheckDependenciesResult[]>
|
||||
notRunning: () => Promise<CheckDependenciesResult[]>
|
||||
configNotSatisfied: () => Promise<CheckDependenciesResult[]>
|
||||
healthErrors: () => Promise<{ [id: string]: SetHealth[] }>
|
||||
throwIfNotRunning: () => Promise<void>
|
||||
throwIfNotValid: () => Promise<undefined>
|
||||
throwIfNotInstalled: () => Promise<void>
|
||||
throwIfError: () => Promise<void>
|
||||
|
||||
isValid: () => Promise<boolean>
|
||||
|
||||
throwIfNotRunning: () => Promise<void>
|
||||
throwIfNotInstalled: () => Promise<void>
|
||||
throwIfConfigNotSatisfied: () => Promise<void>
|
||||
throwIfHealthError: () => Promise<void>
|
||||
|
||||
throwIfNotValid: () => Promise<void>
|
||||
}
|
||||
export function checkAllDependencies(effects: Effects): CheckAllDependencies {
|
||||
const dependenciesPromise = effects.getDependencies()
|
||||
@@ -45,14 +48,16 @@ export function checkAllDependencies(effects: Effects): CheckAllDependencies {
|
||||
if (!dependency) continue
|
||||
if (dependency.kind !== "running") continue
|
||||
|
||||
const healthChecks = result.healthChecks
|
||||
.filter((x) => dependency.healthChecks.includes(x.id))
|
||||
const healthChecks = Object.entries(result.healthChecks)
|
||||
.map(([id, hc]) => ({ ...hc, id }))
|
||||
.filter((x) => !!x.message)
|
||||
if (healthChecks.length === 0) continue
|
||||
answer[result.packageId] = healthChecks
|
||||
}
|
||||
return answer
|
||||
}
|
||||
const configNotSatisfied = () =>
|
||||
resultsPromise.then((x) => x.filter((x) => !x.configSatisfied))
|
||||
const notInstalled = () =>
|
||||
resultsPromise.then((x) => x.filter((x) => !x.isInstalled))
|
||||
const notRunning = async () => {
|
||||
@@ -68,7 +73,7 @@ export function checkAllDependencies(effects: Effects): CheckAllDependencies {
|
||||
const entries = <B>(x: { [k: string]: B }) => Object.entries(x)
|
||||
const first = <A>(x: A[]): A | undefined => x[0]
|
||||
const sinkVoid = <A>(x: A) => void 0
|
||||
const throwIfError = () =>
|
||||
const throwIfHealthError = () =>
|
||||
healthErrors()
|
||||
.then(entries)
|
||||
.then(first)
|
||||
@@ -78,6 +83,14 @@ export function checkAllDependencies(effects: Effects): CheckAllDependencies {
|
||||
if (healthChecks.length > 0)
|
||||
throw `Package ${id} has the following errors: ${healthChecks.map((x) => x.message).join(", ")}`
|
||||
})
|
||||
|
||||
const throwIfConfigNotSatisfied = () =>
|
||||
configNotSatisfied().then((results) => {
|
||||
throw new Error(
|
||||
`Package ${results[0].packageId} does not have a valid configuration`,
|
||||
)
|
||||
})
|
||||
|
||||
const throwIfNotRunning = () =>
|
||||
notRunning().then((results) => {
|
||||
if (results[0])
|
||||
@@ -93,7 +106,8 @@ export function checkAllDependencies(effects: Effects): CheckAllDependencies {
|
||||
Promise.all([
|
||||
throwIfNotRunning(),
|
||||
throwIfNotInstalled(),
|
||||
throwIfError(),
|
||||
throwIfConfigNotSatisfied(),
|
||||
throwIfHealthError(),
|
||||
]).then(sinkVoid)
|
||||
|
||||
const isValid = () =>
|
||||
@@ -105,11 +119,13 @@ export function checkAllDependencies(effects: Effects): CheckAllDependencies {
|
||||
return {
|
||||
notRunning,
|
||||
notInstalled,
|
||||
configNotSatisfied,
|
||||
healthErrors,
|
||||
throwIfNotRunning,
|
||||
throwIfConfigNotSatisfied,
|
||||
throwIfNotValid,
|
||||
throwIfNotInstalled,
|
||||
throwIfError,
|
||||
throwIfHealthError,
|
||||
isValid,
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user