From 2bfca7805b9e21ea6473e4ce7ae0458b472fc33d Mon Sep 17 00:00:00 2001 From: Tim Wundenberg Date: Fri, 23 Jun 2023 19:24:31 +0200 Subject: [PATCH] replace dotenv_codegen --- Cargo.lock | 48 ++++-------------------------------------------- Cargo.toml | 2 +- Dockerfile | 8 ++++++++ src/main.rs | 32 ++++++++++++++++++++++++-------- 4 files changed, 37 insertions(+), 53 deletions(-) create mode 100644 Dockerfile diff --git a/Cargo.lock b/Cargo.lock index e9b58cd..911d3bf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -57,7 +57,7 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" name = "cloudflare-dynamic-dns" version = "0.1.0" dependencies = [ - "dotenv_codegen", + "dotenv", "env_logger", "log", "regex", @@ -87,29 +87,6 @@ version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f" -[[package]] -name = "dotenv_codegen" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56966279c10e4f8ee8c22123a15ed74e7c8150b658b26c619c53f4a56eb4a8aa" -dependencies = [ - "dotenv_codegen_implementation", - "proc-macro-hack", -] - -[[package]] -name = "dotenv_codegen_implementation" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53e737a3522cd45f6adc19b644ce43ef53e1e9045f2d2de425c1f468abd4cf33" -dependencies = [ - "dotenv", - "proc-macro-hack", - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "encoding_rs" version = "0.8.32" @@ -534,7 +511,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn", ] [[package]] @@ -579,12 +556,6 @@ version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" -[[package]] -name = "proc-macro-hack" -version = "0.5.20+deprecated" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" - [[package]] name = "proc-macro2" version = "1.0.60" @@ -766,17 +737,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - [[package]] name = "syn" version = "2.0.18" @@ -972,7 +932,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.18", + "syn", "wasm-bindgen-shared", ] @@ -1006,7 +966,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn", "wasm-bindgen-backend", "wasm-bindgen-shared", ] diff --git a/Cargo.toml b/Cargo.toml index f0912c2..50e9ed4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,7 +7,7 @@ edition = "2021" [dependencies] reqwest = { version = "0.11.16", features = ["blocking"] } -dotenv_codegen = "0.15.0" +dotenv = "0.15.0" serde_json = "1.0.96" regex = "1.7.3" log = "0.4.17" diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..32c330b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,8 @@ +FROM rust:1.70 + +WORKDIR ./src/ +COPY . . + +RUN cargo install --path . + +CMD ["cloudflare-dynamic-dns"] \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index d725e15..0701c92 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,11 +1,9 @@ mod errors; mod public_ip; -#[macro_use] -extern crate dotenv_codegen; - -use std::{thread::sleep, time::Duration}; +use std::{env, thread::sleep, time::Duration}; +use dotenv::dotenv; use log::{error, info}; use public_ip::get_public_ip_address; use reqwest::header::{AUTHORIZATION, CONTENT_TYPE}; @@ -19,12 +17,11 @@ fn main() { .filter_level(log::LevelFilter::Info) .init(); - let token = dotenv!("AUTH_BEARER"); - let zone_id = dotenv!("ZONE_ID"); - let domain = dotenv!("DOMAIN"); + dotenv().ok(); + let (token, zone_id, domain) = get_and_ensure_env_vars(); loop { - let result = update(token, zone_id, domain); + let result = update(&token, &zone_id, &domain); match result { Ok(_) => (), @@ -122,3 +119,22 @@ fn update_ip_address( Ok(()) } + +fn get_and_ensure_env_vars() -> (String, String, String) { + let mut token: Option = Option::None; + let mut zone_id: Option = Option::None; + let mut domain: Option = Option::None; + + env::vars().for_each(|(key, value)| match key.as_str() { + "AUTH_BEARER" => token = Some(String::from(value)), + "ZONE_ID" => zone_id = Some(String::from(value)), + "DOMAIN" => domain = Some(String::from(value)), + _ => {} + }); + + let token = token.expect("AUTH_BEARER not set"); + let zone_id = zone_id.expect("ZONE_ID not set"); + let domain = domain.expect("DOMAIN not set"); + + (token, zone_id, domain) +}