Set logging to output to file as well
This commit is contained in:
parent
270c138419
commit
ce043d670e
78
Cargo.lock
generated
78
Cargo.lock
generated
@ -90,6 +90,7 @@ version = "0.1.0"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"clap",
|
"clap",
|
||||||
|
"dirs",
|
||||||
"envconfig",
|
"envconfig",
|
||||||
"git2",
|
"git2",
|
||||||
"log",
|
"log",
|
||||||
@ -99,6 +100,26 @@ dependencies = [
|
|||||||
"walkdir",
|
"walkdir",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "dirs"
|
||||||
|
version = "4.0.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059"
|
||||||
|
dependencies = [
|
||||||
|
"dirs-sys",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "dirs-sys"
|
||||||
|
version = "0.3.7"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6"
|
||||||
|
dependencies = [
|
||||||
|
"libc",
|
||||||
|
"redox_users",
|
||||||
|
"winapi",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "envconfig"
|
name = "envconfig"
|
||||||
version = "0.10.0"
|
version = "0.10.0"
|
||||||
@ -129,6 +150,17 @@ dependencies = [
|
|||||||
"percent-encoding",
|
"percent-encoding",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "getrandom"
|
||||||
|
version = "0.2.7"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if",
|
||||||
|
"libc",
|
||||||
|
"wasi",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "git2"
|
name = "git2"
|
||||||
version = "0.15.0"
|
version = "0.15.0"
|
||||||
@ -322,6 +354,26 @@ dependencies = [
|
|||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "redox_syscall"
|
||||||
|
version = "0.2.16"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
|
||||||
|
dependencies = [
|
||||||
|
"bitflags",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "redox_users"
|
||||||
|
version = "0.4.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b"
|
||||||
|
dependencies = [
|
||||||
|
"getrandom",
|
||||||
|
"redox_syscall",
|
||||||
|
"thiserror",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ryu"
|
name = "ryu"
|
||||||
version = "1.0.11"
|
version = "1.0.11"
|
||||||
@ -413,6 +465,26 @@ version = "0.15.0"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b1141d4d61095b28419e22cb0bbf02755f5e54e0526f97f1e3d1d160e60885fb"
|
checksum = "b1141d4d61095b28419e22cb0bbf02755f5e54e0526f97f1e3d1d160e60885fb"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "thiserror"
|
||||||
|
version = "1.0.32"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f5f6586b7f764adc0231f4c79be7b920e766bb2f3e51b3661cdb263828f19994"
|
||||||
|
dependencies = [
|
||||||
|
"thiserror-impl",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "thiserror-impl"
|
||||||
|
version = "1.0.32"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "12bafc5b54507e0149cdf1b145a5d80ab80a90bcd9275df43d4fff68460f6c21"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "time"
|
name = "time"
|
||||||
version = "0.3.13"
|
version = "0.3.13"
|
||||||
@ -518,6 +590,12 @@ dependencies = [
|
|||||||
"winapi-util",
|
"winapi-util",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wasi"
|
||||||
|
version = "0.11.0+wasi-snapshot-preview1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "winapi"
|
name = "winapi"
|
||||||
version = "0.3.9"
|
version = "0.3.9"
|
||||||
|
5
\
5
\
@ -1,5 +0,0 @@
|
|||||||
#[derive(Debug)]
|
|
||||||
pub struct CuddleContext {
|
|
||||||
pub plan: CuddlePlan,
|
|
||||||
pub path: PathBuf,
|
|
||||||
}
|
|
@ -15,3 +15,4 @@ clap = "3.2.16"
|
|||||||
envconfig = "0.10.0"
|
envconfig = "0.10.0"
|
||||||
log = { version = "0.4.17", features = ["kv_unstable", "serde", "std"] }
|
log = { version = "0.4.17", features = ["kv_unstable", "serde", "std"] }
|
||||||
simplelog = "0.12.0"
|
simplelog = "0.12.0"
|
||||||
|
dirs = "4.0.0"
|
||||||
|
@ -5,11 +5,12 @@ use std::{
|
|||||||
|
|
||||||
pub struct ShellAction {
|
pub struct ShellAction {
|
||||||
path: String,
|
path: String,
|
||||||
|
name: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ShellAction {
|
impl ShellAction {
|
||||||
pub fn new(path: String) -> Self {
|
pub fn new(name: String, path: String) -> Self {
|
||||||
Self { path }
|
Self { path, name }
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn execute(self) -> anyhow::Result<()> {
|
pub fn execute(self) -> anyhow::Result<()> {
|
||||||
@ -17,6 +18,7 @@ impl ShellAction {
|
|||||||
|
|
||||||
log::info!(
|
log::info!(
|
||||||
"
|
"
|
||||||
|
|
||||||
===
|
===
|
||||||
Starting running shell action: {}
|
Starting running shell action: {}
|
||||||
===
|
===
|
||||||
@ -35,7 +37,7 @@ Starting running shell action: {}
|
|||||||
let stdout_reader = BufReader::new(stdout);
|
let stdout_reader = BufReader::new(stdout);
|
||||||
let mut stdout_lines = stdout_reader.lines();
|
let mut stdout_lines = stdout_reader.lines();
|
||||||
while let Some(Ok(line)) = stdout_lines.next() {
|
while let Some(Ok(line)) = stdout_lines.next() {
|
||||||
log::info!("{}", line)
|
log::info!(process=log::as_display!(self.name); "{}", line)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -43,6 +45,7 @@ Starting running shell action: {}
|
|||||||
|
|
||||||
log::info!(
|
log::info!(
|
||||||
"
|
"
|
||||||
|
|
||||||
===
|
===
|
||||||
Finished running shell action
|
Finished running shell action
|
||||||
===
|
===
|
||||||
|
@ -24,13 +24,16 @@ impl CuddleAction {
|
|||||||
pub fn execute(self) {
|
pub fn execute(self) {
|
||||||
match self.script {
|
match self.script {
|
||||||
CuddleScript::Shell(_s) => {
|
CuddleScript::Shell(_s) => {
|
||||||
match actions::shell::ShellAction::new(format!(
|
match actions::shell::ShellAction::new(
|
||||||
|
self.name.clone(),
|
||||||
|
format!(
|
||||||
"{}/scripts/{}.sh",
|
"{}/scripts/{}.sh",
|
||||||
self.path
|
self.path
|
||||||
.to_str()
|
.to_str()
|
||||||
.expect("action doesn't have a name, this should never happen"),
|
.expect("action doesn't have a name, this should never happen"),
|
||||||
self.name
|
self.name
|
||||||
))
|
),
|
||||||
|
)
|
||||||
.execute()
|
.execute()
|
||||||
{
|
{
|
||||||
Ok(()) => {}
|
Ok(()) => {}
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
|
use std::fs::File;
|
||||||
|
|
||||||
use config::CuddleConfig;
|
use config::CuddleConfig;
|
||||||
use simplelog::{ColorChoice, Config, TermLogger, TerminalMode};
|
use simplelog::{ColorChoice, CombinedLogger, Config, TermLogger, TerminalMode, WriteLogger};
|
||||||
|
|
||||||
mod actions;
|
mod actions;
|
||||||
mod cli;
|
mod cli;
|
||||||
@ -8,14 +10,7 @@ mod context;
|
|||||||
mod model;
|
mod model;
|
||||||
|
|
||||||
fn main() -> anyhow::Result<()> {
|
fn main() -> anyhow::Result<()> {
|
||||||
TermLogger::init(
|
init_logging()?;
|
||||||
log::LevelFilter::Info,
|
|
||||||
Config::default(),
|
|
||||||
TerminalMode::Mixed,
|
|
||||||
ColorChoice::Auto,
|
|
||||||
)?;
|
|
||||||
|
|
||||||
log::set_max_level(log::LevelFilter::Info);
|
|
||||||
|
|
||||||
let config = CuddleConfig::from_env()?;
|
let config = CuddleConfig::from_env()?;
|
||||||
|
|
||||||
@ -24,3 +19,24 @@ fn main() -> anyhow::Result<()> {
|
|||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn init_logging() -> anyhow::Result<()> {
|
||||||
|
let mut log_file = dirs::state_dir().ok_or(anyhow::anyhow!("could not find state_dir"))?;
|
||||||
|
log_file.push("cuddle_cli.log");
|
||||||
|
|
||||||
|
CombinedLogger::init(vec![
|
||||||
|
TermLogger::new(
|
||||||
|
log::LevelFilter::Info,
|
||||||
|
Config::default(),
|
||||||
|
TerminalMode::Mixed,
|
||||||
|
ColorChoice::Auto,
|
||||||
|
),
|
||||||
|
WriteLogger::new(
|
||||||
|
log::LevelFilter::Debug,
|
||||||
|
Config::default(),
|
||||||
|
File::create(log_file).unwrap(),
|
||||||
|
),
|
||||||
|
])?;
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user