[개발이야기] 명령어 인터페이스 (CLI)

in #kr7 years ago (edited)

스팀몬스터 자동 대전 프로그램을 개발 중입니다. 이미 @wonsama님이 자동 대전 프로그램을 돌리고 계십니다.

최근에 대전 방식이 변경되었습니다. 이전 대전 방식을 기반으로 개발된 소스를 확보했습니다. 아래 깃허브에서 다운 받으실 수 있습니다. 이 소스코드는 이전 대전 방식이므로, 새 대전 방식에서 동작하도록 수정하여야 합니다.
https://github.com/holgern/steemmonsters

코드를 분석해보니 몇 가지 이해가 안 되는 부분이 있어서 차일피일 미루고 있었는데 연말 연휴 기간 동안 시간 투자를 해서 자세하게 살펴볼 예정입니다.

그 첫 단계로 위 소스 코드를 분석하다 보니 명령어 인터페이스용 class가 있어서 사용법을 간단하게 정리합니다.

윈도우 프로그램 중에 cmd 라는 프로그램과 같은 방식으로 동작한다고 보시면 됩니다. 즉 명령어를 입력하면 해당 명령어를 수행하고 다시 명령어를 입력받을 수 있는 상태로 대기하는 프로그램입니다. 이런 프로그램 방식은 CLI(Command-line Interface)라고 합니다. 이와 같은 방식으로 프로그램을 만들 때 Cmd라는 클래스를 사용하면 됩니다.

간단한 예제를 만들어 보았습니다.

미션 : 지원하는 명령어는 AAA, BBB, exit 그리고 각각에 대한 도움말(help)을 처리하는 CLI 만들기

from cmd import Cmd

class SMPrompt(Cmd):
   # 초기화 관련 코드 추가
    def do_AAA(self, inp):
        print("AAA selected")
    def help_AAA(self):
        print("help AAA")

    def do_BBB(self, inp):
        print("BBB selected")
    def help_BBB(self):
        print("help BBB")

    def do_exit(self, inp):
        print("exit  bye!!")
        exit()

smprompt = SMPrompt()
smprompt.cmdloop()

동작하는 화면입니다.
image.png


위 코드에서 보듯이 필요한 명령에 대하여 아래와 같은 방식으로 함수명을 만들면 됩니다.

do_명령어()
help_명령어()

정의되지 않은 명령어가 입력되면 에러 메세지를 출력해줍니다.


기존에 C나 C++로 코딩을 할 때는 이런 인터페이스를 직접 다 개발하였는데, 파이썬으로 코딩을 하면 Cmd 같은 class를 사용하면 되기 때문에 개발 속도가 많이 향상될 것 같습니다. 요즘 파이썬을 공부하면서 느끼는 것은 개발 환경이 참으로 좋아졌다는 점입니다. 이전에는 본인이 개발하고자 하는 프로그램보다는 주변 기능에 개발 시간을 많이 투자하여야 했는데 요즘은 좋은 lib가 많아서 개발하고자 하는 본연의 문제에만 집중하면 되는 것 같습니다.

Sort:  

파이선 버전도 기대하겠습니다

전 nodejs 로 만들어서요 ^^;;

중요한건 대전 룰에 따른 맴버 선출 및 해당 정보 전송 같습니다 :)

Posted using Partiko Android

사마고 이상 만들기는 어려울 듯 합니다. 전 nodejs를 잘 몰라서 파이썬으로 해 볼려고요.

음... 뭔지 모르겠지만... 암튼 고생(?)이 많으시네요^^ ㅎㅎ

머리에서 열이 납니다. ㅎ

파이썬 익히시는군요. 저도 배워야 하는데.. 스몬 봇은 좋은 동기부여가 될 것 같습니다.

일퀘를 좀 편하게 해 보고자 시작하는데, 머리가 고생을 합니다.

와우.. 능력자분들 멋지십니다

Posted using Partiko Android

헉 트아님도 개발자셨나요?
엄청난 금손이시군요!!!

옛날에 조금. 지금은 개발자들과 일정 협의하고 있습니다.

Hi @tradingideas!

Your post was upvoted by @steem-ua, new Steem dApp, using UserAuthority for algorithmic post curation!
Your UA account score is currently 3.876 which ranks you at #4213 across all Steem accounts.
Your rank has improved 1 places in the last three days (old rank 4214).

In our last Algorithmic Curation Round, consisting of 216 contributions, your post is ranked at #72.

Evaluation of your UA score:
  • You're on the right track, try to gather more followers.
  • The readers like your work!
  • Great user engagement! You rock!

Feel free to join our @steem-ua Discord server

Coin Marketplace

STEEM 0.05
TRX 0.33
JST 0.081
BTC 63226.76
ETH 1686.26
USDT 1.00
SBD 0.42