These are chat archives for zplug/zplug

13th
Feb 2016
Naoki Mizuno
@NigoroJr
Feb 13 2016 03:02

毎回お返事遅くなってしまい申し訳ありません。

ゆえに一つの zplugs につき複数(zplugs のキー数だけ)の zspec が必要になります。

なるほど。私はどちらかというと、 current_zspec みたいなものを導入し、

typeset -gx -A current_zspec
for line in "${args[@]}"; do
    current_zspec=( __parser__ $line )
    # ...
    if __is_external; then
        # ここで$lineを渡す必要がない
        __zplug::hoge::install
    fi
done

外部ソース内で

__zplug::hoge::install() {
    if [[  $current_zspec[as] == 'command' ]]; then
        # ...
    fi
}

というようなことを考えていたのですが、必要ない可能性が高そうです。もし必要そうであればまた相談します。

とりあえず楽しみに PR 待っています。

ありがとうございます、尽力します。

Naoki Mizuno
@NigoroJr
Feb 13 2016 03:29
あ、上記のコードのようなことをするためにはglobalなhashが必要ですね…。しかしglobalにするとinstallのとき並列で処理されるという問題が出てきます :sweat_drops:
やはり __zplug::hoge::load "$line" と渡して毎回 __parser__ を呼ぶほうがいいんでしょうか。
Masaki ISHIYAMA
@b4b4r07
Feb 13 2016 09:58

毎回お返事遅くなってしまい申し訳ありません。

いえいえ、お気になさらずに。
理解しました、それなら良さそう、と思ったのですが弊害も出てきそうですね。

毎回 __parser__ を呼ぶ方法をとっていますが、改善したい気持ちもあります。なぜなら、結構なボトルネックだからです。あくまでも体感値ですが、例えば __clean__ などを実行してみたらわかるかもしれません。__clean__ では実行前にすべてのパッケージをそれぞれパーサに通しているのですが、実行にタイムラグがあります。原因はおそらく __parser__ ではないかと考えています。
Masaki ISHIYAMA
@b4b4r07
Feb 13 2016 10:10
それと報告です。
現在はまだプッシュしていない変更ですが at/commit タグと shallow clone についてです。
  • commit タグを廃止して at タグと統合します。これで revision すべて(commit hash, tag, branch)の指定が at タグで可能になります。
  • 加えて現在デフォルトで true の ZPLUG_SHALLOW を false にします。理由は主に2つ。(1) at タグの統合により git clone --branch ができなくなった。よって at で指定されたものが、コミットハッシュかブランチかなどの判別が必要になり面倒である (2) shallow に対するコスパの悪さ。メリットが速度であるのに対し、デメリットはコミット不可、プッシュ不可、履歴参照不可、など数多く。
Masaki ISHIYAMA
@b4b4r07
Feb 13 2016 10:18
その代わりと言ってはなんですが、depth タグを導入してもいいかなと感じています。ZPLUG_SHALLOW ふくめ環境変数はその全てをオン・オフしてしまいます。タグとして導入すれば、パッケージごとに切り替え可能です(例えばクローンに時間のかかる oh-my-zsh レポのみ depth:1 など)。デフォルトは depth:0 で not shallow clone です。
Naoki Mizuno
@NigoroJr
Feb 13 2016 23:35

__clean__ などを実行してみたらわかるかもしれません

確かに、結構ラグがありますね。ううむ。ハッシュのネストができれば楽なんですが、難しいところですね…。
とりあえずは毎回 __parser__ を呼ぶ方針でやっています。

commit タグを廃止して at タグと統合

:+1:

depth タグ

これも :+1: です。ちなみにこれの導入により、実質的にZPLUG_SHALLOWはdeprecatedということでしょうか?grepした限り、trueの場合depth=1にする一箇所のみみたいなので、 ${ZPLUG_CLONE_DEPTH:=0} のようなものはどうでしょう?

https://github.com/b4b4r07/zplug2/commit/1be1e6fce322a50dd8553f2a6a148838ab3b578e#diff-2af9da2d5e4900e11d3d6f2f20d5ffd4R28

この行の <-> って初めて見るんですが、ファイル名生成の <1-42> と同じようなものですか…?