명령줄 앱 만들기
JumPHP CLI 앱은 터미널에서 동작하는 프로그램입니다. Symfony Console로 작성한 명령(todo add "우유 사기")과 symfony/tui로 만든 전체 화면 텍스트 화면(목록, 입력란, 진행 막대, 키보드)을 가질 수 있습니다. 같은 프로젝트에서 Linux, Windows, macOS용 실행 파일이 나옵니다.
프로젝트 만들기
JumPHP IDE에서 New Project → CLI app. 명령줄에서는:
bin/jumphp cli:new todo "Todo"
bin/jumphp install todo
예제는 할 일 목록입니다: src/Main.php(앱과 명령), src/Command/(명령마다 클래스 하나), src/Ui/(전체 화면).
실행과 테스트
bin/jumphp run todo # 이 터미널에서 전체 화면
bin/jumphp run todo add "우유 사기" # 명령 하나
bin/jumphp test todo # php -l, phpstan, PHPUnit
bin/jumphp shot todo 2 # 화면을 텍스트로: var/screenshots/screen.txt
명령 없이 실행하면 출력이 터미널일 때는 화면을 열고, 파일이나 다른 프로그램으로 갈 때는 간단한 목록을 출력합니다. 스크립트에서도 쓸 수 있습니다.
테스트는 명령(ApplicationTester)과 가상 터미널(VirtualTerminal) 위의 화면을 실행합니다. 키를 누르고 사용자가 볼 내용을 읽습니다.
데이터
앱은 데이터를 사용자 폴더(~/.local/share/<id>, %APPDATA%\<id>, ~/Library/Application Support/<id>)에, 개발 중에는 var/에 저장합니다.
배포하기
bin/jumphp export:standalone todo --linux --windows --macos
시스템마다 실행 파일 하나, 설치할 것이 없습니다. Windows에서는 콘솔 프로그램입니다. bin/jumphp installer todo로 설치 프로그램도 만들 수 있습니다(Windows, Linux).
Windows에서는 명령과 전체 화면 모두 어떤 콘솔(명령 프롬프트, PowerShell, Windows Terminal)에서도 작동합니다.
jumphp.net에서
jumphp.net에 게시된 앱은 페이지 안의 터미널에서 실행됩니다. 명령을 입력하면 실제 터미널처럼 응답합니다. 질문은 입력한 답을 기다리고(Ctrl+C로 취소), 전체 화면은 키를 하나씩 받습니다(화살표, Enter, Esc). 스켈레톤이 이미 지원합니다: JUMPHP_WEB_TERMINAL이 1일 때 WindowsTerminal::create()가 고르는 src/Ui/WebTerminal.php와 src/Ui/WebLoop.php. 데이터(var/)는 방문자의 브라우저에 남습니다.