眠気.jl

投稿=不定期

JuliaでCLIを作る(Fire.jl)

動機

GoでCLIを作るのが流行ってるので,逆張りしたいから

環境

諸事情でアプデしてない...

julia> versioninfo()
Julia Version 1.1.1

やっていく

呼びたい関数が一つの場合

julia> # press ] here
(v1.1) pkg> add Fire
~$ vim dekiraa.jl

文字列を受け取って表示してみる(※関数が一つの場合)
dekiraa.jlを次のように書く(Fire.jl@mainを見ていく)

using Fire

@main function dekiraaaa(name)
    println(name,"でCLIをつくる?出来らぁ!!")
end

セーブして

~$ julia dekiraa.jl Julia言語
~$ Julia言語でCLIをつくる?出来らぁ!!

できた

複数の関数呼びたい場合

funcs.jlを次のように書く

using Fire


@main function add(num::Integer...)
    println("足し算します :",num)
    println(sum(num))
end

@main function multiple(num::Integer...)
    println("全部かけます :", num)
    a = 1
    for i in num
        a = a * i
    end
    println(a)
end

@main function is_palindrome(str::String)
    reversed_str = join(reverse(split(str,"")),"")
    if reversed_str == str
        println("こ、これは...回文だああああ┗(^o^ )┓三ドコドコドコ┗(^o^)┛三┏( ^o^)┛")
    else
        println("回文ではないですね (´・ω・`)")
    end
end

※複数の関数を定義した場合,その関数を指定しなければ動かない
なのでまず定義した関数を次のコマンドで取得する(覚えてれば必要ないです)

~$ julia funcs.jl --help
See --help of each command for usages
  add
  multiple
  is_palindrome

さらに細かく見る場合は

julia funcs.jl is_palindrome --help
No documentation found.

(定義した場所等うんぬんの文章)

Positional Arguments:
  str: String

確認してみる

~$ julia funcs.jl is_palindrome たけやぶやけた
こ、これは...回文だああああ┗(^o^ )┓三ドコドコドコ┗(^o^)┛三┏( ^o^)┛
~$ julia funcs.jl is_palindrome あいうえお
回文ではないですね (´・ω・`)

できた

感想等

これとZygoteでコマンドライン関数電卓ができそうなのでいずれやります

参考URL

Building A CLI(Command Line Interface ) in Julia with Fire jl [2019]

https://github.com/ylxdzsw/Fire.jl