aboutsummaryrefslogtreecommitdiffstats
path: root/src/main.rs
diff options
context:
space:
mode:
authorEllie Huxtable <e@elm.sh>2021-04-13 19:14:07 +0100
committerGitHub <noreply@github.com>2021-04-13 19:14:07 +0100
commit5751463942cc91f1f1ffaf6e2ac633d7a0085f25 (patch)
treef7b5b9a4702c4c3ef29aa60d36612f61ffeae052 /src/main.rs
parentUpdate config (diff)
downloadatuin-5751463942cc91f1f1ffaf6e2ac633d7a0085f25.zip
Add history sync, resolves #13 (#31)
* Add encryption * Add login and register command * Add count endpoint * Write initial sync push * Add single sync command Confirmed working for one client only * Automatically sync on a configurable frequency * Add key command, key arg to login * Only load session if it exists * Use sync and history timestamps for download * Bind other key code Seems like some systems have this code for up arrow? I'm not sure why, and it's not an easy one to google. * Simplify upload * Try and fix download sync loop * Change sync order to avoid uploading what we just downloaded * Multiline import fix * Fix time parsing * Fix importing history with no time * Add hostname to sync * Use hostname to filter sync * Fixes * Add binding * Stuff from yesterday * Set cursor modes * Make clippy happy * Bump version
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs19
1 files changed, 11 insertions, 8 deletions
diff --git a/src/main.rs b/src/main.rs
index bac75362..ae459807 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -6,7 +6,7 @@
use std::path::PathBuf;
use eyre::{eyre, Result};
-use structopt::StructOpt;
+use structopt::{clap::AppSettings, StructOpt};
#[macro_use]
extern crate log;
@@ -30,18 +30,21 @@ use command::AtuinCmd;
use local::database::Sqlite;
use settings::Settings;
+mod api;
mod command;
mod local;
mod remote;
mod settings;
+mod utils;
pub mod schema;
#[derive(StructOpt)]
#[structopt(
author = "Ellie Huxtable <e@elm.sh>",
- version = "0.4.0",
- about = "Magical shell history"
+ version = "0.5.0",
+ about = "Magical shell history",
+ global_settings(&[AppSettings::ColoredHelp, AppSettings::DeriveDisplayOrder])
)]
struct Atuin {
#[structopt(long, parse(from_os_str), help = "db file path")]
@@ -52,9 +55,7 @@ struct Atuin {
}
impl Atuin {
- fn run(self) -> Result<()> {
- let settings = Settings::new()?;
-
+ fn run(self, settings: &Settings) -> Result<()> {
let db_path = if let Some(db_path) = self.db {
let path = db_path
.to_str()
@@ -67,11 +68,13 @@ impl Atuin {
let mut db = Sqlite::new(db_path)?;
- self.atuin.run(&mut db, &settings)
+ self.atuin.run(&mut db, settings)
}
}
fn main() -> Result<()> {
+ let settings = Settings::new()?;
+
fern::Dispatch::new()
.format(|out, message, record| {
out.finish(format_args!(
@@ -85,5 +88,5 @@ fn main() -> Result<()> {
.chain(std::io::stdout())
.apply()?;
- Atuin::from_args().run()
+ Atuin::from_args().run(&settings)
}