diff --git a/backend/Cargo.lock b/backend/Cargo.lock index 2cabc9371..95f92bef2 100644 --- a/backend/Cargo.lock +++ b/backend/Cargo.lock @@ -1354,7 +1354,7 @@ dependencies = [ [[package]] name = "embassy-os" -version = "0.3.4-rev.2" +version = "0.3.4-rev.3" dependencies = [ "aes", "async-compression", diff --git a/backend/Cargo.toml b/backend/Cargo.toml index 8406337d8..5f7e4cc90 100644 --- a/backend/Cargo.toml +++ b/backend/Cargo.toml @@ -14,7 +14,7 @@ keywords = [ name = "embassy-os" readme = "README.md" repository = "https://github.com/Start9Labs/start-os" -version = "0.3.4-rev.2" +version = "0.3.4-rev.3" [lib] name = "embassy" diff --git a/backend/src/procedure/js_scripts.rs b/backend/src/procedure/js_scripts.rs index 3128f4213..3494806b3 100644 --- a/backend/src/procedure/js_scripts.rs +++ b/backend/src/procedure/js_scripts.rs @@ -690,3 +690,49 @@ async fn js_rsync() { .unwrap() .unwrap(); } + +#[tokio::test] +async fn js_disk_usage() { + let js_action = JsProcedure { args: vec![] }; + let path: PathBuf = "test/js_action_execute/" + .parse::() + .unwrap() + .canonicalize() + .unwrap(); + let package_id = "test-package".parse().unwrap(); + let package_version: Version = "0.3.0.3".parse().unwrap(); + let name = ProcedureName::Action("test-disk-usage".parse().unwrap()); + let volumes: Volumes = serde_json::from_value(serde_json::json!({ + "main": { + "type": "data" + }, + "compat": { + "type": "assets" + }, + "filebrowser" :{ + "package-id": "filebrowser", + "path": "data", + "readonly": true, + "type": "pointer", + "volume-id": "main", + } + })) + .unwrap(); + let input: Option = None; + let timeout = Some(Duration::from_secs(10)); + dbg!(js_action + .execute::( + &path, + &package_id, + &package_version, + name, + &volumes, + input, + timeout, + ProcessGroupId(0), + None, + ) + .await + .unwrap() + .unwrap()); +} diff --git a/backend/src/system.rs b/backend/src/system.rs index fee405e22..4f9499e63 100644 --- a/backend/src/system.rs +++ b/backend/src/system.rs @@ -32,7 +32,7 @@ pub async fn experimental() -> Result<(), Error> { #[command(display(display_none))] pub async fn zram(#[context] ctx: RpcContext, #[arg] enable: bool) -> Result<(), Error> { let mut db = ctx.db.handle(); - let zram = crate::db::DatabaseModel::new() + let mut zram = crate::db::DatabaseModel::new() .server_info() .zram() .get_mut(&mut db) @@ -74,6 +74,7 @@ pub async fn zram(#[context] ctx: RpcContext, #[arg] enable: bool) -> Result<(), .await .with_kind(ErrorKind::Zram)?; } + zram.save(&mut db).await?; Ok(()) } diff --git a/backend/src/version/mod.rs b/backend/src/version/mod.rs index 0d8af4163..7425e522f 100644 --- a/backend/src/version/mod.rs +++ b/backend/src/version/mod.rs @@ -22,8 +22,9 @@ mod v0_3_3; mod v0_3_4; mod v0_3_4_1; mod v0_3_4_2; +mod v0_3_4_3; -pub type Current = v0_3_4_2::Version; +pub type Current = v0_3_4_3::Version; #[derive(serde::Serialize, serde::Deserialize, Debug, Clone)] #[serde(untagged)] @@ -41,6 +42,7 @@ enum Version { V0_3_4(Wrapper), V0_3_4_1(Wrapper), V0_3_4_2(Wrapper), + V0_3_4_3(Wrapper), Other(emver::Version), } @@ -69,6 +71,7 @@ impl Version { Version::V0_3_4(Wrapper(x)) => x.semver(), Version::V0_3_4_1(Wrapper(x)) => x.semver(), Version::V0_3_4_2(Wrapper(x)) => x.semver(), + Version::V0_3_4_3(Wrapper(x)) => x.semver(), Version::Other(x) => x.clone(), } } @@ -258,6 +261,10 @@ pub async fn init( v.0.migrate_to(&Current::new(), db, secrets, receipts) .await? } + Version::V0_3_4_3(v) => { + v.0.migrate_to(&Current::new(), db, secrets, receipts) + .await? + } Version::Other(_) => { return Err(Error::new( eyre!("Cannot downgrade"), @@ -303,6 +310,7 @@ mod tests { Just(Version::V0_3_4(Wrapper(v0_3_4::Version::new()))), Just(Version::V0_3_4_1(Wrapper(v0_3_4_1::Version::new()))), Just(Version::V0_3_4_2(Wrapper(v0_3_4_2::Version::new()))), + Just(Version::V0_3_4_3(Wrapper(v0_3_4_3::Version::new()))), em_version().prop_map(Version::Other), ] } diff --git a/backend/src/version/v0_3_4_3.rs b/backend/src/version/v0_3_4_3.rs new file mode 100644 index 000000000..814ca3cc1 --- /dev/null +++ b/backend/src/version/v0_3_4_3.rs @@ -0,0 +1,36 @@ +use async_trait::async_trait; +use emver::VersionRange; + +use super::v0_3_0::V0_3_0_COMPAT; +use super::*; + +const V0_3_4_3: emver::Version = emver::Version::new(0, 3, 4, 3); + +#[derive(Clone, Debug)] +pub struct Version; + +#[async_trait] +impl VersionT for Version { + type Previous = v0_3_4_2::Version; + fn new() -> Self { + Version + } + fn semver(&self) -> emver::Version { + V0_3_4_3 + } + fn compat(&self) -> &'static VersionRange { + &*V0_3_0_COMPAT + } + async fn up(&self, db: &mut Db, _secrets: &PgPool) -> Result<(), Error> { + crate::db::DatabaseModel::new() + .server_info() + .get_mut(db) + .await? + .save(db) + .await?; + Ok(()) + } + async fn down(&self, _db: &mut Db, _secrets: &PgPool) -> Result<(), Error> { + Ok(()) + } +} diff --git a/backend/test/js_action_execute/package-data/scripts/test-package/0.3.0.3/embassy.js b/backend/test/js_action_execute/package-data/scripts/test-package/0.3.0.3/embassy.js index 5a4b9d0e7..769750ae4 100644 --- a/backend/test/js_action_execute/package-data/scripts/test-package/0.3.0.3/embassy.js +++ b/backend/test/js_action_execute/package-data/scripts/test-package/0.3.0.3/embassy.js @@ -1039,4 +1039,9 @@ export const action = { } }, + async "test-disk-usage"(effects, _input) { + const usage = await effects.diskUsage() + return usage + } + }; diff --git a/system-images/compat/Cargo.lock b/system-images/compat/Cargo.lock index 2ad4711bc..6f3e60289 100644 --- a/system-images/compat/Cargo.lock +++ b/system-images/compat/Cargo.lock @@ -1171,7 +1171,7 @@ dependencies = [ [[package]] name = "embassy-os" -version = "0.3.4-rev.2" +version = "0.3.4-rev.3" dependencies = [ "aes", "async-compression",