server unarchive when starting
This commit is contained in:
@ -4,15 +4,12 @@ use clap::{Command, ArgMatches};
|
||||
use diesel::{SelectableHelper};
|
||||
use diesel::result::Error::NotFound;
|
||||
|
||||
use crate::models::Servers;
|
||||
use crate::status::ServerStatus;
|
||||
use crate::{DbPool, schema, models};
|
||||
|
||||
use diesel::prelude::*;
|
||||
|
||||
use crate::srvmgr;
|
||||
|
||||
use async_process;
|
||||
use crate::srvmgr::{self, archive_server};
|
||||
|
||||
pub fn create_subcommand() -> Command {
|
||||
Command::new("archive")
|
||||
@ -48,22 +45,3 @@ pub async fn subcommand(arguments: &ArgMatches, pool: &DbPool, docker: &Docker)
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub async fn archive_server(server: &Servers, pool: &DbPool) -> Result<(), String> {
|
||||
use schema::servers::dsl::*;
|
||||
let conn = &mut pool.get().unwrap();
|
||||
|
||||
let config = crate::Config::load();
|
||||
|
||||
diesel::update(servers).filter(name.eq(&server.name)).set(status.eq(ServerStatus::Archiving)).execute(conn).map_err(|e| format!("Failed to set the server as archiving :{}", e))?;
|
||||
|
||||
println!("Starting compression (this might take a while)");
|
||||
|
||||
let cmd = format!("cd {} && tar cf /dev/stdout {} | lrzip - -Q -o {}.tar.lrz", config.config_path, server.name, server.name);
|
||||
|
||||
let _ = async_process::Command::new("sh").arg("-c").arg(cmd).output().await.map_err(|e| format!("compression failed : {}", e))?;
|
||||
|
||||
std::fs::remove_dir_all(config.config_path.to_owned() + "/" + &server.name).map_err(|e| format!("Failed to delete server directory: {}", e))?;
|
||||
|
||||
diesel::update(servers).filter(name.eq(&server.name)).set(status.eq(ServerStatus::Archived)).execute(conn).map_err(|e| format!("Failed to set the server as achived :{}", e))?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user