Author SHA1 Message Date
DragonSlayer_14 f73ba4b1d6 Merge pull request 'Merge dev in testing: Feat: Fügt config.toml hinzu, welche die gitea-Registry konfiguriert.' (#6) from dev into testing
Testing Build, Check & Preview Release / Build, Check & Create Preview Release (push) Successful in 31s
Reviewed-on: #6
2026-08-26 17:22:45 +00:00
DragonSlayer_14 d7845349e8 Merge branch 'testing' into dev 2026-08-26 17:22:37 +00:00
DragonSlayer_14 7bea78f194 Merge remote-tracking branch 'origin/dev' into dev 2026-08-26 19:21:56 +02:00
DragonSlayer_14 87c1a1c09c Feat: Fügt config.toml hinzu, welche die gitea-Registry konfiguriert. 2026-08-26 19:21:52 +02:00
DragonSlayer_14 d781f3f97b Merge pull request 'Merge dev in testing: Feat: Ersetzt is_run_as_root durch die Implementation von Crate sudo_ctdra' (#5) from dev into testing
Testing Build, Check & Preview Release / Build, Check & Create Preview Release (push) Failing after 15s
Reviewed-on: #5
2026-08-26 17:15:41 +00:00
DragonSlayer_14 a4f27ce091 Merge branch 'testing' into dev 2026-08-26 17:15:32 +00:00
DragonSlayer_14 61b016775e Merge remote-tracking branch 'origin/dev' into dev 2026-08-26 19:14:54 +02:00
DragonSlayer_14 439ccd60d4 Feat: Hebt Version auf 1.0.3 2026-08-26 19:14:49 +02:00
DragonSlayer_14 1c99387d6f Feat: Ersetzt is_run_as_root durch die Implementation von Crate sudo_ctdra 2026-08-26 19:14:30 +02:00
DragonSlayer_14 bf32d82ae7 Feat: Ersetzt is_run_as_root durch die Implementation von Crate sudo_ctdra 2026-08-26 19:13:36 +02:00
DragonSlayer_14 34f61bba5f Merge remote-tracking branch 'origin/dev' into dev 2026-08-26 18:53:20 +02:00
DragonSlayer_14 d351a8b6be Fix: Passt LICENSE an 2026-08-26 18:53:16 +02:00
DragonSlayer_14 dd7c2d2390 Merge pull request 'Merge dev in testing: Passt Paketnamen auf config-ctdra ab an, um Verwechslungen zu vermeiden' (#3) from dev into testing
Testing Build, Check & Preview Release / Build, Check & Create Preview Release (push) Successful in 28s
Reviewed-on: #3
2026-08-26 16:41:57 +00:00
DragonSlayer_14 107b18b461 Merge branch 'testing' into dev 2026-08-26 16:41:48 +00:00
DragonSlayer_14 506bf90cce Feat: Ändert Versionsnummer auf 1.0.2 2026-08-26 18:37:31 +02:00
DragonSlayer_14 6d784b074b Fix: Benennt auch die anderen Vorkomnisse des Crate-Namens um 2026-08-26 18:34:51 +02:00
DragonSlayer_14 8e1401439a Feat: Benennt Crate um, um Verwechslungen zu vermeiden. 2026-08-26 18:22:26 +02:00
9 changed files with 45 additions and 46 deletions
+9
View File
@@ -0,0 +1,9 @@
[registry]
default = "gitea"
[registries.gitea]
index = "sparse+https://gitea.creative-dragonslayer.de/api/packages/Rust-Crates/cargo/" # Sparse index
# index = "https://gitea.creative-dragonslayer.de/Rust-Crates/_cargo-index.git" # Git
[net]
git-fetch-with-cli = true
+2 -1
View File
@@ -58,12 +58,13 @@ jobs:
env:
GITEA_URL: ${{ gitea.server_url || github.server_url }}
REPO: ${{ gitea.repository || github.repository }}
REPO_NAME: ${{ gitea.repository_name || github.event.repository.name }}
TOKEN: ${{ secrets.PACKAGE_TOKEN || secrets.RELEASE_TOKEN || secrets.PUBLISH_TOKEN || secrets.API_TOKEN || secrets.PAT_TOKEN || secrets.CUSTOM_TOKEN || secrets.GITEA_TOKEN || secrets.GITHUB_TOKEN || github.token }}
run: |
VERSION="$(sed -n 's/^version = "\(.*\)"/\1/p' Cargo.toml | head -n1)"
TAG_NAME="v${VERSION}"
RELEASE_TITLE="Release ${TAG_NAME}"
RELEASE_NOTES="Automatisches Release für config Crate ${VERSION}."
RELEASE_NOTES="Automatisches Release für ${REPO_NAME} Crate ${VERSION}."
echo "Erstelle oder hole Release für Tag ${TAG_NAME} in ${REPO}..."
+2 -1
View File
@@ -35,12 +35,13 @@ jobs:
env:
GITEA_URL: ${{ gitea.server_url || github.server_url }}
REPO: ${{ gitea.repository || github.repository }}
REPO_NAME: ${{ gitea.repository_name || github.event.repository.name }}
TOKEN: ${{ secrets.PACKAGE_TOKEN || secrets.RELEASE_TOKEN || secrets.PUBLISH_TOKEN || secrets.API_TOKEN || secrets.PAT_TOKEN || secrets.CUSTOM_TOKEN || secrets.GITEA_TOKEN || secrets.GITHUB_TOKEN || github.token }}
run: |
VERSION="$(sed -n 's/^version = "\(.*\)"/\1/p' Cargo.toml | head -n1)"
TAG_NAME="v${VERSION}-preview"
RELEASE_TITLE="Preview Release ${TAG_NAME}"
RELEASE_NOTES="Automatisches Preview-Release für config Crate ${VERSION} (Branch: Testing)."
RELEASE_NOTES="Automatisches Preview-Release für ${REPO_NAME} Crate ${VERSION} (Branch: Testing)."
echo "Erstelle oder hole Preview-Release für Tag ${TAG_NAME} in ${REPO}..."
+3 -3
View File
@@ -1,12 +1,12 @@
# AGENTS.md — Entwickler- und Agenten-Dokumentation für Config
# AGENTS.md — Entwickler- und Agenten-Dokumentation für Config (config-ctdra)
Diese Datei dient als Leitfaden und Kontextdokumentation für autonome Agenten und Entwickler, die an der Codebasis der Crate `config` arbeiten.
Diese Datei dient als Leitfaden und Kontextdokumentation für autonome Agenten und Entwickler, die an der Codebasis der Crate `config-ctdra` arbeiten.
---
## 1. Projektübersicht
`config` ist eine leichtgewichtige, threadsichere Rust-Crate (Edition 2024) zur Konfigurationsverwaltung. Sie ermöglicht das Speichern, Laden und Modifizieren beliebiger Konfigurationsstrukturen mit automatischer Pfadermittlung für Root- und regulären Benutzermodus.
`config-ctdra` ist eine leichtgewichtige, threadsichere Rust-Crate (Edition 2024) zur Konfigurationsverwaltung. Sie ermöglicht das Speichern, Laden und Modifizieren beliebiger Konfigurationsstrukturen mit automatischer Pfadermittlung für Root- und regulären Benutzermodus.
### Wichtige Rahmenbedingungen & Prinzipien
Generated
+12 -3
View File
@@ -9,12 +9,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
[[package]]
name = "config"
version = "1.0.1"
name = "config-ctdra"
version = "1.0.3"
dependencies = [
"confy",
"libc",
"serde",
"sudo-ctdra",
]
[[package]]
@@ -141,6 +141,15 @@ dependencies = [
"serde_core",
]
[[package]]
name = "sudo-ctdra"
version = "1.0.0"
source = "sparse+https://gitea.creative-dragonslayer.de/api/packages/Rust-Crates/cargo/"
checksum = "2c2746122bbe36f821de70db3ca4ad24edfb77118fc6a6bc7693082b50d23e5f"
dependencies = [
"libc",
]
[[package]]
name = "syn"
version = "3.0.4"
+3 -3
View File
@@ -1,6 +1,6 @@
[package]
name = "config"
version = "1.0.1"
name = "config-ctdra"
version = "1.0.3"
edition = "2024"
authors = ['DragonSlayer_14']
readme = "README.md"
@@ -11,7 +11,7 @@ description = "Einfache, threadsichere Konfigurationsverwaltung für Rust mit au
[dependencies]
confy = "2.0.0"
serde = { version = "1.0.229", features = ["derive"] }
libc = "1.0.0-alpha.4"
sudo-ctdra = { version = "1.0.0", registry = "gitea" }
[profile.release]
debug = "none"
+3 -3
View File
@@ -208,8 +208,8 @@ If you develop a new program, and you want it to be of the greatest possible use
To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the “copyright” line and a pointer to where the full notice is found.
DockerUpdater
Copyright (C) 2026 Linuxapps
config
Copyright (C) 2026 Rust-Crates
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
@@ -221,7 +221,7 @@ Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode:
DockerUpdater Copyright (C) 2026 Linuxapps
config Copyright (C) 2026 Rust-Crates
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details.
+9 -9
View File
@@ -1,6 +1,6 @@
# Config (`config`)
# Config (`config-ctdra`)
`config` ist eine leichtgewichtige, threadsichere Konfigurationsverwaltungs-Crate für Rust mit automatischer Pfadermittlung für Root- und regulären Benutzermodus sowie Unterstützung für beliebige benutzerdefinierte Datenstrukturen.
`config-ctdra` ist eine leichtgewichtige, threadsichere Konfigurationsverwaltungs-Crate für Rust mit automatischer Pfadermittlung für Root- und regulären Benutzermodus sowie Unterstützung für beliebige benutzerdefinierte Datenstrukturen.
## Merkmale
@@ -29,16 +29,16 @@ Füge anschließend die Abhängigkeit in deiner `Cargo.toml` ein:
```toml
[dependencies]
config = { version = "1.0.0", registry = "gitea" }
config-ctdra = { version = "1.0.1", registry = "gitea" }
```
Alternativ als Git- oder Pfad-Abhängigkeit:
```toml
[dependencies]
config = { git = "https://gitea.creative-dragonslayer.de/Rust-Crates/config.git", branch = "main" }
config-ctdra = { git = "https://gitea.creative-dragonslayer.de/Rust-Crates/config.git", branch = "main" }
# oder lokal:
# config = { path = "../Config" }
# config-ctdra = { path = "../Config" }
```
---
@@ -97,7 +97,7 @@ impl Default for Database {
### 2. Globales Caching mit `get_config`
```rust
use config::{get_config, set_program_name};
use config_ctdra::{get_config, set_program_name};
fn main() {
set_program_name("my-service");
@@ -111,7 +111,7 @@ fn main() {
### 3. Konfiguration modifizieren
```rust
use config::modify_config;
use config_ctdra::modify_config;
fn update_settings() {
modify_config::<AppConfig, _>(|cfg| {
@@ -123,9 +123,9 @@ fn update_settings() {
### 4. Manuelles Laden und Speichern
```rust
use config::{load, store};
use config_ctdra::{load, store};
fn custom_workflow() -> Result<(), config::ConfyError> {
fn custom_workflow() -> Result<(), config_ctdra::ConfyError> {
let mut cfg: AppConfig = load()?;
cfg.general.log_level = "debug".to_string();
store(&cfg)?;
+2 -23
View File
@@ -11,7 +11,7 @@
//!
//! # Beispiel
//! ```rust
//! use config::{get_config, modify_config, set_program_name};
//! use config_ctdra::{get_config, modify_config, set_program_name};
//! use serde::{Deserialize, Serialize};
//!
//! #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
@@ -36,6 +36,7 @@ use std::sync::{OnceLock, RwLock};
pub use confy::ConfyError;
use serde::de::DeserializeOwned;
use serde::Serialize;
use sudo_ctdra::is_run_as_root;
/// Optionaler benutzerdefinierter Programmname für die Konfigurationspfade.
static PROGRAM_NAME: OnceLock<RwLock<Option<String>>> = OnceLock::new();
@@ -56,28 +57,6 @@ static GLOBAL_CONFIGS: OnceLock<RwLock<HashMap<TypeId, &'static (dyn Any + Send
/// Standardname für Konfigurationsdateien.
const DEFAULT_CONFIG_NAME: &str = "config";
/// Prüft, ob das Programm mit Root-/Administrator-Rechten ausgeführt wird.
///
/// # Returns
///
/// * `true` - Das Programm läuft mit erhöhten Rechten (z. B. UID 0 unter Linux/Unix)
/// * `false` - Das Programm läuft mit normalen Benutzerrechten
pub fn is_run_as_root() -> bool {
#[cfg(target_os = "windows")]
{
std::process::Command::new("net")
.args(["session"])
.output()
.map(|output| output.status.success())
.unwrap_or(false)
}
#[cfg(not(target_os = "windows"))]
{
unsafe { libc::geteuid() == 0 }
}
}
/// Setzt den Programmnamen für die Pfadermittlung explizit.
pub fn set_program_name(name: impl Into<String>) {
let lock = PROGRAM_NAME.get_or_init(|| RwLock::new(None));