This commit is contained in:
Matt Hill
2026-03-20 08:37:36 -06:00
parent 03d7d5f123
commit 2a8d8c7154
6 changed files with 103 additions and 61 deletions

View File

@@ -15,7 +15,7 @@ license = "MIT"
name = "start-os" name = "start-os"
readme = "README.md" readme = "README.md"
repository = "https://github.com/Start9Labs/start-os" repository = "https://github.com/Start9Labs/start-os"
version = "0.4.0-alpha.21" # VERSION_BUMP version = "0.4.0-alpha.22" # VERSION_BUMP
[lib] [lib]
name = "startos" name = "startos"

View File

@@ -61,8 +61,9 @@ mod v0_4_0_alpha_18;
mod v0_4_0_alpha_19; mod v0_4_0_alpha_19;
mod v0_4_0_alpha_20; mod v0_4_0_alpha_20;
mod v0_4_0_alpha_21; mod v0_4_0_alpha_21;
mod v0_4_0_alpha_22;
pub type Current = v0_4_0_alpha_21::Version; // VERSION_BUMP pub type Current = v0_4_0_alpha_22::Version; // VERSION_BUMP
impl Current { impl Current {
#[instrument(skip(self, db))] #[instrument(skip(self, db))]
@@ -191,7 +192,8 @@ enum Version {
V0_4_0_alpha_18(Wrapper<v0_4_0_alpha_18::Version>), V0_4_0_alpha_18(Wrapper<v0_4_0_alpha_18::Version>),
V0_4_0_alpha_19(Wrapper<v0_4_0_alpha_19::Version>), V0_4_0_alpha_19(Wrapper<v0_4_0_alpha_19::Version>),
V0_4_0_alpha_20(Wrapper<v0_4_0_alpha_20::Version>), V0_4_0_alpha_20(Wrapper<v0_4_0_alpha_20::Version>),
V0_4_0_alpha_21(Wrapper<v0_4_0_alpha_21::Version>), // VERSION_BUMP V0_4_0_alpha_21(Wrapper<v0_4_0_alpha_21::Version>),
V0_4_0_alpha_22(Wrapper<v0_4_0_alpha_22::Version>), // VERSION_BUMP
Other(exver::Version), Other(exver::Version),
} }
@@ -255,7 +257,8 @@ impl Version {
Self::V0_4_0_alpha_18(v) => DynVersion(Box::new(v.0)), Self::V0_4_0_alpha_18(v) => DynVersion(Box::new(v.0)),
Self::V0_4_0_alpha_19(v) => DynVersion(Box::new(v.0)), Self::V0_4_0_alpha_19(v) => DynVersion(Box::new(v.0)),
Self::V0_4_0_alpha_20(v) => DynVersion(Box::new(v.0)), Self::V0_4_0_alpha_20(v) => DynVersion(Box::new(v.0)),
Self::V0_4_0_alpha_21(v) => DynVersion(Box::new(v.0)), // VERSION_BUMP Self::V0_4_0_alpha_21(v) => DynVersion(Box::new(v.0)),
Self::V0_4_0_alpha_22(v) => DynVersion(Box::new(v.0)), // VERSION_BUMP
Self::Other(v) => { Self::Other(v) => {
return Err(Error::new( return Err(Error::new(
eyre!("unknown version {v}"), eyre!("unknown version {v}"),
@@ -311,7 +314,8 @@ impl Version {
Version::V0_4_0_alpha_18(Wrapper(x)) => x.semver(), Version::V0_4_0_alpha_18(Wrapper(x)) => x.semver(),
Version::V0_4_0_alpha_19(Wrapper(x)) => x.semver(), Version::V0_4_0_alpha_19(Wrapper(x)) => x.semver(),
Version::V0_4_0_alpha_20(Wrapper(x)) => x.semver(), Version::V0_4_0_alpha_20(Wrapper(x)) => x.semver(),
Version::V0_4_0_alpha_21(Wrapper(x)) => x.semver(), // VERSION_BUMP Version::V0_4_0_alpha_21(Wrapper(x)) => x.semver(),
Version::V0_4_0_alpha_22(Wrapper(x)) => x.semver(), // VERSION_BUMP
Version::Other(x) => x.clone(), Version::Other(x) => x.clone(),
} }
} }

View File

@@ -0,0 +1,37 @@
use exver::{PreReleaseSegment, VersionRange};
use super::v0_3_5::V0_3_0_COMPAT;
use super::{VersionT, v0_4_0_alpha_21};
use crate::prelude::*;
lazy_static::lazy_static! {
static ref V0_4_0_alpha_22: exver::Version = exver::Version::new(
[0, 4, 0],
[PreReleaseSegment::String("alpha".into()), 22.into()]
);
}
#[derive(Clone, Copy, Debug, Default)]
pub struct Version;
impl VersionT for Version {
type Previous = v0_4_0_alpha_21::Version;
type PreUpRes = ();
async fn pre_up(self) -> Result<Self::PreUpRes, Error> {
Ok(())
}
fn semver(self) -> exver::Version {
V0_4_0_alpha_22.clone()
}
fn compat(self) -> &'static VersionRange {
&V0_3_0_COMPAT
}
#[instrument(skip_all)]
fn up(self, _db: &mut Value, _: Self::PreUpRes) -> Result<Value, Error> {
Ok(Value::Null)
}
fn down(self, _db: &mut Value) -> Result<(), Error> {
Ok(())
}
}

View File

@@ -1,75 +1,76 @@
import { Value } from '../../base/lib/actions/input/builder/value' import * as fs from 'node:fs/promises'
import * as actions from '../../base/lib/actions'
import { InputSpec } from '../../base/lib/actions/input/builder/inputSpec' import { InputSpec } from '../../base/lib/actions/input/builder/inputSpec'
import { List } from '../../base/lib/actions/input/builder/list'
import { Value } from '../../base/lib/actions/input/builder/value'
import { Variants } from '../../base/lib/actions/input/builder/variants' import { Variants } from '../../base/lib/actions/input/builder/variants'
import {
customSmtp,
smtpInputSpec,
smtpProviderVariants,
systemSmtpSpec,
} from '../../base/lib/actions/input/inputSpecConstants'
import { import {
Action, Action,
ActionInfo, ActionInfo,
Actions, Actions,
MaybeFn,
Run,
} from '../../base/lib/actions/setupActions' } from '../../base/lib/actions/setupActions'
import { ServiceInterfaceType, Effects } from '../../base/lib/types'
import * as patterns from '../../base/lib/util/patterns'
import { Backups } from './backup/Backups'
import { import {
smtpInputSpec, CheckDependencies,
systemSmtpSpec, checkDependencies,
customSmtp, } from '../../base/lib/dependencies/dependencies'
smtpProviderVariants, import { setupDependencies } from '../../base/lib/dependencies/setupDependencies'
} from '../../base/lib/actions/input/inputSpecConstants' import { testTypeVersion } from '../../base/lib/exver'
import { Daemon, Daemons } from './mainFn/Daemons' import {
import { checkPortListening } from './health/checkFns/checkPortListening' setupInit,
import { checkWebUrl, runHealthScript } from './health/checkFns' setupOnInit,
import { List } from '../../base/lib/actions/input/builder/list' setupOnUninit,
import { SetupBackupsParams, setupBackups } from './backup/setupBackups' setupUninit,
import { setupMain } from './mainFn' } from '../../base/lib/inits'
import { defaultTrigger } from './trigger/defaultTrigger'
import { changeOnFirstSuccess, cooldownTrigger } from './trigger'
import { setupServiceInterfaces } from '../../base/lib/interfaces/setupInterfaces'
import { setupExportedUrls } from '../../base/lib/interfaces/setupExportedUrls'
import { successFailure } from './trigger/successFailure'
import { MultiHost, Scheme } from '../../base/lib/interfaces/Host' import { MultiHost, Scheme } from '../../base/lib/interfaces/Host'
import { ServiceInterfaceBuilder } from '../../base/lib/interfaces/ServiceInterfaceBuilder' import { ServiceInterfaceBuilder } from '../../base/lib/interfaces/ServiceInterfaceBuilder'
import { GetOutboundGateway, GetSystemSmtp } from './util' import { setupExportedUrls } from '../../base/lib/interfaces/setupExportedUrls'
import { nullIfEmpty } from './util' import { setupServiceInterfaces } from '../../base/lib/interfaces/setupInterfaces'
import { getServiceInterface, getServiceInterfaces } from './util' import * as T from '../../base/lib/types'
import { Effects, ServiceInterfaceType } from '../../base/lib/types'
import { GetContainerIp } from '../../base/lib/util/GetContainerIp'
import { GetStatus } from '../../base/lib/util/GetStatus'
import { getOwnServiceInterface } from '../../base/lib/util/getServiceInterface'
import { getOwnServiceInterfaces } from '../../base/lib/util/getServiceInterfaces'
import * as patterns from '../../base/lib/util/patterns'
import { Backups } from './backup/Backups'
import { SetupBackupsParams, setupBackups } from './backup/setupBackups'
import { checkWebUrl, runHealthScript } from './health/checkFns'
import { checkPortListening } from './health/checkFns/checkPortListening'
import { setupMain } from './mainFn'
import { Daemon, Daemons } from './mainFn/Daemons'
import { Mounts } from './mainFn/Mounts'
import { changeOnFirstSuccess, cooldownTrigger } from './trigger'
import { defaultTrigger } from './trigger/defaultTrigger'
import { successFailure } from './trigger/successFailure'
import {
GetOutboundGateway,
GetSslCertificate,
GetSystemSmtp,
getServiceInterface,
getServiceInterfaces,
getServiceManifest,
nullIfEmpty,
splitCommand,
} from './util'
import { import {
CommandOptions, CommandOptions,
ExitError, ExitError,
SubContainer, SubContainer,
SubContainerOwned, SubContainerOwned,
} from './util/SubContainer' } from './util/SubContainer'
import { splitCommand } from './util' import { createVolumes } from './util/Volume'
import { Mounts } from './mainFn/Mounts'
import { setupDependencies } from '../../base/lib/dependencies/setupDependencies'
import * as T from '../../base/lib/types'
import { testTypeVersion } from '../../base/lib/exver'
import {
CheckDependencies,
checkDependencies,
} from '../../base/lib/dependencies/dependencies'
import { GetSslCertificate, getServiceManifest } from './util'
import { getDataVersion, setDataVersion } from './version' import { getDataVersion, setDataVersion } from './version'
import { MaybeFn } from '../../base/lib/actions/setupActions'
import { GetInput } from '../../base/lib/actions/setupActions'
import { Run } from '../../base/lib/actions/setupActions'
import * as actions from '../../base/lib/actions'
import * as fs from 'node:fs/promises'
import {
setupInit,
setupUninit,
setupOnInit,
setupOnUninit,
} from '../../base/lib/inits'
import { GetContainerIp } from '../../base/lib/util/GetContainerIp'
import { GetStatus } from '../../base/lib/util/GetStatus'
import {
getOwnServiceInterface,
ServiceInterfaceFilled,
} from '../../base/lib/util/getServiceInterface'
import { getOwnServiceInterfaces } from '../../base/lib/util/getServiceInterfaces'
import { Volumes, createVolumes } from './util/Volume'
/** The minimum StartOS version required by this SDK release */ /** The minimum StartOS version required by this SDK release */
export const OSVersion = testTypeVersion('0.4.0-alpha.21') export const OSVersion = testTypeVersion('0.4.0-alpha.22')
// prettier-ignore // prettier-ignore
type AnyNeverCond<T extends any[], Then, Else> = type AnyNeverCond<T extends any[], Then, Else> =

4
web/package-lock.json generated
View File

@@ -1,12 +1,12 @@
{ {
"name": "startos-ui", "name": "startos-ui",
"version": "0.4.0-alpha.21", "version": "0.4.0-alpha.22",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "startos-ui", "name": "startos-ui",
"version": "0.4.0-alpha.21", "version": "0.4.0-alpha.22",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@angular/cdk": "^21.2.1", "@angular/cdk": "^21.2.1",

View File

@@ -1,6 +1,6 @@
{ {
"name": "startos-ui", "name": "startos-ui",
"version": "0.4.0-alpha.21", "version": "0.4.0-alpha.22",
"author": "Start9 Labs, Inc", "author": "Start9 Labs, Inc",
"homepage": "https://start9.com/", "homepage": "https://start9.com/",
"license": "MIT", "license": "MIT",