forked from kemitix/git-next
feat: return better errors to the user on init
This commit is contained in:
parent
03ae9153b4
commit
9a9c73d929
6 changed files with 33 additions and 45 deletions
|
@ -80,6 +80,7 @@ derive_more = { version = "1.0.0-beta.6", features = [
|
|||
"from",
|
||||
] }
|
||||
derive-with = "0.5"
|
||||
anyhow = "1.0"
|
||||
thiserror = "1.0"
|
||||
pike = "0.1"
|
||||
|
||||
|
|
|
@ -50,6 +50,7 @@ actix-rt = { workspace = true }
|
|||
# boilerplate
|
||||
derive_more = { workspace = true }
|
||||
derive-with = { workspace = true }
|
||||
anyhow = { workspace = true }
|
||||
thiserror = { workspace = true }
|
||||
|
||||
# Webhooks
|
||||
|
|
|
@ -1,29 +1,18 @@
|
|||
//
|
||||
use anyhow::{Context, Result};
|
||||
use kxio::fs::FileSystem;
|
||||
|
||||
pub fn run(fs: FileSystem) {
|
||||
let file_name = ".git-next.toml";
|
||||
let pathbuf = fs.base().join(file_name);
|
||||
match fs.path_exists(&pathbuf) {
|
||||
Ok(exists) => {
|
||||
if exists {
|
||||
eprintln!(
|
||||
"The configuration file already exists at {} - not overwritting it.",
|
||||
file_name
|
||||
);
|
||||
} else {
|
||||
match fs.file_write(&pathbuf, include_str!("../default.toml")) {
|
||||
Ok(_) => {
|
||||
println!("Created a default configuration file at {}", file_name);
|
||||
}
|
||||
Err(e) => {
|
||||
eprintln!("Failed to write to the configuration file: {}", e)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Err(err) => {
|
||||
eprintln!("Could not check if file exist: {} - {err:?}", file_name);
|
||||
}
|
||||
pub fn run(fs: FileSystem) -> Result<()> {
|
||||
let pathbuf = fs.base().join(".git-next.toml");
|
||||
if fs
|
||||
.path_exists(&pathbuf)
|
||||
.with_context(|| format!("Checking for existing file: {pathbuf:?}"))?
|
||||
{
|
||||
eprintln!("The configuration file already exists at {pathbuf:?} - not overwritting it.",);
|
||||
} else {
|
||||
fs.file_write(&pathbuf, include_str!("../default.toml"))
|
||||
.with_context(|| format!("Writing file: {pathbuf:?}"))?;
|
||||
println!("Created a default configuration file at {pathbuf:?}");
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
|
|
@ -13,6 +13,7 @@ use git_next_core::git;
|
|||
|
||||
use std::path::PathBuf;
|
||||
|
||||
use anyhow::Result;
|
||||
use clap::Parser;
|
||||
use kxio::{fs, network::Network};
|
||||
|
||||
|
@ -34,7 +35,7 @@ enum Server {
|
|||
Start,
|
||||
}
|
||||
|
||||
fn main() {
|
||||
fn main() -> Result<()> {
|
||||
let fs = fs::new(PathBuf::default());
|
||||
let net = Network::new_real();
|
||||
let repository_factory = git::repository::factory::real();
|
||||
|
@ -42,11 +43,11 @@ fn main() {
|
|||
|
||||
match commands.command {
|
||||
Command::Init => {
|
||||
init::run(fs);
|
||||
init::run(fs)?;
|
||||
}
|
||||
Command::Server(server) => match server {
|
||||
Server::Init => {
|
||||
server::init(fs);
|
||||
server::init(fs)?;
|
||||
}
|
||||
Server::Start => {
|
||||
let sleep_duration = std::time::Duration::from_secs(10);
|
||||
|
@ -54,4 +55,5 @@ fn main() {
|
|||
}
|
||||
},
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
|
|
@ -10,31 +10,26 @@ use crate::file_watcher::{watch_file, FileUpdated};
|
|||
use actor::ServerActor;
|
||||
use git_next_core::git::RepositoryFactory;
|
||||
|
||||
use anyhow::{Context, Result};
|
||||
use kxio::{fs::FileSystem, network::Network};
|
||||
use tracing::info;
|
||||
|
||||
use std::path::PathBuf;
|
||||
|
||||
pub fn init(fs: FileSystem) {
|
||||
pub fn init(fs: FileSystem) -> Result<()> {
|
||||
let file_name = "git-next-server.toml";
|
||||
let pathbuf = PathBuf::from(file_name);
|
||||
let Ok(exists) = fs.path_exists(&pathbuf) else {
|
||||
eprintln!("Could not check if file exist: {}", file_name);
|
||||
return;
|
||||
};
|
||||
if exists {
|
||||
eprintln!(
|
||||
"The configuration file already exists at {} - not overwritting it.",
|
||||
file_name
|
||||
);
|
||||
if fs
|
||||
.path_exists(&pathbuf)
|
||||
.with_context(|| format!("Checking for existing file: {pathbuf:?}"))?
|
||||
{
|
||||
eprintln!("The configuration file already exists at {pathbuf:?} - not overwritting it.",);
|
||||
} else {
|
||||
match fs.file_write(&pathbuf, include_str!("server-default.toml")) {
|
||||
Ok(_) => println!("Created a default configuration file at {}", file_name),
|
||||
Err(e) => {
|
||||
eprintln!("Failed to write to the configuration file: {}", e)
|
||||
}
|
||||
}
|
||||
fs.file_write(&pathbuf, include_str!("server-default.toml"))
|
||||
.with_context(|| format!("Writing file: {pathbuf:?}"))?;
|
||||
println!("Created a default configuration file at {pathbuf:?}",);
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn start(
|
||||
|
|
|
@ -8,7 +8,7 @@ mod init {
|
|||
let file = fs.base().join(".git-next.toml");
|
||||
fs.file_write(&file, "contents")?;
|
||||
|
||||
crate::init::run(fs.clone());
|
||||
crate::init::run(fs.clone())?;
|
||||
|
||||
assert_eq!(
|
||||
fs.file_read_to_string(&file)?,
|
||||
|
@ -23,7 +23,7 @@ mod init {
|
|||
fn should_create_default_file_if_not_exists() -> TestResult {
|
||||
let fs = kxio::fs::temp()?;
|
||||
|
||||
crate::init::run(fs.clone());
|
||||
crate::init::run(fs.clone())?;
|
||||
|
||||
let file = fs.base().join(".git-next.toml");
|
||||
|
||||
|
|
Loading…
Reference in a new issue