cktool 사용하기

시작하기 전에

응용 프로그램 설치하기

기본적으로 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"
  }
}'