.__ __ .__
| | _____ _____ _____/ |_| |
| | \__ \ / \_/ ___\ __\ |
| |__/ __ \| Y Y \ \___| | | |__
|____(____ /__|_| /\___ >__| |____/
\/ \/ \/
CLI helper untuk menyalakan XAMPP/LAMPP dan mengelola database MySQL dengan mudah — tanpa perlu ketik command panjang setiap kali.
Kenapa dibuat? Karena males bolak-balik ke folder lampp (
/opt/lampp) dan mengetik command panjang. Di Linux, XAMPP tidak punya GUI seperti Windows untuk menyalakan/mengelola database harus ketiksudo /opt/lampp/lampp start,mysql -u root -e "SHOW DATABASES", dsb. yang panjang dan gampang lupa.lamctlmembungkus semua itu jadi command yang singkat, konsisten, dan mudah diingat, dari mana saja.
- Control layanan XAMPP/LAMPP (start, stop, restart, status)
- Cek status per-service (misal cuma MySQL)
- Operasi database MySQL (list, query, create, drop)
- Buka mysql client interaktif (
lamctl mysql) - Setup kredensial interaktif (
lamctl init) - Support override via flag CLI, environment variable
.env, dan nilai default - Terintegrasi ke sistem — bisa dipanggil dari mana saja
- Go >= 1.27
- XAMPP/LAMPP terinstall di
/opt/lampp(default, bisa diubah via envLAMCTL_XAMPP_PATH)
make installIni akan build binary lalu menyalinnya ke /usr/local/bin/lamctl, sehingga bisa dipanggil dari direktori mana pun.
make uninstallJalankan lamctl init untuk setup kredensial database secara interaktif:
lamctl init? Database host (localhost):
? Database port (3306):
? Database username (root):
? Database password (kosongkan jika tidak ada):
? Database name (kosongkan untuk koneksi umum):
? Database Engine (mysql):
Kredensial tersimpan di .env
Kredensial disimpan ke file .env di direktori saat ini. File ini sudah di-ignore oleh git (lihat .gitignore).
Contoh template ini juga tersedia di .env.example:
LAMCTL_DB_HOST=localhost
LAMCTL_DB_PORT=3306
LAMCTL_DB_USER=root
LAMCTL_DB_PASS=
LAMCTL_DB_NAME=mysqllamctl start # Start semua layanan XAMPP
lamctl stop # Stop semua layanan XAMPP
lamctl restart # Restart semua layanan XAMPP
lamctl status # Status semua layanan
lamctl status mysql # Status MySQL sajalamctl db list # List semua database
lamctl db query "SELECT * FROM users" # Jalankan query SQL
lamctl db create nama_database # Buat database baru
lamctl db drop nama_database # Hapus database
lamctl mysql # Buka mysql client interaktif
lamctl mysql --db nama_database # Buka client langsung ke database tertentu
lamctl mysqlmembuka shell mysql interaktif (setaramysql -u <user> -p) tanpa haruscdke/opt/lampp/bindan tanpasudo. Pakai credential dari.envatau override flag. Password dikirim lewat envMYSQL_PWD, tidak tampil di proses.
lamctl # Tampilkan logo + daftar command & flag
lamctl --help
lamctl db --helpNilai kredensial diambil dengan urutan prioritas berikut (tertinggi dulu):
- CLI flag —
--host,--port,--user,--password,--db,--db_engine - Environment variable — dari file
.env(auto-load) atau variabel lingkungan - Nilai default —
localhost,3306,root
Contoh override via flag:
lamctl db list --host 192.168.1.10 --port 3307 --user admin --password secret| Variabel | Default | Deskripsi |
|---|---|---|
LAMCTL_DB_HOST |
localhost |
Host MySQL |
LAMCTL_DB_PORT |
3306 |
Port MySQL |
LAMCTL_DB_USER |
root |
Username MySQL |
LAMCTL_DB_PASS |
empty | Password MySQL |
LAMCTL_DB_NAME |
empty | Nama database default |
LAMCTL_DB_ENGINE |
empty | Database engine yang digunakan (misal mysql) |
LAMCTL_XAMPP_PATH |
/opt/lampp/lampp |
Path binary lampp |
| Command | Deskripsi |
|---|---|
lamctl init |
Setup kredensial database interaktif |
lamctl start |
Start semua layanan XAMPP |
lamctl stop |
Stop semua layanan XAMPP |
lamctl restart |
Restart semua layanan XAMPP |
lamctl status [service] |
Cek status layanan (dengan/tanpa nama service) |
lamctl db list |
List semua database |
lamctl db query "<SQL>" |
Jalankan query SQL |
lamctl db create <name> |
Buat database |
lamctl db drop <name> |
Hapus database |
lamctl mysql |
Buka mysql client interaktif |
| Flag | Deskripsi |
|---|---|
--host |
Host database |
--port |
Port database |
--user |
Username database |
--password |
Password database |
--db |
Nama database |
--db_engine |
Engine database yang digunakan (misal mysql) |
-h, --help |
Tampilkan bantuan |
Mengikuti prinsip Clean Architecture, dengan pemisahan tanggung jawab antar layer:
cmd/ Delivery — handler perintah CLI (cobra)
internal/
entity/ Entity — model domain (Database, Credential)
repository/ Repository — akses data (MySQL, XAMPP, setting)
usecase/ Use Case — logika bisnis (dbmanager, lamppctrl)
Alur permintaan: CLI command → Use Case (logika bisnis) → Repository (akses data/IO).
go build -o lamctl . # Build binary
go vet ./... # Static analysis
make clean # Hapus binary hasil build- Dukungan database lain (PostgreSQL, SQLite) via engine abstraction
- Backup & restore database
- Export/import database
- Dukungan file
.envglobal di home directory
MIT