Compare commits
6
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
705ecd8142
|
||
|
|
9c34fc93cb | ||
|
|
cd9a016cf8
|
||
|
|
d88dcac7a0
|
||
|
|
7f5c8db6ce
|
||
|
|
09cb728f30
|
@@ -10,6 +10,3 @@ git-fetch-with-cli = true
|
|||||||
|
|
||||||
[target.aarch64-unknown-linux-gnu]
|
[target.aarch64-unknown-linux-gnu]
|
||||||
linker = "aarch64-linux-gnu-gcc"
|
linker = "aarch64-linux-gnu-gcc"
|
||||||
|
|
||||||
[target.i686-unknown-linux-gnu]
|
|
||||||
linker = "i686-linux-gnu-gcc"
|
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ jobs:
|
|||||||
- name: Install Cross-Compilation Toolchains (apt)
|
- name: Install Cross-Compilation Toolchains (apt)
|
||||||
run: |
|
run: |
|
||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
sudo apt-get install -y gcc-aarch64-linux-gnu gcc-i686-linux-gnu
|
sudo apt-get install -y gcc-aarch64-linux-gnu
|
||||||
|
|
||||||
- name: Ermittle Rust-Version für Rustup-Target-Cache-Key
|
- name: Ermittle Rust-Version für Rustup-Target-Cache-Key
|
||||||
run: echo "RUST_VERSION=$(rustc --version | awk '{print $2}')" >> "$GITHUB_ENV"
|
run: echo "RUST_VERSION=$(rustc --version | awk '{print $2}')" >> "$GITHUB_ENV"
|
||||||
@@ -75,12 +75,11 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
path: |
|
path: |
|
||||||
~/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu
|
~/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu
|
||||||
~/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/i686-unknown-linux-gnu
|
|
||||||
key: rustup-targets-${{ runner.os }}-${{ env.RUST_VERSION }}
|
key: rustup-targets-${{ runner.os }}-${{ env.RUST_VERSION }}
|
||||||
|
|
||||||
- name: Add Rust Cross-Compilation Targets
|
- name: Add Rust Cross-Compilation Targets
|
||||||
if: steps.cache-rustup-targets.outputs.cache-hit != 'true'
|
if: steps.cache-rustup-targets.outputs.cache-hit != 'true'
|
||||||
run: rustup target add aarch64-unknown-linux-gnu i686-unknown-linux-gnu
|
run: rustup target add aarch64-unknown-linux-gnu
|
||||||
|
|
||||||
- name: PATH um Cargo-bin-Verzeichnis ergänzen
|
- name: PATH um Cargo-bin-Verzeichnis ergänzen
|
||||||
run: |
|
run: |
|
||||||
@@ -111,7 +110,6 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
cargo build --release --target x86_64-unknown-linux-gnu
|
cargo build --release --target x86_64-unknown-linux-gnu
|
||||||
cargo build --release --target aarch64-unknown-linux-gnu
|
cargo build --release --target aarch64-unknown-linux-gnu
|
||||||
cargo build --release --target i686-unknown-linux-gnu
|
|
||||||
|
|
||||||
- name: Determine Build Number
|
- name: Determine Build Number
|
||||||
id: build_num
|
id: build_num
|
||||||
@@ -130,20 +128,17 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
cargo deb --target x86_64-unknown-linux-gnu --deb-revision "${BUILD_NUMBER}" --no-build
|
cargo deb --target x86_64-unknown-linux-gnu --deb-revision "${BUILD_NUMBER}" --no-build
|
||||||
cargo deb --target aarch64-unknown-linux-gnu --deb-revision "${BUILD_NUMBER}" --no-build
|
cargo deb --target aarch64-unknown-linux-gnu --deb-revision "${BUILD_NUMBER}" --no-build
|
||||||
cargo deb --target i686-unknown-linux-gnu --deb-revision "${BUILD_NUMBER}" --no-build
|
|
||||||
|
|
||||||
- name: Build Fedora / RPM Packages (.rpm)
|
- name: Build Fedora / RPM Packages (.rpm)
|
||||||
run: |
|
run: |
|
||||||
mkdir -p target/generate-rpm
|
mkdir -p target/generate-rpm
|
||||||
cargo generate-rpm --target x86_64-unknown-linux-gnu -s "release=\"${BUILD_NUMBER}\"" -o target/generate-rpm
|
cargo generate-rpm --target x86_64-unknown-linux-gnu -s "release=\"${BUILD_NUMBER}\"" -o target/generate-rpm
|
||||||
cargo generate-rpm --target aarch64-unknown-linux-gnu -s "release=\"${BUILD_NUMBER}\"" -o target/generate-rpm
|
cargo generate-rpm --target aarch64-unknown-linux-gnu -s "release=\"${BUILD_NUMBER}\"" -o target/generate-rpm
|
||||||
cargo generate-rpm --target i686-unknown-linux-gnu -s "release=\"${BUILD_NUMBER}\"" -o target/generate-rpm
|
|
||||||
|
|
||||||
- name: Build Arch Linux Packages (.pkg.tar.zst)
|
- name: Build Arch Linux Packages (.pkg.tar.zst)
|
||||||
run: |
|
run: |
|
||||||
python3 scripts/package-arch.py --target x86_64-unknown-linux-gnu --pkgrel "${BUILD_NUMBER}"
|
python3 scripts/package-arch.py --target x86_64-unknown-linux-gnu --pkgrel "${BUILD_NUMBER}"
|
||||||
python3 scripts/package-arch.py --target aarch64-unknown-linux-gnu --pkgrel "${BUILD_NUMBER}"
|
python3 scripts/package-arch.py --target aarch64-unknown-linux-gnu --pkgrel "${BUILD_NUMBER}"
|
||||||
python3 scripts/package-arch.py --target i686-unknown-linux-gnu --pkgrel "${BUILD_NUMBER}"
|
|
||||||
|
|
||||||
- name: Publish Packages to Gitea Package Registry
|
- name: Publish Packages to Gitea Package Registry
|
||||||
env:
|
env:
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ jobs:
|
|||||||
- name: Install Cross-Compilation Toolchains (apt)
|
- name: Install Cross-Compilation Toolchains (apt)
|
||||||
run: |
|
run: |
|
||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
sudo apt-get install -y gcc-aarch64-linux-gnu gcc-i686-linux-gnu
|
sudo apt-get install -y gcc-aarch64-linux-gnu
|
||||||
|
|
||||||
- name: Ermittle Rust-Version für Rustup-Target-Cache-Key
|
- name: Ermittle Rust-Version für Rustup-Target-Cache-Key
|
||||||
run: echo "RUST_VERSION=$(rustc --version | awk '{print $2}')" >> "$GITHUB_ENV"
|
run: echo "RUST_VERSION=$(rustc --version | awk '{print $2}')" >> "$GITHUB_ENV"
|
||||||
@@ -75,12 +75,11 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
path: |
|
path: |
|
||||||
~/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu
|
~/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu
|
||||||
~/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/i686-unknown-linux-gnu
|
|
||||||
key: rustup-targets-${{ runner.os }}-${{ env.RUST_VERSION }}
|
key: rustup-targets-${{ runner.os }}-${{ env.RUST_VERSION }}
|
||||||
|
|
||||||
- name: Add Rust Cross-Compilation Targets
|
- name: Add Rust Cross-Compilation Targets
|
||||||
if: steps.cache-rustup-targets.outputs.cache-hit != 'true'
|
if: steps.cache-rustup-targets.outputs.cache-hit != 'true'
|
||||||
run: rustup target add aarch64-unknown-linux-gnu i686-unknown-linux-gnu
|
run: rustup target add aarch64-unknown-linux-gnu
|
||||||
|
|
||||||
- name: PATH um Cargo-bin-Verzeichnis ergänzen
|
- name: PATH um Cargo-bin-Verzeichnis ergänzen
|
||||||
run: |
|
run: |
|
||||||
@@ -111,7 +110,6 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
cargo build --release --target x86_64-unknown-linux-gnu
|
cargo build --release --target x86_64-unknown-linux-gnu
|
||||||
cargo build --release --target aarch64-unknown-linux-gnu
|
cargo build --release --target aarch64-unknown-linux-gnu
|
||||||
cargo build --release --target i686-unknown-linux-gnu
|
|
||||||
|
|
||||||
- name: Determine Build Number
|
- name: Determine Build Number
|
||||||
id: build_num
|
id: build_num
|
||||||
@@ -130,20 +128,17 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
cargo deb --target x86_64-unknown-linux-gnu --deb-revision "${BUILD_NUMBER}" --no-build
|
cargo deb --target x86_64-unknown-linux-gnu --deb-revision "${BUILD_NUMBER}" --no-build
|
||||||
cargo deb --target aarch64-unknown-linux-gnu --deb-revision "${BUILD_NUMBER}" --no-build
|
cargo deb --target aarch64-unknown-linux-gnu --deb-revision "${BUILD_NUMBER}" --no-build
|
||||||
cargo deb --target i686-unknown-linux-gnu --deb-revision "${BUILD_NUMBER}" --no-build
|
|
||||||
|
|
||||||
- name: Build Fedora / RPM Packages (.rpm)
|
- name: Build Fedora / RPM Packages (.rpm)
|
||||||
run: |
|
run: |
|
||||||
mkdir -p target/generate-rpm
|
mkdir -p target/generate-rpm
|
||||||
cargo generate-rpm --target x86_64-unknown-linux-gnu -s "release=\"${BUILD_NUMBER}\"" -o target/generate-rpm
|
cargo generate-rpm --target x86_64-unknown-linux-gnu -s "release=\"${BUILD_NUMBER}\"" -o target/generate-rpm
|
||||||
cargo generate-rpm --target aarch64-unknown-linux-gnu -s "release=\"${BUILD_NUMBER}\"" -o target/generate-rpm
|
cargo generate-rpm --target aarch64-unknown-linux-gnu -s "release=\"${BUILD_NUMBER}\"" -o target/generate-rpm
|
||||||
cargo generate-rpm --target i686-unknown-linux-gnu -s "release=\"${BUILD_NUMBER}\"" -o target/generate-rpm
|
|
||||||
|
|
||||||
- name: Build Arch Linux Packages (.pkg.tar.zst)
|
- name: Build Arch Linux Packages (.pkg.tar.zst)
|
||||||
run: |
|
run: |
|
||||||
python3 scripts/package-arch.py --target x86_64-unknown-linux-gnu --pkgrel "${BUILD_NUMBER}"
|
python3 scripts/package-arch.py --target x86_64-unknown-linux-gnu --pkgrel "${BUILD_NUMBER}"
|
||||||
python3 scripts/package-arch.py --target aarch64-unknown-linux-gnu --pkgrel "${BUILD_NUMBER}"
|
python3 scripts/package-arch.py --target aarch64-unknown-linux-gnu --pkgrel "${BUILD_NUMBER}"
|
||||||
python3 scripts/package-arch.py --target i686-unknown-linux-gnu --pkgrel "${BUILD_NUMBER}"
|
|
||||||
|
|
||||||
- name: Publish Packages to Gitea Package Registry
|
- name: Publish Packages to Gitea Package Registry
|
||||||
env:
|
env:
|
||||||
|
|||||||
Generated
+16
@@ -3,6 +3,22 @@
|
|||||||
<component name="JsonSchemaMappingsProjectConfiguration">
|
<component name="JsonSchemaMappingsProjectConfiguration">
|
||||||
<state>
|
<state>
|
||||||
<map>
|
<map>
|
||||||
|
<entry key="Cargo Config">
|
||||||
|
<value>
|
||||||
|
<SchemaInfo>
|
||||||
|
<option name="name" value="Cargo Config" />
|
||||||
|
<option name="relativePathToSchema" value="https://www.schemastore.org/cargo-config.json" />
|
||||||
|
<option name="applicationDefined" value="true" />
|
||||||
|
<option name="patterns">
|
||||||
|
<list>
|
||||||
|
<Item>
|
||||||
|
<option name="path" value=".cargo/config.toml" />
|
||||||
|
</Item>
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
</SchemaInfo>
|
||||||
|
</value>
|
||||||
|
</entry>
|
||||||
<entry key="GitHub Workflow">
|
<entry key="GitHub Workflow">
|
||||||
<value>
|
<value>
|
||||||
<SchemaInfo>
|
<SchemaInfo>
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ Dieses Dokument dient als technischer Leitfaden und Kontextdokument für KI-Codi
|
|||||||
## 1. Projektübersicht & Philosophie
|
## 1. Projektübersicht & Philosophie
|
||||||
|
|
||||||
Dieses Repository ist ein **Rust-Projekt-Template** für Linux-Anwendungen und CLI-Tools mit Fokus auf:
|
Dieses Repository ist ein **Rust-Projekt-Template** für Linux-Anwendungen und CLI-Tools mit Fokus auf:
|
||||||
- Automatisierte Multi-Architektur-Kompilierung (`x86_64`, `aarch64`, `i686`).
|
- Automatisierte Multi-Architektur-Kompilierung (`x86_64`, `aarch64`).
|
||||||
- Native Paketierung für Debian (`.deb`), Fedora/RHEL (`.rpm`) und Arch Linux (`.pkg.tar.zst`) sowie Docker-Container-Images.
|
- Native Paketierung für Debian (`.deb`), Fedora/RHEL (`.rpm`) und Arch Linux (`.pkg.tar.zst`) sowie Docker-Container-Images.
|
||||||
- Vollständig automatisierte CI/CD-Pipelines via Gitea Actions (kompatibel mit Forgejo / GitHub Actions).
|
- Vollständig automatisierte CI/CD-Pipelines via Gitea Actions (kompatibel mit Forgejo / GitHub Actions).
|
||||||
- Automatisierte Sicherheits-Scans (Schwachstellen, Secrets) und Dependency-Updates.
|
- Automatisierte Sicherheits-Scans (Schwachstellen, Secrets) und Dependency-Updates.
|
||||||
@@ -15,7 +15,7 @@ Dieses Repository ist ein **Rust-Projekt-Template** für Linux-Anwendungen und C
|
|||||||
### Standards & Tech-Stack
|
### Standards & Tech-Stack
|
||||||
- **Sprache**: Rust (Edition 2024), Python 3 (für Hilfsskripte in `scripts/`).
|
- **Sprache**: Rust (Edition 2024), Python 3 (für Hilfsskripte in `scripts/`).
|
||||||
- **Rust Toolchain**: Stable.
|
- **Rust Toolchain**: Stable.
|
||||||
- **Zielplattform**: Linux (GLIBC-basiert, Cross-Kompilierung für `x86_64-unknown-linux-gnu`, `aarch64-unknown-linux-gnu`, `i686-unknown-linux-gnu`).
|
- **Zielplattform**: Linux (GLIBC-basiert, Cross-Kompilierung für `x86_64-unknown-linux-gnu`, `aarch64-unknown-linux-gnu`).
|
||||||
- **Container**: Docker-Images werden zusätzlich zu den nativen Paketen gebaut und in die Gitea Container Registry veröffentlicht.
|
- **Container**: Docker-Images werden zusätzlich zu den nativen Paketen gebaut und in die Gitea Container Registry veröffentlicht.
|
||||||
- **Sicherheits-Tooling**: Trivy, OSV-Scanner, TruffleHog (Secret-Scanning), Renovate (Dependency-Updates), Qodana (statische Codeanalyse).
|
- **Sicherheits-Tooling**: Trivy, OSV-Scanner, TruffleHog (Secret-Scanning), Renovate (Dependency-Updates), Qodana (statische Codeanalyse).
|
||||||
- **Lizenz**: GPL-3.0-or-later (sofern nicht im abgeleiteten Projekt anders definiert).
|
- **Lizenz**: GPL-3.0-or-later (sofern nicht im abgeleiteten Projekt anders definiert).
|
||||||
|
|||||||
Generated
+1
-1
@@ -2052,7 +2052,7 @@ checksum = "ba467056f1b547ed52077911161fc86985becbc60e8e1857c8a144dab0def891"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "smart-mount"
|
name = "smart-mount"
|
||||||
version = "2.0.0"
|
version = "2.0.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"aes-gcm 0.11.1",
|
"aes-gcm 0.11.1",
|
||||||
"anyhow",
|
"anyhow",
|
||||||
|
|||||||
+8
-7
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "smart-mount"
|
name = "smart-mount"
|
||||||
version = "2.0.0"
|
version = "2.0.1"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
authors = ['DragonSlayer_14']
|
authors = ['DragonSlayer_14']
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
@@ -46,10 +46,11 @@ maintainer = "DragonSlayer_14"
|
|||||||
copyright = "2026 DragonSlayer_14"
|
copyright = "2026 DragonSlayer_14"
|
||||||
section = "net"
|
section = "net"
|
||||||
priority = "optional"
|
priority = "optional"
|
||||||
# mac2ip und nmap sind harte Laufzeitabhängigkeiten (MAC->IP-Auflösung); davfs2/cifs-utils/
|
# mac2ip ist eine harte Laufzeitabhängigkeit (MAC->IP-Auflösung;
|
||||||
# nfs-common werden bewusst NICHT hart verlangt, da smart-mount pro konfiguriertem Laufwerk
|
# davfs2/cifs-utils/nfs-common werden bewusst NICHT hart verlangt,
|
||||||
# nur das jeweils benötigte Mount-Backend zur Laufzeit prüft/lädt (siehe MountBackend::check_available).
|
# da smart-mount pro konfiguriertem Laufwerk nur das jeweils benötigte Mount-Backend
|
||||||
depends = "$auto, mac2ip, nmap"
|
# zur Laufzeit prüft/lädt (siehe MountBackend::check_available).
|
||||||
|
depends = "$auto, mac2ip"
|
||||||
recommends = "davfs2, cifs-utils, nfs-common"
|
recommends = "davfs2, cifs-utils, nfs-common"
|
||||||
extended-description = """\
|
extended-description = """\
|
||||||
smart-mount bindet Paare aus einem lokalen (LAN, WebDAV/SMB/NFS) und einem Cloud-Laufwerk
|
smart-mount bindet Paare aus einem lokalen (LAN, WebDAV/SMB/NFS) und einem Cloud-Laufwerk
|
||||||
@@ -78,7 +79,7 @@ assets = [
|
|||||||
{ source = "packaging/systemd/smart-mount-watch.service", dest = "/usr/lib/systemd/system/smart-mount-watch.service", mode = "644" },
|
{ source = "packaging/systemd/smart-mount-watch.service", dest = "/usr/lib/systemd/system/smart-mount-watch.service", mode = "644" },
|
||||||
{ source = "packaging/systemd/smart-mount-watch.timer", dest = "/usr/lib/systemd/system/smart-mount-watch.timer", mode = "644" },
|
{ source = "packaging/systemd/smart-mount-watch.timer", dest = "/usr/lib/systemd/system/smart-mount-watch.timer", mode = "644" },
|
||||||
]
|
]
|
||||||
requires = { "mac2ip" = "*", "nmap" = "*" }
|
requires = { "mac2ip" = "*" }
|
||||||
suggests = { "davfs2" = "*", "cifs-utils" = "*", "nfs-utils" = "*" }
|
suggests = { "davfs2" = "*", "cifs-utils" = "*", "nfs-utils" = "*" }
|
||||||
# postinst/postrm-Äquivalente: richten den paketierten systemd-Dienst automatisch ein/entfernen
|
# postinst/postrm-Äquivalente: richten den paketierten systemd-Dienst automatisch ein/entfernen
|
||||||
# (Gegenstück zu packaging/deb/postinst+postrm). $1 in %postun: Anzahl verbleibender Versionen
|
# (Gegenstück zu packaging/deb/postinst+postrm). $1 in %postun: Anzahl verbleibender Versionen
|
||||||
@@ -99,7 +100,7 @@ fi
|
|||||||
[package.metadata.arch]
|
[package.metadata.arch]
|
||||||
pkgrel = "1" # Wird in CI durch get-build-number.py dynamisch überschrieben
|
pkgrel = "1" # Wird in CI durch get-build-number.py dynamisch überschrieben
|
||||||
arch = "x86_64"
|
arch = "x86_64"
|
||||||
depends = ["gcc-libs", "glibc", "mac2ip", "nmap"]
|
depends = ["gcc-libs", "glibc", "mac2ip"]
|
||||||
optdepends = [
|
optdepends = [
|
||||||
"davfs2: WebDAV-Laufwerke einbinden",
|
"davfs2: WebDAV-Laufwerke einbinden",
|
||||||
"cifs-utils: SMB/CIFS-Laufwerke einbinden",
|
"cifs-utils: SMB/CIFS-Laufwerke einbinden",
|
||||||
|
|||||||
@@ -14,8 +14,9 @@ werden (z. B. über ein separates Sync-Tool).
|
|||||||
|
|
||||||
## Voraussetzungen
|
## Voraussetzungen
|
||||||
|
|
||||||
- **[`mac2ip`](https://gitea.creative-dragonslayer.de/Linuxapps/Mac2Ip)** und **`nmap`**: hart
|
- **[`mac2ip`](https://gitea.creative-dragonslayer.de/Linuxapps/Mac2Ip)**: hart benötigt, sofern
|
||||||
benötigt, sofern lokale Laufwerke per MAC-Adresse adressiert werden (Auflösung MAC → IP).
|
lokale Laufwerke per MAC-Adresse adressiert werden (Auflösung MAC → IP). `mac2ip` verlangt
|
||||||
|
`nmap` bereits selbst als eigene Paketabhängigkeit.
|
||||||
- **`timeout`** (GNU coreutils): auf praktisch jedem Linux-System bereits vorhanden (Basis-
|
- **`timeout`** (GNU coreutils): auf praktisch jedem Linux-System bereits vorhanden (Basis-
|
||||||
Systempaket). Wird verwendet, um `mount`/`umount`-Aufrufe zeitlich zu begrenzen - siehe
|
Systempaket). Wird verwendet, um `mount`/`umount`-Aufrufe zeitlich zu begrenzen - siehe
|
||||||
"Verhalten bei nicht mehr erreichbarem Server" unten.
|
"Verhalten bei nicht mehr erreichbarem Server" unten.
|
||||||
|
|||||||
@@ -17,10 +17,6 @@ TARGET_ARCH_MAP = {
|
|||||||
"aarch64-unknown-linux-musl": "aarch64",
|
"aarch64-unknown-linux-musl": "aarch64",
|
||||||
"aarch64": "aarch64",
|
"aarch64": "aarch64",
|
||||||
"arm64": "aarch64",
|
"arm64": "aarch64",
|
||||||
"i686-unknown-linux-gnu": "i686",
|
|
||||||
"i686-unknown-linux-musl": "i686",
|
|
||||||
"i686": "i686",
|
|
||||||
"i386": "i686",
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -200,8 +196,8 @@ def build_package(target_triple=None, target_arch=None, pkgrel=None):
|
|||||||
|
|
||||||
def main():
|
def main():
|
||||||
parser = argparse.ArgumentParser(description="Erstellt Arch Linux-Pakete (.pkg.tar.zst)")
|
parser = argparse.ArgumentParser(description="Erstellt Arch Linux-Pakete (.pkg.tar.zst)")
|
||||||
parser.add_argument("--target", help="Rust Target-Triple (z.B. x86_64-unknown-linux-gnu, aarch64-unknown-linux-gnu, i686-unknown-linux-gnu)")
|
parser.add_argument("--target", help="Rust Target-Triple (z.B. x86_64-unknown-linux-gnu, aarch64-unknown-linux-gnu)")
|
||||||
parser.add_argument("--arch", help="Architektur (z.B. x86_64, aarch64, i686)")
|
parser.add_argument("--arch", help="Architektur (z.B. x86_64, aarch64)")
|
||||||
parser.add_argument("--pkgrel", help="Release-/Build-Nummer (z.B. 1, 2, ...)")
|
parser.add_argument("--pkgrel", help="Release-/Build-Nummer (z.B. 1, 2, ...)")
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
|||||||
+10
-5
@@ -10,13 +10,18 @@ pub mod watch;
|
|||||||
use clap::{CommandFactory, Parser, Subcommand};
|
use clap::{CommandFactory, Parser, Subcommand};
|
||||||
use clap_complete::Shell;
|
use clap_complete::Shell;
|
||||||
|
|
||||||
/// Bricht mit einer klaren Fehlermeldung ab, falls nicht als root aufgerufen. Mounten läuft
|
/// Startet den Prozess bei Bedarf transparent über `sudo` neu, falls nicht bereits als root
|
||||||
/// ausschließlich als root/System-Dienst (siehe [`smart_mount::systemd`]) - es gibt seit dem
|
/// aufgerufen. Mounten läuft ausschließlich als root/System-Dienst (siehe
|
||||||
/// Wegfall des Nutzerkontexts keine unprivilegierte Mount-Variante mehr, für die ein
|
/// [`smart_mount::systemd`]) - es gibt seit dem Wegfall des Nutzerkontexts keine
|
||||||
/// Rechte-Check hier zu früh käme.
|
/// unprivilegierte Mount-Variante mehr, für die ein Rechte-Check hier zu früh käme.
|
||||||
|
///
|
||||||
|
/// `run_as_root()` ersetzt den aktuellen Prozess per `execve` und kehrt bei Erfolg nie zurück
|
||||||
|
/// (siehe sudo-ctdra); der `io::Error`-Rückgabewert ist ausschließlich der Fehlerfall (z. B.
|
||||||
|
/// `sudo` nicht gefunden).
|
||||||
pub(crate) fn require_root(context: &str) -> anyhow::Result<()> {
|
pub(crate) fn require_root(context: &str) -> anyhow::Result<()> {
|
||||||
if !sudo_ctdra::is_run_as_root() {
|
if !sudo_ctdra::is_run_as_root() {
|
||||||
anyhow::bail!("'{context}' requires root privileges (re-run with sudo).");
|
let err = sudo_ctdra::run_as_root();
|
||||||
|
anyhow::bail!("'{context}' requires root privileges: could not re-exec via sudo: {err}");
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -64,7 +64,6 @@ pub fn run_checks(cfg: &AppConfig) -> Vec<CheckResult> {
|
|||||||
&cfg.settings.mac2ip_binary,
|
&cfg.settings.mac2ip_binary,
|
||||||
"install mac2ip (private tool, see README)",
|
"install mac2ip (private tool, see README)",
|
||||||
));
|
));
|
||||||
results.push(check_binary("nmap", "nmap", "install package 'nmap'"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
results
|
results
|
||||||
|
|||||||
Reference in New Issue
Block a user