저는 golang을 처음 접하고 cobra 프레임워크를 사용하여 첫 번째 cli 애플리케이션을 시도하고 있습니다.
제 계획은 명령어를 적게 사용하고 플래그를 많이 사용하는 것입니다. 이러한 플래그에는 장치를 재부팅하기 위해 -r과 함께 간단히 사용할 수 있으므로 값을 추가할 필요가 없습니다.
현재 다음 작업을 수행하고 있지만 이 방법은 올바른 방법이 아니라고 생각했습니다. 따라서 어떤 도움이라도 대단히 감사하겠습니다.
현재 논리는 각 명령에 기본값이 추가된 다음 실행 명령에서 해당 값을 찾고 이를 캡처한 후 함수를 트리거하는 것입니다.
내 "작업 코드"는 다음과 같습니다.
My init 함수에는 명령에 다음 내용이 포함되어 있습니다.
으아악실행 부분은 아래와 같습니다.
chargercmd.flags().stringp("updatefirmware", "u", "", "updeates the firmware of the charger") chargercmd.flags().lookup("updatefirmware").nooptdefval = "yes" chargercmd.flags().stringp("reboot", "r", "", "reboots the charger") chargercmd.flags().lookup("reboot").nooptdefval = "yes"
burak의 의견에서 언급했듯이 사용법을 좀 더 명확하게 만들기 위해 명령과 플래그를 더 잘 구별할 수 있습니다. cobra를 사용하면 루트 명령과 루트 명령에 하위 명령을 연결할 수 있습니다. 또한 각 명령은 플래그를 허용할 수 있습니다.
귀하의 경우에는 charger
是根命令,您需要两个子命令:update_firmware
和 reboot
.
충전기를 다시 시작하는 예로서 다음 명령을 실행합니다.
으아악위 코드에서는 하위 명령을 플래그로 정의하려고 합니다. 이는 가능하지만 좋은 방법은 아닐 것입니다.
대신 프로젝트는 다음과 같이 설정되어야 합니다: https://github.com/hesamchobanlou/stackoverflow/tree/main/74934087
그런 다음 루트 Chargercmd에서 모든 플래그 변형을 확인하는 대신 cmd/update_firmware.go 아래의 해당 명령 정의에서 updatefirmware(...)
작업을 이동할 수 있습니다.
이 방법이 도움이 되지 않는다면 귀하의 접근 방식이 올바르지 않다고 생각하는 이유에 대해 더 자세한 내용을 제공해 주세요.
위 내용은 값이 없는 Golang Cobra 여러 플래그의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!