Skip to content

Commit c33c428

Browse files
Gabriel Alvesdavidbtadokoro
authored andcommitted
feat: add entry in "Edit Config" for max log age
There is a config called max_log_age for determining how long logs produced by patch-hub will live on the user fs (the app cleans them at start-up using this value). This commit adds an entry in the "Edit Config" screen for it. Closes: #72 [Maintainer edits] - Add indication that 0 means that logs lives forever. Signed-off-by: gabrielsrd <[email protected]> Reviewed-by: David Tadokoro <[email protected]> Signed-off-by: David Tadokoro <[email protected]>
1 parent 324d0df commit c33c428

File tree

3 files changed

+26
-0
lines changed

3 files changed

+26
-0
lines changed

src/app.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,9 @@ impl App {
247247
if let Ok(patch_renderer) = edit_config.extract_patch_renderer() {
248248
self.config.set_patch_renderer(patch_renderer.into())
249249
}
250+
if let Ok(max_log_age) = edit_config.max_log_age() {
251+
self.config.set_max_log_age(max_log_age)
252+
}
250253
}
251254
}
252255

src/app/config.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,10 @@ impl Config {
144144
self.patch_renderer = patch_renderer;
145145
}
146146

147+
pub fn set_max_log_age(&mut self, max_log_age: usize) {
148+
self.max_log_age = max_log_age;
149+
}
150+
147151
pub fn save_patch_hub_config(&self) -> io::Result<()> {
148152
let config_path = if let Ok(path) = env::var("PATCH_HUB_CONFIG_PATH") {
149153
path

src/app/screens/edit_config.rs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ impl EditConfigState {
2727
EditableConfig::PatchRenderer,
2828
config.patch_renderer().to_string(),
2929
);
30+
config_buffer.insert(EditableConfig::MaxLogAge, config.max_log_age().to_string());
3031

3132
EditConfigState {
3233
config_buffer,
@@ -170,6 +171,21 @@ impl EditConfigState {
170171
let patch_renderer = self.extract_config_buffer_val(&EditableConfig::PatchRenderer);
171172
Ok(patch_renderer)
172173
}
174+
175+
/// Extracts the max log age from the config
176+
///
177+
/// # Errors
178+
///
179+
/// Returns an error if the max log age inserted string is not a valid integer
180+
pub fn max_log_age(&mut self) -> Result<usize, ()> {
181+
match self
182+
.extract_config_buffer_val(&EditableConfig::MaxLogAge)
183+
.parse::<usize>()
184+
{
185+
Ok(value) => Ok(value),
186+
Err(_) => Err(()),
187+
}
188+
}
173189
}
174190

175191
#[derive(Debug, Hash, Eq, PartialEq)]
@@ -179,6 +195,7 @@ enum EditableConfig {
179195
DataDir,
180196
GitSendEmailOpt,
181197
PatchRenderer,
198+
MaxLogAge,
182199
}
183200

184201
impl TryFrom<usize> for EditableConfig {
@@ -191,6 +208,7 @@ impl TryFrom<usize> for EditableConfig {
191208
2 => Ok(EditableConfig::DataDir),
192209
3 => Ok(EditableConfig::GitSendEmailOpt),
193210
4 => Ok(EditableConfig::PatchRenderer),
211+
5 => Ok(EditableConfig::MaxLogAge),
194212
_ => bail!("Invalid index {} for EditableConfig", value), // Handle out of bounds
195213
}
196214
}
@@ -206,6 +224,7 @@ impl Display for EditableConfig {
206224
write!(f, "Patch Renderer (bat, delta, diff-so-fancy)")
207225
}
208226
EditableConfig::GitSendEmailOpt => write!(f, "`git send email` option"),
227+
EditableConfig::MaxLogAge => write!(f, "Max Log Age (0 = forever)"),
209228
}
210229
}
211230
}

0 commit comments

Comments
 (0)