new state() function
- now, it is possible to use e.g. STATE_OVERRIDE=Waiting to override the state - this is useful for development in order to ignore parts of the config.sqlite
This commit is contained in:
		
							parent
							
								
									b04d35ee6b
								
							
						
					
					
						commit
						aca180d6ba
					
				
					 3 changed files with 19 additions and 9 deletions
				
			
		
							
								
								
									
										3
									
								
								architecture.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								architecture.md
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,3 @@ | |||
| # Architecture | ||||
| 
 | ||||
| This document is intended to explain how the Plenum Bot works. | ||||
							
								
								
									
										21
									
								
								src/main.rs
									
										
									
									
									
								
							
							
						
						
									
										21
									
								
								src/main.rs
									
										
									
									
									
								
							|  | @ -2,6 +2,9 @@ | |||
| 
 | ||||
| use std::env; | ||||
| use std::error::Error; | ||||
| use std::fmt::Display; | ||||
| use std::io::IsTerminal; | ||||
| use std::os::linux::raw::stat; | ||||
| use std::time::Instant; | ||||
| 
 | ||||
| use chrono::{Local, NaiveDate}; | ||||
|  | @ -9,18 +12,14 @@ use clap::{Arg, Command}; | |||
| use colored::Colorize; | ||||
| use regex::Regex; | ||||
| 
 | ||||
| use std::fmt::Display; | ||||
| use std::io::IsTerminal; | ||||
| 
 | ||||
| use cccron_lib::{trace_var, trace_var_, verboseln}; | ||||
| use cccron_lib::config_spec::{self, CfgField, CfgGroup, CfgSpec}; | ||||
| use cccron_lib::key_value::KeyValueStore as KV; | ||||
| 
 | ||||
| use cccron_lib::date; | ||||
| use cccron_lib::email::{self, Email, SimpleEmail}; | ||||
| use cccron_lib::hedgedoc::{self, HedgeDoc}; | ||||
| use cccron_lib::is_dry_run; | ||||
| use cccron_lib::key_value::{KeyValueStore as KV, KeyValueStore}; | ||||
| use cccron_lib::mediawiki::{self, Mediawiki}; | ||||
| use cccron_lib::{verboseln,trace_var,trace_var_}; | ||||
| use cccron_lib::NYI; | ||||
| 
 | ||||
| /* ***** Config Spec ***** */ | ||||
|  | @ -93,6 +92,14 @@ fn today() -> NaiveDate { | |||
|         .map(|v| NaiveDate::parse_from_str(&v, "%F").expect("'TODAY' hat nicht format YYYY-MM-DD")) | ||||
|         .unwrap_or(Local::now().date_naive()) | ||||
| } | ||||
| /// Gets either the state from the config or overrides it with the state from
 | ||||
| /// the environment variable `STATE_OVERRIDE` (for testing purposes.)
 | ||||
| fn state(config: &KeyValueStore) -> ProgramState { | ||||
|     match env::var("STATE_OVERRIDE") { | ||||
|         Ok(val) => ProgramState::parse(&val), | ||||
|         Err(_e) => ProgramState::parse(&config["state-name"]) | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| #[derive(Debug)] | ||||
| struct Args { | ||||
|  | @ -182,7 +189,7 @@ fn main() -> Result<(), Box<dyn Error>> { | |||
|     let nearest_plenum_days = date::get_matching_dates_around(today, plenum_spec); | ||||
|     trace_var!(nearest_plenum_days); | ||||
|     // figure out where we are
 | ||||
|     let mut last_state = ProgramState::parse(&config["state-name"]); | ||||
|     let mut last_state = state(&config); | ||||
|     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(); | ||||
|     trace_var!(last_run); | ||||
|  |  | |||
|  | @ -6,8 +6,8 @@ use reqwest::blocking::Client; | |||
| use serde::Deserialize; | ||||
| use serde_json::json; | ||||
| 
 | ||||
| use crate::config_spec::{CfgField, CfgGroup}; | ||||
| use crate::{trace_var, verboseln}; | ||||
| use crate::config_spec::{CfgField, CfgGroup}; | ||||
| 
 | ||||
| pub const CONFIG: CfgGroup<'static> = CfgGroup { | ||||
|     name: "wiki", | ||||
|  | @ -284,7 +284,7 @@ pub fn pad_ins_wiki(old_pad_content: String, wiki: &Mediawiki) -> Result<(), Box | |||
| fn pandoc_convert(markdown: String) -> Result<String, Box<dyn Error>> { | ||||
|     let (output, errors, status) = crate::pipe( | ||||
|         "pandoc", | ||||
|         &mut ["--from", "markdown", "--to", "mediawiki", "--no-highlight"], | ||||
|         &mut ["--from", "markdown-auto_identifiers", "--to", "mediawiki", "--no-highlight"], | ||||
|         markdown, | ||||
|     )?; | ||||
|     if status.success() { | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 murmeldin
						murmeldin