Writing the writer.toml to a folder when running init.
This commit is contained in:
parent
5f82d7a469
commit
933387eb6f
@ -0,0 +1,3 @@
|
|||||||
|
mod runner;
|
||||||
|
|
||||||
|
pub(crate) use runner::init_writer_folder;
|
25
src/command/init/runner.rs
Normal file
25
src/command/init/runner.rs
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
use std::fs::File;
|
||||||
|
use std::io::Write;
|
||||||
|
|
||||||
|
use crate::cli::parameters::InitArgs;
|
||||||
|
use crate::config::Config;
|
||||||
|
|
||||||
|
pub(crate) async fn init_writer_folder(args: &InitArgs) -> Result<(), Box<dyn std::error::Error>> {
|
||||||
|
let new_config = Config::default();
|
||||||
|
if args.path.exists() && !args.path.is_dir() {
|
||||||
|
return Err("The supplied path exists but is not a directory. Aborting.".into());
|
||||||
|
}
|
||||||
|
|
||||||
|
if !args.path.exists() {
|
||||||
|
std::fs::create_dir_all(&args.path)?;
|
||||||
|
}
|
||||||
|
|
||||||
|
let existing_entries = std::fs::read_dir(&args.path)?;
|
||||||
|
if existing_entries.count() != 0 {
|
||||||
|
return Err("The directory is not empty. Aborting.".into());
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut config_file = File::create(args.path.join("writer.toml"))?;
|
||||||
|
config_file.write_all(toml::to_string(&new_config)?.as_bytes())?;
|
||||||
|
Ok(())
|
||||||
|
}
|
@ -6,3 +6,8 @@ use serde::Serialize;
|
|||||||
pub(crate) struct Config {
|
pub(crate) struct Config {
|
||||||
foo: String,
|
foo: String,
|
||||||
}
|
}
|
||||||
|
impl Default for Config {
|
||||||
|
fn default() -> Self {
|
||||||
|
Config { foo: "".to_owned() }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -4,6 +4,7 @@ use clap::Parser;
|
|||||||
|
|
||||||
use self::cli::parameters::Cli;
|
use self::cli::parameters::Cli;
|
||||||
use self::cli::parameters::Commands;
|
use self::cli::parameters::Commands;
|
||||||
|
use self::command::init::init_writer_folder;
|
||||||
mod cli;
|
mod cli;
|
||||||
mod command;
|
mod command;
|
||||||
mod config;
|
mod config;
|
||||||
@ -19,7 +20,9 @@ fn main() -> Result<ExitCode, Box<dyn std::error::Error>> {
|
|||||||
async fn main_body() -> Result<ExitCode, Box<dyn std::error::Error>> {
|
async fn main_body() -> Result<ExitCode, Box<dyn std::error::Error>> {
|
||||||
let args = Cli::parse();
|
let args = Cli::parse();
|
||||||
match args.command {
|
match args.command {
|
||||||
Commands::Init(_args) => {}
|
Commands::Init(args) => {
|
||||||
|
init_writer_folder(&args).await?;
|
||||||
|
}
|
||||||
Commands::Build(_args) => {}
|
Commands::Build(_args) => {}
|
||||||
Commands::AddPost(_args) => {}
|
Commands::AddPost(_args) => {}
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user