build-labels 0.0.75 → 0.0.76

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: 9ecd674454bd34e82b1e1d45099b54e103789ea67e652dffe72768a435bdbb12
4
- data.tar.gz: 4b85d9c6f682ad319a578e516e501d5858ffad8d45e5c5dc25164c1e6693cdd2
3
+ metadata.gz: 184e1d17e16a503f83dab878c391b8e8571c2ac71285ef697cebb75936dd556c
4
+ data.tar.gz: 4e9c5be493bbfda785871547691f8aa6110842917aa8277056bc671be6dd834b
5
5
  SHA512:
6
- metadata.gz: 0e3b0bf903e26ec82fb5e87c85fd45d5750098cad96618364c934f81790e25a1d816dc3e493045da133350ae4587c347cc81b5955c448639d0412b668b4880a4
7
- data.tar.gz: 6a0e285f6b9f5cef615f6d0b9d23b2f04bb285b436c247685b378d1c76850b6114b402605725c58074e96751fdf5456ba4767fe37fdb7d3f450effd2141d1dc8
6
+ metadata.gz: ad03e9efa477f1772d0c62e293f7775087620c53ab126eff6d833332f4a4d4cc1eef606968cf4035bac9fd2d1d56dfc2e820ed131961bdf2cac62194daca5d23
7
+ data.tar.gz: 05da2dd8fec543a246af8aaf0cca3f6b6450d68fecc0d87703d310c6e5aeedc8a5aa719d5c666c03ba715581b3b075d228e0dce8d9fe288bf21458ed8d0b6d04
@@ -6,6 +6,74 @@ exec "sh", "-eux", "-c", shell, "sh", *ARGV
6
6
  __END__
7
7
  set -eux
8
8
 
9
+ docker_major=""
10
+ docker_version_prefix=""
11
+
12
+ usage() {
13
+ cat <<'USAGE'
14
+ Usage: install-docker-static [VERSION_PREFIX] [--docker-major N]
15
+
16
+ Options:
17
+ VERSION_PREFIX Install latest Docker version matching prefix
18
+ (e.g., 28, 28.5, 28.5.2)
19
+ -m, --major, --docker-major N Install latest Docker version within major N
20
+ -h, --help Show this help
21
+ USAGE
22
+ }
23
+
24
+ parse_args() {
25
+ while [ "$#" -gt 0 ]; do
26
+ case "$1" in
27
+ -m|--major|--docker-major)
28
+ if [ -z "${2:-}" ]; then
29
+ echo "Missing value for $1" >&2
30
+ usage
31
+ exit 1
32
+ fi
33
+ docker_major="$2"
34
+ shift 2
35
+ ;;
36
+ -h|--help)
37
+ usage
38
+ exit 0
39
+ ;;
40
+ *)
41
+ if [ -z "$docker_version_prefix" ]; then
42
+ docker_version_prefix="$1"
43
+ shift
44
+ else
45
+ echo "Unexpected argument: $1" >&2
46
+ usage
47
+ exit 1
48
+ fi
49
+ ;;
50
+ esac
51
+ done
52
+
53
+ if [ -n "$docker_version_prefix" ] && [ -n "$docker_major" ]; then
54
+ echo "Specify either VERSION_PREFIX or --docker-major, not both." >&2
55
+ exit 1
56
+ fi
57
+
58
+ if [ -n "$docker_major" ]; then
59
+ case "$docker_major" in
60
+ *[!0-9]*)
61
+ echo "Invalid major version: $docker_major" >&2
62
+ exit 1
63
+ ;;
64
+ esac
65
+ fi
66
+
67
+ if [ -n "$docker_version_prefix" ]; then
68
+ case "$docker_version_prefix" in
69
+ *[!0-9.]*|*.*.*.*)
70
+ echo "Invalid version prefix: $docker_version_prefix" >&2
71
+ exit 1
72
+ ;;
73
+ esac
74
+ fi
75
+ }
76
+
9
77
  detect_arch() {
10
78
  arch="$(uname -m)"
11
79
  case "$arch" in
@@ -40,16 +108,19 @@ detect_arch() {
40
108
  esac
41
109
  }
42
110
 
43
- # Dockerfile:
44
- #FROM ruby:3.4.4-slim-bookworm AS base
45
- #FROM ruby:3.2.10-alpine AS base
46
- ## RUN gem install build-labels:0.0.71
47
- #RUN install-docker-static
111
+ # Dockerfile example:
112
+ # # FROM ruby:3.4.4-slim-bookworm AS base
113
+ # FROM ruby:3.2.10-alpine AS base
114
+ # # RUN gem install build-labels:0.0.71
115
+ # RUN install-docker-static
116
+ # # Or pin to latest Docker within a major (or prefix):
117
+ # # RUN install-docker-static 28
118
+ # # RUN install-docker-static 28.5
48
119
  #
49
- #RUN docker -v
50
- ## docker build --network=host --progress=plain .
120
+ # RUN docker -v
121
+ # # docker build --network=host --progress=plain .
51
122
 
52
- # TODO:
123
+ # TODO: look for simpler script
53
124
  # RUN apk add --no-cache ca-certificates curl tar \
54
125
  # && arch="$(uname -m)" \
55
126
  # && case "$arch" in x86_64|amd64) a=x86_64;; aarch64|arm64) a=aarch64;; *) exit 1;; esac \
@@ -62,14 +133,34 @@ detect_arch() {
62
133
  install_docker_static() {
63
134
  detect_arch
64
135
  base_url="https://download.docker.com/linux/static/stable/$docker_arch/"
65
- latest_version="$(
136
+ versions="$(
66
137
  curl -fsSL "$base_url" \
67
138
  | sed -n 's/.*docker-\([0-9.][0-9.]*\)\.tgz.*/\1/p' \
68
- | sort -t. -k1,1n -k2,2n -k3,3n -k4,4n \
69
- | tail -n 1
139
+ | sort -t. -k1,1n -k2,2n -k3,3n -k4,4n
70
140
  )"
141
+ if [ -n "$docker_version_prefix" ]; then
142
+ latest_version="$(
143
+ printf '%s\n' "$versions" \
144
+ | awk -v p="$docker_version_prefix" 'index($0, p ".")==1 || $0==p' \
145
+ | tail -n 1
146
+ )"
147
+ elif [ -n "$docker_major" ]; then
148
+ latest_version="$(
149
+ printf '%s\n' "$versions" \
150
+ | awk -F. -v m="$docker_major" '$1==m' \
151
+ | tail -n 1
152
+ )"
153
+ else
154
+ latest_version="$(printf '%s\n' "$versions" | tail -n 1)"
155
+ fi
71
156
  if [ -z "$latest_version" ]; then
72
- echo "Unable to determine latest Docker version from $base_url" >&2
157
+ if [ -n "$docker_version_prefix" ]; then
158
+ echo "Unable to determine latest Docker version matching $docker_version_prefix from $base_url" >&2
159
+ elif [ -n "$docker_major" ]; then
160
+ echo "Unable to determine latest Docker version for major $docker_major from $base_url" >&2
161
+ else
162
+ echo "Unable to determine latest Docker version from $base_url" >&2
163
+ fi
73
164
  exit 1
74
165
  fi
75
166
  tmp_dir="$(mktemp -d)"
@@ -101,6 +192,8 @@ install_buildx() {
101
192
  chmod 0755 "$plugin_dir/docker-buildx"
102
193
  }
103
194
 
195
+ parse_args "$@"
196
+
104
197
  if command -v apt-get >/dev/null 2>&1; then
105
198
  apt-get update
106
199
  apt-get install -y --no-install-recommends git ca-certificates curl tar
data/lib/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module BuildLabels
2
2
  class Builder
3
- VERSION = '0.0.75'
3
+ VERSION = '0.0.76'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: build-labels
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.75
4
+ version: 0.0.76
5
5
  platform: ruby
6
6
  authors:
7
7
  - Artyom B
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-01-16 00:00:00.000000000 Z
11
+ date: 2026-01-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake