Caffeine CLI 사용자 매뉴얼
📖 목차
개요
Caffeine CLI는 Caffeine IoT 플랫폼 기반 프로젝트를 빠르고 쉽게 생성, 관리, 배포할 수 있는 명령줄 도구입니다.
주요 기능
- 🚀 배포 환경 구성:
cafe setup대화형 위자드로 Docker 환경 원클릭 구성 - ✅ 환경 진단: 개발 환경의 필수 요소 (SDK, Docker, 포트) 검증
- 🏗️ 프로젝트 생성: 템플릿 기반 드라이버 및 앱 프로젝트 생성
- 📦 패키징: NuGet 패키지 빌드 및 배포
- 🔧 버전 관리: CLI 및 런타임 버전 정보 확인
지원 환경
- .NET SDK: 10.0 이상
- OS: Windows, Linux, macOS
- PowerShell: 5.1 이상 (Windows)
설치 및 설정
전제 조건
Caffeine CLI를 사용하기 전에 다음 도구가 설치되어 있어야 합니다:
-
.NET 10.0 SDK
dotnet --version
# 출력 예: 10.0.102 -
Docker (선택사항,
doctor명령어 사용 시)docker --version
# 출력 예: Docker version 24.0.7 -
Git (선택사항,
--git옵션 사용 시)git --version
# 출력 예: git version 2.42.0
CLI 빌드 및 실행
1. 소스에서 빌드
# CLI 프로젝트 빌드
dotnet build src/Caffeine.Cli
# 별칭 설정 (선택사항)
# Windows (PowerShell)
Set-Alias cafe "dotnet run --project src/Caffeine.Cli --"
# Linux/macOS (Bash)
alias cafe='dotnet run --project src/Caffeine.Cli --'
2. NuGet 글로벌 도구 설치 (권장)
# NuGet에서 글로벌 도구 설치
dotnet tool install -g NEXCODE.Caffeine.Cli
# 사용
cafe --help
# 업데이트
dotnet tool update -g NEXCODE.Caffeine.Cli
명령어 참조
전체 명령어 구조
doctor 명령어
목적: 개발 환경의 상태를 진단하고 필수 요소가 올바르게 설치되었는지 확인합니다.
사용법
cafe doctor
검사 항목
| 항목 | 검사 내용 | 기대 결과 |
|---|---|---|
| .NET SDK | dotnet --version 실행 | 버전 10.0 이상 |
| Docker | docker --version 실행 | Docker가 설치 및 실행 중 |
| Redis 포트 | TCP 6379 포트 확인 | 사용 가능 또는 이미 사용 중 |
| MQTT 포트 | TCP 1883 포트 확인 | 사용 가능 또는 이미 사용 중 |
| Kafka 포트 | TCP 9092 포트 확인 | 사용 가능 또는 이미 사용 중 |
출력 예시
____ ___ ____ _____ ___ ____
| _ \ / _ \ / ___|_ _/ _ \| _ \
| | | | | | | | | || | | | |_) |
| |_| | |_| | |___ | || |_| | _ <
|____/ \___/ \____| |_| \___/|_| \_\
Diagnosing your development environment...
┌────────────────┬─────────────────────────┬────────┐
│ Component │ Version/Status │ Status │
├────────────────┼─────────────────────────┼────────┤
│ .NET SDK │ 10.0.102 │ ✓ OK │
│ Docker │ 24.0.7 │ ✓ OK │
│ Redis (6379) │ Available │ ✓ OK │
│ MQTT (1883) │ In Use │ ⚠ WARN │
│ Kafka (9092) │ Available │ ✓ OK │
└────────────────┴─────────────────────────┴────────┘
System is ready for Caffeine development!
트러블슈팅
- Docker 없음: Docker Desktop 설치 또는 Linux에서 Docker Engine 설치
- 포트 사용 중: 해당 서비스가 이미 실행 중이므로 정상입니다
- .NET SDK 버전 오류:
dotnet --list-sdks로 설치된 버전 확인 후 업그레이드
init 명령어
목적: 템플릿 기반으로 새로운 Caffeine 프로젝트를 생성합니다.
사용법
# 대화형 모드
cafe init
# 비대화형 모드
cafe init --name <프로젝트명> --template <템플릿> [옵션]
옵션
| 옵션 | 축약형 | 설명 | 기본값 | 필수 |
|---|---|---|---|---|
--name | -n | 프로젝트 이름 | - | ❌ (대화형) |
--template | -t | 템플릿 유형 (driver, app, driver-full, solution) | - | ❌ (대화형) |
--output | -o | 출력 디렉토리 | 현재 디렉토리 | ❌ |
--git | -g | Git 저장소 초기화 | false | ❌ |
템플릿 종류
| 템플릿 | 설명 | 생성 파일 |
|---|---|---|
| driver | 기본 드라이버 프로젝트 | .csproj, DriverService.cs, README.md |
| app | Caffeine 클라이언트 앱 | .csproj, Program.cs, README.md |
| driver-full | 드라이버 + 테스트 프로젝트 | src/, tests/ (완전한 구조) |
| solution | 솔루션 템플릿 | .gitignore |
프로젝트 이름 규칙
프로젝트 이름은 다음 규칙을 준수해야 합니다:
- ✅ 영문자로 시작
- ✅ 영문자, 숫자, 하이픈(
-), 밑줄(_) 사용 가능 - ❌ 숫자로 시작 불가
- ❌ 특수문자 (
!@#$%^&*()등) 사용 불가 - ❌ Windows 예약어 (
CON,PRN,AUX,NUL등) 사용 불가 - ❌ 공백 포함 불가
유효한 이름 예시: ModbusDriver, OpcUa-Client, My_Driver_2024
유효하지 않은 이름 예시: 123Driver, My Driver!, CON
워크플로우
사용 예시
예시 1: 대화형 모드
$ cafe init
____ __ ___ _ __
/ ___|__ _ / _| ___ |_ _|_ __ (_) __|
| | / _` | |_ / _ \ | || '_ \| | __|
| |__| (_| | _| __/ | || | | | | |_
\____\__,_|_| \___| |___|_| |_|_|\__|
What is the name of your project?
> ModbusDriver
Choose a template:
driver
app
> driver-full
solution
Creating driver-full project: ModbusDriver
✅ Successfully created ModbusDriver!
Generated files:
• src\ModbusDriver.csproj
• src\ModbusDriver.cs
• tests\ModbusDriver.Tests.csproj
• tests\ModbusDriverTests.cs
Next steps:
cd ModbusDriver
dotnet restore
dotnet build
dotnet test
예시 2: 비대화형 모드
$ cafe init --name OpcUaDriver --template driver --output ./projects --git
Creating driver project: OpcUaDriver
✅ Successfully created OpcUaDriver!
Generated files:
• OpcUaDriver.csproj
• OpcUaDriver.cs
• README.md
Initializing Git repository...
✅ Git repository initialized successfully
Next steps:
cd OpcUaDriver
dotnet restore
dotnet build
생성된 프로젝트 구조
driver 템플릿
MyDriver/
├── MyDriver.csproj
├── MyDriver.cs
└── README.md
driver-full 템플릿
MyDriver/
├── src/
│ ├── MyDriver.csproj
│ └── MyDriver.cs
└── tests/
├── MyDriver.Tests.csproj
└── MyDriverTests.cs
version 명령어
목적: Caffeine CLI 및 런타임 버전 정보를 표시합니다.
사용법
cafe version
출력 예시
__ __ _
\ \ / /__ _ __ ___(_) ___ _ __
\ \ / / _ \ '__/ __| |/ _ \| '_ \
\ V / __/ | \__ \ | (_) | | | |
\_/ \___|_| |___/_|\___/|_| |_|
┌──────────────────┬──────────────────────┐
│ Property │ Value │
├──────────────────┼──────────────────────┤
│ CLI Version │ 0.9.0-prototype │
│ Assembly Version │ 0.9.0 │
│ .NET Runtime │ .NET 10.0.2 │
│ Operating System │ Microsoft Windows 11 │
│ Architecture │ X64 │
└──────────────────┴──────────────────────┘
For more information, visit: https://www.nexcode.co.kr/caffeine
정보 설명
- CLI Version: 사용자에게 표시되는 버전 (InformationalVersion)
- Assembly Version: 어셈블리 파일 버전
- .NET Runtime: 현재 실행 중인 .NET 런타임 버전
- Operating System: 운영 체제 정보
- Architecture: CPU 아키텍처 (X64, ARM64 등)
package 명령어
목적: 현재 프로젝트를 NuGet 패키지로 빌드하고 NuGet 피드에 배포합니다.
사용법
# 프로젝트 디렉토리에서 실행
cd src/MyDriver
cafe package
전제 조건
- 현재 디렉토리가 Caffeine 프로젝트 (
.csproj파일에Caffeine.Core또는Caffeine.Client참조 포함) publish_local.ps1스크립트가scripts/디렉토리에 존재
워크플로우
출력 예시
____ _
| _ \ __ _ ___| | ____ _ __ _ ___
| |_) / _` |/ __| |/ / _` |/ _` |/ _ \
| __/ (_| | (__| < (_| | (_| | __/
|_| \__,_|\___|_|\_\__,_|\__, |\___|
|___/
Building NuGet package...
✅ Package built successfully
Package has been published to NuGet feed.
에러 메시지
1. Caffeine 프로젝트가 아닌 경우
❌ Not a Caffeine project directory.
Please run this command in a directory containing a Caffeine project (.csproj with Caffeine references).
해결: Caffeine.Core 또는 Caffeine.Client를 참조하는 프로젝트 디렉토리에서 실행
2. 스크립트 없음
❌ publish_local.ps1 script not found. Please ensure you are in a Caffeine project directory.
💡 Tip: Ensure publish_local.ps1 exists in scripts/ directory.
해결: 프로젝트 루트에 scripts/publish_local.ps1 파일 확인
events 명령어
목적: 시스템에 등록된 이벤트 카탈로그를 조회합니다.
서브커맨드 구조
cafe events <서브커맨드> [옵션]
| 서브커맨드 | 설명 |
|---|---|
list | 등록된 이벤트 전체 목록 출력 |
show <eventName> | 특정 이벤트의 상세 정보 출력 |
events list
모든 등록된 이벤트를 테이블 형식으로 출력합니다.
사용법
cafe events list [옵션]
옵션
| 옵션 | 축약형 | 설명 | 기본값 |
|---|---|---|---|
--severity | -s | 심각도 필터 (Debug, Info, Warning, Error, Critical) | 전체 |
--assembly | -a | 어셈블리 이름 필터 (부분 일치) | 전체 |
출력 예시
_____ _
| ____|_ _____ _ __ | |_ ___
| _| \ \ / / _ \ '_ \| __/ __|
| |___ \ V / __/ | | | |_\__ \
|_____| \_/ \___|_| |_|\__|___/
╭─────────────────────────────┬──────────┬──────────────────────────────────────┬──────────────────────────────╮
│ Event Name │ Severity │ Description │ Assembly │
├─────────────────────────────┼──────────┼──────────────────────────────────────┼──────────────────────────────┤
│ DeviceConnected │ Info │ 장치 연결 성공 │ Caffeine.Core │
│ DeviceDisconnected │ Warning │ 장치 연결 해제 │ Caffeine.Core │
│ DataIngestionFailed │ Error │ 데이터 수집 실패 │ Caffeine.Engine │
│ AlarmTriggered │ Critical │ 알람 발생 │ Caffeine.Engine │
╰─────────────────────────────┴──────────┴──────────────────────────────────────┴──────────────────────────────╯
Total: 4 event(s)
필터링 예시
# 심각도 Error 이상만 조회
cafe events list --severity Error
# 특정 어셈블리 이벤트만 조회
cafe events list --assembly Caffeine.Engine
# 심각도 + 어셈블리 복합 필터
cafe events list -s Warning -a Caffeine.Core
events show
특정 이벤트의 상세 정보를 출력합니다.
사용법
cafe events show <eventName>
인수
| 인수 | 설명 | 필수 |
|---|---|---|
eventName | 조회할 이벤트 이름 (정확한 이름) | ✅ |
출력 예시
$ cafe events show DeviceConnected
_____ _
| ____|_ _____ _ __ | |_
| _| \ \ / / _ \ '_ \| __|
| |___ \ V / __/ | | | |_
|_____| \_/ \___|_| |_|\__|
╭──────────────┬────────────────────────────────╮
│ Event Name │ DeviceConnected │
│ Description │ 장치 연결 성공 │
│ Severity │ Info │
│ Type │ Caffeine.Core.Events.DeviceConnectedEvent │
│ Assembly │ Caffeine.Core │
╰──────────────┴────────────────────────────────╯
이벤트를 찾지 못한 경우
$ cafe events show UnknownEvent
❌ Event 'UnknownEvent'을 찾을 수 없습니다.
심각도(Severity) 종류
| 값 | 설명 | 표시 색상 |
|---|---|---|
Debug | 디버그 정보 | 회색 |
Info | 일반 정보 | 청록색 |
Warning | 주의 필요 | 노란색 |
Error | 오류 발생 | 빨간색 |
Critical | 심각한 오류 | 자주색 |
setup 명령어
목적: Caffeine 배포 환경을 대화형 위자드로 구성합니다. Docker Compose 프로파일 선택, .env 자동 생성, Production 보안 검증, 원격 SSH 배포를 단계적으로 안내합니다.
사용법
# 대화형 위자드 (가장 일반적인 사용법)
cafe setup
# Production 모드 (보안 체크리스트 포함)
cafe setup --mode production
# 원격 SSH 배포
cafe setup --remote ssh://user@192.168.1.100
옵션
| 옵션 | 단축키 | 기본값 | 설명 |
|---|---|---|---|
--mode | -m | development | 배포 모드 (development | production) |
--remote | — | — | 원격 Docker SSH URL (예: ssh://user@host) |
지원 프로파일
| 프로파일 | 서비스 | 용도 |
|---|---|---|
minimal | Redis, MQTT | 드라이버 개발 최소 환경 |
standard | + InfluxDB, Kafka | 표준 개발환경 (권장) |
full | + TypeDB, Grafana | 전체 기능 개발 |
full+monitoring | + Prometheus | 운영 모니터링 포함 |
app | + Caffeine Engine, Admin | 소스 없이 앱 실행 |
서브커맨드
setup status — 서비스 상태 확인
# 실행 중인 Docker Compose 서비스 목록
cafe setup status
# HTTP /health 엔드포인트 폴링 포함
cafe setup status --health
# 원격 서버 상태 확인
cafe setup status --remote ssh://user@host
| 옵션 | 단축키 | 설명 |
|---|---|---|
--health | -H | HTTP /health 엔드포인트 폴링 |
--remote | — | 원격 Docker SSH URL |
setup down — 서비스 중지
cafe setup down
cafe setup down --remote ssh://user@host
setup extract — 배포 파일 추출
CLI에 내장된 docker-compose.yml, .env.example 등의 배포 파일을 추출합니다.
# 현재 디렉토리에 추출
cafe setup extract
# 특정 경로에 추출
cafe setup extract --output ./deploy
# 특정 프로파일 파일만 추출
cafe setup extract --profile minimal
# 내장 리소스 목록 확인
cafe setup extract --list
# 기존 파일 덮어쓰기
cafe setup extract --force
| 옵션 | 단축키 | 기본값 | 설명 |
|---|---|---|---|
--output | -o | 현재 디렉토리 | 추출 대상 경로 |
--force | -f | false | 기존 파일 덮어쓰기 |
--list | -l | false | 리소스 목록만 표시 |
--profile | -p | — | 특정 프로파일 파일만 추출 |
출력 예시
____ __ ____ __
/ ___|__ _ / _| ___ / ___| ___| |_ _ _ _ __
| | / _` | |_ / _ \ \___ \ / _ \ __| | | | '_ \
| |__| (_| | _| __/ ___) | __/ |_| |_| | |_) |
\____\__,_|_| \___| |____/ \___|\__|\__,_| .__/
|_|
Caffeine 배포 환경 구성 마법사
사전 검증 중...
✅ Docker: 설치됨 (24.0.7)
✅ Docker 데몬: 실행 중
✅ Docker Compose: 사용 가능 (v2.23.0)
? 배포 프로파일을 선택하세요:
Minimal (드라이버 개발용)
❯ Standard (표준 개발환경 — 권장)
Full (전체 기능)
Full + Monitoring (운영 모니터링)
App (소스 없이 실행)
자세한 내용은 배포 위자드 가이드를 참조하세요.
템플릿 시스템
Caffeine CLI는 Embedded Resource로 템플릿을 관리하며, 프로젝트 생성 시 변수를 치환합니다.
템플릿 변수
모든 템플릿 파일(.template)에서 사용 가능한 변수:
| 변수 | 설명 | 예시 |
|---|---|---|
{{ProjectName}} | 사용자가 입력한 프로젝트 이름 | ModbusDriver |
{{Namespace}} | C# 네임스페이스 (하이픈/공백 → 밑줄) | Modbus_Driver |
{{ClassName}} | C# 클래스명 (하이픈/공백 제거) | ModbusDriver |
{{Year}} | 현재 연도 | 2026 |
{{Month}} | 현재 월 (2자리) | 01 |
{{Day}} | 현재 일 (2자리) | 28 |
{{Author}} | 시스템 사용자명 | matrix |
템플릿 구조
driver 템플릿
Templates/driver/
├── Driver.csproj.template
├── DriverService.cs.template
└── README.md.template
파일 변환 예시:
Driver.csproj.template→ModbusDriver.csprojDriverService.cs.template→ModbusDriver.cs
driver-full 템플릿
Templates/driver-full/
├── src/
│ ├── Driver.csproj.template
│ └── DriverService.cs.template
└── tests/
├── DriverTests.csproj.template
└── DriverServiceTests.cs.template
디렉토리 구조 유지: src/, tests/ 디렉토리가 그대로 생성됩니다.
템플릿 예시
Driver.csproj.template
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<RootNamespace>{{Namespace}}</RootNamespace>
<Authors>{{Author}}</Authors>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="NEXCODE.Caffeine.Core" Version="2.0.*" />
</ItemGroup>
</Project>
치환 후 (프로젝트명: ModbusDriver):
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<RootNamespace>ModbusDriver</RootNamespace>
<Authors>matrix</Authors>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="NEXCODE.Caffeine.Core" Version="2.0.*" />
</ItemGroup>
</Project>
사용 예시
시나리오 1: Modbus 드라이버 개발
요구사항: Modbus TCP 프로토콜을 지원하는 드라이버 개발
# 1. 프로젝트 생성 (테스트 포함)
cafe init --name ModbusTcpDriver --template driver-full --git
cd ModbusTcpDriver
# 2. 의존성 복원 및 빌드
dotnet restore
dotnet build
# 3. 테스트 실행
dotnet test
# 4. 구현 후 패키징
cd src
cafe package
시나리오 2: 데이터 수집 앱 개발
요구사항: Caffeine 클라이언트를 사용한 데이터 수집 앱
# 1. 프로젝트 생성
cafe init -n DataCollectorApp -t app -o ./projects
cd projects/DataCollectorApp
# 2. Program.cs 수정 (비즈니스 로직 추가)
# ... 코드 작성 ...
# 3. 실행
dotnet run
시나리오 3: CI/CD 파이프라인
GitHub Actions 예시:
name: Build and Package
on:
push:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup .NET
uses: actions/setup-dotnet@v3
with:
dotnet-version: '10.0.x'
- name: Diagnose Environment
run: dotnet run --project src/Caffeine.Cli -- doctor
- name: Build Project
run: dotnet build src/MyDriver
- name: Run Tests
run: dotnet test tests/MyDriver.Tests
- name: Package
run: dotnet run --project src/Caffeine.Cli -- package
working-directory: src/MyDriver
트러블슈팅
문제 1: "Not a valid project name" 에러
증상:
❌ Invalid project name: Names starting with a digit are not allowed.
원인: 프로젝트 이름이 숫자로 시작하거나 특수문자 포함
해결:
- 영문자로 시작하는 이름 사용
- 특수문자 대신 하이픈(
-) 또는 밑줄(_) 사용
예시:
# ❌ 잘못된 이름
cafe init --name 2024Driver # 숫자 시작
cafe init --name My Driver! # 공백 및 특수문자
# ✅ 올바른 이름
cafe init --name Driver2024
cafe init --name My-Driver
문제 2: "Directory already exists" 에러
증상:
❌ Failed to create project: Directory 'MyDriver' already exists.
원인: 동일한 이름의 디렉토리가 이미 존재
해결:
# 방법 1: 다른 이름 사용
cafe init --name MyDriver_v2
# 방법 2: 기존 디렉토리 제거
rm -rf MyDriver
cafe init --name MyDriver
# 방법 3: 다른 출력 경로 지정
cafe init --name MyDriver --output ./new_projects
문제 3: Git 초기화 실패
증상:
⚠️ Git is not installed or not in PATH. Please install Git first.
원인: Git이 설치되지 않았거나 환경 변수 PATH에 없음
해결:
# Windows (Chocolatey)
choco install git
# Linux (Ubuntu)
sudo apt install git
# macOS (Homebrew)
brew install git
# 설치 확인
git --version
문제 4: Package 명령어가 스크립트를 찾지 못함
증상:
❌ publish_local.ps1 script not found.
원인: 프로젝트 구조가 표준과 다르거나 스크립트가 없음
해결:
# 1. 현재 위치 확인
pwd
# 2. 스크립트 존재 확인
ls scripts/publish_local.ps1
# 3. 루트 디렉토리로 이동 후 재시도
cd ../..
cd src/MyDriver
cafe package
문제 5: PowerShell Execution Policy 에러
증상 (Windows):
... cannot be loaded because running scripts is disabled on this system.
원인: PowerShell 스크립트 실행 정책 제한
해결:
# 현재 세션만 허용
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
# 또는 사용자 수준으로 영구 허용 (관리자 권한)
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
FAQ
Q1: CLI를 전역 도구로 설치할 수 있나요?
A: 예, NuGet에서 글로벌 도구로 설치할 수 있습니다.
# NuGet 글로벌 도구로 설치
dotnet tool install -g NEXCODE.Caffeine.Cli
# 설치 확인
cafe --version
# 업데이트
dotnet tool update -g NEXCODE.Caffeine.Cli
소스에서 직접 빌드하려는 경우:
# 별칭 설정 (Linux/macOS)
alias cafe='dotnet run --project /path/to/Caffeine/src/Caffeine.Cli --'
Q2: 커스텀 템플릿을 추가할 수 있나요?
A: 현재는 내장 템플릿만 지원합니다. 커스텀 템플릿은 다음 단계로 직접 추가 가능합니다:
src/Caffeine.Cli/Templates/<템플릿명>/디렉토리 생성.template파일 작성 (변수 사용)Caffeine.Cli.csproj에<EmbeddedResource>추가- 재빌드
향후 버전에서 외부 템플릿 지원 예정입니다.
Q3: 생성된 프로젝트의 .NET 버전을 변경할 수 있나요?
A: 템플릿은 기본적으로 net10.0을 사용합니다. 변경 방법:
# 1. 프로젝트 생성
cafe init --name MyDriver --template driver
# 2. .csproj 파일 수정
cd MyDriver
# <TargetFramework>net10.0</TargetFramework>를
# <TargetFramework>net9.0</TargetFramework>로 변경
# 3. 재빌드
dotnet build
Q4: init 명령어가 실패했는데 롤백이 되나요?
A: 예, 실패 시 생성된 디렉토리가 자동으로 삭제됩니다. 수동 정리가 필요 없습니다.
Q5: 여러 프로젝트를 한 번에 생성할 수 있나요?
A: 현재는 스크립트로 우회 가능합니다:
# projects.txt 파일 생성
# ModbusDriver driver
# OpcUaDriver driver
# DataCollector app
# 스크립트 실행
while read name template; do
cafe init --name $name --template $template
done < projects.txt
향후 배치 생성 기능 추가 예정입니다.
Q6: Windows에서 PowerShell 대신 CMD를 써도 되나요?
A: 기본 명령어 (doctor, init, version)는 CMD에서도 동작하지만, package 명령어는 PowerShell 스크립트를 사용하므로 PowerShell이 필요합니다.
REM CMD에서 PowerShell 호출
powershell -Command "cafe package"
Q7: 생성된 프로젝트에 라이선스를 추가할 수 있나요?
A: 현재는 수동으로 추가해야 합니다:
# 프로젝트 생성
cafe init --name MyDriver --template driver
# LICENSE 파일 추가
cd MyDriver
cat > LICENSE << EOF
Copyright © 2026. NEXCODE. All rights reserved
...
EOF
향후 --license 옵션 추가 예정입니다.
부록
A. 명령어 치트시트
# ── 배포 ──────────────────────────────────────
# 대화형 위자드 (권장)
cafe setup
# Production 모드 배포
cafe setup --mode production
# 원격 SSH 배포
cafe setup --remote ssh://user@host
# 서비스 상태 확인
cafe setup status
# HTTP 헬스 체크 포함
cafe setup status --health
# 서비스 중지
cafe setup down
# 배포 파일 추출
cafe setup extract
# ── 환경 진단 ──────────────────────────────────
cafe doctor
# ── 프로젝트 생성 ──────────────────────────────
# 대화형
cafe init
# 비대화형
cafe init -n MyProject -t driver
# Git 포함 프로젝트 생성
cafe init -n MyProject -t driver-full -g
# 특정 경로에 생성
cafe init -n MyProject -t app -o ./projects
# ── 기타 ───────────────────────────────────────
# 버전 확인
cafe version
# NuGet 패키징
cafe package
B. 템플릿 선택 가이드
| 용도 | 권장 템플릿 | 이유 |
|---|---|---|
| 간단한 드라이버 | driver | 빠른 프로토타입 |
| 프로덕션 드라이버 | driver-full | 테스트 포함 |
| 데이터 수집 앱 | app | Caffeine 클라이언트 통합 |
| 멀티 프로젝트 | solution | .gitignore 포함 |
C. 관련 링크
- Caffeine 공식 문서: https://docs.nexcode.co.kr/caffeine
- 기술 지원: matrix@live.co.kr
작성일: 2026-01-28
버전: 1.0
작성자: Caffeine Development Team