많은 매개변수가 필요한 유틸리티에 권장되는 인터페이스는 무엇입니까? [폐쇄]

많은 매개변수가 필요한 유틸리티에 권장되는 인터페이스는 무엇입니까? [폐쇄]

제대로 작동하려면 6가지 정보가 필요한 명령줄 유틸리티를 작성 중입니다. 다음과 같습니다.

fm-git filename repository path comment username password

그러나 모든 개별 시스템에서는 일정 username합니다 password.

유틸리티를 실행할 때 빌드가 어렵다는 것을 알았습니다. 예를 들어 다음은 이 유틸리티에 대한 테스트 호출입니다(가독성을 위해 여러 줄로 구분).

/Users/chuck/Projects/fm-git/fm-git.py chiv-lib
/Users/chuck/Projects/chiv-lib/ Chivalry/ "continued testing"
Administrator abc1234

나는 이러한 주장을 전달하는 다양한 방법을 생각하고 있습니다. 예를 들어, fm-git -f filename -r repository ...또는 fm-git --filename filename --repository repository.... 또한 구성 설정은 일반적으로 변경되지 않고 유틸리티 호출에서 제거될 수 있으므로 구성 설정을 만들고 매개변수화하는 것을 username고려 하고 있습니다 .password

유틸리티 매개변수가 많지만 필수인 경우 유틸리티 호출의 가독성을 유지하기 위해 허용되는 방법은 무엇입니까?

답변1

일반적으로 Unix 응용 프로그램에서는 이 정보를 제공하는 다양한 방법을 허용하며, 덜 구체적인 방법보다 "구체적인" 방법이 우선 적용됩니다.

그래서 당신은:

  • 그래픽 응용 프로그램의 경우 사용되는 툴킷은 거의 항상 리소스를 얻는 방법(예: xrdb순수 X의 스타일 등) 을 제공합니다.

  • 구성 파일(툴킷에서 아직 제공되지 않은 경우)

  • 짧고 긴 명령줄 옵션( getoptC에서 사용하기 쉬움)

  • 정보가 제공되지 않으면 경로의 현재 디렉터리와 같은 합리적인 기본값

위치 매개변수는 파일 목록이 뒤에 올 수 있는 몇 가지 필수 매개변수에 대해서만 의미가 있습니다(와일드카드 사양이 여러 매개변수로 확장되기 때문입니다). 6개의 개별 조각이 너무 많으면 순서를 기억하기 어려울 수 있으므로 이 옵션을 사용하십시오.

--password -비밀번호의 경우 특수 값(예: 또는 ) 을 사용하여 애플리케이션이 stdin에서 비밀번호를 읽을 수 있는 방법을 제공하는 것이 도움이 될 수 있습니다 -p -.

애플리케이션을 사용하는 사람은 누구나 하드코드된 비밀번호, 구성 파일의 비밀번호 또는 사용자가 비밀번호를 입력하도록 하는 것이 특정 사용 사례에 가장 적합한 옵션인지 선택할 수 있습니다.

답변2

일반적으로 다음을 수행하는 것이 가장 좋습니다.

  1. 종속성 매개변수를 계산하지만 이를 재정의할 수 있도록 허용합니다. 예를 들어, 예에서는 filename와 동일한 매개변수가 있으므로 $(basename repository)저장소만 필요할 수 있지만 선택적으로 --filename대체 파일 이름을 제공할 수 있습니다.
  2. 명령줄 및 출력 ps에서 ​​인증을 숨깁니다 . 파일에 넣으세요. 아마도 파일에서 읽는 것과 $HOME/.fm-git.conf같이 파일에 더 많은 제약을 가할 수도 있습니다. chmod 600 $HOME/.fm-git.conf때로는 환경 변수에서 사용자 이름과 비밀번호를 얻을 수도 있지만(예: 기본 사용자 이름은 시스템 사용자 이름 또는 입니다 SUDO_USER), 귀하의 경우는 그렇지 않을 수도 있습니다.

따라서 두 번의 최적화 후에는 3개의 cli 매개변수만 남게 되는데, 이는 허용 가능하다고 생각합니다. 위치 인수로 자유롭게 사용하거나 일부 플래그를 제공하십시오. 예 --comment: 스크립트에서 프로그램을 추가로 사용하는 경우 긴 플래그를 제공하면 가독성이 향상되지만 주로 cli에서 프로그램을 수동으로 실행하는 경우 더 많은 것을 입력해야 합니다. .

어쨌든, Python으로 프로그램을 작성할 때 다음을 사용하는 것이 좋습니다.인수 모듈-- 매개변수를 구문 분석하고 원하는 경우 나중에 변경하는 데 도움이 됩니다.

관련 정보