パッケージ
パッケージとは
独自パッケージの作り方
パッケージの作成
PkgTemplates を用いて tpkg という名前のパッケージを作成する例を示します。
適切なディレクトリへ移動し、juliaを起動します。
$ julia
パッケージを作成します。ここではMITライセンスを適用し、CIとしてGitHub Actionsを利用します。
(@v1.4) pkg> add PkgTemplates
julia> using PkgTemplates
julia> t=Template(
user = "YOUR-USER-NAME", # github の ユーザ名
julia = v"1.4.1", # Julia の version
authors=["Hoge Hoge"],
dir="./", # ./ に tpkg というディレクトリを作成
plugins=[License(name="MIT"),GitHubActions(),Documenter{GitHubActions}()]
)
julia> t("tpkg")
julia> exit()
これで自動的に作成される tpkg/src/tpkg.jl にパッケージの内容を記述します。
パッケージのディレクトリへ移動し、julia を起動します。
$ cd tpkg
$ julia
依存関係を Project.toml へ反映させます。例えば、tpkg から外部パッケージである pkg1, pkg2 を利用している場合を示します。
(@v1.4) pkg> activate .
(@v1.4) pkg> add pkg1
(@v1.4) pkg> add pkg2
これで Project.toml の [deps] へ反映されていることを確認してみましょう。
test の作成
動作確認のためのテストを作成します。test/runtests.jl に記述し、@test の評価式が True になるかどうかを確認します。
using tpkg
using Test
@testset "tpkg.jl" begin
# Write your tests here.
a = tpkg_run()
@test a == 1
end
test の実行はパッケージモードで行います。
(@v1.4) pkg> activate .
(@v1.4) pkg> test
github への公開
github上にtpkg.jlという名前で空のレポジトリを作成した上で、
$ git push -u origin main
とすることで公開されます。「Actions」を見ると、CI の実行状況が分かります。
ドキュメント自動生成の準備
(@v1.4) pkg> add DocumenterTools
julia> using DocumenterTools
julia> DocumenterTools.genkeys(user="YOUR-USER-NAME",repo="git@github.com:YOUR-USER-NAME/tpkg.git")
短いキーと長いキーが表示され、前者は deploy key、後者は DOCUMENTER_KEY として用います。
deploy key の登録は、「Settings」-「Deploy keys」から行います。title は documenter など好きな名前で大丈夫です。Key には、ssh-rsa で始まる key をそのままコピペします。登録の前に「Allow write access」にチェックを入れます。
DOCUMENTER_KEY の登録は、「Settings」-「Secrets and variables」-「Actions」-「Environment secrets」から行います。こちらも Name は適当な名前(documenterなど)で構いません。「Environment secrets」から、Name として”DOCUMENTER_KEY”、Value として DOCUMENTER_KEY をそのままコピペします。
参考
- https://qiita.com/cometscome_phys/items/989389db3540ebd9e026
- 但し、最新版では以下を変更する必要あり:
- julia_version → julia
- license=”…” → plugins 中に License(name=”…”)
- generate(“…“,t) → t(“…”)
- https://qiita.com/mametank/items/9fc1c9227303d6ca304b
- https://qiita.com/mametank/items/43330a9452f0039ca22d
- ReviseパッケージをNFS上のファイルに対して使う場合の注意 -https://timholy.github.io/Revise.jl/stable/config/#Configuration-1