git-gemini-forge 0.6.6

A simple Gemini server that serves a read-only view of public repositories from a Git forge.
use serde::Deserialize;
use std::{collections::HashMap, env, fs, path::Path};

fn main() {
	let out_dir = env::var_os("OUT_DIR").unwrap();

	let cargo_toml: CargoToml = toml::from_str(include_str!("Cargo.toml")).unwrap();

	// Get version of reqwest for our user_agent string
	let reqwest = cargo_toml
		.dependencies
		.iter()
		.find(|d| d.0 == "reqwest")
		.expect("reqwest should be present")
		.1;
	let reqwest_version = match reqwest {
		Package::Version(version) => version,
		Package::Manifest { version } => version,
	};
	let reqwest_version_txt = Path::new(&out_dir).join("reqwest_version.txt");
	fs::write(&reqwest_version_txt, reqwest_version).unwrap();

	println!("cargo::rerun-if-changed=build.rs");
	println!("cargo::rerun-if-changed=Cargo.toml");
}

#[derive(Deserialize)]
struct CargoToml {
	dependencies: HashMap<String, Package>,
}

#[derive(Deserialize)]
#[serde(untagged)]
enum Package {
	Version(String),
	Manifest { version: String },
}