🔥 셸 자동 완성 스크립트 사용하기

455자
5분

Swift 패키지 매니저(이하 SwiftPM)는 Bash와 ZSH 셸에서 사용할 수 있는 자동 완성 스크립트를 제공합니다. 이 스크립트를 사용하려면 먼저 생성해야 하는데요. 지금부터 차근차근 살펴보겠습니다.

Bash에서 자동 완성 스크립트 사용하기

Bash에서는 다음 명령을 사용하여 자동 완성 스크립트를 ~/.swift-package-complete.bash 파일에 설치하고, ~/.bash_profile 파일을 통해 자동으로 로드할 수 있습니다.

swift package completion-tool generate-bash-script > ~/.swift-package-complete.bash
echo -e "source ~/.swift-package-complete.bash\n" >> ~/.bash_profile
source ~/.swift-package-complete.bash
shell

위 명령어를 하나씩 뜯어보면 이런 의미입니다.

# Swift 패키지 매니저의 자동 완성 스크립트를 생성하여
# ~/.swift-package-complete.bash 파일에 저장합니다.
swift package completion-tool generate-bash-script > ~/.swift-package-complete.bash
 
# ~/.bash_profile 파일 맨 끝에 다음 내용을 추가합니다.
# source ~/.swift-package-complete.bash
echo -e "source ~/.swift-package-complete.bash\n" >> ~/.bash_profile
 
# 방금 수정한 ~/.bash_profile을 다시 로드합니다.
source ~/.swift-package-complete.bash
shell

또는 ~/.bash_profile 파일에 다음 명령을 직접 추가하여 자동 완성 기능을 바로 로드할 수도 있습니다.

# Source Swift completion
if [ -n "`which swift`" ]; then
    eval "`swift package completion-tool generate-bash-script`"
fi
shell
# Swift 명령어가 설치되어 있는지 확인하고,
if [ -n "`which swift`" ]; then
 
    # 설치되어 있다면 자동 완성 스크립트를 생성하여 바로 로드합니다.
    eval "`swift package completion-tool generate-bash-script`"
fi
shell

ZSH에서 자동 완성 스크립트 사용하기

ZSH에서는 ~/.zsh/_swift 경로에 자동 완성 스크립트를 설치하면 됩니다. 폴더는 다른 곳으로 지정해도 되지만, 파일 이름은 반드시 _swift여야 해요. 그리고 ~/.zshrc 파일을 통해 ~/.zsh 폴더를 $fpath에 추가하는 것도 잊지 마세요!

mkdir ~/.zsh
swift package completion-tool generate-zsh-script > ~/.zsh/_swift
echo -e "fpath=(~/.zsh \\$fpath)\n" >> ~/.zshrc
compinit
shell

위 명령어를 하나하나 살펴보면 이렇습니다.

# ~/.zsh 폴더를 생성합니다.
mkdir ~/.zsh
 
# Swift 패키지 매니저의 자동 완성 스크립트를 생성하여
# ~/.zsh/_swift 파일에 저장합니다.
swift package completion-tool generate-zsh-script > ~/.zsh/_swift
 
# ~/.zshrc 파일 맨 끝에 다음 내용을 추가합니다.
# fpath=(~/.zsh $fpath)
echo -e "fpath=(~/.zsh \\$fpath)\n" >> ~/.zshrc
 
# 자동 완성 기능을 초기화합니다.
compinit
shell

이렇게 하면 SwiftPM의 자동 완성 기능을 Bash나 ZSH 셸에서 편리하게 사용할 수 있답니다. 터미널에서 swift package를 입력하고 탭 키를 눌러보세요. 그러면 아래와 같이 입력할 수 있는 명령어 목록을 출력합니다.

% swift package <TAB을 눌러보세요>

archive-source                 -- Create a source archive for the package
clean                          -- Delete build artifacts
completion-tool                -- Completion tool (for shell completions)
compute-checksum               -- Compute the checksum for a binary artifact
config                         -- Manipulate configuration of the package
describe                       -- Describe the current package
diagnose-api-breaking-changes  -- Diagnose API-breaking changes to Swift mod
dump-package                   -- Print parsed Package.swift as JSON
dump-symbol-graph              -- Dump Symbol Graph
edit                           -- Put a package in editable mode
init                           -- Initialize a new package
plugin                         -- Invoke a command plugin or perform other a
purge-cache                    -- Purge the global repository cache.
reset                          -- Reset the complete cache/build directory
resolve                        -- Resolve package dependencies
show-dependencies              -- Print the resolved dependency graph
tools-version                  -- Manipulate tools version of the current pa
unedit                         -- Remove a package from editable mode
update                         -- Update package dependencies
text