personal fork of atuin without AI stuff, sync stuff, script management stuff
0

Configure Feed

Select the types of activity you want to include in your feed.

ignore JetBrains IDEs, tidy-up imports (#348)

* ignore JB IDEs

* tidy-up imports

* add rustfmt config

+128 -116
+3
.gitignore
··· 1 1 /target 2 2 */target 3 3 .env 4 + 5 + # JetBrains IDEs 6 + .idea/
+4
.rustfmt.toml
··· 1 + reorder_imports = true 2 + # uncomment once stable 3 + #imports_granularity = "crate" 4 + #group_imports = "StdExternalCrate"
+9 -5
atuin-client/src/api_client.rs
··· 2 2 3 3 use chrono::Utc; 4 4 use eyre::{bail, Result}; 5 - use reqwest::header::{HeaderMap, AUTHORIZATION, USER_AGENT}; 6 - use reqwest::{StatusCode, Url}; 5 + use reqwest::{ 6 + header::{HeaderMap, AUTHORIZATION, USER_AGENT}, 7 + StatusCode, Url, 8 + }; 7 9 use sodiumoxide::crypto::secretbox; 8 10 9 11 use atuin_common::api::{ ··· 11 13 SyncHistoryResponse, 12 14 }; 13 15 14 - use crate::encryption::{decode_key, decrypt}; 15 - use crate::history::History; 16 - use crate::sync::hash_str; 16 + use crate::{ 17 + encryption::{decode_key, decrypt}, 18 + history::History, 19 + sync::hash_str, 20 + }; 17 21 18 22 static APP_USER_AGENT: &str = concat!("atuin/", env!("CARGO_PKG_VERSION"),); 19 23
+7 -8
atuin-client/src/database.rs
··· 1 - use std::env; 2 - use std::path::Path; 3 - use std::str::FromStr; 1 + use std::{env, path::Path, str::FromStr}; 4 2 5 3 use async_trait::async_trait; 6 - use chrono::prelude::*; 7 - use chrono::Utc; 4 + use chrono::{prelude::*, Utc}; 8 5 use fs_err as fs; 9 6 use itertools::Itertools; 10 7 use lazy_static::lazy_static; ··· 15 12 Result, Row, 16 13 }; 17 14 18 - use super::history::History; 19 - use super::ordering; 20 - use super::settings::{FilterMode, SearchMode}; 15 + use super::{ 16 + history::History, 17 + ordering, 18 + settings::{FilterMode, SearchMode}, 19 + }; 21 20 22 21 pub struct Context { 23 22 session: String,
+4 -6
atuin-client/src/encryption.rs
··· 8 8 // clients must share the secret in order to be able to sync, as it is needed 9 9 // to decrypt 10 10 11 - use fs_err as fs; 12 - use serde::{Deserialize, Serialize}; 13 - use std::io::prelude::*; 14 - use std::path::PathBuf; 11 + use std::{io::prelude::*, path::PathBuf}; 15 12 16 13 use eyre::{eyre, Context, Result}; 14 + use fs_err as fs; 15 + use serde::{Deserialize, Serialize}; 17 16 use sodiumoxide::crypto::secretbox; 18 17 19 - use crate::history::History; 20 - use crate::settings::Settings; 18 + use crate::{history::History, settings::Settings}; 21 19 22 20 #[derive(Debug, Serialize, Deserialize)] 23 21 pub struct EncryptedHistory {
+1 -1
atuin-client/src/history.rs
··· 1 1 use std::env; 2 2 3 3 use chrono::Utc; 4 + use serde::{Deserialize, Serialize}; 4 5 5 6 use atuin_common::utils::uuid_v4; 6 - use serde::{Deserialize, Serialize}; 7 7 8 8 // Any new fields MUST be Optional<>! 9 9 #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, sqlx::FromRow)]
+1 -2
atuin-client/src/import/fish.rs
··· 7 7 path::{Path, PathBuf}, 8 8 }; 9 9 10 - use chrono::prelude::*; 11 - use chrono::Utc; 10 + use chrono::{prelude::*, Utc}; 12 11 use directories::BaseDirs; 13 12 use eyre::{eyre, Result}; 14 13
+4 -2
atuin-client/src/import/mod.rs
··· 1 - use std::io::{BufRead, BufReader, Read, Seek, SeekFrom}; 2 - use std::path::{Path, PathBuf}; 1 + use std::{ 2 + io::{BufRead, BufReader, Read, Seek, SeekFrom}, 3 + path::{Path, PathBuf}, 4 + }; 3 5 4 6 use eyre::Result; 5 7
+2 -1
atuin-client/src/import/resh.rs
··· 4 4 path::{Path, PathBuf}, 5 5 }; 6 6 7 - use atuin_common::utils::uuid_v4; 8 7 use chrono::{TimeZone, Utc}; 9 8 use directories::UserDirs; 10 9 use eyre::{eyre, Result}; 11 10 use serde::Deserialize; 11 + 12 + use atuin_common::utils::uuid_v4; 12 13 13 14 use super::{count_lines, Importer}; 14 15 use crate::history::History;
+1 -2
atuin-client/src/import/zsh.rs
··· 7 7 path::{Path, PathBuf}, 8 8 }; 9 9 10 - use chrono::prelude::*; 11 - use chrono::Utc; 10 + use chrono::{prelude::*, Utc}; 12 11 use directories::UserDirs; 13 12 use eyre::{eyre, Result}; 14 13 use itertools::Itertools;
+2 -2
atuin-client/src/ordering.rs
··· 1 - use super::history::History; 2 - use super::settings::SearchMode; 3 1 use minspan::minspan; 2 + 3 + use super::{history::History, settings::SearchMode}; 4 4 5 5 pub fn reorder_fuzzy(mode: SearchMode, query: &str, res: Vec<History>) -> Vec<History> { 6 6 match mode {
+7 -6
atuin-client/src/settings.rs
··· 1 - use fs_err::{create_dir_all, File}; 2 - use serde::Deserialize; 3 - use std::io::prelude::*; 4 - use std::path::{Path, PathBuf}; 1 + use std::{ 2 + io::prelude::*, 3 + path::{Path, PathBuf}, 4 + }; 5 5 6 - use chrono::prelude::*; 7 - use chrono::Utc; 6 + use chrono::{prelude::*, Utc}; 8 7 use config::{Config, Environment, File as ConfigFile, FileFormat}; 9 8 use eyre::{eyre, Context, Result}; 9 + use fs_err::{create_dir_all, File}; 10 10 use parse_duration::parse; 11 + use serde::Deserialize; 11 12 12 13 pub const HISTORY_PAGE_SIZE: i64 = 100; 13 14
+6 -4
atuin-client/src/sync.rs
··· 5 5 6 6 use atuin_common::api::AddHistoryRequest; 7 7 8 - use crate::api_client; 9 - use crate::database::Database; 10 - use crate::encryption::{encrypt, load_encoded_key, load_key}; 11 - use crate::settings::{Settings, HISTORY_PAGE_SIZE}; 8 + use crate::{ 9 + api_client, 10 + database::Database, 11 + encryption::{encrypt, load_encoded_key, load_key}, 12 + settings::{Settings, HISTORY_PAGE_SIZE}, 13 + }; 12 14 13 15 pub fn hash_str(string: &str) -> String { 14 16 use sha2::{Digest, Sha256};
+8 -8
atuin-server/src/database.rs
··· 1 - use async_trait::async_trait; 2 1 use std::collections::HashMap; 3 - use tracing::{debug, instrument}; 4 2 3 + use async_trait::async_trait; 4 + use chrono::{Datelike, TimeZone}; 5 + use chronoutil::RelativeDuration; 5 6 use sqlx::{postgres::PgPoolOptions, Result}; 7 + use tracing::{debug, instrument}; 6 8 9 + use super::{ 10 + calendar::{TimePeriod, TimePeriodInfo}, 11 + models::{History, NewHistory, NewSession, NewUser, Session, User}, 12 + }; 7 13 use crate::settings::HISTORY_PAGE_SIZE; 8 - 9 - use super::calendar::{TimePeriod, TimePeriodInfo}; 10 - use super::models::{History, NewHistory, NewSession, NewUser, Session, User}; 11 - 12 - use chrono::{Datelike, TimeZone}; 13 - use chronoutil::RelativeDuration; 14 14 15 15 use atuin_common::utils::get_days_from_month; 16 16
+13 -9
atuin-server/src/handlers/history.rs
··· 1 - use axum::extract::Query; 2 - use axum::{extract::Path, Extension, Json}; 3 - use http::StatusCode; 4 1 use std::collections::HashMap; 5 - use tracing::{debug, error, instrument}; 6 2 7 - use crate::database::{Database, Postgres}; 8 - use crate::models::{NewHistory, User}; 9 - use atuin_common::api::*; 10 - 11 - use crate::calendar::{TimePeriod, TimePeriodInfo}; 3 + use axum::{ 4 + extract::{Path, Query}, 5 + Extension, Json, 6 + }; 7 + use http::StatusCode; 8 + use tracing::{debug, error, instrument}; 12 9 13 10 use super::{ErrorResponse, ErrorResponseStatus}; 11 + use crate::{ 12 + calendar::{TimePeriod, TimePeriodInfo}, 13 + database::{Database, Postgres}, 14 + models::{NewHistory, User}, 15 + }; 16 + 17 + use atuin_common::api::*; 14 18 15 19 #[instrument(skip_all, fields(user.id = user.id))] 16 20 pub async fn count(
+2 -1
atuin-server/src/handlers/mod.rs
··· 1 + use std::borrow::Cow; 2 + 1 3 use axum::{response::IntoResponse, Json}; 2 4 use serde::{Deserialize, Serialize}; 3 - use std::borrow::Cow; 4 5 5 6 pub mod history; 6 7 pub mod user;
+8 -7
atuin-server/src/handlers/user.rs
··· 1 1 use std::borrow::Borrow; 2 2 3 - use atuin_common::api::*; 4 - use axum::extract::Path; 5 - use axum::{Extension, Json}; 3 + use axum::{extract::Path, Extension, Json}; 6 4 use http::StatusCode; 7 5 use sodiumoxide::crypto::pwhash::argon2id13; 8 6 use tracing::{debug, error, instrument}; 9 7 use uuid::Uuid; 10 8 11 - use crate::database::{Database, Postgres}; 12 - use crate::models::{NewSession, NewUser}; 13 - use crate::settings::Settings; 9 + use super::{ErrorResponse, ErrorResponseStatus}; 10 + use crate::{ 11 + database::{Database, Postgres}, 12 + models::{NewSession, NewUser}, 13 + settings::Settings, 14 + }; 14 15 15 - use super::{ErrorResponse, ErrorResponseStatus}; 16 + use atuin_common::api::*; 16 17 17 18 pub fn verify_str(secret: &str, verify: &str) -> bool { 18 19 sodiumoxide::init().unwrap();
+3 -4
atuin-server/src/settings.rs
··· 1 - use fs_err::{create_dir_all, File}; 2 - use serde::{Deserialize, Serialize}; 3 - use std::io::prelude::*; 4 - use std::path::PathBuf; 1 + use std::{io::prelude::*, path::PathBuf}; 5 2 6 3 use config::{Config, Environment, File as ConfigFile, FileFormat}; 7 4 use eyre::{eyre, Result}; 5 + use fs_err::{create_dir_all, File}; 6 + use serde::{Deserialize, Serialize}; 8 7 9 8 pub const HISTORY_PAGE_SIZE: i64 = 100; 10 9
+5 -8
src/command/client.rs
··· 1 - use clap::CommandFactory; 2 - use clap::Subcommand; 3 - use clap_complete::Shell; 4 - use clap_complete::{generate, generate_to}; 1 + use std::path::PathBuf; 2 + 3 + use clap::{CommandFactory, Subcommand}; 4 + use clap_complete::{generate, generate_to, Shell}; 5 5 use eyre::{Result, WrapErr}; 6 6 7 - use atuin_client::database::Sqlite; 8 - use atuin_client::settings::Settings; 7 + use atuin_client::{database::Sqlite, settings::Settings}; 9 8 use atuin_common::utils::uuid_v4; 10 9 11 10 #[cfg(feature = "sync")] ··· 17 16 mod init; 18 17 mod search; 19 18 mod stats; 20 - 21 - use std::path::PathBuf; 22 19 23 20 #[derive(Subcommand)] 24 21 #[clap(infer_subcommands = true)]
+2 -4
src/command/client/event.rs
··· 1 - use std::thread; 2 - use std::time::Duration; 1 + use std::{thread, time::Duration}; 3 2 4 3 use crossbeam_channel::unbounded; 5 - use termion::event::Key; 6 - use termion::input::TermRead; 4 + use termion::{event::Key, input::TermRead}; 7 5 8 6 pub enum Event<I> { 9 7 Input(I),
+10 -6
src/command/client/history.rs
··· 1 - use std::env; 2 - use std::io::{StdoutLock, Write}; 3 - use std::time::Duration; 1 + use std::{ 2 + env, 3 + io::{StdoutLock, Write}, 4 + time::Duration, 5 + }; 4 6 5 7 use clap::Subcommand; 6 8 use eyre::Result; 7 9 8 - use atuin_client::database::{current_context, Database}; 9 - use atuin_client::history::History; 10 - use atuin_client::settings::Settings; 10 + use atuin_client::{ 11 + database::{current_context, Database}, 12 + history::History, 13 + settings::Settings, 14 + }; 11 15 12 16 #[cfg(feature = "sync")] 13 17 use atuin_client::sync;
+6 -5
src/command/client/import.rs
··· 1 1 use std::{env, path::PathBuf}; 2 2 3 - use atuin_client::import::fish::Fish; 4 3 use clap::Parser; 5 4 use eyre::{eyre, Result}; 5 + use indicatif::ProgressBar; 6 6 7 - use atuin_client::import::{bash::Bash, zsh::Zsh}; 8 - use atuin_client::{database::Database, import::Importer}; 9 - use atuin_client::{history::History, import::resh::Resh}; 10 - use indicatif::ProgressBar; 7 + use atuin_client::{ 8 + database::Database, 9 + history::History, 10 + import::{bash::Bash, fish::Fish, resh::Resh, zsh::Zsh, Importer}, 11 + }; 11 12 12 13 #[derive(Parser)] 13 14 #[clap(infer_subcommands = true)]
+6 -4
src/command/client/search.rs
··· 1 + use std::{env, io::stdout, ops::Sub, time::Duration}; 2 + 1 3 use chrono::Utc; 2 4 use clap::Parser; 3 5 use eyre::Result; 4 - use std::env; 5 - use std::{io::stdout, ops::Sub, time::Duration}; 6 6 use termion::{event::Key, input::MouseTerminal, raw::IntoRawMode, screen::AlternateScreen}; 7 7 use tui::{ 8 8 backend::{Backend, TermionBackend}, ··· 22 22 settings::{FilterMode, SearchMode, Settings}, 23 23 }; 24 24 25 - use super::event::{Event, Events}; 26 - use super::history::ListMode; 25 + use super::{ 26 + event::{Event, Events}, 27 + history::ListMode, 28 + }; 27 29 28 30 const VERSION: &str = env!("CARGO_PKG_VERSION"); 29 31
+6 -6
src/command/client/stats.rs
··· 1 1 use std::collections::HashMap; 2 2 3 - use chrono::prelude::*; 4 - use chrono::Duration; 3 + use chrono::{prelude::*, Duration}; 5 4 use chrono_english::parse_date_string; 6 - 7 5 use clap::Parser; 8 6 use cli_table::{format::Justify, print_stdout, Cell, Style, Table}; 9 7 use eyre::{bail, Result}; 10 8 11 - use atuin_client::database::{current_context, Database}; 12 - use atuin_client::history::History; 13 - use atuin_client::settings::{FilterMode, Settings}; 9 + use atuin_client::{ 10 + database::{current_context, Database}, 11 + history::History, 12 + settings::{FilterMode, Settings}, 13 + }; 14 14 15 15 #[derive(Parser)] 16 16 #[clap(infer_subcommands = true)]
+1 -2
src/command/client/sync.rs
··· 1 - use atuin_client::database::Database; 2 1 use clap::Subcommand; 3 2 use eyre::{Result, WrapErr}; 4 3 5 - use atuin_client::settings::Settings; 4 + use atuin_client::{database::Database, settings::Settings}; 6 5 7 6 mod login; 8 7 mod logout;
+3 -5
src/command/client/sync/login.rs
··· 1 1 use std::io; 2 2 3 - use atuin_common::api::LoginRequest; 4 - use clap::AppSettings; 5 - use clap::Parser; 3 + use clap::{AppSettings, Parser}; 6 4 use eyre::Result; 7 5 use tokio::{fs::File, io::AsyncWriteExt}; 8 6 9 - use atuin_client::api_client; 10 - use atuin_client::settings::Settings; 7 + use atuin_client::{api_client, settings::Settings}; 8 + use atuin_common::api::LoginRequest; 11 9 12 10 #[derive(Parser)] 13 11 #[clap(setting(AppSettings::DeriveDisplayOrder))]
+2 -4
src/command/client/sync/register.rs
··· 1 - use clap::AppSettings; 2 - use clap::Parser; 1 + use clap::{AppSettings, Parser}; 3 2 use eyre::Result; 4 3 use tokio::{fs::File, io::AsyncWriteExt}; 5 4 6 - use atuin_client::api_client; 7 - use atuin_client::settings::Settings; 5 + use atuin_client::{api_client, settings::Settings}; 8 6 9 7 #[derive(Parser)] 10 8 #[clap(setting(AppSettings::DeriveDisplayOrder))]
+1 -2
src/command/server.rs
··· 3 3 use clap::Parser; 4 4 use eyre::{Context, Result}; 5 5 6 - use atuin_server::launch; 7 - use atuin_server::settings::Settings; 6 + use atuin_server::{launch, settings::Settings}; 8 7 9 8 #[derive(Parser)] 10 9 #[clap(infer_subcommands = true)]
+1 -2
src/main.rs
··· 1 1 #![warn(clippy::pedantic, clippy::nursery)] 2 2 #![allow(clippy::use_self)] // not 100% reliable 3 3 4 - use clap::AppSettings; 5 - use clap::Parser; 4 + use clap::{AppSettings, Parser}; 6 5 use eyre::Result; 7 6 8 7 #[macro_use]