본문으로 건너뛰기

HandStack CLI 사용법

HandStack CLI는 HandStack 서비스를 개발 및 운영에 유용한 기능을 제공하기 위한 명령줄 인터페이스(Command Line Interface)입니다.

HandStack CLI 프로그램 위치

ack 프로그램이 배치되어 있는 app 디렉토리의 cli 하위 디렉토리에 위치합니다. 예를 들면 다음과 같습니다.

cd [HandStack 소스 기본경로]/app
handstack --help

기능 소개 및 사용법

list

호스트내에 실행 중인 ack 프로세스 목록을 조회합니다. 이 정보에는 프로세스 ID, 시작 시간, 사용 중인 RAM, 및 파일 경로가 포함됩니다. 이 코드는 시스템 모니터링 또는 디버깅에 유용할 수 있습니다.

handstack list

configuration

사전에 정의된 ack 프로그램 및 모듈의 환경설정을 적용합니다. HandStack 의 프로그램의 실행을 위한 환경설정은 다음과 같이 4개로 구성됩니다.

  • appsettings: ack 프로그램의 기본 설정을 정의합니다.
  • modules 또는 modulesettings: 모듈의 동작 설정을 정의합니다.
  • nodeconfigs: Node.js 함수의 실행 설정을 정의합니다.
  • synconfigs: 웹 브라우저의 실행 설정을 정의합니다.

ack 프로그램을 실행하는 데 필요한 의도된 설정을 미리 만들어두고 선택적으로 적용할 수 있습니다.

handstack configuration --ack=C:/projects/handstack77/handstack/1.WebHost/build/handstack/app/ack --appsettings=ack.localhost.json

HandStack 솔루션의 1.WebHost/ack/Settings localhost 프리셋은 실행 원본과 동일하게 관리합니다. ack.localhost.json1.WebHost/ack/appsettings.json, modules/ack.<module>.localhost.json은 각 2.Modules/<module>/module.json, node/syn 프리셋은 각각 function/node.config.jsonwwwroot/wwwroot/syn.config.json에 대응합니다.

서버 환경 프리셋은 대응하는 .localhost.json과 같은 파일 집합과 설정을 사용합니다. 단, HTTP/HTTPS 루프백 URL의 localhost, 127.0.0.1, 0.0.0.0 호스트는 환경별 기본 URL로 바꾸고 포트와 경로는 유지합니다.

파일 접미어기본 URLAppSettings:RunningEnvironment
.development.jsonhttp://dev.example.comD
.test.jsonhttps://test.example.comD
.staging.jsonhttps://staging.example.comS
.production.jsonhttps://app.example.comP

데이터베이스 호스트처럼 웹 URL이 아닌 값은 바꾸지 않습니다. ack 런타임은 D, S, P만 지원하므로 test 프리셋은 D를 사용합니다.

handstack configuration --ack=C:/projects/handstack77/handstack/1.WebHost/build/handstack/app/ack --appsettings=ack.development.json
handstack configuration --ack=C:/projects/handstack77/handstack/1.WebHost/build/handstack/app/ack --appsettings=ack.test.json
handstack configuration --ack=C:/projects/handstack77/handstack/1.WebHost/build/handstack/app/ack --appsettings=ack.staging.json
handstack configuration --ack=C:/projects/handstack77/handstack/1.WebHost/build/handstack/app/ack --appsettings=ack.production.json

현재 모듈 프리셋은 checkup, command, dbclient, forwarder, function, graphclient, logger, prompter, repository, transact, wwwroot입니다. 솔루션에 프로젝트와 module.json이 없는 모듈은 모든 환경 프리셋에서 제외합니다.

purgecontracts

특정 contracts 디렉토리에 있는 파일들을 기준으로 ack 서버 프로그램이 있는 handstack/contracts 디렉토리에 있는 모든 중복된 파일을 삭제합니다. 이 명령은 업무 개발자가 원하는 디렉토리에서 화면과 기능을 구현하는 데 사용됩니다.

handstack purgecontracts --ack=C:/projects/handstack77/handstack/1.WebHost/build/handstack/app/ack --directory=C:/projects/myapp/contracts

startlog

ack 서버 프로그램이 있는 appsettings.json 의 환경 설정값을 적용하지 않고 전달하는 매개변수로 적용하는 시작하기 위한 명령어를 로그로 출력합니다. 이 명령은 개발 사용자가 원하는 디렉토리에서 업무 화면과 기능을 구현하거나 호스트에서 여러 ack 서버를 운영 하는데 사용됩니다.

handstack startlog --ack=C:/projects/handstack77/handstack/1.WebHost/build/handstack/app/ack --arguments="--debug" --appsettings=ack.localhost.json

start

ack 서버 프로그램이 있는 appsettings.json 의 환경 설정값을 적용하지 않고 전달하는 매개변수로 프로그램을 시작합니다. 이 명령은 개발 사용자가 원하는 디렉토리에서 업무 화면과 기능을 구현하거나 호스트에서 여러 ack 서버를 운영 하는데 사용됩니다.

handstack start --ack=C:/projects/handstack77/handstack/1.WebHost/build/handstack/app/ack --arguments="--debug" --appsettings=ack.localhost.json

stop

호스트내에서 실행중인 ack 서버 프로그램를 프로세스 ID 정보로 강제 종료합니다.

handstack stop --pid=12345

encrypt

개발 업무에 필요한 중요한 정보를 암호화 하고 싶을 때 사용합니다. 이 명령은 Base64, SUID, SQIDS, AES256, SYN, SHA256, 데이터베이스 연결문자열 암호화에 필요한 기능입니다.

handstack encrypt --format=base64 --value="hello world"
handstack encrypt --format=suid --value=N
handstack encrypt --format=sqids --value=12345
handstack encrypt --format=syn --value="hello world"
handstack encrypt --format=sha256 --value="hello world"
handstack encrypt --format=connectionstring --value="[connection string]"

decrypt

개발 업무에 필요한 중요한 정보를 복호화 하고 싶을 때 사용합니다. 이 명령은 Base64, SUID, SQIDS, AES256, SYN, SHA256, 데이터베이스 연결문자열 암호화에 필요한 기능입니다.

handstack decrypt --format=base64 --value=aGVsbG8gd29ybGQ=
handstack decrypt --format=suid --value=08dc610a149db47e51479a5190026a0c
handstack decrypt --format=sqids --value=2pbk0n0i
handstack decrypt --format=syn --key=b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9 --value=WzE1MiwyMDAsMTYyLDE2NCwxNjQsMTI5LDIxOSwxNjgsMjE2LDE2MSwxNTRdLjBjNjg1YWQ5ZjU2NjAwMGE3ZjNjYmI5YjhkOWFjMzY3MTllNDM3NDcxZmUxYTJhNGQ3Njc4ODRhMDY%3d
handstack decrypt --format=sha256 --key=b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9 --value="hello world"
handstack decrypt --format=connectionstring --value=qkQXrQyWlxBNw/ee2lA2mGxU1PJ4DWn7Ynp+NzA1OIo=.NGVhOGZiMTg1MzZjZTJlNTI2NzBkMWIwYjY5MzYzM2Q=.REVTS1RPUC0xUlZSMzBR.41542b92442fa3c716838a7320135e3f37ec203cda045e4446a10955e48a38b7

compress

지정된 디렉터리에서 파일 및 디렉터리를 포함하는 Zip 파일을 만듭니다. 이 기능은 다양한 운영체제에서 동일한 명령으로 작업을 수행할 수 있습니다.

handstack compress --directory=C:/projects/handstack77/handstack --file=C:/tmp/handstack.zip

extract

Zip 압축 파일을 지정된 디렉터리에 해제합니다. 이 기능은 다양한 운영체제에서 동일한 명령으로 작업을 수행할 수 있습니다.

handstack extract --file=C:/tmp/handstack.zip --directory=C:/tmp/handstack

create

modules, webapp 템플릿 ZIP 파일을 기반으로 프로젝트를 생성합니다. 이 기능은 개발자가 새로운 업무 모듈과 앱을 시작할 때 사용됩니다.

handstack create --ack=C:/projects/handstack77/handstack/1.WebHost/build/handstack/app/ack --file=C:/tmp/handstack.zip --directory=C:/tmp/handstack --find=[template] --replace=[myprojectname]

replacetext

텍스트 파일의 특정 문자열을 치환합니다. 소스코드 템플릿을 만들때 사용됩니다.

handstack replacetext --file=C:/tmp/handstack.txt --find=handstack --replace=myprojectname

task

운영체제에 따라 사전에 정의된 배치 스크립트 업무를 수행합니다. 클라이언트와 서버의 운영체제가 다를 경우 프로그램 실행에 필요한 사전 정의 된 스크립트를 실행합니다.

handstack task --file=C:/tmp/task.json --value=checkup:build;dbclient:build