0

CL プロジェクトの展開ツールを構築する設計段階にいます。

典型的なワークフローは次のようになると思います。

  1. (ql:quickload :yolo)
  2. (yolo:configure)
  3. 開発者は、リモート マシンのユーザーとホストなどを追加します...
  4. 開発者は就寝します。PCの電源を切る
  5. 朝:ハックハックハック
  6. 展開する時間です。開発者は変更をコミットし、REPL と型に移動します (yolo:deploy)

私が望むのは、開発者が現在のパッケージに基づいてデプロイしたいシステムをライブラリが認識できるようにすることです。( *package*)

私の質問:特定のパッケージをロードしたシステムを見つけることは可能ですか? 当然、私は について話しているASDF

おまけの質問:そのようなツールは必要ですか? おそらく、より良いワークフローがあります。ライブラリも実行可能にする予定ですが、デフォルトのプロジェクトは現在のディレクトリで取得できます。

4

2 に答える 2

2

まず、ここでパッケージシステムライブラリなどについて読んでください

意図したシステムを推測することはあまり意味がないと思います。とにかく、少なくとも 1 つの追加パラメーターが必要です (デプロイ先のターゲット)

いくつかのアイデア:

展開ツールはシステムを展開するものだと思います。その場合、ASDF の拡張機能として適切に定義される可能性があります。

たとえば、次のdefsystemような形式で展開構成​​を指定できるように、このような拡張機能を考案できます。

(defsystem #:foo
  :defsystem-depends-on (#:your-awesome-asdf-deploy)
  ;; ...
  :deploy-targets (:test (:host "test.example.org"
                          :user "foo"
                          :env (:backend-url "https://test.foo.org/api"
                                :dev t))
                   :prod (:host "prod.example.org"
                          :user "bar"
                          :env (:backend-url "https://foo.org/api"
                                :dev nil))))

この情報は、次のように呼び出すことができる新しいopで使用できます。 deploy-op

(asdf:oos 'asdf-deploy:deploy-op 'foo :target :test)
于 2017-01-07T23:07:33.207 に答える