From 8641a1d077cbf94ae4531697d5138886721f12c0 Mon Sep 17 00:00:00 2001 From: Kirill Mokevnin Date: Sun, 27 Sep 2026 16:12:19 -0400 Subject: [PATCH] fix: ship RBI and RBS for Helpers::BuildkitStatus The helper landed without type files, so Sorbet and Steep users could not see BuildkitStatus.decode, trace? or PlainPrinter. Co-Authored-By: Claude Opus 5.5 --- .../helpers/buildkit_status.rbi | 76 +++++++++++++++++++ .../helpers/buildkit_status.rbs | 37 +++++++++ 2 files changed, 113 insertions(+) create mode 100644 rbi/docker_engine_ruby/helpers/buildkit_status.rbi create mode 100644 sig/docker_engine_ruby/helpers/buildkit_status.rbs diff --git a/rbi/docker_engine_ruby/helpers/buildkit_status.rbi b/rbi/docker_engine_ruby/helpers/buildkit_status.rbi new file mode 100644 index 0000000..deada3f --- /dev/null +++ b/rbi/docker_engine_ruby/helpers/buildkit_status.rbi @@ -0,0 +1,76 @@ +# typed: strong + +module DockerEngineRuby + module Helpers + module BuildkitStatus + TRACE_ID = T.let("moby.buildkit.trace", String) + + class Vertex < Struct + extend T::Generic + + Elem = type_member { { fixed: T.anything } } + + sig { returns(T.nilable(String)) } + def digest; end + + sig { returns(T.nilable(String)) } + def name; end + + sig { returns(T::Boolean) } + def cached; end + + sig { returns(T::Boolean) } + def started; end + + sig { returns(T::Boolean) } + def completed; end + + sig { returns(T.nilable(String)) } + def error; end + end + + class Log < Struct + extend T::Generic + + Elem = type_member { { fixed: T.anything } } + + sig { returns(T.nilable(String)) } + def vertex; end + + sig { returns(Integer) } + def stream; end + + sig { returns(String) } + def msg; end + end + + class Status < Struct + extend T::Generic + + Elem = type_member { { fixed: T.anything } } + + sig { returns(T::Array[DockerEngineRuby::Helpers::BuildkitStatus::Vertex]) } + def vertexes; end + + sig { returns(T::Array[DockerEngineRuby::Helpers::BuildkitStatus::Log]) } + def logs; end + end + + class << self + sig { params(info: DockerEngineRuby::Models::BuildInfo).returns(T::Boolean) } + def trace?(info); end + + sig { params(aux: String).returns(DockerEngineRuby::Helpers::BuildkitStatus::Status) } + def decode(aux); end + end + + class PlainPrinter + sig { params(out: T.proc.params(line: String).void).void } + def initialize(&out); end + + sig { params(status: DockerEngineRuby::Helpers::BuildkitStatus::Status).void } + def print(status); end + end + end + end +end diff --git a/sig/docker_engine_ruby/helpers/buildkit_status.rbs b/sig/docker_engine_ruby/helpers/buildkit_status.rbs new file mode 100644 index 0000000..6e23963 --- /dev/null +++ b/sig/docker_engine_ruby/helpers/buildkit_status.rbs @@ -0,0 +1,37 @@ +module DockerEngineRuby + module Helpers + module BuildkitStatus + TRACE_ID: String + + class Vertex < Struct[untyped] + attr_accessor digest: String? + attr_accessor name: String? + attr_accessor cached: bool + attr_accessor started: bool + attr_accessor completed: bool + attr_accessor error: String? + end + + class Log < Struct[untyped] + attr_accessor vertex: String? + attr_accessor stream: Integer + attr_accessor msg: String + end + + class Status < Struct[untyped] + attr_accessor vertexes: ::Array[Vertex] + attr_accessor logs: ::Array[Log] + end + + def self.trace?: (DockerEngineRuby::Models::BuildInfo info) -> bool + + def self.decode: (String aux) -> Status + + class PlainPrinter + def initialize: () { (String line) -> void } -> void + + def print: (Status status) -> void + end + end + end +end