nodejs / nodejs/node

Add support to print help/usage of util.parseArgs

Đang mở
#56,184 8 bình luận 16 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

feature request
Ngôn ngữ chính
JavaScript
Star
122k
Fork
37.4k
Merge trung bình
4 ngày 3 giờ
Pull request đã merge (30 ngày)
272

Mô tả

What is the problem this feature will solve?

An almost ubiquitous practice of writing a CLI is including a help command in the CLI itself. Currently anyone using util.parseArgs needs to write their own help command. This, in my opinion, makes parseArgs incomplete.

What is the feature you are proposing to solve the problem?

My suggestion is to include the ability to prin help/usage information generated directly from the config given to parseArgs. A minimum would be something along the lines of:

  1. Include help text for each ParseArgsOptionConfig to include help text for each option in particula:
foo: {    
 type: 'boolean',    
 short: 'f',   
 help: 'enable foo',
},
  1. Add a main help text to the ParseArgsConfig as well, to include details on what the CLI as a whole:
parseArgs({ 
  help: 'Use this command to achieve foo',
  options: {
    // ...
  }
});
  1. Add the --help/-h option to print the generated usage information either:
  • always add the --help/-h option, and automatically print the usage and exit the process when parsing the args (E.g. how python's builtin argparse does it); this would be a breaking change since it may conflict with other similar options implemented already.
  • add a new option to the ParseArgsConfig to enable autogenerated help option if desired
parseArgs({ 
  enableHelp: true,
  help: 'Use this command to achieve foo',
  options: {
    // ...
  }
});
  • simply provide a method to print the usage and let the user implement it themselves in userland
const { values, positionals, printUsage } = parseArgs({
  help: 'Use this command to achieve foo',
  options: {
    help: {
      type: "boolean",
      short: "h",
      help: "print command line options and exit"
    }
  }
});
if (values.help) {
  printUsage();
  process.exit(0);
}
What alternatives have you considered?

No response

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Hướng nghiên cứu

Bắt đầu từ điểm vào util.parseArgs và xem xét hành vi hiện có của ParseArgsConfig và ParseArgsOptionConfig. Xác định API tạo trợ giúp nào và hành vi của --help/-h nào cần được hỗ trợ; công việc hoàn tất khi thiết kế được chọn đã được triển khai cho văn bản cách sử dụng của lệnh và tùy chọn.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
javascript, node.js
Lĩnh vực
cli
Loại issue
Tính năng
Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức độ hoạt động
Ít trao đổi
Độ rõ ràng
Cần làm rõ
Mức phù hợp với người mới
35/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.