gdkbox 0.1.3 → 0.1.5

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: 2087c010d2c52bff4fddfd421d1ba713b9f0721c701674753813ecca7093054d
4
- data.tar.gz: 9e697f3f33e5823296bc3e963f94025819b02b9dc340b9234d350b80b737498a
3
+ metadata.gz: 851b8b309a5e04c8e48d1090e45453b0f8464779a0d1cb30aaa69e5edf0829fe
4
+ data.tar.gz: 01af5d8bd6d09cca936bf801f22a82ff143e4357b86ce47dc6478659d19d3f9e
5
5
  SHA512:
6
- metadata.gz: d449dca72e949adb5cc497a7dedb8b707c6a0b03ee01b2bbae0ad2193f8e8287294f3281b95d5b2bf01241c014a2c9db4b4b7cea04ce348ddbe370a63df248b6
7
- data.tar.gz: 67f02e778e1aa18e7a9463e2527c7f9eaed877ecb6d3b9c8a2b8b2f761efe3147083f7745155a98ff36453d1396447ef2d53370b15e96873608e85a9387c38c7
6
+ metadata.gz: 9a5201a873d0f54c7864f2e746e7077ea406f12f6ffce032280579ab1241d74fd743e6a4376204d89aa73bb75f30cdb697cc9bb99e3253e5f819d9e03d0adf17
7
+ data.tar.gz: 569e92b7c9d527932912790e6a0e2b48be01920d5bd29cd80788673827adc17a2230fcd66f212f006b704f5e8b8b7fcee4154d0d7d502ff87e470d7b10afca31
data/README.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # gdkbox
2
2
 
3
+ [![Gem Version](https://img.shields.io/gem/v/gdkbox)](https://rubygems.org/gems/gdkbox)
4
+ [![Gem Downloads](https://img.shields.io/gem/dt/gdkbox)](https://rubygems.org/gems/gdkbox)
5
+ [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT)
6
+
3
7
  Spin up a [GitLab Development Kit (GDK)](https://gitlab.com/gitlab-org/gitlab-development-kit)
4
8
  "in a box" with a single command, then connect to it from **VS Code** and run
5
9
  **Claude Code** agents against a real GitLab development environment.
@@ -51,14 +55,22 @@ gdkbox ls # list your boxes and their status
51
55
 
52
56
  ## Install
53
57
 
54
- From this directory:
58
+ `gdkbox` is published on [RubyGems](https://rubygems.org/gems/gdkbox):
59
+
60
+ ```sh
61
+ gem install gdkbox
62
+ ```
63
+
64
+ ### From source
65
+
66
+ To build and install from a checkout of this repository:
55
67
 
56
68
  ```sh
57
69
  gem build gdkbox.gemspec
58
- gem install ./gdkbox-0.1.0.gem
70
+ gem install ./gdkbox-*.gem
59
71
  ```
60
72
 
61
- Or run it straight from a checkout without installing:
73
+ Or run it straight from the checkout without installing:
62
74
 
63
75
  ```sh
64
76
  ./bin/gdkbox up myenv
@@ -68,7 +80,7 @@ Or run it straight from a checkout without installing:
68
80
 
69
81
  | Command | Description |
70
82
  | --- | --- |
71
- | `gdkbox up NAME` | Pull the GDK image, start a box, enable SSH, install Claude Code, register VS Code host. |
83
+ | `gdkbox up NAME` | Pull the GDK image (only if not already local), start a box, enable SSH, install Claude Code, register VS Code host. |
72
84
  | `gdkbox update-image` | Pull the latest GDK-in-a-box image, with a progress bar and download speed (`--image` to override). |
73
85
  | `gdkbox ls` | List boxes and their container status (`--json` for orchestrators). |
74
86
  | `gdkbox status NAME` | Show container state and connection details (`--json`). |
data/lib/gdkbox/box.rb CHANGED
@@ -88,7 +88,10 @@ module GDKBox
88
88
  public_key = @ssh_key.ensure!
89
89
  cname = @config.container_name(name)
90
90
 
91
- @docker.pull(image)
91
+ # Only pull when the image is missing locally, so `gdkbox up` on a warm
92
+ # machine does not hit the registry; `gdkbox update-image` is the
93
+ # explicit way to refresh.
94
+ @docker.pull(image) unless @docker.image_exists?(image)
92
95
 
93
96
  # Reserve the host ports atomically. `next_port` reads the store, so
94
97
  # parallel `gdkbox up` runs would otherwise all pick the same "next free"
data/lib/gdkbox/docker.rb CHANGED
@@ -15,6 +15,11 @@ module GDKBox
15
15
  !@shell.which("docker").nil?
16
16
  end
17
17
 
18
+ # Whether the image is already present locally.
19
+ def image_exists?(image)
20
+ @shell.run("docker", "image", "inspect", image).success?
21
+ end
22
+
18
23
  # Pull an image. With no block the pull runs quietly and the (captured)
19
24
  # Result is returned. With a block the pull is streamed and the block is
20
25
  # called with a PullProgress after every line of `docker pull` output, so a
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GDKBox
4
- VERSION = "0.1.3"
4
+ VERSION = "0.1.5"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gdkbox
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - jotolo
@@ -72,9 +72,14 @@ files:
72
72
  - lib/gdkbox/version.rb
73
73
  - lib/gdkbox/vscode.rb
74
74
  - skills/gdkbox-fleet/SKILL.md
75
+ homepage: https://gitlab.com/jotolo_gl/gdkbox
75
76
  licenses:
76
77
  - MIT
77
- metadata: {}
78
+ metadata:
79
+ source_code_uri: https://gitlab.com/jotolo_gl/gdkbox
80
+ bug_tracker_uri: https://gitlab.com/jotolo_gl/gdkbox/-/issues
81
+ documentation_uri: https://gitlab.com/jotolo_gl/gdkbox/-/blob/main/README.md
82
+ rubygems_mfa_required: 'true'
78
83
  rdoc_options: []
79
84
  require_paths:
80
85
  - lib