Thursday

19-06-2025 Vol 19

πŸš€ Build a Beautiful CLI Dashboard in Python using pyfiglet + rich!!!

πŸš€ Bangun Dashboard CLI Cantik di Python dengan pyfiglet + rich!!!

Selamat datang! Di posting blog ini, kita akan menjelajahi cara membangun dashboard CLI yang menawan dan informatif menggunakan Python, pyfiglet, dan rich. Kombinasi kuat ini memungkinkan Anda membuat antarmuka baris perintah yang tidak hanya fungsional tetapi juga estetis. Kita akan membahas setiap langkah secara mendalam, mulai dari pengaturan lingkungan hingga penyesuaian tampilan dashboard Anda. Bersiaplah untuk mengubah pengalaman CLI Anda!

Daftar Isi

  1. Pendahuluan
    • Apa itu Dashboard CLI?
    • Mengapa menggunakan pyfiglet dan rich?
    • Tinjauan singkat tentang apa yang akan kita bangun
  2. Persiapan Lingkungan
    • Memastikan Python terinstal
    • Membuat lingkungan virtual (opsional, tetapi disarankan)
    • Menginstal pyfiglet dan rich
  3. Dasar-Dasar pyfiglet
    • Apa itu pyfiglet?
    • Menghasilkan teks ASCII Art sederhana
    • Mengubah font dan lebar
  4. Dasar-Dasar rich
    • Apa itu rich?
    • Mencetak teks berwarna dan bergaya
    • Menggunakan panel, tabel, dan progress bar
  5. Membangun Dashboard CLI Sederhana
    • Menampilkan header dengan pyfiglet
    • Menambahkan informasi sistem dasar (CPU, Memori, dll.) dengan rich
    • Mengatur tata letak dengan panel
  6. Menambahkan Lebih Banyak Fitur
    • Menampilkan log atau status real-time
    • Membuat progress bar untuk tugas-tugas yang sedang berjalan
    • Menambahkan interaktivitas (membuat menu)
  7. Penyesuaian dan Gaya
    • Memilih skema warna yang tepat
    • Bereksperimen dengan font pyfiglet yang berbeda
    • Menyesuaikan tata letak panel
  8. Praktik Terbaik
    • Menjaga kode tetap bersih dan terstruktur
    • Menangani kesalahan dengan baik
    • Mendokumentasikan kode Anda
  9. Contoh Kode Lengkap
    • Kode yang dapat disalin dan ditempel untuk dashboard CLI yang lengkap
  10. Kesimpulan
    • Ringkasan apa yang telah dipelajari
    • Langkah selanjutnya dan sumber daya tambahan

1. Pendahuluan

Apa itu Dashboard CLI?

Dashboard CLI (Command Line Interface) adalah antarmuka berbasis teks yang menyediakan tampilan ringkas dan terorganisir dari informasi penting. Alih-alih antarmuka grafis (GUI), dashboard CLI menggunakan teks untuk menampilkan data, status, dan kontrol. Dashboard ini sering digunakan untuk memantau sistem, menjalankan tugas administratif, dan memberikan umpan balik langsung kepada pengguna.

Mengapa menggunakan pyfiglet dan rich?

  • pyfiglet: Pustaka ini memungkinkan Anda menghasilkan teks ASCII art dari teks biasa. Ini ideal untuk menambahkan header yang menarik secara visual ke dashboard CLI Anda.
  • rich: rich adalah pustaka Python yang memungkinkan Anda menambahkan format warna, gaya, dan tata letak yang kaya ke output terminal Anda. Ini menyediakan alat untuk membuat panel, tabel, progress bar, dan banyak lagi, menjadikannya sempurna untuk membangun dashboard CLI yang informatif dan menarik.

Tinjauan singkat tentang apa yang akan kita bangun

Dalam posting blog ini, kita akan membangun dashboard CLI sederhana yang menampilkan:

  • Header yang menarik menggunakan pyfiglet
  • Informasi sistem dasar (misalnya, penggunaan CPU, penggunaan memori) menggunakan rich
  • Tata letak yang terstruktur menggunakan panel rich

2. Persiapan Lingkungan

Memastikan Python terinstal

Pertama, pastikan Anda telah menginstal Python di sistem Anda. Anda dapat mengunduh versi terbaru dari situs web Python. Setelah diinstal, verifikasi dengan membuka terminal atau command prompt dan menjalankan:

python --version

Anda akan melihat versi Python yang terinstal.

Membuat lingkungan virtual (opsional, tetapi disarankan)

Disarankan untuk menggunakan lingkungan virtual untuk mengisolasi dependensi proyek Anda. Untuk membuat lingkungan virtual, jalankan perintah berikut:

python -m venv myenv

Ini akan membuat direktori bernama myenv yang berisi lingkungan virtual. Untuk mengaktifkannya:

  • Di Windows:
  • myenv\Scripts\activate
        
  • Di macOS dan Linux:
  • source myenv/bin/activate
        

Setelah lingkungan virtual diaktifkan, Anda akan melihat nama lingkungan di prompt terminal Anda.

Menginstal pyfiglet dan rich

Sekarang, instal pyfiglet dan rich menggunakan pip:

pip install pyfiglet rich

Ini akan mengunduh dan menginstal pustaka yang diperlukan untuk proyek kita.

3. Dasar-Dasar pyfiglet

Apa itu pyfiglet?

pyfiglet adalah pustaka Python yang mengambil teks dan mengubahnya menjadi teks ASCII art menggunakan berbagai font. Ini memungkinkan Anda menambahkan sentuhan visual ke aplikasi baris perintah Anda dengan menampilkan teks dengan cara yang mencolok dan menarik.

Menghasilkan teks ASCII Art sederhana

Berikut adalah contoh sederhana tentang cara menggunakan pyfiglet:

import pyfiglet

result = pyfiglet.figlet_format("Hello, CLI!")
print(result)

Ini akan menghasilkan:

 _   _          _      _____           _
| | | |        | |    /  ___|         | |
| | | |  _   _| |__  \ `--.   ___  ___| | _____ _ __
| | | | | | | | '_ \  `--. \ / _ \/ __| |/ / _ \ '__|
| |_| | | |_| | |_) |/\__/ /|  __/ (__|   <  __/ |
 \___/   \__,_|_.__/ \____/  \___|\___|_|\_\___|_|

Mengubah font dan lebar

pyfiglet memungkinkan Anda mengubah font dan lebar teks yang dihasilkan. Berikut adalah contohnya:

import pyfiglet

result = pyfiglet.figlet_format("Awesome!", font="slant", width=80)
print(result)

Ini akan menghasilkan teks ASCII art menggunakan font "slant" dengan lebar maksimum 80 karakter.

4. Dasar-Dasar rich

Apa itu rich?

rich adalah pustaka Python yang menyediakan format output terminal yang kaya. Ini memungkinkan Anda menambahkan warna, gaya, panel, tabel, progress bar, dan banyak lagi ke aplikasi baris perintah Anda. Ini membuat output terminal Anda lebih mudah dibaca dan menarik secara visual.

Mencetak teks berwarna dan bergaya

Berikut adalah contoh sederhana tentang cara mencetak teks berwarna menggunakan rich:

from rich import print

print("[bold red]Error:[/] Something went wrong!")
print("[cyan]Info:[/] Processing data...")

Ini akan mencetak pesan kesalahan berwarna merah dan pesan informasi berwarna cyan.

Menggunakan panel, tabel, dan progress bar

rich menyediakan berbagai komponen seperti panel, tabel, dan progress bar untuk menyusun dan menampilkan informasi. Berikut adalah beberapa contoh:

  • Panel:
  • from rich.panel import Panel
        from rich import print
    
        print(Panel("This is a panel!", title="My Panel"))
        
  • Tabel:
  • from rich.console import Console
        from rich.table import Table
    
        console = Console()
    
        table = Table(title="My Table")
    
        table.add_column("Header 1", justify="right", style="cyan", no_wrap=True)
        table.add_column("Header 2", style="magenta")
        table.add_column("Header 3", justify="center", style="green")
    
        table.add_row("Data 1", "Data 2", "Data 3")
        table.add_row("Data 4", "Data 5", "Data 6")
    
        console.print(table)
        
  • Progress Bar:
  • from rich.progress import track
        import time
    
        for i in track(range(10), description="Processing..."):
            time.sleep(0.5)
        

5. Membangun Dashboard CLI Sederhana

Menampilkan header dengan pyfiglet

Mari mulai dengan menampilkan header menggunakan pyfiglet di dashboard CLI kita:

import pyfiglet
from rich import print

header = pyfiglet.figlet_format("My CLI Dashboard", font="banner3")
print(f"[bold blue]{header}[/]")

Ini akan menghasilkan header yang menarik secara visual di bagian atas dashboard kita.

Menambahkan informasi sistem dasar (CPU, Memori, dll.) dengan rich

Selanjutnya, mari tambahkan beberapa informasi sistem dasar menggunakan rich. Kita akan menggunakan pustaka psutil untuk mendapatkan informasi ini. Jika Anda belum menginstalnya, instal dengan:

pip install psutil

Kemudian, tambahkan kode berikut:

import psutil
from rich import print

cpu_usage = psutil.cpu_percent()
memory_usage = psutil.virtual_memory().percent

print(f"[bold green]CPU Usage:[/] {cpu_usage}%")
print(f"[bold green]Memory Usage:[/] {memory_usage}%")

Ini akan menampilkan penggunaan CPU dan memori saat ini.

Mengatur tata letak dengan panel

Sekarang, mari gunakan panel rich untuk mengatur tata letak dashboard kita:

import pyfiglet
import psutil
from rich import print
from rich.panel import Panel

header = pyfiglet.figlet_format("My CLI Dashboard", font="banner3")

cpu_usage = psutil.cpu_percent()
memory_usage = psutil.virtual_memory().percent

cpu_panel = Panel(f"[bold green]CPU Usage:[/] {cpu_usage}%", title="CPU")
memory_panel = Panel(f"[bold green]Memory Usage:[/] {memory_usage}%", title="Memory")

print(f"[bold blue]{header}[/]")
print(cpu_panel)
print(memory_panel)

Ini akan menampilkan header dan informasi CPU/memori dalam panel terpisah.

6. Menambahkan Lebih Banyak Fitur

Menampilkan log atau status real-time

Anda dapat menambahkan kemampuan untuk menampilkan log atau status real-time di dashboard Anda. rich menyediakan konsol logging yang memungkinkan Anda menampilkan pesan log dengan warna dan gaya:

from rich.console import Console
from rich.logging import RichHandler
import logging

console = Console()

logging.basicConfig(
    level="NOTSET", format="%(message)s", datefmt="[%X]", handlers=[RichHandler(console=console)]
)

log = logging.getLogger("rich")

log.debug("Debugging information")
log.info("Information message")
log.warning("Warning message")
log.error("Error message")
log.critical("Critical message")

Membuat progress bar untuk tugas-tugas yang sedang berjalan

Anda dapat menggunakan progress bar rich untuk menunjukkan kemajuan tugas-tugas yang sedang berjalan:

from rich.progress import track
import time

for i in track(range(100), description="Processing..."):
    time.sleep(0.05)

Menambahkan interaktivitas (membuat menu)

Anda dapat menambahkan interaktivitas ke dashboard Anda dengan membuat menu menggunakan pustaka seperti inquirer atau dengan menerima input pengguna secara langsung:

import inquirer

questions = [
    inquirer.List(
        "action",
        message="What do you want to do?",
        choices=["View System Info", "Run Diagnostic", "Exit"],
    ),
]

answers = inquirer.prompt(questions)
print(f"You selected: {answers['action']}")

Anda perlu menginstal inquirer: pip install inquirer

7. Penyesuaian dan Gaya

Memilih skema warna yang tepat

rich menyediakan berbagai pilihan warna yang dapat Anda gunakan untuk menyesuaikan tampilan dashboard Anda. Bereksperimen dengan warna yang berbeda untuk menemukan skema yang paling sesuai dengan preferensi Anda dan memastikan keterbacaan.

Bereksperimen dengan font pyfiglet yang berbeda

pyfiglet mendukung berbagai font yang dapat Anda gunakan untuk membuat header yang unik dan menarik. Jelajahi opsi font yang berbeda untuk menemukan yang paling cocok dengan estetika dashboard Anda.

Menyesuaikan tata letak panel

Anda dapat menyesuaikan tata letak panel rich dengan menyesuaikan ukuran, judul, dan gaya. Pertimbangkan untuk menggunakan panel bersarang untuk mengatur informasi dengan lebih efektif.

8. Praktik Terbaik

Menjaga kode tetap bersih dan terstruktur

Penting untuk menjaga kode Anda tetap bersih dan terstruktur untuk memastikan kemudahan pemeliharaan dan keterbacaan. Gunakan nama variabel dan fungsi yang deskriptif, dan pisahkan kode Anda menjadi modul logis.

Menangani kesalahan dengan baik

Pastikan untuk menangani kesalahan dengan baik dalam kode Anda untuk mencegah crash yang tidak terduga. Gunakan blok try-except untuk menangkap pengecualian dan memberikan pesan kesalahan yang bermakna kepada pengguna.

Mendokumentasikan kode Anda

Dokumentasikan kode Anda dengan jelas untuk membuatnya lebih mudah dipahami dan digunakan oleh orang lain (dan Anda sendiri di masa mendatang). Gunakan docstring untuk menjelaskan tujuan dan penggunaan fungsi dan kelas Anda.

9. Contoh Kode Lengkap

Berikut adalah contoh kode lengkap untuk dashboard CLI sederhana yang menggabungkan semua konsep yang telah kita bahas:

import pyfiglet
import psutil
from rich import print
from rich.panel import Panel
from rich.console import Console
from rich.table import Table
from rich.progress import track
import time
import logging
from rich.logging import RichHandler
import inquirer

# Konfigurasi logging
console = Console()
logging.basicConfig(
    level="NOTSET", format="%(message)s", datefmt="[%X]", handlers=[RichHandler(console=console)]
)
log = logging.getLogger("rich")

def get_system_info():
    """Mendapatkan informasi sistem dasar."""
    cpu_usage = psutil.cpu_percent()
    memory_usage = psutil.virtual_memory().percent
    return cpu_usage, memory_usage

def display_system_info(cpu_usage, memory_usage):
    """Menampilkan informasi sistem dalam panel."""
    cpu_panel = Panel(f"[bold green]CPU Usage:[/] {cpu_usage}%", title="CPU")
    memory_panel = Panel(f"[bold green]Memory Usage:[/] {memory_usage}%", title="Memory")
    print(cpu_panel)
    print(memory_panel)

def run_diagnostic():
    """Mensimulasikan proses diagnostik dengan progress bar."""
    for i in track(range(100), description="Running Diagnostic..."):
        time.sleep(0.02)
    print("[bold green]Diagnostic completed successfully![/]")

def main():
    """Fungsi utama untuk menjalankan dashboard CLI."""
    header = pyfiglet.figlet_format("CLI Dashboard", font="banner3")
    print(f"[bold blue]{header}[/]")

    while True:
        cpu_usage, memory_usage = get_system_info()
        display_system_info(cpu_usage, memory_usage)

        questions = [
            inquirer.List(
                "action",
                message="What do you want to do?",
                choices=["View System Info", "Run Diagnostic", "Exit"],
            ),
        ]

        answers = inquirer.prompt(questions)

        if answers['action'] == "View System Info":
            log.info("Viewing system information...")
        elif answers['action'] == "Run Diagnostic":
            log.info("Running diagnostic...")
            run_diagnostic()
        elif answers['action'] == "Exit":
            log.info("Exiting dashboard...")
            break

if __name__ == "__main__":
    main()

Salin kode ini ke file Python (misalnya, dashboard.py) dan jalankan dengan python dashboard.py.

10. Kesimpulan

Ringkasan apa yang telah dipelajari

Dalam posting blog ini, kita telah mempelajari cara membangun dashboard CLI yang cantik dan informatif menggunakan Python, pyfiglet, dan rich. Kita membahas dasar-dasar pyfiglet untuk menghasilkan teks ASCII art, dasar-dasar rich untuk memformat output terminal, dan cara menggabungkan keduanya untuk membuat dashboard yang menarik secara visual dan fungsional. Kita juga menjelajahi fitur-fitur lanjutan seperti menampilkan log, membuat progress bar, dan menambahkan interaktivitas.

Langkah selanjutnya dan sumber daya tambahan

Sekarang setelah Anda memiliki dasar yang kuat, Anda dapat terus menjelajahi lebih banyak fitur rich dan pyfiglet. Berikut adalah beberapa sumber daya tambahan:

Selamat membangun dashboard CLI yang luar biasa!

```

omcoding

Leave a Reply

Your email address will not be published. Required fields are marked *