Shorten crate directory names and update workspace paths
Verify databases and deploy Aster VM / verify-and-deploy (push) Successful in 14m53s

This commit is contained in:
2026-10-18 19:57:21 +08:00
parent 891defb34c
commit 50e8fcb5e7
24 changed files with 15 additions and 15 deletions
+66
View File
@@ -0,0 +1,66 @@
use std::error::Error;
use std::process::ExitCode;
use aster_core::{Value, Vm};
use aster_storage::{Storage, StorageConfig};
const USAGE: &str = "Usage: aster [bootstrap | metadata put <key> <value> | metadata get <key>]";
#[tokio::main]
async fn main() -> ExitCode {
match run().await {
Ok(()) => ExitCode::SUCCESS,
Err(error) => {
eprintln!("aster: {error}");
ExitCode::FAILURE
}
}
}
async fn run() -> Result<(), Box<dyn Error>> {
let args: Vec<String> = std::env::args().skip(1).collect();
match args
.iter()
.map(String::as_str)
.collect::<Vec<_>>()
.as_slice()
{
[] | ["bootstrap"] => {
let mut vm = Vm::new()?;
let first = vm.new_object()?;
let second = vm.new_object()?;
vm.set_attr(
first,
"message",
Value::Text("Hello from EndorObject".into()),
)?;
println!("runtime=EndorObject type_system=disabled");
println!(
"objects_distinct={} heap_objects={}",
first != second,
vm.object_count()
);
vm.release(first)?;
vm.release(second)?;
println!("released heap_objects={}", vm.object_count());
println!("bootstrap is independent of host storage");
}
["help"] | ["--help"] | ["-h"] => println!("{USAGE}"),
["metadata", "put", key, value] => {
let store = Storage::connect(&StorageConfig::from_env()?).await?;
store.put(key, value).await?;
println!("stored ({})", store.backend_name());
store.close().await;
}
["metadata", "get", key] => {
let store = Storage::connect(&StorageConfig::from_env()?).await?;
println!(
"{}",
store.get(key).await?.as_deref().unwrap_or("(missing)")
);
store.close().await;
}
_ => return Err(USAGE.into()),
}
Ok(())
}