v2.5Erweitert
CLI & Systemprozesse
Velisch eignet sich hervorragend als Ersatz für Bash- oder Python-Skripte im DevOps-Bereich. Das process-Modul bietet volle Kontrolle über Systemprozesse.
Features
Befehle ausführen
Systembefehle mit process.spawn
Prozess-Monitoring
Speicher, Status, Restart
Interaktive CLIs
Prompts, Select, Confirm
Externe Befehle ausführen
Nutzen Sie process.spawn, um Systembefehle auszuführen:
use process
fn backupDatabase() {
log.info("Starte Backup...");
// Führt 'pg_dump' aus
let output = process.spawn("pg_dump", [
"-U", "postgres",
"-f", "./backup.sql",
"my_database"
]);
if (output.exitCode == 0) {
log.info("Backup erfolgreich!");
} else {
log.error("Backup fehlgeschlagen: " + output.stderr);
throw Error("Backup Failed");
}
}Prozessmanagement und Überwachung
Sie können laufende Prozesse überwachen und steuern:
use process
fn ensureServiceRunning(serviceName: string) {
if (process.is_running(serviceName)) {
let mem = process.get_memory(serviceName); // in MB
log.info(serviceName + " läuft (RAM: " + mem + "MB)");
if (mem > 1024) {
log.warn("Speicherleck erkannt, starte neu...");
process.restart(serviceName);
}
} else {
log.warn(serviceName + " ist down. Starte...");
process.spawn("systemctl", ["start", serviceName]);
}
}DevOps Automation
Ideal für Health-Checks, Auto-Restart bei Memory-Leaks, oder automatische Deployments.
Interaktive CLIs bauen
Velisch kann Benutzereingaben lesen und farbige Ausgaben erzeugen:
use console
fn main() {
console.print("Willkommen zum Setup-Wizard!", "green");
let name = console.prompt("Wie heißt dein Projekt?");
let type = console.select("Projekttyp wählen:", ["API", "CLI", "Web"]);
if (console.confirm("Soll ich 'git init' ausführen?")) {
process.spawn("git", ["init"]);
}
console.print("Fertig!", "bold");
}Console API
use console
// Text-Ausgabe mit Farben
console.print("Erfolg!", "green");
console.print("Warnung!", "yellow");
console.print("Fehler!", "red");
console.print("Fett!", "bold");
// Benutzereingabe
let name = console.prompt("Dein Name?");
let age = console.prompt("Dein Alter?", "18"); // Mit Default-Wert
// Ja/Nein Abfrage
if (console.confirm("Fortfahren?")) {
// ...
}
// Auswahl-Menü
let choice = console.select("Wähle eine Option:", [
"Option A",
"Option B",
"Option C"
]);
// Passwort-Eingabe (versteckt)
let password = console.password("Passwort eingeben:");
// Progress Bar
let progress = console.progress(100);
for i in 0..100 {
progress.update(i);
utils.sleep("50ms");
}
progress.finish();Vollständiges Beispiel: Deploy-Script
use process
use console
fn deploy(env: string) {
console.print("🚀 Deployment nach " + env, "cyan");
// 1. Tests ausführen
console.print("Running tests...", "yellow");
let tests = process.spawn("velin", ["test"]);
if (tests.exitCode != 0) {
console.print("❌ Tests fehlgeschlagen!", "red");
return;
}
console.print("✅ Tests bestanden", "green");
// 2. Build
console.print("Building...", "yellow");
let build = process.spawn("velin", ["build", "--release"]);
if (build.exitCode != 0) {
console.print("❌ Build fehlgeschlagen!", "red");
return;
}
// 3. Deploy
if (console.confirm("Deploy nach " + env + "?")) {
process.spawn("ssh", [
env + ".example.com",
"cd /app && git pull && systemctl restart app"
]);
console.print("✅ Deployed!", "green");
}
}
fn main() {
let env = console.select("Wohin deployen?", ["staging", "production"]);
deploy(env);
}Best Practices
Exit Codes prüfen
Immer exitCode != 0 abfangen
Timeout setzen
Lange Prozesse mit Timeout absichern
Logging
stdout/stderr loggen für Debugging
Graceful Shutdown
Signale wie SIGTERM abfangen