Skip to main content

A terminal tool that roasts you for every typo, because 'command not found' is too polite

Project description

Tease-Typo

터미널에서 오타를 치면 "command not found" 대신 웃긴 효과로 당신을 놀려주는 CLI 도구.

$ gti
╭─────────────────────────────────────────╮
│  🤣 또 틀렸어? 'gti'가 뭔데 ㅋㅋㅋㅋ  │
╰─────────────────────────────────────────╯
  • 이 프로젝트는 gti를 하루에 세 번 이상 치는 사람을 위해 만들었습니다.
  • command not found는 너무 딱딱하고 자존감을 떨어뜨립니다.

설치

pipx install tease-typo

pipx가 없으면: brew install pipx 또는 pip install pipx


쉘 통합

설치 후 한 번만 실행:

tease-typo install
source ~/.zshrc   # 또는 source ~/.bashrc

이제 오타를 칠 때마다 자동으로 당신을 놀려줍니다.


사용법

# 쉘 통합 설치
tease-typo install

# 쉘 통합 제거
tease-typo uninstall

# 효과 목록 확인
tease-typo --list

# 특정 쉘 지정 (기본: 현재 쉘 자동 감지)
tease-typo install --shell zsh
tease-typo install --shell bash

효과 목록 (10종)

효과 설명
mocking_text 조롱 메시지 패널
ascii_art ASCII 아트로 오타 강조
emoji 이모지 폭탄
fake_progress 가짜 "오타 분석 중..." 진행 바
rage_meter 분노 게이지 FULL 애니메이션
wall_of_shame 빨간 대형 패널로 오타 강조
fake_dictionary 오타의 가짜 사전 검색 결과
scoreboard 오타 횟수 가짜 스코어보드
countdown 긴장감 조성 카운트다운 + 반전
typing_shame 감지 → 분석 → 등록 → 창피함 단계별 표시

새 효과 추가 (OCP)

기존 코드를 건드리지 않고 효과를 추가할 수 있습니다.

1. 새 파일 생성 tease_typo/effects/my_effect.py:

from tease_typo.domain.effect import Effect
from tease_typo.domain.typo_event import TypoEvent

class MyEffect(Effect):
    @property
    def name(self) -> str:
        return "my_effect"

    @property
    def description(self) -> str:
        return "내가 만든 효과"

    def render(self, typo_event: TypoEvent) -> None:
        print(f"'{typo_event.typed_command}'? 진짜로?")

2. 라이브러리에 등록 tease_typo/cli/command_handler.py:

from tease_typo.effects.my_effect import MyEffect

def _build_default_library() -> EffectLibrary:
    library = EffectLibrary()
    ...
    library.register(MyEffect())  # 이 줄만 추가
    return library

개발 환경

git clone https://github.com/yourname/tease-typo
cd tease-typo

python3 -m venv .venv
source .venv/bin/activate

pip install -e ".[dev]"

pytest                                          # 테스트
pytest --cov=tease_typo --cov-report=term-missing  # 커버리지
ruff check .                                    # 린트
mypy tease_typo/                               # 타입 검사

요구 사항

  • Python 3.9+
  • bash 또는 zsh (macOS / Linux)

P.S.

  • 이 프로젝트는 spec-kit 도구를 활용해서 제작되었습니다. spec-kit

라이선스

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tease_typo-1.0.0.tar.gz (13.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tease_typo-1.0.0-py3-none-any.whl (20.4 kB view details)

Uploaded Python 3

File details

Details for the file tease_typo-1.0.0.tar.gz.

File metadata

  • Download URL: tease_typo-1.0.0.tar.gz
  • Upload date:
  • Size: 13.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for tease_typo-1.0.0.tar.gz
Algorithm Hash digest
SHA256 c0319d60f3f906ad7d3a987ffd69e8ca4eaaa465c562cd4f811100da47953161
MD5 a6443a93f02e8db2bc6a3eef07dc6d8d
BLAKE2b-256 43a8485944a160025425a447825eb8d2a5f7da165c216681074ea3d58bc7739e

See more details on using hashes here.

File details

Details for the file tease_typo-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: tease_typo-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 20.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for tease_typo-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a4ed866407a1a5b81c59c57f0be3e855be176babe1324590d53481ffcf8399d2
MD5 1947b96c4e6acc7abefce6c686803de8
BLAKE2b-256 ed36cbbeb0bbd18803f08c3ae17686c252920535d6bfc36002b819e787d1b691

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page