kdep 0.3.1 → 0.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d962875f073779d83a18069ff777a107db39ff7ac8cdd922d14492972c24288b
4
- data.tar.gz: 1dc2947fe2e82b34b40dcc0355394f4983d2ca0095cc49eb8030eef2cb5229fc
3
+ metadata.gz: 95e9b9f35fb62ccb1d6e7e3c375e0a68e629b7bc81f7959c57d14eb33af19e5d
4
+ data.tar.gz: 5f5e8d59539c690e57d110fd109ea4c38d34081747f62f08e60b9397991faae4
5
5
  SHA512:
6
- metadata.gz: 1debfdafa912d40db9e37dffa7a8ddd9ae088f1d5c0246bb67b284a93df29a09ac29702b3ed113b2d60a9429e0acd6ba3d8ddfa68a8b7efbf8a4f8646b3eee44
7
- data.tar.gz: 45202494e9302714222da3f55e3400005773e9301e42577c00ffddd4449afd53b489a4d90dea6eed8a83283e48fca8f61e87c80e6eb64f9e646addb768a055db
6
+ metadata.gz: 7a208e0fdc9c932ddb5a1c68cc5d15401e95fd18fb598293045cb0beeef43c74d38a3300224f961d30dba477702279af0caa0e86116beafa8ea14d678783adb3
7
+ data.tar.gz: 3046797ac1769ac6c238a1fd8de10be4fac0bab2492557bb0a27447470d5cac6edf222779dd59195d9be0d1253935fbdffbb3e728e97ea3352e08883c3cef5a6
data/lib/kdep/cli.rb CHANGED
@@ -28,6 +28,8 @@ module Kdep
28
28
  end
29
29
 
30
30
  def run
31
+ Kdep::UpdateCheck.run
32
+
31
33
  global_parser.order!(@argv, into: @global_options)
32
34
  command_name = @argv.shift
33
35
 
data/lib/kdep/docker.rb CHANGED
@@ -7,7 +7,7 @@ module Kdep
7
7
  def self.build(tag:, context_dir:, dockerfile: nil, target: nil, platform: nil, build_args: nil)
8
8
  ensure_login(tag)
9
9
 
10
- args = ["docker", "build", "-t", tag]
10
+ args = ["docker", "build", "--progress=plain", "-t", tag]
11
11
  args.push("--file", dockerfile) if dockerfile
12
12
  args.push("--target", target) if target
13
13
  args.push("--platform", platform) if platform
@@ -16,21 +16,22 @@ module Kdep
16
16
  end
17
17
  args.push(context_dir)
18
18
 
19
- stdout, stderr, status = Open3.capture3(*args)
20
- unless status.success?
21
- raise Error, "docker build failed: #{stderr.strip}"
22
- end
23
- stdout
19
+ run_streaming(*args)
24
20
  end
25
21
 
26
22
  def self.push(tag)
27
23
  ensure_login(tag)
24
+ run_streaming("docker", "push", tag)
25
+ end
28
26
 
29
- stdout, stderr, status = Open3.capture3("docker", "push", tag)
30
- unless status.success?
31
- raise Error, "docker push failed: #{stderr.strip}"
27
+ def self.run_streaming(*args)
28
+ status = nil
29
+ Open3.popen2e(*args) do |_stdin, out, wait_thr|
30
+ _stdin.close
31
+ out.each_line { |line| $stdout.print line }
32
+ status = wait_thr.value
32
33
  end
33
- stdout
34
+ raise Error, "#{args[0..1].join(' ')} failed (exit #{status.exitstatus})" unless status.success?
34
35
  end
35
36
 
36
37
  def self.ensure_login(tag)
@@ -80,6 +81,6 @@ module Kdep
80
81
  [nil, nil]
81
82
  end
82
83
 
83
- private_class_method :ensure_login, :read_credentials
84
+ private_class_method :run_streaming, :ensure_login, :read_credentials
84
85
  end
85
86
  end
@@ -0,0 +1,59 @@
1
+ require "net/http"
2
+ require "json"
3
+
4
+ module Kdep
5
+ module UpdateCheck
6
+ CACHE_FILE = File.join(Dir.home, ".kdep_update_check")
7
+ CHECK_INTERVAL = 3600 # seconds between remote checks
8
+
9
+ def self.run
10
+ return if recently_checked?
11
+
12
+ Thread.new { check_and_notify }
13
+ end
14
+
15
+ def self.check_and_notify
16
+ latest = fetch_latest_version
17
+ return unless latest
18
+
19
+ File.write(CACHE_FILE, Time.now.to_i.to_s)
20
+
21
+ if newer?(latest, Kdep::VERSION)
22
+ $stderr.puts "\e[33mupdate available: kdep #{Kdep::VERSION} → #{latest} (gem update kdep)\e[0m"
23
+ end
24
+ rescue StandardError
25
+ # never break the user's workflow
26
+ end
27
+
28
+ def self.recently_checked?
29
+ return false unless File.exist?(CACHE_FILE)
30
+
31
+ last_check = File.read(CACHE_FILE).strip.to_i
32
+ (Time.now.to_i - last_check) < CHECK_INTERVAL
33
+ end
34
+
35
+ def self.fetch_latest_version
36
+ uri = URI("https://rubygems.org/api/v1/versions/kdep/latest.json")
37
+ http = Net::HTTP.new(uri.host, uri.port)
38
+ http.use_ssl = true
39
+ http.open_timeout = 2
40
+ http.read_timeout = 2
41
+ response = http.get(uri.request_uri)
42
+ return nil unless response.is_a?(Net::HTTPSuccess)
43
+
44
+ JSON.parse(response.body)["version"]
45
+ end
46
+
47
+ def self.newer?(latest, current)
48
+ latest_parts = latest.split(".").map(&:to_i)
49
+ current_parts = current.split(".").map(&:to_i)
50
+ latest_parts.zip(current_parts).each do |l, c|
51
+ return true if (l || 0) > (c || 0)
52
+ return false if (l || 0) < (c || 0)
53
+ end
54
+ false
55
+ end
56
+
57
+ private_class_method :check_and_notify, :recently_checked?, :fetch_latest_version, :newer?
58
+ end
59
+ end
data/lib/kdep/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Kdep
2
- VERSION = "0.3.1"
2
+ VERSION = "0.3.3"
3
3
  end
data/lib/kdep.rb CHANGED
@@ -42,6 +42,7 @@ require "kdep/dashboard/log_panel"
42
42
  require "kdep/dashboard/resources_panel"
43
43
  require "kdep/dashboard/health_panel"
44
44
  require "kdep/dashboard"
45
+ require "kdep/update_check"
45
46
  require "kdep/cli"
46
47
 
47
48
  module Kdep
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kdep
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Leadfy
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-04-07 00:00:00.000000000 Z
11
+ date: 2026-04-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -103,6 +103,7 @@ files:
103
103
  - lib/kdep/renderer.rb
104
104
  - lib/kdep/template_context.rb
105
105
  - lib/kdep/ui.rb
106
+ - lib/kdep/update_check.rb
106
107
  - lib/kdep/validator.rb
107
108
  - lib/kdep/version.rb
108
109
  - lib/kdep/version_tagger.rb
@@ -146,7 +147,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
146
147
  - !ruby/object:Gem::Version
147
148
  version: '0'
148
149
  requirements: []
149
- rubygems_version: 3.5.22
150
+ rubygems_version: 3.2.32
150
151
  signing_key:
151
152
  specification_version: 4
152
153
  summary: Kubernetes deployment CLI