class

Update::Usecase

Inherits Reference < Object

新しい版を探し、見つけたかどうかを覚える。

Constants

Log = ::Log.for("update")

Constructors

new(repository : Repository)
Source

Instance methods

available(channel : String) : Release | Nil

今のチャンネルで見つけている新しい版。 別のチャンネルで確認した結果は、設定と食い違うため返さない。

Source
check(current : String, channel : String) : CheckResult

新しい版を探す。

手元ビルドの版(0.1.0-dev)は運用しているタグの綴りから外れており、 何と比べても順序が決まらない。確認そのものを行わず Unknown を返す。

Source
checked?(channel : String) : Bool

今のチャンネルで確認が成り立ったか。 「新しい版は無い」と「まだ確かめていない」を情報タブで書き分けるために使う。

Source
checked_channel

直近の確認に使ったチャンネル。まだ確認できていなければ nil。

結果と一緒に覚えておかないと、設定を test から stable へ変えたときに、 直前に見つけたプレリリースが次の確認まで表示に残る。 逆向きでは、プレリリースを一度も調べていないのに「最新である」と出る。

Source
complete?

直近の確認で候補を集めきれたか。 集めきれていない場合、情報タブは「最新である」と言い切らない。

Source
mark_notified(release : Release) : Nil

知らせた版として覚える。バルーンを出せた後に呼ぶ。

自動と手動のどちらの経路でも、覚えるのはここだけである。 確認の側で覚えると、出せなかった版まで覚えてしまい、 利用者が一度も見ないまま以後の確認で抑止される。

記録より古い版で上書きしない。チャンネルを往復したときに、 既に伝えてある版より古いものへ記録が下がると、その版をまた知らせることになる。

Source
notified_tag

知らせ済みの版のタグ。設定へ書き戻すために使う。

Source
notified_tag=(tag : String) : Nil

設定から復元する。版として読めない値は記録が無いものとして扱う。

Source
suppress_notified(result : CheckResult) : CheckResult

既に知らせた版なら UpToDate へ倒す。自動の確認だけがこれを通す。

手動で押したときの結末には使わない。抑止した結末をそのまま返すと、 情報タブに新しい版が出ているのにバルーンだけ「最新である」と言うことになる。 押した人へは抑止前の結末を返す。

等値で見るわけにはいかない。チャンネルを往復すると記録が入れ替わるためである。 stable の 2.0.0 を知らせた後に test の 2.1.0-test1 を知らせて stable へ戻すと、 記録は 2.1.0-test1 になっており、等値では 2.0.0 を未通知と判断して知らせ直す。 「これ以上に新しいものは既に伝えてある」と読めば、往復しても増えない。

ここでは覚えない。覚えるのは mark_notified であり、呼ぶのはバルーンを 出せた後である。ここで覚えると、出せなかった版まで以後の確認で抑止される。

Source