Swift 5.9からの `swift package init` の変更点
先日、 swift package init
コマンドを使った際にswift 5.9に合わせた変更点に気づきました。
情報があまりなく、私自身が戸惑ったこともあり、コマンドを実行する時の--type
を基準にどういった変更があったのか概要をまとめたいと思います。
Init template cleanup #6144
Swift Fromsでの議論によると、狙いとしてはシンプルなユースケースへの最適化にあるようです。
system-module
、manifest
と、empty
これまであった、 system-module
とmanifest
がなくなりました。
ただ、これまでmanifest
が担っていた役割をempty
が担うようになったので、 これまでのempty
がなくなり、manifest
の名称がempty
に変更されたとも言えます。
executable
でテストが生成されなくなった
これまで、executable
を指定していた際にテスト周りのファイルが生成されていたのが、生成されなくなりました。
既存の swift package init
の使い方の説明に反して、手元で実行してもテストファイルが生成されなかったのが、私が変更に気づいたきっかけでした。
これまであったlibrary
と後述する追加されたmacro
を利用する際には、テストファイルも生成されます。
tool
が追加
基本的にはexecutable
に近いのですが、Swift Argument Parserも同時に用意されるようになりました。CLIツール向けですね。
Add support for creating a macro package #6250
Swift 5.9で追加されたmacroも作成できるようになりました。
Add templates for build tool plugins and command plugins #6111
Swift 5.6から使えるSwift Package Manager自身のプラグイン、build tool pluginとcommand pluginも作成できるようになりました。