小ネタです。
自分で簡単なパッケージを作っている時に、Project.toml内のversion
の情報を取りたくなったので。
プロジェクト情報はPkg.project()
で取得できます。
ドキュメントにはJulia 1.4以上が必要で、この機能はexperimentalとありました。
julia> using Pkg
julia> pj = Pkg.project()
Pkg.Types.ProjectInfo("RunOut", UUID("03328d24-db5d-422f-afe8-b99de72c82b3"), v"0.1.0", true, Dict{String,Base.UUID}("JSON" => UUID("682c06a0-de6a-54ab-a142-c8b1cf79cde6"),"HTTP" => UUID("cd3eb016-35fb-5094-929b-558a96fad6f3")), "/juliatmp/Project.toml")
バージョン取得は
julia> pj.version
v"0.1.0"
julia> typeof(pj.version)
VersionNumber
でできて、Base.VersionNumber
が返ってきます。
julia> String(pj.version)
ERROR: MethodError: no method matching String(::VersionNumber)
Closest candidates are:
String(::String) at boot.jl:321
String(::Array{UInt8,1}) at strings/string.jl:39
String(::Base.CodeUnits{UInt8,String}) at strings/string.jl:77
...
Stacktrace:
[1] top-level scope at REPL[16]:1
文字列に変換するには、String
ではなく$
を使えばいいのかな。
julia> "$(pj.version)"
"0.1.0"
julia> typeof("$(pj.version)")
String