Skip to content

deeagle/PlatoCliGo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

UB-Plato CLI 📚

Go Version License: MIT Docker golangci-lint Makefile

Eine moderne Command-Line-Interface (CLI) Anwendung zur Abfrage der Arbeitsplatz-Auslastung der Universitätsbibliothek Trier in Echtzeit.

🎯 Über das Projekt

PLATO CLI ist eine Go-basierte Reimplementierung des ursprünglichen PlatoOnAndroid Projekts als CLI-Tool. Während die ursprüngliche Android-App eine grafische Benutzeroberfläche bot, fokussiert sich diese CLI-Version auf Effizienz und Automatisierbarkeit für Developer und Power-User.

Hinweis: Dieses Projekt entstand als Testprojekt zum Umgang mit KI-gestützter Code-Generierung und demonstriert die praktische Anwendung von AI-Tools in der Softwareentwicklung.

✨ Features

  • 🔄 Echtzeitdaten - Aktuelle Auslastung der UB Trier Standorte
  • ⏰ Intelligente Zeitanzeige - Dynamische "schließt in X" / "noch X geöffnet" Anzeigen
  • 🎨 Visuelle Indikatoren - Farbkodierte Icons für schnelle Statuserkennung
  • 📊 ASCII-Visualisierung - Auslastungsbalken direkt im Terminal
  • 🔍 Flexible Filterung - Spezifische Bibliotheken nach ID oder Name
  • 📱 JSON-Output - Maschinenlesbare Ausgabe für weitere Verarbeitung
  • 👀 Watch-Modus - Kontinuierliches Monitoring mit konfigurierbaren Intervallen
  • 🔧 Robust - Graceful Fallback zu Mock-Daten bei API-Ausfällen

🚀 Installation

Voraussetzungen

  • Go 1.19+ oder Docker
  • Make (optional, für Build-Automation)

Mit Go bauen

# Repository klonen
git clone <repository-url>
cd plato-cli

# Dependencies installieren
go mod tidy

# Bauen
go build -o plato-cli .

# Oder mit Make
make build

Mit Docker (ohne lokale Go-Installation)

# Multi-Platform Build mit Docker
make build-all

📖 Verwendung

Grundlegende Befehle

# Alle Bibliotheken anzeigen
./plato-cli

# Spezifische Bibliothek (nach ID)
./plato-cli -library 1

# Spezifische Bibliothek (nach Name)
./plato-cli -library "Campus 1"

# JSON-Ausgabe für weitere Verarbeitung
./plato-cli -json

# Kontinuierliches Monitoring
./plato-cli -watch -interval 2m

# Custom API-URL (für Testing)
./plato-cli -api https://custom-api.example.com

Beispiel-Ausgabe

📚 UB Trier - Arbeitsplatz-Auslastung
⏰ Abgerufen am: 2025-06-16 17:30:15

🟢 Campus 1
  📍 Standort: Campus 1
  👥 Auslastung: 5% [█░░░░░░░░░░░░░░░░░░░]
  📊 Status: Wenig belegt
  🕐 Öffnungszeiten: 08:00 - 24:00 ✅ noch 6:30h geöffnet
  🔧 Wartungsmodus: DISABLED
  ⏰ Letzte Aktualisierung: 2025-06-16 17:30:15

🔴 Campus 2
  📍 Standort: Campus 2
  👥 Auslastung: 99% [████████████████████]
  📊 Status: Stark belegt
  🕐 Öffnungszeiten: 08:00 - 21:00 ⚠️ schließt in 25min!
  🔧 Wartungsmodus: DISABLED
  ⏰ Letzte Aktualisierung: 2025-06-16 20:35:00

🎨 Status-Indikatoren

Die CLI verwendet kontextabhängige Icons für schnelle Statuserkennung:

Icon Bedeutung Zeitfenster
⚠️ Schließt bald! < 30 Minuten
Schließt demnächst 30min - 2h
Entspannt geöffnet > 2 Stunden
🌙 Öffnet heute noch Geschlossen
😴 Öffnet morgen Bis nächster Tag
🎯 Frisch geöffnet < 1h offen
🔧 Wartungsmodus Technische Störung

🛠️ Entwicklung

Build-System

Das Projekt nutzt ein umfassendes Makefile für Development:

# Alle Checks + Build
make all

# Development-Build mit Debug-Info
make dev

# Tests ausführen
make test

# Code formatieren
make fmt

# Linting (via Docker)
make lint

# Cross-Platform Builds
make build-all

# Release-Archive erstellen
make release

# System-Installation
make install

Linting

Das Projekt nutzt golangci-lint via Docker für konsistente Code-Qualität:

# Standard Linting
make lint

# Mit Auto-Fix
make lint-fix

# Hilfe zu verfügbaren Lintern
make lint-help

🔗 API-Dokumentation

Das Projekt nutzt die offizielle UB Trier PLATO API:

  • Basis-URL: https://ub-plato.uni-trier.de
  • Endpoint: /api/1/counters
  • Swagger-Docs: UB-Plato API v0.1.3

📜 Lizenz

Dieses Projekt steht unter der MIT-Lizenz.

🤝 Ursprungsprojekt

Basiert auf dem Android-Projekt PlatoOnAndroid von deeagle, welches als Machbarkeitsstudie für OpenData-APIs im Rahmen einer Masterarbeit an der TH Köln entwickelt wurde.

🤖 Technologie-Stack

  • Sprache: Go 1.19+
  • HTTP-Client: Go Standard Library
  • CLI-Framework: Go Flag Package
  • Build-System: Make + Docker
  • Linting: golangci-lint
  • API: REST JSON

📍 Standort-Info: Universitätsbibliothek Trier • Campus I & II • Deutschland

About

CLI tool for real-time UB Trier library occupancy data with smart time indicators

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published