Atlas CLI 사용자 지정 명령으로 기능을 확장할 수 있는 플러그인을 지원합니다. 독립형 바이너리로 컴파일되는 모든 프로그래밍 언어 로 플러그인을 개발할 수 있습니다.
이 튜토리얼에서는 고 (Go) 와 Cobra 라이브러리를 사용하여 첫 번째 Atlas CLI 플러그인을 만드는 방법을 안내합니다.
기존 플러그인 설치 및 관리에 대해 자세히 학습 Atlas 플러그인을 참조하세요.
플러그인 작동 방식
각 Atlas CLI 플러그인은 두 가지 구성 요소로 구성됩니다.
플러그인과 해당 명령을 설명하는
manifest.yml파일사용자가 플러그인 명령을 실행할 때 Atlas CLI 호출하는 실행 가능한 바이너리
플러그인 명령을 실행 하면 Atlas CLI 매니페스트 파일 읽고 올바른 바이너리를 식별한 다음 적절한 인수를 사용하여 실행합니다. 플러그인 바이너리는 모든 명령 로직을 독립적으로 처리합니다.
전제 조건
시작하기 전에 다음 항목이 설치되어 있는지 확인합니다.
Atlas CLI.Atlas CLI 설치 또는 업데이트를 참조하세요.
첫 번째 플러그인 만들기
매니페스트 파일 검토합니다.
manifest.template.yml 를 열어 플러그인 구성을 확인합니다.
name: atlas-cli-plugin-example description: this is an example plugin version: $VERSION github: owner: $GITHUB_REPOSITORY_OWNER name: $GITHUB_REPOSITORY_NAME binary: $BINARY commands: example: description: Root command of the atlas cli plugin example aliases: - example-alias-1 - example-alias-2
manifest.template.yml 플러그인의 매니페스트 파일 정의합니다. 매니페스트는 플러그인이 제공하는 명령과 실행할 바이너리를 Atlas CLI 에 알려줍니다.
플러그인 코드를 검토합니다.
플러그인 구현 보려면 cmd/plugin/main.go 를 엽니다.
package main import ( "fmt" "os" "github.com/spf13/cobra" ) func main() { rootCmd := &cobra.Command{ Use: "example", Short: "An example Atlas CLI plugin", Run: func(cmd *cobra.Command, args []string) { fmt.Println("Hello from the Atlas CLI plugin!") }, } if err := rootCmd.Execute(); err != nil { os.Exit(1) } }
이 플러그인은 Cobra를 사용하여 명령을 정의합니다. Atlas CLI 플러그인을 실행할 때 명령 이름과 인수를 바이너리에 전달합니다.
플러그인을 빌드하고 설치합니다.
리포지토리 루트에서 플러그인 바이너리를 빌드 하고 매니페스트 파일 생성합니다.
go build -o bin/binary ./cmd/plugin BINARY=binary VERSION=1.0.0 \ GITHUB_REPOSITORY_OWNER=$(git remote get-url origin | sed 's/.*[:/]\(.*\)\/.*/\1/') \ GITHUB_REPOSITORY_NAME=$(basename -s .git $(git remote get-url origin)) \ envsubst < manifest.template.yml > manifest.yml
플러그인 디렉토리 생성하고 파일을 복사합니다. 기본값 플러그인 디렉토리 운영 체제에 따라 다릅니다.
PLUGIN_DIR=~/Library/Application\ Support/atlascli/plugins/atlas-cli-plugin-example mkdir -p "$PLUGIN_DIR" cp manifest.yml bin/binary "$PLUGIN_DIR/"
PLUGIN_DIR=~/.config/atlascli/plugins/atlas-cli-plugin-example mkdir -p "$PLUGIN_DIR" cp manifest.yml bin/binary "$PLUGIN_DIR/"
플러그인 사용자 지정
자체 플러그인을 만들려면 예시 를 수정하거나 처음부터 시작하세요.
플러그인의 이름, 설명, 명령으로
manifest.template.yml을(를) 업데이트합니다.고 (Go) (또는 독립형 바이너리로 컴파일되는 모든 언어 )로 명령 로직을 구현하세요.
바이너리 이름이
manifest.template.yml의binary필드 와 일치하는지 확인합니다.
중요
매니페스트의 명령 이름은 기존 Atlas CLI 명령 또는 설치된 다른 플러그인의 명령과 충돌하지 않아야 합니다.
플러그인 배포
다른 사용자가 atlas plugin install 명령으로 플러그인을 설치할 수 있도록 플러그인을 배포하려면 다음 단계를 따르세요.
GitHub 리포지토리 에 플러그인을 호스팅합니다.
GoReleaser 또는 유사한 도구를 사용하여 여러 플랫폼에 맞게 컴파일된 바이너리로 GitHub 릴리스를 생성합니다. 예시 리포지토리
.goreleaser.yaml구성과 자동화된 릴리스를 위한 GitHub 작업 워크플로가 포함되어 있습니다.시맨틱 버전 관리에 따라 출시하다 태그를 지정하다 생성합니다(
v1.0.0예시:).
GitHub 출시하다 만든 후 사용자는 플러그인을 설치할 수 있습니다.
atlas plugin install <github-owner>/<repository-name>
다른 프로그래밍 언어 사용
고 (Go) with Cobra를 권장하지만, 독립형 실행 바이너리로 컴파일되는 모든 언어 로 플러그인을 쓰기 (write) 수 있습니다. 다른 언어 로 작성된 플러그인의 예시 는 GitHub의 Rust 플러그인 리포지토리 예시 를 참조하세요.
플러그인은 다음 요구 사항을 충족해야 합니다.
바이너리는 명령 이름을 첫 번째 인수로 허용해야 합니다.
바이너리는 독립형 실행 파일이어야 합니다(외부 런타임 종속성이 없어야 함).
manifest.yml의binary필드 바이너리 파일 이름과 일치해야 합니다.
자세히 알아보기
atlas plugin - Manage Atlas CLI plugins.
atlas plugin install - Install a plugin.
atlas plugin update - Update a plugin.
atlas plugin uninstall - Uninstall a plugin.