[DAML documentation 따라가기] Create Daml Apps - Daml Assistant

2023. 7. 11. 17:35DAML

1. daml 명령어

 

daml 공식 문서를 보면 command line에 daml을 굉장히 많이 쓰는 것을 알 수 있어요.

 

아래처럼요!

 

daml start
daml build
daml studio

 

이런식으로 쓰이는 daml명령어는 daml assistant를 사용해서 daml SDK의 기능에 접근해서 다양한 일을 하게 해주는 CLI이에요.

 

2. configuration files

 

Daml assistant와 SDK는 두 개의 file로 configure돼요.

  • global config file
  • project config file

 

Global Config File (daml-config.yaml)

  • SDK 설치와 업데이트를 담당해요.
  • SDK 설치마다 한 개가 있어요.
  • Linux, Mac은 ~./daml 안에 있어요.
  • windows는 C:/Users/<user>/AppData/Roaming/daml 안에 있어요.

daml-config.yaml 안에 들어있는 내용

공식 문서에는 아래처럼 적혀있어요.

  • update-check
    • 몇 초마다 한번 SDK의 새로운 버전을 체크할 지 명시.
    • 숫자를 넣으면 몇 초마다 한번 체크하는지, never을 넣으면 체크과정을 진행하지 않도록 configure해요.
    • default는 86400    ----> 근데 해보니까 never이 default로 설정이 되더라... 공식 명세랑 다름!
  • auto-install
    • missing SDK 버전이 확인되면 자동으로 설치할 지 여부를 명시.
    • true를 넣으면 자동 설치, false 넣으면 자동 설치 되지 않도록 configure해요.
    • default는 true   ----> 근데 해보니까 false가 default로 설정이 되더라... 공식 명세랑 다름!
  • artifactory-api-key
    • Daml Enterprise 버전의 경우 발급받은 api key가 들어가야돼요.
    • Windows : 다운 받으면 알아서 추가가 되는 듯(?)
    • Linux, MacOS : 다운 받고 daml-config.yaml의 해당 entry를 직접 추가해주어야 해요,

 

 

Project Config File

  • project가 어떻게 빌드되는지, SDK(Sandbox, Navigator)가 project와 어떻게 상호작용하는 지를 담당해요.
  • Daml project마다 한 개가 있어요.
  • daml build, daml start 명령어를 사용할 수 있어요.
  • daml init이 daml.yaml를 생성하고, 해당 폴더가 project folder임을 알 수 있도록 해요.
  • daml new는 새로운 project folder를 생성하고, 내부에 daml.yaml 을 생성해요.
sdk-version: 2.6.5
name: create-daml-app
version: 0.1.0
source: daml
dependencies:
- daml-prim
- daml-stdlib
- daml-script
start-navigator: false
codegen:
  js:
    output-directory: ui/daml.js
    npm-scope: daml.js
# Remove this line when running against a ledger without user management.
init-script: Setup:setup
  • sdk-version : 프로젝트가 사용할 SDK 버전을 명시해요.
    • Daml assistant가 자동으로 해당 버전의 SDK를 설치(global config file의 configuration을 바탕으로) 해요.
    • daml.yaml의 버전을 설정해도 되고, DAML_SDK_VERSION라는 이름의 환경변수를 설정해도 돼요.
    • Daml assistant가 update하게 될 때 경고를 보내줘요.
  • name : 프로젝트 이름, daml build로 compile되는.dar파일의 이름을 결정해요.
  • version : 프로젝트 버전. 결과적으로 .dar의 이름은 create-daml-app-0.1.0.dar이 돼요.
  • source : 프로젝트 루트를 기준으로 Daml Source Code의 루트를 명시해요.
  • dependencies : 프로젝트의 library-dependency를 명시해요.
  • data-dependencies : 프로젝트의 Cross-SDK dependency를 명시해요.
  • start-navigator : daml start의 일부로 navigator가 시작되는 지의 여부를 명시해요.
  • init-script : daml start 명령어가 실행할 Daml script 파일의 이름을 명시해요.

 

 

여러가지 명령어들이 있는데 그 중에 가장 메인 부분을 살펴볼게요.

 

daml start

 

  1. Daml code를 DAR file로 compile해요. (daml build의 과정을 진행하는 것이에요.)
  2. Daml code랑 UI 연결을 위해 ui/daml.js 에 있는 Javascript library를 생성해요.
  3. in-memory ledger인 Sandbox의 instance를 DAR이 로드된 상태로 시작해요.
  4. Daml ledger(지금은 Sandbox)에게 명령하기 위한 HTTP JSON API 서버를 시작해요.