Node제 CLI로 「BLEACH」의 시해・비해를 확인하고 싶다!

당돌하게 「BLEACH」의 등장 인물의 해호・시해・비해를 확실히 확인할 수 있는 녀석 갖고 싶다! 라고 생각했기 때문에 만들었습니다.
"blch"명령. blch - npm
node에 의한 cli 작성 ~ 공개까지.

TL;DR


npm install -g blch 에서!

할 수 있는 일
  • 등장 인물 목록 표시
  • 지정한 인물의 해호, 참외도, 卍解의 표시
  • 시해
  • 卍解

  • *모든 등장 인물을 망라하고 있지 않습니다
    *기본적으로 파면편까지의 등장 인물을 취급합니다만, 일부 해해는 천년 혈전편 이후로 발현한 것도 취급하고 있습니다
    *10날(에스파다)의 경우는 시해·비해가 아니라 귀날을 취급합니다

    인물 추가·편집·수정은 이쪽으로부터 자유롭게 해 주어도 상관 없습니다.
    htps : // / cs. 오, ぇ. 이 m/sp레 d ㎇ ts/d/1에7Ms9sX2m1ぅ_4r20아기ぃ←FgByRQp1s93
    이 데이터로부터 CSV를 작성해, 해당하는 것을 정형해 표시하는 구조가 되고 있습니다.
    *스프레드시트 갱신되면 커맨드도 마음대로 갱신하는 구조가 되어 있지 않습니다
    * CLI를 만들어 공개까지 해보고 싶었을 뿐이므로 만들기는 거칠습니다 (응답 속도 등 고려하지 않았거나)

    CLI 소개편



    사람 목록 표시 - human



    캐릭터를 나열합니다.
    옵션 지정에 의해, 호정 13대, 가면의 군세(바이저드), 10날(에스파다)등의 리스트 표시를 할 수 있습니다.
    *v1.1.0부터 완현술자(풀 브링거)가 추가되었습니다.
    blch human --gotei13
    



    개요 보기 - tldr



    등장 인물의 해호·참척도·비해를 표시합니다.
    blch tldr 黒崎一護
    



    몹시 빚지고 있다 tldr 커멘드로부터 착상을 얻고 있습니다.
    shell 명령의 설명과 사용법을 몇 줄로 소개해 줍니다.brew install tldr 에서!
    htps : // 기주 b. 코 m / tldr - 뿌리 s / tldr

    시해·비해 - echo



    echo 명령을 사용하여 시해 또는 비해를 수행합니다.
    blch echo --shikai 朽木白哉
    blch echo --bankai 朽木白哉
    



    명령 조합


    blch human -a | fzf | xargs blch tldr
    # もしくは(*fish記法です)
    blch tldr (blch human -a | fzf)
    



    덧붙여서 로그인 쉘은 fish를 사용하고 있습니다만 슈퍼 추천입니다.
    로그인 쉘을 fish로 해보기 - Qiita

    도움말 표시



    각 명령에 -h를 붙이면 도움말을 볼 수 있습니다.
    ❯❯❯ blch hu -h
    Usage: blch human|hu [options]
    
    Output human names
    
    Options:
      -a, --all          List all
      -g, --gotei13      List gotei 13
      -e, --espada       List espada
      -v, --visored      List visored
      -k, --karakuracho  List karakuracho
      -f, --fullbringer  List fullbringer
      -h, --help         output usage information
    
      Examples:
    
        $ blch human --gotei13
        $ blch hu -g
    
    

    CLI 작성편



    commander



    node.js에서 CLI의 완벽한 솔루션입니다.
    라고 써 있습니다. 실제로 사용하기 쉬웠습니다. ↓
    commander - npm

    commander의 사용법을 blch human 명령을 예를 들어 설명해 보겠습니다.
    Typescript입니다.
    index.ts
    import * as program from 'commander';
    =====
    
    // バージョン情報の登録
    // blch -V or blch --version でバージョンが確認できる
    program
      .version('0.0.1', '-V, --version')
    
    // blch humanコマンドの作成
    program
      .command('human') // コマンド名の登録 ここで登録したものを`blch ~`の形で使える
      .alias('hu') // alias登録により、`blch hu`と打つことも可能
      .description('Output human names') // help用
        // optionの登録(省略可能)
      .option("-a, --all", "List all")
      .option("-g, --gotei13", "List gotei 13")
      .option("-e, --espada", "List espada")
      .option("-v, --visored", "List visored")
      .option("-o, --other", "List other")
      .action( async (cmd, options) => {
    
          /**
            `blch human --gotei13`を実行した場合
            `cmd`に`gotei13`のBooleanパラメータがtrueで追加される
            `gotei13`は上記optionで設定した`--gotei13`の部分に該当する
    
            `blch human --gotei13 4`を実行した場合
            `blch human --gotei13`を実行した時とcmdの内容は同じ
            optionsは['4']となっている
            つまり`--gotei13 4`で指定したものが文字列として配列に入る
    
            今回のblchコマンドでは考慮していないが、
            オプションの重ねがけも可能。
            `blch -g -e`とするとcmdの`gotei13`も`espada`もtrueになる
            また、`--gotei13 4 5`とオプションに入れると
            optinosは、`['4', '5']`となる
    
            以下から`cmd`, `options`の値で条件分岐し出力する処理
          */
    
          // csvファイルから全リストを取得
        const dataList: Human[] = await files.getHumanDataList()
    
        let targetCode: GroupCode = 'all'
        if (cmd.gotei13) {
          targetCode = 'gotei13'
        }
        if (cmd.espada) {
          targetCode = 'espada'
        }
        if (cmd.visored) {
          targetCode = 'visored'
        }
        if (cmd.other) {
          targetCode = 'other'
        }
          // オプションから対象を取得
        const humans = findHumansByGroupCode(dataList, targetCode, options)
        if (humans.length === 0) {
          console.log('No matching')
          return
        }
          // ターミナルへ出力
        humans.forEach(human => console.log(human.name))
    
      })
        // helpの定義
      .on('--help', function() {
        console.log('\n  Examples:')
        console.log()
        console.log('    $ blch human --gotei13')
        console.log('    $ blch hu -g')
        console.log()
      })
    
    // blch humanコマンド以外を作成する場合は同じように追加していく
    program
      .command('tldr <target>')
    ======
    
    // 最後にターミナル引数をparseする処理
    program.parse(process.argv)
    

    빨리 명령을 만들 수 있습니다.

    chalk



    chalk - npm
    터미널 출력에 색을 칠하거나 굵게 표시할 수 있습니다.
  • chalk 미사용

  • chalk 사용


  • chalk를 사용하면 맛있는 출력이됩니다.

    이번에 이 2개 정도밖에 CLI용의 패키지는 사용하고 있지 않습니다만, Node의 CLI에는 그 밖에도 사용할 수 있는 것들은 여러가지구나 하는 것을 알았습니다.
    이쪽은 git의 package 해결 ​​주위에서 버그라고 빌드할 수 없었지만 참고가 되었습니다.
    Build a JavaScript Command Line Interface (CLI) with Node.js — SitePoint

    CLI 공개편



    거의 이것에 따라 갔기 때문에 참조 만 붙입니다.
    npm에 공개하는 것은 생각보다 쉬웠습니다.
    htps : // 이 m / Tsuto Munaka Muura /

    요약


  • node에서의 CLI 작성~공개를 실시했다. 의외로 순조롭게 생겼다.
  • go, ruby, rust 또는 python에서 CLI를 만드는 방법은 무엇입니까?

  • 완전히 개인용 CLI이지만 만드는 계기를 할 수 있어, 「BLEACH」에 감사.
  • 망라되지 않은 부분은 죄송합니다
  • (추기) 천년 혈전편 애니메이션 굉장히 재미

  • 좋은 웹페이지 즐겨찾기