Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion src/boot_fake_node/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -311,7 +311,10 @@ pub async fn find_releases_with_asset_if_online(
fn get_local_versions_with_prefix(prefix: &str) -> Result<Vec<String>> {
let mut versions = Vec::new();

for entry in fs::read_dir(Path::new(prefix).parent().unwrap())? {
let path = Path::new(prefix)
.parent()
.ok_or_else(|| eyre!("couldnt find directory with local runtimes"))?;
for entry in fs::read_dir(&path)? {
let entry = entry?;
let path = entry.path();
if let Some(str_path) = path.to_str() {
Expand Down
10 changes: 3 additions & 7 deletions src/build/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -705,20 +705,16 @@ async fn build_wit_dir(
wit_version: Option<u32>,
) -> Result<()> {
let wit_dir = process_dir.join("target").join("wit");
if wit_dir.exists() {
fs::remove_dir_all(&wit_dir)?;
}
let wit_url = match wit_version {
None => KINODE_WIT_0_7_0_URL,
Some(0) | _ => KINODE_WIT_0_8_0_URL,
};
download_file(wit_url, &wit_dir.join("kinode.wit")).await?;
for (file_name, contents) in apis {
let destination = wit_dir.join(file_name);
if destination.exists() {
// check if contents have not changed -> no-op
let old_contents = fs::read(&destination)?;
if &old_contents == contents {
continue;
}
}
fs::write(&destination, contents)?;
}
Ok(())
Expand Down
42 changes: 21 additions & 21 deletions src/remove_package/mod.rs
Original file line number Diff line number Diff line change
@@ -1,29 +1,22 @@
use std::path::Path;
use std::process;

use color_eyre::{eyre::WrapErr, Result};
use fs_err as fs;
use color_eyre::{eyre::eyre, Result};
use tracing::{info, instrument};

use kinode_process_lib::kernel_types::Erc721Metadata;

use crate::build::read_metadata;
use crate::inject_message;

#[instrument(level = "trace", skip_all)]
pub async fn execute(
project_dir: &Path,
package_dir: &Path,
url: &str,
arg_package_name: Option<&str>,
arg_publisher: Option<&str>,
) -> Result<()> {
let (package_name, publisher): (String, String) = match (arg_package_name, arg_publisher) {
(Some(package_name), Some(publisher)) => (package_name.into(), publisher.into()),
_ => {
let metadata: Erc721Metadata = serde_json::from_reader(fs::File::open(
project_dir.join("metadata.json")
)
.wrap_err_with(|| "Missing required metadata.json file. See discussion at https://book.kinode.org/my_first_app/chapter_1.html?highlight=metadata.json#metadatajson")?
)?;
let metadata = read_metadata(package_dir)?;
let package_name = metadata.properties.package_name.as_str();
let publisher = metadata.properties.publisher.as_str();
(package_name.into(), publisher.into())
Expand All @@ -32,9 +25,7 @@ pub async fn execute(

// Create and send uninstall request
let body = serde_json::json!({
"Uninstall": {
"package_id": {"package_name": package_name, "publisher_node": publisher},
}
"Uninstall": {"package_name": package_name, "publisher_node": publisher},
});
let uninstall_request = inject_message::make_message(
"main:app_store:sys",
Expand All @@ -45,14 +36,23 @@ pub async fn execute(
None,
)?;
let response = inject_message::send_request(url, uninstall_request).await?;
if response.status() != 200 {
process::exit(1);
}
let inject_message::Response { ref body, .. } =
inject_message::parse_response(response).await?;
let body = serde_json::from_str::<serde_json::Value>(body)?;

info!(
"Successfully removed package {}:{} on node at {}",
package_name, publisher, url
);
let uninstall_response = body.get("UninstallResponse");

if uninstall_response == Some(&serde_json::Value::String("Success".to_string())) {
info!(
"Successfully removed package {}:{} on node at {}",
package_name, publisher, url
);
} else {
return Err(eyre!(
"Failed to remove package. Got response from node: {}",
body
));
}

Ok(())
}
8 changes: 2 additions & 6 deletions src/start_package/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -37,16 +37,14 @@ fn new_package(
#[instrument(level = "trace", skip_all)]
fn install(
node: Option<&str>,
package_name: &str,
publisher_node: &str,
hash_string: &str,
metadata: &Erc721Metadata,
) -> Result<serde_json::Value> {
let body = json!({
"Install": {
"package_id": {
"package_name": package_name,
"publisher_node": publisher_node,
"package_name": metadata.properties.package_name,
"publisher_node": metadata.properties.publisher,
},
"version_hash": hash_string,
"metadata": {
Expand Down Expand Up @@ -150,8 +148,6 @@ pub async fn execute(package_dir: &Path, url: &str) -> Result<()> {

let install_request = install(
None,
package_name,
publisher,
&hash_string,
&metadata,
)?;
Expand Down