본문으로 건너뛰기

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.json은 1.WebHost/ack/appsettings.json, modules/ack.<module>.localhost.json은 각 2.Modules/<module>/module.json, node/syn 프리셋은 각각 function/node.config.json과 wwwroot/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