Skip to content

Latest commit

 

History

History
441 lines (298 loc) · 10.7 KB

File metadata and controls

441 lines (298 loc) · 10.7 KB

github-analyzer-cli

CLI tool untuk menganalisis profil pengguna dan repositori GitHub langsung dari terminal.


Daftar Isi


Fitur

  • Analisis profil pengguna — total repo, bintang, fork, bahasa favorit, repo terpopuler
  • Analisis repositori — bintang, fork, watcher, kontributor, lisensi
  • Top repositori — daftar repo teratas berdasarkan jumlah bintang
  • Perbandingan pengguna — bandingkan statistik dua akun secara berdampingan
  • Output JSON — flag --json untuk integrasi dengan tools lain
  • Dukungan GitHub Token — via file .env, .gh-analyzerrc, atau flag --token
  • Penanganan rate limit — pesan error jelas beserta waktu reset
  • Mekanisme retry — otomatis mencoba ulang saat server error
  • Cache otomatis — cache 5 menit untuk menghindari request berulang ke API
  • Paginasi — mengambil semua repo meskipun jumlahnya ratusan
  • Loading spinner — indikator visual saat mengambil data

Persyaratan Sistem

Kebutuhan Versi Minimum
Node.js v18.0.0 atau lebih baru
npm v8.0.0 atau lebih baru
Sistem Operasi Windows / macOS / Linux

Cek versi Node.js yang terinstall:

node --version

Jika belum terinstall, unduh di: https://nodejs.org


Instalasi

Langkah 1 — Masuk ke folder proyek

cd github-analyzer-cli

Langkah 2 — Install dependensi

npm install

Langkah 3 — Install secara global (direkomendasikan)

npm link

Setelah npm link, perintah bisa dijalankan dari direktori manapun:

github-analyzer-cli --help

Jika tidak ingin install global, gunakan cara langsung:

node src/index.js --help

Cara Mendapatkan GitHub Token

Tanpa token, GitHub membatasi API hanya 60 request per jam. Dengan token pribadi, batasnya naik menjadi 5.000 request per jam. Token bersifat gratis dan bisa dibuat kapan saja.

Langkah-langkah membuat Personal Access Token

Langkah 1 — Login ke GitHub

Buka browser dan login di github.com.

Langkah 2 — Buka Settings

Klik foto profil di pojok kanan atas halaman, lalu pilih Settings dari menu yang muncul.

Foto profil  →  Settings

Langkah 3 — Buka Developer Settings

Di halaman Settings, lihat sidebar sebelah kiri. Scroll ke paling bawah sampai menemukan menu Developer settings, lalu klik.

Settings  →  Developer settings

Langkah 4 — Pilih Personal Access Tokens

Di halaman Developer settings, klik Personal access tokens, lalu pilih Tokens (classic).

Developer settings  →  Personal access tokens  →  Tokens (classic)

Langkah 5 — Buat token baru

Klik tombol Generate new token, lalu pilih Generate new token (classic).

Langkah 6 — Isi form pembuatan token

Lengkapi form yang muncul:

  • Note — isi nama untuk token ini, contoh: github-analyzer-cli
  • Expiration — pilih masa berlaku, disarankan 90 days atau No expiration
  • Select scopes — centang dua izin berikut:
[x] public_repo   — Akses repositori publik
[x] read:user     — Baca informasi profil pengguna

Langkah 7 — Generate token

Klik tombol hijau Generate token yang ada di bagian bawah halaman.

Langkah 8 — Salin token

Token akan tampil satu kali saja. Salin segera sebelum menutup atau berpindah halaman. Tampilan token seperti ini:

ghp_ABCdef123456789GHIjklMNOpqrSTUvwxYZ

Catatan: Jangan tutup halaman sebelum menyalin token. Token tidak bisa dilihat lagi setelah halaman ditutup — jika lupa menyalin, buat token baru. Jangan bagikan token ke siapapun dan jangan di-commit ke repository Git.


Memasukkan Token ke Aplikasi

Ada tiga cara untuk memasukkan token. Pilih salah satu yang paling sesuai.


Cara 1 — File .env (Direkomendasikan)

Ini cara paling umum dan aman karena token tersimpan di file lokal dan tidak perlu diketik ulang setiap saat.

Langkah 1 — Buat file .env dari template

# Linux / macOS
cp .env.example .env

# Windows (Command Prompt)
copy .env.example .env

Langkah 2 — Buka file .env dengan teks editor

# VS Code
code .env

# Nano (Linux/macOS)
nano .env

# Notepad (Windows)
notepad .env

Langkah 3 — Masukkan token

Isi file .env seperti berikut, ganti nilai setelah = dengan token yang sudah disalin:

GITHUB_TOKEN=ghp_ABCdef123456789GHIjklMNOpqrSTUvwxYZ

Aturan penulisan yang benar:

  • Tidak ada spasi di sekitar tanda =
  • Tidak menggunakan tanda kutip (" atau ')
  • Token langsung ditulis setelah =

Langkah 4 — Simpan file dan jalankan CLI

Token akan terbaca secara otomatis setiap kali CLI dijalankan:

github-analyzer-cli user octocat

Cara 2 — File .gh-analyzerrc

Alternatif lain adalah membuat file konfigurasi .gh-analyzerrc di folder root proyek dengan format JSON:

{
  "token": "ghp_ABCdef123456789GHIjklMNOpqrSTUvwxYZ"
}

CLI akan membaca file ini secara otomatis setiap kali dijalankan.


Cara 3 — Flag --token Langsung di Terminal

Token bisa dimasukkan langsung saat menjalankan perintah menggunakan flag --token:

github-analyzer-cli user octocat --token ghp_ABCdef123456789GHIjklMNOpqrSTUvwxYZ

Cara ini praktis untuk penggunaan sementara, namun token akan terlihat di riwayat terminal.


Urutan Prioritas Token

Jika lebih dari satu sumber token tersedia pada saat yang sama, urutan prioritasnya adalah:

Flag --token  >  File .env  >  File .gh-analyzerrc

Cara Penggunaan

Verifikasi instalasi berhasil:

github-analyzer-cli --version
github-analyzer-cli --help

Analisis profil pengguna GitHub:

github-analyzer-cli user octocat
github-analyzer-cli user torvalds

Analisis repositori:

github-analyzer-cli repo microsoft/vscode
github-analyzer-cli repo facebook/react

Lihat top repositori seorang pengguna:

# Default: tampilkan 5 repo teratas
github-analyzer-cli top sindresorhus

# Tampilkan 10 repo teratas
github-analyzer-cli top sindresorhus --limit 10

Bandingkan dua pengguna:

github-analyzer-cli compare torvalds gaearon

Output dalam format JSON — tambahkan flag --json di perintah apapun:

github-analyzer-cli user octocat --json
github-analyzer-cli repo facebook/react --json
github-analyzer-cli top sindresorhus --json
github-analyzer-cli compare torvalds gaearon --json

Daftar Perintah

Perintah Deskripsi
user <username> Analisis profil pengguna GitHub
repo <owner>/<repo> Analisis repositori GitHub
top <username> Tampilkan repo teratas berdasarkan bintang
compare <user1> <user2> Bandingkan statistik dua pengguna

Opsi yang Tersedia

Flag Berlaku Pada Deskripsi
--json Semua perintah Output dalam format JSON mentah
--token <token> Semua perintah GitHub Personal Access Token
--limit <angka> top Jumlah repo yang ditampilkan (default: 5, maks: 20)
-V, --version Tampilkan versi aplikasi
-h, --help Tampilkan bantuan

Menjalankan Tests

npm test

Output yang diharapkan:

PASS tests/githubService.test.js
  fetchUser
    ✓ returns computed user stats
    ✓ throws on 404
  fetchRepo
    ✓ returns repo stats
  fetchTopRepos
    ✓ returns sorted top repos

Tests: 4 passed, 4 total

Struktur Proyek

github-analyzer-cli/
├── src/
│   ├── commands/
│   │   ├── user.js            # Perintah: analisis pengguna
│   │   ├── repo.js            # Perintah: analisis repositori
│   │   ├── top.js             # Perintah: top repositori
│   │   └── compare.js         # Perintah: perbandingan pengguna
│   ├── services/
│   │   └── githubService.js   # Logika API, cache, retry, paginasi
│   ├── utils/
│   │   ├── formatter.js       # Fungsi format tampilan
│   │   └── logger.js          # Logger berwarna dan animasi spinner
│   └── index.js               # Entry point dan konfigurasi Commander
├── tests/
│   └── githubService.test.js  # Unit tests untuk service layer
├── .env                       # Token kamu — jangan di-commit ke Git
├── .env.example               # Template file .env
├── .gh-analyzerrc.example     # Template konfigurasi alternatif
├── .gitignore
├── jest.config.js
├── package.json
└── README.md

Troubleshooting

command not found: github-analyzer-cli

Perintah belum terinstall secara global. Jalankan:

npm link

Atau jalankan langsung tanpa install global:

node src/index.js user octocat

GitHub API rate limit exceeded

Batas 60 request/jam tanpa token sudah terlampaui. Solusi:

  1. Buat GitHub Token mengikuti panduan di atas
  2. Tambahkan ke file .env:
GITHUB_TOKEN=ghp_token_kamu_disini

User "xxx" not found

Username tidak ditemukan di GitHub. Pastikan penulisan username sudah benar, lalu cek langsung di: https://github.com/username


Invalid format. Use: github-analyzer-cli repo <owner>/<repo>

Format perintah repo harus menggunakan tanda / antara nama pemilik dan nama repo:

# Salah
github-analyzer-cli repo facebook react

# Benar
github-analyzer-cli repo facebook/react

Token tidak terbaca dari file .env

Periksa hal-hal berikut:

  1. Nama file harus tepat .env, bukan .env.txt atau .env.example
  2. File harus berada di folder root proyek, sejajar dengan package.json
  3. Format penulisan harus benar — tanpa spasi di sekitar =, tanpa tanda kutip:
# Benar
GITHUB_TOKEN=ghp_xxxxx

# Salah — ada spasi
GITHUB_TOKEN = ghp_xxxxx

# Salah — ada tanda kutip
GITHUB_TOKEN="ghp_xxxxx"