fix or silence most warnings

This commit is contained in:
nobody 2024-08-19 03:19:59 +02:00 committed by murmeldin
parent 12501c8c73
commit 8bc7405d63

View file

@ -30,6 +30,8 @@ future improvements:
- search ADJ_TIMEYWIMEY to find places that need adjusting if the bot might run late - search ADJ_TIMEYWIMEY to find places that need adjusting if the bot might run late
(that's an incomplete list, but tag things as you notice them) (that's an incomplete list, but tag things as you notice them)
*/ */
#![allow(dead_code)] // ≈100 warnings for yet-to-be-used stuff…
#![allow(unused_macros)]
use chrono::{Datelike, Local, NaiveDate, Weekday}; use chrono::{Datelike, Local, NaiveDate, Weekday};
use clap::{Arg, Command}; use clap::{Arg, Command};
@ -38,6 +40,8 @@ use regex::Regex;
use std::borrow::Cow; use std::borrow::Cow;
use std::env; use std::env;
use std::error::Error; use std::error::Error;
use std::fmt::Display;
use std::io::IsTerminal;
mod key_value; mod key_value;
use key_value::KeyValueStore as KV; use key_value::KeyValueStore as KV;
@ -235,6 +239,9 @@ fn parse_args() -> Args {
/* ***** Main ***** */ /* ***** Main ***** */
fn main() -> Result<(), Box<dyn Error>> { fn main() -> Result<(), Box<dyn Error>> {
if std::io::stdout().is_terminal() {
println!(include_str!("chaosknoten.txt"), VERSION = env!("CARGO_PKG_VERSION"));
}
// set up config file access // set up config file access
let args = parse_args(); let args = parse_args();
trace_var!(args); trace_var!(args);
@ -242,8 +249,8 @@ fn main() -> Result<(), Box<dyn Error>> {
verboseln!("Using config file {}.", config_file.cyan()); verboseln!("Using config file {}.", config_file.cyan());
let config = KV::new(config_file).unwrap(); let config = KV::new(config_file).unwrap();
config_spec::populate_defaults(&CONFIG_SPEC, &config); config_spec::populate_defaults(&CONFIG_SPEC, &config);
// select mode
if args.check_mode { if args.check_mode {
println!(include_str!("chaosknoten.txt"), VERSION = env!("CARGO_PKG_VERSION"));
return config_spec::interactive_check(&CONFIG_SPEC, config); return config_spec::interactive_check(&CONFIG_SPEC, config);
} }
// get config // get config
@ -280,7 +287,8 @@ fn main() -> Result<(), Box<dyn Error>> {
let mut last_state = ProgramState::parse(&config["state-name"]); let mut last_state = ProgramState::parse(&config["state-name"]);
let last_run = config.get("state-last-run").unwrap_or_default(); let last_run = config.get("state-last-run").unwrap_or_default();
let last_run = NaiveDate::parse_from_str(&last_run, "%Y-%m-%d").unwrap_or_default(); let last_run = NaiveDate::parse_from_str(&last_run, "%Y-%m-%d").unwrap_or_default();
// figure out where we should be trace_var!(last_run);
// reset state if this hasn't been run for too long
if (today - last_run).num_days() > 10 { if (today - last_run).num_days() > 10 {
if !matches!(last_state, ProgramState::Normal) { if !matches!(last_state, ProgramState::Normal) {
eprintln!("WARNING: last run was a long time ago, resetting state."); eprintln!("WARNING: last run was a long time ago, resetting state.");
@ -289,6 +297,7 @@ fn main() -> Result<(), Box<dyn Error>> {
} }
} }
let last_state = last_state; let last_state = last_state;
// figure out where we should be
// deltas has either 2 or 3 days, if 3 then the middle one is == 0 (i.e. today) // deltas has either 2 or 3 days, if 3 then the middle one is == 0 (i.e. today)
let deltas: Vec<i64> = nearest_plenum_days.iter().map(|&d| (d - today).num_days()).collect(); let deltas: Vec<i64> = nearest_plenum_days.iter().map(|&d| (d - today).num_days()).collect();
// find the relevant one: // find the relevant one:
@ -327,7 +336,7 @@ fn main() -> Result<(), Box<dyn Error>> {
verboseln!("Soll-Zustand: {}", intended_state.to_string().cyan()); verboseln!("Soll-Zustand: {}", intended_state.to_string().cyan());
let action: &ST = &TRANSITION_LUT[last_state as usize][intended_state as usize]; let action: &ST = &TRANSITION_LUT[last_state as usize][intended_state as usize];
trace_var!(action); verboseln!("Notewendige Aktionen: {}", action.to_string().cyan());
action.get()(delta, &plenum_day, &config, &hedgedoc, &email, &wiki)?; action.get()(delta, &plenum_day, &config, &hedgedoc, &email, &wiki)?;
// TODO: cleanup / write new state // TODO: cleanup / write new state
@ -338,6 +347,14 @@ fn main() -> Result<(), Box<dyn Error>> {
return Ok(()); return Ok(());
} }
/* ** dead code beyond this point ** */
let _ = (); // dummy line so linter doesn't highlight the entire following block
#[allow(unused_variables)]
#[rustfmt::skip]
{
// Dienstage diesen Monat // Dienstage diesen Monat
let all_tuesdays: Vec<NaiveDate> = get_all_weekdays(0, Weekday::Tue); let all_tuesdays: Vec<NaiveDate> = get_all_weekdays(0, Weekday::Tue);
let zweiter_dienstag: String = all_tuesdays[1].to_string(); // z.B. 2024-07-09 let zweiter_dienstag: String = all_tuesdays[1].to_string(); // z.B. 2024-07-09
@ -506,6 +523,8 @@ Und hier ist das Protokoll des letzten Plenums:
"matrix-password", "matrix-password",
]) ])
.ok(); .ok();
};
Ok(())
} }
fn get_all_weekdays(month_offset: i32, week_day: Weekday) -> Vec<NaiveDate> { fn get_all_weekdays(month_offset: i32, week_day: Weekday) -> Vec<NaiveDate> {
@ -573,7 +592,7 @@ fn generate_new_pad_for_following_date(
übernächster_plenumtermin, übernächster_plenumtermin,
überübernächster_plenumtermin, überübernächster_plenumtermin,
) )
.unwrap_or_else(|error| template_content); // Try regex, if not successful use without regex .unwrap_or(template_content); // Try regex, if not successful use without regex
match hedgedoc.import_note(Some(&pad_id), template_modified) { match hedgedoc.import_note(Some(&pad_id), template_modified) {
Ok(_) => { Ok(_) => {
@ -652,6 +671,7 @@ fn upper_first(s: &str) -> String {
// BBBBBBBBBB // BBBBBBBBBB
#[allow(unused_variables)]
fn do_announcement( fn do_announcement(
ttp: i64, plenum_day: &NaiveDate, config: &KV, hedgedoc: &HedgeDoc, email: &SimpleEmail, ttp: i64, plenum_day: &NaiveDate, config: &KV, hedgedoc: &HedgeDoc, email: &SimpleEmail,
wiki: &Mediawiki, wiki: &Mediawiki,
@ -660,6 +680,7 @@ fn do_announcement(
todo!() todo!()
} }
#[allow(unused_variables)]
fn do_reminder( fn do_reminder(
ttp: i64, plenum_day: &NaiveDate, config: &KV, hedgedoc: &HedgeDoc, email: &SimpleEmail, ttp: i64, plenum_day: &NaiveDate, config: &KV, hedgedoc: &HedgeDoc, email: &SimpleEmail,
wiki: &Mediawiki, wiki: &Mediawiki,
@ -668,6 +689,7 @@ fn do_reminder(
todo!() todo!()
} }
#[allow(unused_variables)]
fn do_protocol( fn do_protocol(
ttp: i64, plenum_day: &NaiveDate, config: &KV, hedgedoc: &HedgeDoc, email: &SimpleEmail, ttp: i64, plenum_day: &NaiveDate, config: &KV, hedgedoc: &HedgeDoc, email: &SimpleEmail,
wiki: &Mediawiki, wiki: &Mediawiki,
@ -678,6 +700,7 @@ fn do_protocol(
/// General cleanup function. Call as `(999, today, …)` for a complete reset /// General cleanup function. Call as `(999, today, …)` for a complete reset
/// based on today as the base date. /// based on today as the base date.
#[allow(unused_variables)]
fn do_cleanup( fn do_cleanup(
ttp: i64, plenum_day: &NaiveDate, config: &KV, hedgedoc: &HedgeDoc, email: &SimpleEmail, ttp: i64, plenum_day: &NaiveDate, config: &KV, hedgedoc: &HedgeDoc, email: &SimpleEmail,
wiki: &Mediawiki, wiki: &Mediawiki,
@ -732,6 +755,12 @@ impl ST {
} }
} }
impl Display for ST {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{:?}", self)
}
}
fn nop( fn nop(
_: i64, _: &NaiveDate, _: &KV, _: &HedgeDoc, _: &SimpleEmail, _: &Mediawiki, _: i64, _: &NaiveDate, _: &KV, _: &HedgeDoc, _: &SimpleEmail, _: &Mediawiki,
) -> Result<(), Box<dyn Error>> { ) -> Result<(), Box<dyn Error>> {
@ -816,14 +845,7 @@ impl ProgramState {
impl std::fmt::Display for ProgramState { impl std::fmt::Display for ProgramState {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
let str = match self { write!(f, "{:?}", self)
ProgramState::Normal => "Normal",
ProgramState::Announced => "Announced",
ProgramState::Reminded => "Reminded",
ProgramState::Waiting => "Waiting",
ProgramState::Logged => "Logged",
};
write!(f, "{}", str)
} }
} }