Rust로 GiitHub CLI extension 만들기
8280 단어 GitHubRustghGitHub CLItech
Zenn에서도 다음과 같은 사람이 쓴 기사가 있다.
이전 사람들의 GiitHub CLI extension은 아래에서 찾을 수 있습니다.
기본적으로 조개 스크립트로 쓰는 것이 가장 쉽지만, 저는 Rust로 쓰고 싶어서 이 방법을 소개합니다.
설명은 주로 사용자 정의 명령의 실행 파일을 만드는 방법과 발표하는 방법에 관한 것이다.
참고로 이번 제작의 지령은 다음과 같다.
GiitHub의 기본 브랜치 이름을 참조하고 변경할 수 있습니다.
기본 분기를 마스터에서main으로 바꿀 때는 GUI가 귀찮아서 CLI로 하려고 했는데 자신을 위한 지령이었다.[1]
하는 일이 순서대로 진행되는 것
git
과 gh
지령에 불과하기 때문에 중간에 보니 완전히 조개 각본이어서 다행이다. 하지만 이 보도의 소재가 될 수 있어서 다행이다.생성 방법
나는 아래의 창고를 참고했다.
대략적인 절차는 다음과 같다.
cargo build
gh release create
로 발표된 바이너리gh-xx
의 실행 파일에서 진행gh release download
exec
명령으로 다운로드한 바이너리위의 참조 저장소에는 각각 Go, Type Script(Deno)가 사용됩니다.
1. Rust로 CLI 애플리케이션 만들기
자유롭게 만들어 보세요.
물론 코드에서
gh
명령을 사용할 수 있습니다.gh api 지령의 유연성이 높기 때문에 나는 기본적으로 무엇이든 할 수 있다고 생각한다.
그리고jq에 의존하지 않고 jq 옵션을 사용할 수 있다는 것은 정말 대단하다.
2. 게시
다음 발표용 스크립트를 써서
$ ./release.sh v0.1
의 느낌으로 실행합니다.release.sh
#!/bin/bash
set -e
tag="${1}"
cargoOutput="./target/release/gh-default-branch"
if [ "${tag}" == "" ]; then
echo "tag argument required"
exit 1
fi
cargo build --release
mv "${cargoOutput}" "${cargoOutput}-${tag}"
gh release create "$tag" "${cargoOutput}-${tag}" --title="${tag}" --notes "${tag}"
3. 명령 실행(발표된 바이너리 다운로드)
gh
명령에 의존하지만 GiitHub CLI extension 사용 = GiitHub CLI가 설치되어 있으므로 문제가 없습니다.현명한 해결책이네.gh-default-branch
#!/bin/bash
set -e
# TODO: 現状だと新しいバージョンがリリースされるたびに手動でこの tag を書き換える必要があるので、
# バージョン文字列のみ別ファイルに逃し、リリース時に上書きするなどして自動で更新されるようにしたい
tag="v0.1"
repo="daido1976/gh-default-branch"
exe="gh-default-branch-${tag}"
extensionPath="$(dirname "$0")"
if [[ ! -x "${extensionPath}/bin/${exe}" ]]; then
mkdir -p "${extensionPath}/bin"
rm -f "${extensionPath}/bin/gh-default-branch-"*
gh release -R"${repo}" download "${tag}" -p "${exe}" --dir="${extensionPath}/bin"
chmod +x "${extensionPath}/bin/${exe}"
fi
exec "${extensionPath}/bin/${exe}" "$@"
참고 자료
각주
README에 기재된 바와 같이 GUI에서 온rename에 비해 기능이 압도적으로 적으니 주의하십시오.↩︎
Reference
이 문제에 관하여(Rust로 GiitHub CLI extension 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/daido1976/articles/ceac2fe5168be8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)