cinderella

[unmaintained] simple CI engine
Log | Files | Refs | README | LICENSE

commit 1cde5bf8164159f59febfe8cdbd7d90c34bbf45c
parent ea17efbf1742c14c189babf96e347e23e924b014
Author: Stefan Koch <programming@stefan-koch.name>
Date:   Sat, 21 Sep 2019 19:49:18 +0200

read a configuration file where mail settings can be configured

Diffstat:
MCargo.lock | 50++++++++++++++++++++++++++++++++++++++++++++++++++
MCargo.toml | 1+
Asrc/config.rs | 29+++++++++++++++++++++++++++++
Msrc/lib.rs | 5+++++
4 files changed, 85 insertions(+), 0 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock @@ -37,6 +37,7 @@ dependencies = [ "getopts 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", "git2 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.100 (registry+https://github.com/rust-lang/crates.io-index)", "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -195,6 +196,22 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] +name = "proc-macro2" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "quote" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] name = "rand" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -248,6 +265,19 @@ dependencies = [ name = "serde" version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "serde_derive 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "serde_derive" +version = "1.0.101" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "smallvec" @@ -255,6 +285,16 @@ version = "0.6.10" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] +name = "syn" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] name = "tempfile" version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -298,6 +338,11 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] +name = "unicode-xid" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] name = "url" version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -361,6 +406,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" "checksum pkg-config 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c1d2cfa5a714db3b5f24f0915e74fcdf91d09d496ba61329705dda7774d2af" "checksum ppv-lite86 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e3cbf9f658cdb5000fcf6f362b8ea2ba154b9f146a61c7a20d647034c6b6561b" +"checksum proc-macro2 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "afdc77cc74ec70ed262262942ebb7dac3d479e9e5cfa2da1841c0806f6cdabcc" +"checksum quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe" "checksum rand 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d47eab0e83d9693d40f825f86948aa16eff6750ead4bdffc4ab95b8b3a7f052c" "checksum rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "03a2a90da8c7523f554344f921aa97283eadf6ac484a6d2a7d0212fa7f8d6853" "checksum rand_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "615e683324e75af5d43d8f7a39ffe3ee4a9dc42c5c701167a71dc59c3a493aca" @@ -368,12 +415,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" "checksum remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e" "checksum serde 1.0.100 (registry+https://github.com/rust-lang/crates.io-index)" = "f4473e8506b213730ff2061073b48fa51dcc66349219e2e7c5608f0296a1d95a" +"checksum serde_derive 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)" = "4b133a43a1ecd55d4086bd5b4dc6c1751c68b1bfbeba7a5040442022c7e7c02e" "checksum smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "ab606a9c5e214920bb66c458cd7be8ef094f813f20fe77a54cc7dbfff220d4b7" +"checksum syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "66850e97125af79138385e9b88339cbcd037e3f28ceab8c5ad98e64f0f1f80bf" "checksum tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" "checksum toml 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c7aabe75941d914b72bf3e5d3932ed92ce0664d49d8432305a8b547c37227724" "checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" "checksum unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "141339a08b982d942be2ca06ff8b076563cbe223d1befd5450716790d44e2426" "checksum unicode-width 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7007dbd421b92cc6e28410fe7362e2e0a2503394908f417b68ec8d1c364c4e20" +"checksum unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" "checksum url 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "75b414f6c464c879d7f9babf951f23bc3743fb7313c081b2e6ca719067ea9d61" "checksum vcpkg 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "33dd455d0f96e90a75803cfeb7f948768c08d70a6de9a8d2362461935698bf95" "checksum wasi 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fd5442abcac6525a045cc8c795aedb60da7a2e5e89c7bf18a0d5357849bb23c7" diff --git a/Cargo.toml b/Cargo.toml @@ -9,6 +9,7 @@ getopts = "0.2" git2 = { version = "0.10.0", features = ["vendored-openssl"] } rand = "0.7.0" toml = { version = "0.5", features = ["preserve_order"] } +serde = { version = "1.0", features = ["derive"] } evalexpr = "5" [dev-dependencies] diff --git a/src/config.rs b/src/config.rs @@ -0,0 +1,29 @@ +use std::fs; + +use serde::Deserialize; +use toml; + +#[derive(Deserialize, Debug)] +pub struct Config { + pub email: Option<Email>, +} + +#[derive(Deserialize, Debug)] +pub struct Email { + pub server: String, + pub user: String, + pub password: String, + pub from: String, +} + +pub fn read_config() -> Config { + // TODO: Use path relative to binary, not to CWD + match fs::read_to_string("config.toml") { + Ok(contents) => { + toml::from_str(&contents).expect("Configuration invalid") + }, + _ => Config { + email: None + } + } +} diff --git a/src/lib.rs b/src/lib.rs @@ -6,6 +6,7 @@ use std::path::PathBuf; use rand::Rng; use rand::distributions::Alphanumeric; +mod config; mod vcs; mod pipeline; mod execution; @@ -38,6 +39,8 @@ fn cinderella_file(folder: &PathBuf) -> PathBuf { } pub fn run(repo_ptr: &RepoPointer) { + let _config = config::read_config(); + let repo = vcs::GitSource { src: repo_ptr.repo_url.clone(), }; @@ -65,6 +68,8 @@ pub fn run(repo_ptr: &RepoPointer) { let cinderella_file = cinderella_file(&workdir.path); if let Some(pipelines) = pipeline::load_pipeline(&cinderella_file) { + // TODO: Check if execution was successful. If not and if email is + // configured, send a mail execution::execute(&pipelines, &variables, &mut io::stdout()); } else { println!("No Cinderella configuration found");