Show HN: Shelgon: Rust를 사용하여 대화형 REPL 셸을 구축하기 위한 프레임워크
요약
Shelgon은 Rust 언어를 사용하여 대화형 REPL 애플리케이션 및 커스텀 셸을 구축할 수 있게 해주는 강력한 프레임워크입니다. ratatui를 활용한 TUI 기능과 tokio 기반의 비동기 런타임을 지원하여 타입 안전하고 고성능인 셸 개발을 돕습니다.
핵심 포인트
- Rust 기반의 타입 안전한 명령 실행 인터페이스 제공
- ratatui를 통한 미려한 터미널 UI(TUI) 구현 가능
- tokio 기반의 비동기 런타임 통합으로 고성능 작업 지원
- 명령 히스토리, 탭 완성, 커서 이동 등 풍부한 입력 처리
- 커스텀 컨텍스트를 통한 명령 간 상태 유지 지원
Shelgon <img src="https://img.pokemondb.net/artwork/vector/shelgon.png" align="right" width="128" />
Shelgon은 대화형 REPL (Read-Eval-Print Loop) 애플리케이션 및 커스텀 셸을 구축하기 위한 강력한 Rust 프레임워크입니다. ratatui를 사용한 내장 터미널 UI 기능을 통해 유연하고 타입 안전한 (type-safe) 기반을 제공합니다.
주요 기능 (Features)
- 🛡️ 타입 안전한 명령 실행 (Type-safe Command Execution) - Shelgon의 보호막처럼, 명령이 타입 안전한 인터페이스로 감싸집니다.
- 🔄 비동기 런타임 통합 (Async Runtime Integration) - 고성능 비동기 (async) 작업을 위해 tokio를 기반으로 구축되었습니다.
- 🎨 아름다운 TUI - 스타일링 및 색상을 지원하는 ratatui를 통해 구동됩니다.
- ⌨️ 풍부한 입력 처리 (Rich Input Handling) - 다음을 포함한 완전한 키보드 상호작용을 지원합니다:
- 명령 히스토리 (Command history)
- 커서 이동 (Cursor movement)
- 탭 완성 (Tab completion)
- Ctrl+C/Ctrl+D 처리
- 📝 커스텀 컨텍스트 지원 (Custom Context Support) - 자체 컨텍스트 타입을 사용하여 명령 간의 상태를 유지합니다.
- 📥 STDIN 지원 (STDIN Support) - 필요한 명령을 위해 멀티라인 입력을 처리합니다.
설치 (Installation)
Cargo.toml에 Shelgon을 추가하세요:
[dependencies]
shelgon = "0.1.0"
tokio = { version = "1.43.0", features = ["full"] }
...
빠른 시작 (Quick Start)
간단한 echo 셸을 만듭니다:
use shelgon::{command, renderer};
struct EchoExecutor {}
...
진화 가이드: 자신만의 셸 구축하기 <img src="https://img.pokemondb.net/artwork/vector/salamence.png" align="right" width="128" />
shelgon을 사용하여 드래곤 같은 셸을 구축하는 방법은 다음과 같습니다:
- Executor 정의:
command::Execute를 구현하는 타입을 생성합니다. - Context 생성: 명령 간의 상태를 유지할 컨텍스트 타입을 설계합니다.
- 명령 로직 구현:
execute메서드에 명령 실행 로직을 추가합니다. - 탭 완성 추가: 스마트한 제안을 위해
completion메서드를 구현합니다. - STDIN 처리:
prepare메서드를 사용하여 어떤 명령에 입력이 필요한지 나타냅니다.
예제 (Examples)
더욱 고급스러운 사용 패턴을 확인하려면 다음을 포함한 examples 디렉토리를 확인하세요:
echosh.rs: 핵심 기능을 보여주는 기본적인 echo 셸
기여하기 (Contributing)
기여를 환영합니다! 언제든지 Pull Request (PR)를 제출해 주세요. 기여하기 전에 다음 사항을 수행해 주세요:
- 기존 이슈 (issues)를 확인하거나 새로운 이슈를 생성합니다.
- 저장소 (repository)를 포크 (Fork) 합니다.
- 기능 브랜치 (feature branch)를 생성합니다 (
git checkout -b feature/amazing-feature). - 변경 사항을 커밋 (commit) 합니다 (
git commit -m 'Add some amazing feature'). - 브랜치에 푸시 (push) 합니다 (
git push origin feature/amazing-feature). - Pull Request를 오픈합니다.
라이선스 (License)
이 프로젝트는 MIT License를 따릅니다. 자세한 내용은 LICENSE 파일을 참조하세요.
<div align="center">
Built by Human, Documented by LLM.
</div>AI 자동 생성 콘텐츠
본 콘텐츠는 HN Code Generation의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기