Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add commands to print the default configuration #1241

Merged
merged 4 commits into from
Oct 12, 2023
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions CONTRIBUTORS
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ Satyarth Sampath <satyarth.23@gmail.com>
Simon Elsbrock <simon@iodev.org>
Steve Kemp <steve@steve.org.uk>
Steven Xu
Tobias Genannt <tobias.genannt@gmail.com>
Tobias Hunger <tobias.hunger@gmail.com>
Tom Cammann <cammann.tom@gmail.com>
Trygve Aaberge <trygveaa@gmail.com>
Expand Down
23 changes: 22 additions & 1 deletion atuin-client/config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
## how often to sync history. note that this is only triggered when a command
## is ran, so sync intervals may well be longer
## set it to 0 to sync after every command
# sync_frequency = "1h"
# sync_frequency = "10m"

## which search mode to use
## possible values: prefix, fulltext, fuzzy, skim
Expand Down Expand Up @@ -102,3 +102,24 @@
# cwd_filter = [
# "^/very/secret/area"
# ]

## Configure the maximum height of the preview to show.
## Useful when you have long scripts in your history that you want to distinguish
## by more than the first few lines.
# max_preview_height = 4

## Configure whether or not to show the help row, which includes the current Atuin
## version (and whether an update is available), a keymap hint, and the total
## amount of commands in your history.
# show_help = true

## Invert the UI - put the search bar at the top
# invert = false

## Defaults to true. This matches history against a set of default regex, and will not save it if we get a match. Defaults include
## 1. AWS key id
## 2. Github pat (old and new)
## 3. Slack oauth tokens (bot, user)
## 4. Slack webhooks
## 5. Stripe live/test keys
# secrets_filter = true
8 changes: 6 additions & 2 deletions atuin-client/src/settings.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ pub const LAST_SYNC_FILENAME: &str = "last_sync_time";
pub const LAST_VERSION_CHECK_FILENAME: &str = "last_version_check_time";
pub const LATEST_VERSION_FILENAME: &str = "latest_version";
pub const HOST_ID_FILENAME: &str = "host_id";
static EXAMPLE_CONFIG: &str = include_str!("../config.toml");

#[derive(Clone, Debug, Deserialize, Copy, ValueEnum, PartialEq)]
pub enum SearchMode {
Expand Down Expand Up @@ -410,9 +411,8 @@ impl Settings {
FileFormat::Toml,
))
} else {
let example_config = include_bytes!("../config.toml");
let mut file = File::create(config_file).wrap_err("could not create config file")?;
file.write_all(example_config)
file.write_all(EXAMPLE_CONFIG.as_bytes())
.wrap_err("could not write default config file")?;

config_builder
Expand Down Expand Up @@ -446,6 +446,10 @@ impl Settings {

Ok(settings)
}

pub fn example_config() -> &'static str {
EXAMPLE_CONFIG
}
}

impl Default for Settings {
Expand Down
13 changes: 13 additions & 0 deletions atuin-server/server.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,16 @@

## URI for postgres (using development creds here)
# db_uri="postgres://username:password@localhost/atuin"

## Maximum size for one history entry
# max_history_length = 8192

## Maximum size for one record entry
## 1024 * 1024 * 1024
# max_record_size = 1073741824

## Webhook to be called when user registers on the servers
# register_webhook_username = ""

## Default page size for requests
# page_size = 1100
1 change: 1 addition & 0 deletions atuin-server/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ mod router;
mod settings;
mod utils;

pub use settings::example_config;
pub use settings::Settings;
use tokio::signal;

Expand Down
9 changes: 7 additions & 2 deletions atuin-server/src/settings.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ use eyre::{eyre, Result};
use fs_err::{create_dir_all, File};
use serde::{de::DeserializeOwned, Deserialize, Serialize};

static EXAMPLE_CONFIG: &str = include_str!("../server.toml");

#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct Settings<DbSettings> {
pub host: String,
Expand Down Expand Up @@ -56,10 +58,9 @@ impl<DbSettings: DeserializeOwned> Settings<DbSettings> {
FileFormat::Toml,
))
} else {
let example_config = include_bytes!("../server.toml");
create_dir_all(config_file.parent().unwrap())?;
let mut file = File::create(config_file)?;
file.write_all(example_config)?;
file.write_all(EXAMPLE_CONFIG.as_bytes())?;

config_builder
};
Expand All @@ -71,3 +72,7 @@ impl<DbSettings: DeserializeOwned> Settings<DbSettings> {
.map_err(|e| eyre!("failed to deserialize: {}", e))
}
}

pub fn example_config() -> &'static str {
EXAMPLE_CONFIG
}
10 changes: 10 additions & 0 deletions atuin/src/command/client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ mod sync;
#[cfg(feature = "sync")]
mod account;

mod config;
mod history;
mod import;
mod kv;
Expand Down Expand Up @@ -44,6 +45,10 @@ pub enum Cmd {

#[command(subcommand)]
Kv(kv::Cmd),

/// Print example configuration
#[command()]
DefaultConfig,
}

impl Cmd {
Expand Down Expand Up @@ -75,6 +80,11 @@ impl Cmd {
Self::Account(account) => account.run(settings).await,

Self::Kv(kv) => kv.run(&settings, &mut store).await,

Self::DefaultConfig => {
config::run();
Ok(())
}
}
}
}
5 changes: 5 additions & 0 deletions atuin/src/command/client/config.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
use atuin_client::settings::Settings;

pub fn run() {
println!("{}", Settings::example_config());
}
12 changes: 9 additions & 3 deletions atuin/src/command/server.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ use tracing_subscriber::{fmt, prelude::*, EnvFilter};
use clap::Parser;
use eyre::{Context, Result};

use atuin_server::{launch, Settings};
use atuin_server::{example_config, launch, Settings};

#[derive(Parser)]
#[clap(infer_subcommands = true)]
Expand All @@ -19,6 +19,9 @@ pub enum Cmd {
#[clap(long, short)]
port: Option<u16>,
},

/// Print server example configuration
DefaultConfig,
}

impl Cmd {
Expand All @@ -29,17 +32,20 @@ impl Cmd {
.with(EnvFilter::from_default_env())
.init();

let settings = Settings::new().wrap_err("could not load server settings")?;

match self {
Self::Start { host, port } => {
let settings = Settings::new().wrap_err("could not load server settings")?;
let host = host
.as_ref()
.map_or(settings.host.clone(), std::string::ToString::to_string);
let port = port.map_or(settings.port, |p| p);

launch::<Postgres>(settings, host, port).await
}
Self::DefaultConfig => {
println!("{}", example_config());
Ok(())
}
}
}
}