Quy ước CLI
hitechcloudcli đã phát triển lên khoảng 170 lệnh qua nhiều giai đoạn -
script shell từ 2023, một làn sóng công cụ phụ viết bằng Go, và quá trình chuyển đổi đang diễn ra sang
Rust (hitechcloudcli/cli, phát hành dưới tên hitechcloudcli). Không có gì
trong sự phát triển đó lộn xộn một cách ngẫu nhiên: mỗi giai đoạn giải quyết vấn đề
của riêng nó rồi đi tiếp. Nhưng một người vận hành gõ lệnh, và một panel phân tích
kết quả của lệnh, đều cần một câu trả lời cho câu hỏi "một lệnh trông như thế nào", chứ không phải
ba. Trang này là câu trả lời đó cho mọi thứ mới, và là bản đồ cho thấy
khoảng 170 lệnh hiện có vẫn còn lệch khỏi nó ở đâu.
Cả hai panel (hitechcloudpanel, hitechcloudadmin) gọi các lệnh này qua shell
và phân tích stdout/mã thoát của chúng. Điều đó có nghĩa là một thay đổi không tương thích
với một lệnh hiện có sẽ làm hỏng panel. Vì vậy quy tắc bên dưới gần như
luôn là "thêm quy ước còn thiếu", không bao giờ là "đổi tên cho khớp quy ước" - xem
Những gì chúng tôi không đổi tên.
Cách đặt tên lệnh
Dispatcher (hitechcloudcli, script bash cấp cao nhất) suy ra
tên của lệnh từ vị trí script của nó, chứ không từ một hội đồng đặt tên:
- Script nằm trực tiếp trong
hitechcloudcli/(ví dụconfig.sh,domain.sh,waf.sh) giữ tên trần:config,domain,waf. - Script trong thư mục con lấy tên
<directory>-<file>:ftp/list.sh→ftp-list,native/wireguard.sh→native-wireguard,user/suspend.sh→user-suspend.
Vì vậy native-*, user-*, email-*, ftp-*, domains-*, plan-*,
toolkit-*, websites-* không phải các quy ước cạnh tranh nhau - chúng là cùng
một quy tắc, áp dụng cho thư mục mà người sở hữu lệnh đặt nó vào. Điều đó
có nguyên tắc, và các lệnh mới nên tiếp tục dùng nó: lệnh về
website/tên miền nằm trong domains/, không nằm ở cấp cao nhất, trừ khi nó là
loại thiết lập toàn máy chủ (như domain, hostname của chính máy chủ)
thực sự không có ý nghĩa theo từng tài khoản.
Một xung đột đáng biết: domain (số ít, ở cấp gốc)
đặt hostname của chính máy chủ; domains-add, domains-delete,
domains-dns, ... (số nhiều, trong domains/) quản lý website của khách hàng. Chúng
là các tính năng không liên quan, chỉ tình cờ chung gốc từ. Đây không phải lỗi - git mv bất kỳ bên nào cũng làm hỏng mọi nơi gọi - nhưng nó là một cái bẫy "trông
không nhất quán" thực sự với người vận hành gõ hitechcloudcli domain<TAB>. Lệnh mới
không được thêm một cặp thứ hai như vậy: kiểm tra hitechcloudcli --help
với gốc từ của bạn trước khi chọn tên, và nếu đã có một tên gần giống,
hãy nói rõ trong chính văn bản --help của lệnh (hai dòng "không phải thứ bạn
đang tìm? xem domains-*" không tốn gì và tiết kiệm được một yêu cầu hỗ trợ).