Những ưu tiên mang tính định hướng rõ ràng để xây dựng các công cụ dòng lệnh nhanh, thân thiện bằng ngôn ngữ Rust.
# Công Cụ CLI Rust taste - Phân tích cú pháp đối số dòng lệnh bằng clap sử dụng derive API và dùng các chú thích tài liệu (doc comments) làm văn bản trợ giúp. Độ tin cậy: 0.95 - Trả về kiểu anyhow::Result từ hàm main và thêm ngữ cảnh cho mọi bước có thể gây lỗi bằng phương thức .context(). Độ tin cậy: 0.90 - Định nghĩa các kiểu lỗi của thư viện bằng thiserror và chỉ giữ anyhow ở trong tệp thực thi nhị phân (binary). Độ tin cậy: 0.85 - Tách crate thành một tệp main.rs mỏng và một tệp lib.rs chứa toàn bộ logic thực tế để phục vụ kiểm thử. Độ tin cậy: 0.85 - Ghi kết quả đầu ra thông thường vào stdout và ghi nhật ký (logs), tiến trình cũng như thông báo lỗi vào stderr. Độ tin cậy: 0.95 - Cung cấp cờ --json cho đầu ra để máy đọc và tuần tự hóa (serialize) dữ liệu đó bằng serde. Độ tin cậy: 0.85 - Sử dụng thư viện tracing với bộ lọc môi trường được điều khiển bởi các cờ -v và cho phép ghi đè bằng biến môi trường RUST_LOG. Độ tin cậy: 0.80 - Tôn trọng biến môi trường NO_COLOR và tự động tắt màu sắc khi stdout không phải là một thiết bị đầu cuối (terminal). Độ tin cậy: 0.90 - Chỉ hiển thị thanh tiến trình bằng indicatif đối với các tác vụ kéo dài hơn khoảng một giây. Độ tin cậy: 0.75 - Thoát chương trình với các mã thoát (exit codes) riêng biệt, được ghi tài liệu rõ ràng thay vì lúc nào cũng trả về 1. Độ tin cậy: 0.80 - Đọc cấu hình theo thứ tự ưu tiên: cờ dòng lệnh trước, sau đó đến biến môi trường, rồi mới đến tệp cấu hình TOML. Độ tin cậy: 0.80 - Tìm đường dẫn cấu hình và bộ nhớ đệm (cache) bằng crate directories thay vì gán cứng đường dẫn thư mục người dùng (home paths). Độ tin cậy: 0.80 - Kiểm thử đầu cuối (end-to-end) tệp thực thi nhị phân bằng assert_cmd và kiểm thử chụp nhanh đầu ra (snapshot output) bằng insta. Độ tin cậy: 0.85 - Tránh sử dụng async và tokio trừ khi công cụ thực sự phải xử lý các tác vụ mạng đồng thời. Độ tin cậy: 0.75 - Tạo kịch bản tự động hoàn thành lệnh trên shell (shell completions) và trang hướng dẫn man page bằng clap_complete và clap_mangen ngay tại thời điểm biên dịch (build time). Độ tin cậy: 0.75 - Phân phối các tệp thực thi nhị phân đã biên dịch sẵn cho Linux, macOS và Windows bằng cargo-dist từ GitHub Actions. Độ tin cậy: 0.80 - Chạy cargo clippy với thiết lập từ chối mọi cảnh báo (warnings denied) và chạy cargo fmt --check trong quy trình CI. Độ tin cậy: 0.90 - Thiết lập opt-level, lto và strip trong cấu hình phát hành (release profile) để giữ kích thước tệp nhị phân nhỏ gọn. Độ tin cậy: 0.70 - Xử lý tổ hợp phím Ctrl+C một cách gọn gàng bằng crate ctrlc và không để lại các tệp đang ghi dở dang. Độ tin cậy: 0.80
Các quy ước định kiến để viết kịch bản Bash an toàn, dễ đọc và dễ bảo trì.
# Phong cách (taste) viết kịch bản Shell của một kỹ sư DevOps
- Bắt đầu mọi kịch bản với #!/usr/bin/env bash và set -euo pipefail. Độ tin cậy: 0.90
- Chuyển sang sử dụng Python hoặc Go một khi kịch bản vượt quá khoảng 100 dòng hoặc cần đến các cấu trúc dữ liệu thực thụ. Độ tin cậy: 0.85
- Chạy ShellCheck trong CI và sửa các cảnh báo thay vì tắt chúng đi. Độ tin cậy: 0.95
- Định dạng kịch bản bằng shfmt để các bản so sánh thay đổi (diff) luôn nhỏ gọn. Độ tin cậy: 0.75
- Đặt mọi biến khi khai triển trong dấu ngoặc kép ("$var") trừ khi việc tách từ (word splitting) là có chủ đích và đã được chú thích rõ. Độ tin cậy: 0.95
- Sử dụng [[ ]] cho các phép kiểm tra điều kiện và $(...) để thay thế lệnh, tuyệt đối không dùng dấu huyền (` `). Độ tin cậy: 0.90
- Khai báo các biến bên trong hàm bằng từ khóa local. Độ tin cậy: 0.85
- Đặt phần xử lý logic vào trong các hàm và gọi hàm main "$@" ở cuối tệp. Độ tin cậy: 0.80
- Dọn dẹp các tệp tạm bằng mktemp và bẫy sự kiện trap '...' EXIT. Độ tin cậy: 0.90
- Ghi các lỗi và nhật ký (log) ra luồng stderr và giữ luồng stdout dành riêng cho dữ liệu để các công cụ khác có thể nối ống (pipe). Độ tin cậy: 0.85
- Thoát chương trình với mã trạng thái khác không (non-zero) cùng thông báo rõ ràng khi có lỗi xảy ra. Độ tin cậy: 0.90
- Cung cấp hàm hướng dẫn sử dụng (usage) và xử lý các cờ -h cũng như --help. Độ tin cậy: 0.80
- Phân tích cú pháp các tùy chọn bằng getopts hoặc vòng lặp case đơn giản, không kiểm tra tham số vị trí một cách tùy tiện. Độ tin cậy: 0.75
- Kiểm tra trước các lệnh bắt buộc phải có bằng command -v và báo lỗi dừng sớm ngay khi thiếu một lệnh. Độ tin cậy: 0.85
- Đọc cấu hình từ các biến môi trường kèm theo giá trị mặc định, chẳng hạn như -8080. Độ tin cậy: 0.80
- Không bao giờ phân tích cú pháp (parse) đầu ra của lệnh ls; hãy dùng mẫu glob hoặc find -print0 kết hợp với xargs -0. Độ tin cậy: 0.90
- Đọc tệp từng dòng một bằng cú pháp while IFS= read -r line. Độ tin cậy: 0.85
- Sử dụng mảng (array) cho danh sách đối số thay vì ghép nối các chuỗi lệnh. Độ tin cậy: 0.85
- Tránh sử dụng eval, và tuyệt đối không truyền dữ liệu đầu vào không đáng tin cậy vào đó. Độ tin cậy: 0.95
- Thiết kế các kịch bản có tính lũy đẳng (idempotent) để việc chạy chúng hai lần vẫn đảm bảo an toàn. Độ tin cậy: 0.85
- Thêm cờ --dry-run vào bất kỳ tác vụ nào thực hiện xóa hoặc thay đổi trạng thái từ xa. Độ tin cậy: 0.80
- Chỉ bó buộc trong chuẩn POSIX sh khi kịch bản bắt buộc phải chạy trong các container tối giản; còn lại hãy nhắm tới mục tiêu bash 4+. Độ tin cậy: 0.70