やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

license-generator 0.5 `AGPL`生成できず

 コードを見るとAPGLになってた。タイポ。誤字。

ハマった

 良さそうだと思ったが使ってみた所、以下のような難点があった。

  • rust製
    • cargo
      • インストールに数分かかった
  • AGPLが使えなかった
    • license-generator --author ytyaru AGPL
      • Not found match license: AGPL
        • AGPL, agpl, AGPL3, AGPLv3, AGPL-3.0, agpl-3.0, agpl-3.0.txt
  • ヘルプ
    • ライセンスキー一覧がない
    • USAGE--authorの説明が重複している

インストールに数分かかった

 5分くらいかかったんじゃないか? とにかく長かった。そして導入するパッケージ数が多すぎる。rustの標準パッケージが貧弱すぎるせいだと思う。

$ cargo install license-generator
    Updating crates.io index
  Downloaded license-generator v0.5.0
  Downloaded 1 crate (45.4 KB) in 2.16s
  Installing license-generator v0.5.0
  Downloaded chrono v0.4.10
  Downloaded structopt v0.2.18
  Downloaded num-traits v0.2.11
  Downloaded num-integer v0.1.42
  Downloaded time v0.1.42
  Downloaded clap v2.33.0
  Downloaded structopt-derive v0.2.18
  Downloaded autocfg v1.0.0
  Downloaded libc v0.2.66
  Downloaded bitflags v1.2.1
  Downloaded strsim v0.8.0
  Downloaded unicode-width v0.1.7
  Downloaded textwrap v0.11.0
  Downloaded atty v0.2.14
  Downloaded ansi_term v0.11.0
  Downloaded vec_map v0.8.1
  Downloaded proc-macro2 v0.4.30
  Downloaded quote v0.6.13
  Downloaded heck v0.3.1
  Downloaded syn v0.15.44
  Downloaded unicode-xid v0.1.0
  Downloaded unicode-segmentation v1.6.0
   Compiling autocfg v1.0.0
   Compiling libc v0.2.66
   Compiling proc-macro2 v0.4.30
   Compiling unicode-xid v0.1.0
   Compiling bitflags v1.2.1
   Compiling syn v0.15.44
   Compiling unicode-width v0.1.7
   Compiling unicode-segmentation v1.6.0
   Compiling strsim v0.8.0
   Compiling vec_map v0.8.1
   Compiling ansi_term v0.11.0
   Compiling textwrap v0.11.0
   Compiling heck v0.3.1
   Compiling num-traits v0.2.11
   Compiling num-integer v0.1.42
   Compiling quote v0.6.13
   Compiling atty v0.2.14
   Compiling time v0.1.42
   Compiling clap v2.33.0
   Compiling chrono v0.4.10
   Compiling structopt-derive v0.2.18
   Compiling structopt v0.2.18
   Compiling license-generator v0.5.0
    Finished release [optimized] target(s) in 3m 38s
  Installing /home/pi/.cargo/bin/license-generator
   Installed package `license-generator v0.5.0` (executable `license-generator`)

AGPLが使えなかった

$ license-generator AGPL
error: The following required arguments were not provided:
    --author <author>
...
$ license-generator --author ytyaru AGPL
Not found match license: AGPL
$ license-generator AGPL --author ytyaru 
Not found match license: AGPL

 2020/01/25時点ではREADMEUsageには以下のようにAGPLが使えるかのように書いてあった。

$ license-generator --author <name> [LICENSE_TYPE]

[LICENSE_TYPE]:
- AGPL
- Apache
- CC-BY
- CC-BY-NC
- CC-BY-NC-SA
- CC-BY-SA
- CC0
- GPL
- LGPL
- MIT
- MPL
- Unlicense

Options:
  --author input author name
  --project input project name that is required by some license
  --year input license year 

 ソースコードを見てみると誤字だった。

        "apgl" => Some(Box::new(license::AGPL {})),
        "APGL" => Some(Box::new(license::AGPL {})),

 AGPLとなるべきところがAPGLになっている……。これ、教えたほうがいいと思うのだが、どうやるのかわからん。

 これは最低限の正常系テストもしていないんだろうな……。

 あと、このライセンスキー名一覧がコマンドで表示できないことが発覚した。詳細は以下。

ヘルプでライセンスキー一覧が出ない

 なら何のキーが使えるの? ヘルプに出ないんですけど?

$ license-generator --help
license-generator 0.5.0
azu <azuciao@gmail.com>
A Command line tool that generate `LICENSE` file.

USAGE:
    license-generator [OPTIONS] <INPUT> --author <author>

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
        --author <author>      
        --project <project>    
        --year <year>          

ARGS:
    <INPUT>    

 おそらくARGS<INPUT>がキーなのだろう。いや、そのキー一覧を表示してくれなきゃわからんわ。

 まさか毎回README見ないとダメなの? それってヘルプとしての役割果たしてなくね?

ヘルプのUSAGEにある--authorが重複している

$ license-generator --help
USAGE:
    license-generator [OPTIONS] <INPUT> --author <author>

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
        --author <author>      
        --project <project>    
        --year <year>          

 USAGE--author <author>とあるが、これは[OPTIONS]の一部であるという説明と矛盾する。どっちなの? OPTIONSだと思われる。たぶん以下が正しいのでは? 知らんけど。

USAGE:
    license-generator [OPTIONS] <INPUT> --author <author>

所感

 GitHubのプルリクエスト?とかいう奴をやってみるべきかもしれん。でもわからん。調べるの面倒。

 他人のコードでハマるくらいなら自前で実装したい。まずは仕様を考えてみようか。

対象環境

$ uname -a
Linux raspberrypi 4.19.75-v7l+ #1270 SMP Tue Sep 24 18:51:41 BST 2019 armv7l GNU/Linux