Công cụ thần kỳ Cobra & Cobra CLI cho Golang phát triển ứng dụng dòng lệnh siêu tốc
Ngày cập nhật: 2024-11-19
Lượt đọc: 851
Số từ: 1119
Chuyên mục: Golang
Gần đây mình muốn dùng Golang xây dựng công cụ dòng lệnh tự động sinh mã CRUD từ model dự án gin, mang lại trải nghiệm tương tự như tạo admin dashboard nhanh trong Python Django. Mình có tham khảo dự án nunu nhưng không thích kiểu tổ chức code của nó, và cũng thiếu template frontend Ant Design. Thế là quyết định tự xây dựng lại từ đầu.
Trong lúc tham dự Hội nghị Kinh tế Số Bát Giác Loan Yên Đài,一边写代码一边整理这篇 tài liệu. Ông Nghi Quang Nam diễn thuyết về AI trên sân khấu, còn mình chăm chỉ viết CRUD dưới hàng ghế cuối… Chúng ta đều có tương lai tươi sáng 🥲
Nếu thường xuyên dùng Golang phát triển công cụ dòng lệnh cá nhân, Cobra & Cobra CLI chính là lựa chọn vàng giúp khởi tạo dự án hiệu quả và tổ chức mã rõ ràng.
Cobra cung cấp công cụ đặc biệt giúp tạo ứng dụng và thêm các lệnh mong muốn. Đây là cách dễ nhất để tích hợp Cobra vào ứng dụng của bạn.
!](ảnh minh họa)
- Dự án
- Tài liệu chính thức: [Cobra CLI Documentation
Tên gọi “Cobra” bắt nguồn từ loài rắn hổ mang tiếng Anh.😱
Cài đặt cobra-cli
Thực hiện lệnh sau để cài đặt:
|
|
Khởi tạo dự án với cobra-cli (Cách 1)
Tạo mới hoàn toàn dự án:
|
|
Khởi tạo dự án với cobra-cli (Cách 2)
Nếu đã có dự án rồi:
|
|
⚠️ Lưu ý: Nếu đã tồn tại file main.go, cobra-cli sẽ ghi đè nó.
Cấu trúc thư mục tiêu chuẩn
|
|
Mặc định mọi lệnh đều kế thừa từ rootCmd nếu không chỉ định khác.
File main.go
Đây là nội dung tự động sinh bởi cobra-cli:
|
|
Tạo lệnh mới
Ví dụ: Tạo lệnh phân tích file model trong dự án gin, tự động sinh:
- Mã nguồn CRUD controller
- Route API
- Giao diện Ant Design Pro (trang danh sách, tạo/sửa dữ liệu)
- Câu lệnh SQL tạo bảng
Thực hiện lệnh:
|
|
⚠️ Quan trọng: Tên lệnh phải viết theo kiểu camelCase (không dùng snake_case/kebab-case). Ví dụ:
- ❌
cobra-cli add add-user
- ✅
cobra-cli add addUser
Sau khi thực hiện, thư mục cmd/
sẽ có thêm file ginCrud.go
.
Cấu trúc mã lệnh mới
|
|
Chạy lệnh mới
|
|
Xem trợ giúp lệnh
Dùng lệnh help
kèm tên lệnh:
|
|
Bạn cũng sẽ thấy lệnh mới được liệt kê trong trợ giúp tổng quát:
|
|
Thêm tham số cho lệnh
Ví dụ: Khi chạy ginCrud
, yêu cầu chỉ định đường dẫn file model.
Tự động hoàn tất lệnh
Cobra hỗ trợ tính năng tiện lợi này qua lệnh:
|
|
Kế hoạch tiếp theo
- Phân tích AST Golang để trích xuất trường struct
- Tự động sinh toàn bộ mã CRUD từ phân tích này