Ready for nix testing

pull/2/head
Nickiel12 1 year ago
parent afa0cd2218
commit a50efdeea0

93
Cargo.lock generated

@ -17,6 +17,21 @@ version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
[[package]]
name = "android-tzdata"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
[[package]]
name = "android_system_properties"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
dependencies = [
"libc",
]
[[package]] [[package]]
name = "anstream" name = "anstream"
version = "0.5.0" version = "0.5.0"
@ -131,6 +146,21 @@ version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "chrono"
version = "0.4.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5"
dependencies = [
"android-tzdata",
"iana-time-zone",
"js-sys",
"num-traits",
"time",
"wasm-bindgen",
"winapi",
]
[[package]] [[package]]
name = "clap" name = "clap"
version = "4.4.0" version = "4.4.0"
@ -348,7 +378,7 @@ checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427"
dependencies = [ dependencies = [
"cfg-if", "cfg-if",
"libc", "libc",
"wasi", "wasi 0.11.0+wasi-snapshot-preview1",
] ]
[[package]] [[package]]
@ -465,6 +495,29 @@ dependencies = [
"tokio-native-tls", "tokio-native-tls",
] ]
[[package]]
name = "iana-time-zone"
version = "0.1.57"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613"
dependencies = [
"android_system_properties",
"core-foundation-sys",
"iana-time-zone-haiku",
"js-sys",
"wasm-bindgen",
"windows",
]
[[package]]
name = "iana-time-zone-haiku"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
dependencies = [
"cc",
]
[[package]] [[package]]
name = "idna" name = "idna"
version = "0.4.0" version = "0.4.0"
@ -558,7 +611,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2"
dependencies = [ dependencies = [
"libc", "libc",
"wasi", "wasi 0.11.0+wasi-snapshot-preview1",
"windows-sys", "windows-sys",
] ]
@ -580,6 +633,15 @@ dependencies = [
"tempfile", "tempfile",
] ]
[[package]]
name = "num-traits"
version = "0.2.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2"
dependencies = [
"autocfg",
]
[[package]] [[package]]
name = "num_cpus" name = "num_cpus"
version = "1.16.0" version = "1.16.0"
@ -890,6 +952,7 @@ dependencies = [
name = "status_cloud" name = "status_cloud"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"chrono",
"clap", "clap",
"confy", "confy",
"reqwest", "reqwest",
@ -947,6 +1010,17 @@ dependencies = [
"syn", "syn",
] ]
[[package]]
name = "time"
version = "0.1.45"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a"
dependencies = [
"libc",
"wasi 0.10.0+wasi-snapshot-preview1",
"winapi",
]
[[package]] [[package]]
name = "tinyvec" name = "tinyvec"
version = "1.6.0" version = "1.6.0"
@ -1096,6 +1170,12 @@ dependencies = [
"try-lock", "try-lock",
] ]
[[package]]
name = "wasi"
version = "0.10.0+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f"
[[package]] [[package]]
name = "wasi" name = "wasi"
version = "0.11.0+wasi-snapshot-preview1" version = "0.11.0+wasi-snapshot-preview1"
@ -1200,6 +1280,15 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
[[package]]
name = "windows"
version = "0.48.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f"
dependencies = [
"windows-targets",
]
[[package]] [[package]]
name = "windows-sys" name = "windows-sys"
version = "0.48.0" version = "0.48.0"

@ -62,8 +62,7 @@ rust-project TODO: write shell script for automatically updating `cargoHash`
pname = "status_cloud"; pname = "status_cloud";
version = "0.1.0"; version = "0.1.0";
buildAndTestSubdir = "status_cloud"; buildAndTestSubdir = "status_cloud";
cargoHash = "sha256-GpAWrgFBzOTBCfZy/Ehy7IszuSgSOc/4N cargoHash = "sha256-2eSCxWKf2VH9escaWUDFcozJyyo4xt9SCgBPxlwckTk=";
2gbeed0jqI=";
meta = meta // { meta = meta // {
description = "Server status saved to a nextcloud note service."; description = "Server status saved to a nextcloud note service.";
}; };
@ -83,11 +82,10 @@ rust-project TODO: write shell script for automatically updating `cargoHash`
The status_cloud package that should be used. The status_cloud package that should be used.
''; '';
}; };
port = lib.mkOption { config_path = lib.mkOption {
type = lib.types.port; type = lib.types.path;
default = 3001;
description = lib.mdDoc '' description = lib.mdDoc ''
The port at which to run. The file path to the toml that contains user information secrets
''; '';
}; };
}; };
@ -96,16 +94,23 @@ rust-project TODO: write shell script for automatically updating `cargoHash`
pkg = self.packages.${system}.status_cloud; pkg = self.packages.${system}.status_cloud;
in lib.mkIf cfg.enable { in lib.mkIf cfg.enable {
description = pkg.meta.description; description = pkg.meta.description;
after = [ "network.target" ];
wantedBy = [ "network.target" ];
serviceConfig = { serviceConfig = {
Type = "oneshot";
ExecStart = '' ExecStart = ''
${cfg.package}/bin/status_cloud --port ${builtins.toString cfg.port} ${cfg.package}/bin/status_cloud --config_file ${builtins.toString cfg.config_path}
''; '';
Restart = "always";
DynamicUser = true;
}; };
}; };
config.systemd.timers.status_cloud = let
cfg = config.services.status_cloud;
pkg = self.packages.${system}.status_cloud;
in lib.mkIf cfg.enable {
wantedBy = [ "timers.target" ];
partOf = [ "status_cloud.service" ];
timerConfig.OnCalendar = [ "*:0/15" ];
};
}; };
}; };
} }

@ -6,6 +6,7 @@ edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies] [dependencies]
chrono = "0.4.26"
clap = { version = "4.4.0", features = ["derive"] } clap = { version = "4.4.0", features = ["derive"] }
confy = "0.5.1" confy = "0.5.1"
reqwest = { version = "0.11.18", features = ["blocking", "json"] } reqwest = { version = "0.11.18", features = ["blocking", "json"] }

@ -4,41 +4,16 @@ use reqwest::blocking::Client;
use clap::Parser; use clap::Parser;
use confy; use confy;
use std::env;
use std::process::Command; use std::process::Command;
#[derive(Serialize, Deserialize)]
struct Config {
user: String,
pswd: String,
note_id: String,
}
impl Default for Config {
fn default() -> Self {
Self {
user: "".to_string(),
pswd: "".to_string(),
note_id: "".to_string(),
}
}
}
#[derive(Parser, Debug)]
#[command(author, version, about, long_about=None)]
struct CliArgs {
/// Path to config .toml file
#[arg(short, long)]
config_file: String,
}
// TODO: logging // TODO: logging
fn main() -> Result<(), Box<dyn std::error::Error>> { fn main() -> Result<(), Box<dyn std::error::Error>> {
let args = CliArgs::parse(); let args = CliArgs::parse();
let cfg: Config = confy::load_path(args.config_file)?; let cfg: Config = confy::load_path(args.config_file)?;
let mut body_content: String = format!("*Last Updated:* {} \n", chrono::Local::now().format("%D - %H:%M:%S"));
let mut drives: Vec<String> = vec![]; let mut drives: Vec<String> = vec![];
@ -60,7 +35,6 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
} }
} }
let mut body_content: String = String::new();
{ {
let mut drive_temps: Vec<String> = vec![]; let mut drive_temps: Vec<String> = vec![];
@ -71,7 +45,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
let tmp = std::str::from_utf8(&output.stdout)?.to_string(); let tmp = std::str::from_utf8(&output.stdout)?.to_string();
if !tmp.contains("sensor") { if !tmp.contains("sensor") {
drive_temps.push(tmp.replace("\n", "")); drive_temps.push(tmp.replace("\n", "Not running as sudo?"));
} else { } else {
drive_temps.push(tmp[0..9].to_string() + " No Sensor"); drive_temps.push(tmp[0..9].to_string() + " No Sensor");
} }
@ -81,18 +55,16 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
} }
let update = Client::new() let update = Client::new()
.put(format!("https://files.nickiel.net/index.php/apps/notes/api/v1/notes/{}", cfg.note_id.clone())) .put(format!("https://files.nickiel.net/index.php/apps/notes/api/v1/notes/{}", cfg.note_id.clone()))
.header("Accept", "application/json") .header("Accept", "application/json")
.header("Content-Type", "application/json") .header("Content-Type", "application/json")
.basic_auth(cfg.user.clone(), Some(cfg.pswd.clone())) .basic_auth(cfg.user.clone(), Some(cfg.pswd.clone()))
.body(serde_json::to_string(&NoteUpdate {content: body_content}).unwrap()); .body(serde_json::to_string(&NoteUpdate {content: body_content}).unwrap());
println!("{:#?}", update.send()?
.json::<Note>()?);
Ok(()) //println!("{:#?}", update.send()?.json::<Note>()?);
Ok(())
} }
@ -112,3 +84,28 @@ struct Note {
struct NoteUpdate { struct NoteUpdate {
content: String, content: String,
} }
#[derive(Serialize, Deserialize)]
struct Config {
user: String,
pswd: String,
note_id: String,
}
impl Default for Config {
fn default() -> Self {
Self {
user: "".to_string(),
pswd: "".to_string(),
note_id: "".to_string(),
}
}
}
#[derive(Parser, Debug)]
#[command(author, version, about, long_about=None)]
struct CliArgs {
/// Path to config .toml file
#[arg(short, long)]
config_file: String,
}

Loading…
Cancel
Save