add some docs
This commit is contained in:
parent
d777694118
commit
433afd364f
17
README.md
Normal file
17
README.md
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
Simple planet like planet venus but in rust and maintained.
|
||||||
|
|
||||||
|
Please see the rustdoc of main.rs for further information.
|
||||||
|
|
||||||
|
## todo
|
||||||
|
|
||||||
|
* use a nice lib to process the config file
|
||||||
|
* should check whether dirs exists and are writeable
|
||||||
|
* should check whether feed urls can be parsed
|
||||||
|
|
||||||
|
## Credits
|
||||||
|
|
||||||
|
While writing this, I read and also copied code from:
|
||||||
|
|
||||||
|
* [agro](https://docs.rs/crate/agro/0.1.1)
|
||||||
|
* [hades](https://github.com/kitallis/hades)
|
||||||
|
* [planetrs](https://github.com/djc/planetrs)
|
15
README.org
15
README.org
@ -1,15 +0,0 @@
|
|||||||
Simple planet like planet venus but in rust and maintained.
|
|
||||||
|
|
||||||
** todo
|
|
||||||
Also see todos in the source files
|
|
||||||
|
|
||||||
*** use a nice lib to process the config file
|
|
||||||
- should check whether dirs exists and are writeable
|
|
||||||
- should check whether feed urls can be parsed
|
|
||||||
** Credits
|
|
||||||
|
|
||||||
While writing this, I read and also copied code from:
|
|
||||||
|
|
||||||
- [[https://docs.rs/crate/agro/0.1.1][agro]]
|
|
||||||
- [[https://github.com/kitallis/hades][haded]] by Akshay Gupta
|
|
||||||
- [[https://github.com/djc/planetrs][planetrs]] by Vagdish/Adau, Dirkjan Ochtman, Josh Matthews
|
|
@ -13,6 +13,7 @@ use ureq::http::Response;
|
|||||||
use ureq::Body;
|
use ureq::Body;
|
||||||
use url::Url;
|
use url::Url;
|
||||||
|
|
||||||
|
/// How many feed entries should be included in the planet
|
||||||
const ENTRIES_LEN: usize = 10;
|
const ENTRIES_LEN: usize = 10;
|
||||||
|
|
||||||
#[derive(Deserialize, Serialize, Default)]
|
#[derive(Deserialize, Serialize, Default)]
|
||||||
|
29
src/main.rs
29
src/main.rs
@ -1,3 +1,25 @@
|
|||||||
|
//! Planet software to aggregate many feeds into one
|
||||||
|
//!
|
||||||
|
//! Input feeds are defined in a toml config file given as cmdline
|
||||||
|
//! argument. See the [`Config`] struct and the mars.toml.example file.
|
||||||
|
//!
|
||||||
|
//! The program iterates over all [feed urls], fetches them, stores them in
|
||||||
|
//! [feed_dir] and only rebuilds when at least one feed has updates. The
|
||||||
|
//! fetcher implements HTTP ETag and LastModified caching.
|
||||||
|
//!
|
||||||
|
//! During rebuild, all files in [templates_dir] are processed and written to
|
||||||
|
//! [out_dir].
|
||||||
|
//!
|
||||||
|
//! The software is supposed to be run like every 15 minutes.
|
||||||
|
//!
|
||||||
|
//! Use a reserved (sub)domain to publish the planet! Although this software
|
||||||
|
//! tries to sanitize input feeds, there could still be bugs that open the
|
||||||
|
//! planets domain to cross-site attacks.
|
||||||
|
//!
|
||||||
|
//! [templates_dir]: Config#structfield.templates_dir
|
||||||
|
//! [feed_dir]: Config#structfield.feed_dir
|
||||||
|
//! [out_dir]: Config#structfield.out_dir
|
||||||
|
//! [feed urls]: Config#structfield.feeds
|
||||||
#[macro_use]
|
#[macro_use]
|
||||||
extern crate log;
|
extern crate log;
|
||||||
|
|
||||||
@ -18,6 +40,7 @@ mod template_engine;
|
|||||||
#[derive(Parser)]
|
#[derive(Parser)]
|
||||||
#[command(author, version, about, long_about = None)]
|
#[command(author, version, about, long_about = None)]
|
||||||
struct Args {
|
struct Args {
|
||||||
|
/// config file in toml format
|
||||||
#[arg(
|
#[arg(
|
||||||
short,
|
short,
|
||||||
long,
|
long,
|
||||||
@ -28,6 +51,7 @@ struct Args {
|
|||||||
no_fetch: bool,
|
no_fetch: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Config to be parsed from toml file given as cmdline option
|
||||||
#[derive(Deserialize)]
|
#[derive(Deserialize)]
|
||||||
struct Config {
|
struct Config {
|
||||||
/// to be used as part of the fetchers username header
|
/// to be used as part of the fetchers username header
|
||||||
@ -54,8 +78,13 @@ pub fn to_checked_pathbuf(dir: &str) -> PathBuf {
|
|||||||
dir
|
dir
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Config for one individual input feed
|
||||||
|
///
|
||||||
|
/// This is a separate struct in case one wants to configure additional
|
||||||
|
/// information in the future.
|
||||||
#[derive(Deserialize)]
|
#[derive(Deserialize)]
|
||||||
struct FeedConfig {
|
struct FeedConfig {
|
||||||
|
/// url of an ATOM, RSS or Json feed
|
||||||
url: String,
|
url: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user