cktool 사용하기
시작하기 전에
cktool
을 사용하려면 현재 Apple Developer Program 또는 Apple Developer Enterprise Program의 회원이어야 합니다.- CloudKit 개발 자동화하기에 설명된 인증의 개념을 잘 이해합니다.
- 사용자 계정의 ‘설정’ 섹션을 선택하여 CloudKit Console에서 CloudKit 관리 토큰을 생성합니다. 이 토큰은 다시 표시되지 않으므로 저장해 두어야 합니다.
응용 프로그램 설치하기
기본적으로 cktool
은 Xcode 13 버전부터 Xcode와 함께 배포됩니다. Xcode는 Mac App Store에서 다운로드받을 수 있습니다.
일반적인 사용법
cktool
은 상태가 저장되지 않으며 모든 작업을 한 번의 작업으로 CloudKit Management API에 전달합니다. 지원되는 작업의 전체 목록은 help
명령이나 man
페이지를 통해 확인할 수 있습니다.
xcrun cktool --help
OVERVIEW: CloudKit Command Line Tool
USAGE: cktool <subcommand>
OPTIONS:
-h, --help Show help information.
SUBCOMMANDS: ...
CloudKit에 cktool
인증하기
cktool
은 관리 및 사용자 토큰을 모두 지원하며 이러한 토큰을 Mac 키체인에 안전하게 저장합니다. 다음과 같이 save-token
명령을 사용하여 토큰을 추가할 수 있습니다. 이 명령을 사용하면 사용자에게 정보를 입력하라는 메시지가 표시된 후 적절한 토큰을 복사하기 위해 CloudKit Console이 실행됩니다.
xcrun cktool save-token \
--type [management | user]
스키마 관리 명령 실행하기
스키마 관리 명령에는 관리 토큰이 필요합니다. 관리 토큰이 제공되면 cktool
이 다음과 같은 명령을 수행할 수 있습니다.
개발 스키마를 재설정합니다. 이를 통해 개발 데이터베이스를 현재 프로덕션 정의로 되돌릴 수 있습니다.
xcrun cktool reset-schema \
--team-id [TEAM-ID] \
--container-id [CONTAINER]
스키마 파일을 내보냅니다. 이를 통해 기존 CloudKit 데이터베이스 스키마 정의를 파일에 저장할 수 있으며, 이 파일은 관련 소스 코드와 함께 보관할 수 있습니다.
xcrun cktool export-schema \
--team-id [TEAM-ID] \
--container-id [CONTAINER] \
--environment [development | production] \
[--output-file schema.ckdb]
스키마 파일을 가져옵니다. 이렇게 하면 테스트를 위해 개발 데이터베이스에 파일 기반 스키마 정의가 적용됩니다.
xcrun cktool import-schema \
--team-id [TEAM-ID] \
--container-id [CONTAINER] \
--environment development \
--file schema.ckdb
데이터 명령 실행하기
사용 가능한 사용자 토큰이 있으면 cktool
이 사용자를 대신하여 공개 및 비공개 데이터베이스에 접근할 수 있습니다. 이는 통합 테스트 전에 데이터를 가져오고 새 기록을 삽입하는 데 사용될 수 있습니다. 사용자 토큰의 수명이 짧기 때문에 대화식 인증을 자주 해야 할 수 있습니다.
기록 쿼리는 query-records
명령을 통해 수행할 수 있습니다. 필터가 없는 쿼리의 경우 선택적 --filters
인수에 지정된 필드와 마찬가지로 Queryable
인덱스가 적용되려면 ___recordID
가 필요합니다.
xcrun cktool query-records \
--team-id [TEAMID] \
--container-id [CONTAINER] \
--zone-name [ZONE_NAME] \
--database-type [public | private] \
--environment [development | production] \
--record-type [RECORD_TYPE] \
[--filters [FILTER_1] [FILTER_2]]
FILTER_1
은 "[FIELD_NAME] [OPERATOR] [VALUE]"
형태이며, 예를 들면 "lastname == Appleseed"
입니다.
데이터 삽입은 다음과 같이 create-record
명령을 통해 수행할 수 있습니다.
xcrun cktool create-record \
--team-id [TEAM_ID] \
--container-id [CONTAINER] \
--zone-name [ZONE_NAME] \
--database-type [public | private] \
--environment [development | production] \
--record-type [RECORD_TYPE] \
[--fields-json [FIELDS_JSON]]
FIELDS_JSON
은 기록에서 설정할 필드의 JSON 표현입니다. 예를 들면 다음과 같습니다.
'{
"firstName": {
"type": "stringType",
"value": "Johnny"
},
"lastName": {
"type": "stringType",
"value": "Appleseed"
}
}'