Crystal-lang에선 Shards를 통해서 패키지와 디펜던시를 관리할 수 있습니다. 이는 go의 go get과 유사하게 yaml 내 작성된 github repository에서 소스를 읽어와 설치하는 형태입니다.
dependencies:
logger:
github: crystal-lang/logger.cr
종종 github enterprise와 같이 내부에 구축된 github의 경우 github.com
주소가 사용되지 않기 떄문에 go의 경우 GOPRIVATE을 이용해서 내부 주소에 접근하여 읽는 형태로 설치할 수 있었습니다. (참고)
Crystal도 비슷한 이슈가 있을까 싶어서 찾아봤는데, 생각보단 심플한 해결 방법을 가지고 있었습니다.
dependencies:
logger:
github: crystal-lang/logger.cr
foo:
git: git@your_github_enterprise_domain.com:user/foo.git
위와 같이 Shards.yaml 작성 시 foo 패키지와 같이 git 주소로 직접 명시하고 내부 주소를 기반으로 작성하면 로컬에 있는 깃 정보를 이용하여 접근 후 패키지를 설치하게 됩니다. 개인적으론 여러 외부/내부 패키지가 혼용되는 경우엔 go에서 사용하는 방식보다 조금 더 나은 방식이라고 생각이 드네요 :D