libtmux-workspace 0.1.0 → 0.1.1

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: 66d96c81c6ee85c0bc75c616571fd4a8184bdec03117d48424898a6bc5ca7513
4
- data.tar.gz: f6677029749a5f5d3eeeea3e1df64a3f78d44243917d1192007de6db8ae2157a
3
+ metadata.gz: 67f1d8ae912d503b3f05aa72b9740ab8610899bf110ff6c9def7a491e2ab1467
4
+ data.tar.gz: b508046883150482276d3647766aa3beedd7d63e658662eb8643a8667262a355
5
5
  SHA512:
6
- metadata.gz: 741f07d62607be8fc81a90c88ff66f69addad12bb7dcbd196059563e4635d629f326048b878ff21d298fb1e00f3b0ef8b862a2c7a5cad88ce054be0727251598
7
- data.tar.gz: 470f30b5b38a41c8dc4922b59d205c8ef88119838d0f68eedaba1157b1187b14d81fb45cef815afb15305b1cb23f56e67585ffb8b7e7ad90788ee71bed770144
6
+ metadata.gz: d2a319893795e19c71a96ef8060f5468fbbd9218bd566ded215872e057064da62c53cd6c0883f98191ead6f7b7d7ff8cf2c3682eca7d6c8d2a5af56d46fdede5
7
+ data.tar.gz: e725e40e92e6515ea0cb8d49c5b7051e0e7a89499a97c7cd9c4254d19d0a865a9b8621a0381cca32d008e164f062974437ab78dc1abea8849800fd317cc652bd
data/README.md CHANGED
@@ -20,6 +20,9 @@
20
20
  [Guides](https://libtmux.org/en/ruby/latest/workspace/guides/) ·
21
21
  [RubyGems](https://rubygems.org/gems/libtmux-workspace)
22
22
 
23
+ [![libtmux.org](https://img.shields.io/badge/docs-libtmux.org-0b7285)](https://libtmux.org/en/ruby/latest/workspace/)
24
+ [![libtmux-workspace](https://img.shields.io/gem/v/libtmux-workspace?label=libtmux-workspace)](https://rubygems.org/gems/libtmux-workspace)
25
+
23
26
  </div>
24
27
 
25
28
  Part of [libtmux for Ruby](https://github.com/libtmux/libtmux-ruby#readme).
@@ -314,9 +317,13 @@ $ libtmux-workspace plan \
314
317
  workspace.yaml
315
318
  ```
316
319
 
317
- [`load`][cli-load] and `plan --live` require `--socket` for an existing
318
- server. This detached creation example uses an explicitly supplied
319
- `TMUX_SOCKET` value:
320
+ [`load`][cli-load] and `plan --live` act on an existing server. Without
321
+ `--socket`, they use the socket in `LIBTMUX_SOCKET_PATH`, else the name in
322
+ `LIBTMUX_SOCKET`, else the server `TMUX` names when run inside tmux, else
323
+ tmux's default socket. When both variables are set, the path wins, an empty
324
+ variable counts as unset, and `--socket` ignores both. A command run from a tmux
325
+ pane with none of these set acts on that pane's server. This detached creation
326
+ example names its socket with a `TMUX_SOCKET` value:
320
327
 
321
328
  ```console
322
329
  $ libtmux-workspace load \
@@ -331,7 +338,7 @@ $ libtmux-workspace load \
331
338
  | Option | Effect |
332
339
  | --- | --- |
333
340
  | `--json` | Write one structured result or error object to stdout |
334
- | `--socket PATH` | Select the existing server's socket for `load` or `plan --live` |
341
+ | `--socket PATH` | Select the existing server's socket for `load` or `plan --live`; the default follows the socket variables, then `TMUX`, then tmux's default socket |
335
342
  | `--live` | Capture a snapshot before planning |
336
343
  | `--timeout SECONDS` | Bound each apply, live capture or switch operation; the default is 5 |
337
344
  | `--compensate` | Run guarded cleanup after an apply failure |
@@ -382,8 +389,10 @@ changelog marks each break. Pin an exact version to avoid one.
382
389
  `error.kind` is `tmux_unsupported`.
383
390
  - **Linux, including WSL, and macOS.** The library and the command share the
384
391
  core [compatibility workflow][compat]: Ruby 3.3, 3.4 and 4.0 with tmux 3.3a
385
- through 3.8 on Ubuntu 24.04, with per-revision results. macOS is supported on
386
- a best-effort basis, and CI coverage for it is highly limited.
392
+ through 3.8 on Ubuntu 24.04, with per-revision results. A push and a pull
393
+ request run the oldest and newest of those releases, 3.3a and 3.8, and a
394
+ release runs all of them. macOS is supported on a best-effort basis, and CI
395
+ coverage for it is highly limited.
387
396
  - **History limit.** On tmux 3.3a to 3.6 the reused initial pane keeps the
388
397
  global `history-limit`. Set the server's global value before you apply to
389
398
  get one history size.
@@ -85,7 +85,9 @@ module LibTmux
85
85
  @parser ||= OptionParser.new do |options|
86
86
  options.banner = "Usage: libtmux-workspace validate|plan|load [options] [FILE]"
87
87
  options.on("--json", "Write structured JSON to stdout") { @json = true }
88
- options.on("--socket PATH", "Explicit existing tmux socket for load or plan --live") { |value| @options[:socket] = value }
88
+ options.on("--socket PATH", "Socket of the existing tmux server for load or plan --live",
89
+ "Default: LIBTMUX_SOCKET_PATH, then LIBTMUX_SOCKET, then the",
90
+ "server TMUX names, then tmux's default socket") { |value| @options[:socket] = value }
89
91
  options.on("--live", "Acquire a snapshot before planning") { @options[:live] = true }
90
92
  options.on("--timeout SECONDS", Float, "Per-operation apply/capture/switch deadline (default: 5)") { |value| @options[:timeout] = value }
91
93
  options.on("--compensate", "Attempt guarded cleanup of positively created resources on failure") { @options[:compensate] = true }
@@ -125,7 +127,7 @@ module LibTmux
125
127
  raise ArgumentError if command != "load" && (@options[:attach] || @options[:switch] || @options[:compensate])
126
128
  raise ArgumentError if @options[:live] && command != "plan"
127
129
  live = command == "load" || @options[:live]
128
- raise ArgumentError if live && (!@options[:socket].is_a?(String) || @options[:socket].empty?)
130
+ raise ArgumentError if @options.key?(:socket) && @options[:socket].empty?
129
131
  raise ArgumentError if !live && @options[:socket]
130
132
  if @options[:attach]
131
133
  term = @environment["TERM"]
@@ -145,7 +147,23 @@ module LibTmux
145
147
  end
146
148
 
147
149
  def with_server(&block)
148
- LibTmux::Server.open(socket_path: File.expand_path(@options.fetch(:socket), @directory), &block)
150
+ LibTmux::Server.open(endpoint: endpoint, &block)
151
+ end
152
+
153
+ # --socket wins; otherwise the core reads the variables, TMUX and tmux's default.
154
+ def endpoint
155
+ socket = @options[:socket]
156
+ LibTmux::Endpoint.new(socket_path: (expand_socket(socket) if socket), environment: @environment)
157
+ rescue ArgumentError => error
158
+ @argument_message = "Invalid arguments: #{error.message}."
159
+ raise
160
+ end
161
+
162
+ # File.expand_path puts the user it cannot find in its message.
163
+ def expand_socket(socket)
164
+ File.expand_path(socket, @directory)
165
+ rescue ArgumentError
166
+ raise ArgumentError, "--socket cannot be expanded to a path; its leading ~ names no home directory"
149
167
  end
150
168
 
151
169
  def human_plan(plan)
@@ -2,6 +2,6 @@
2
2
 
3
3
  module LibTmux
4
4
  class Workspace
5
- VERSION = "0.1.0"
5
+ VERSION = "0.1.1"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: libtmux-workspace
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - libtmux contributors
@@ -15,14 +15,14 @@ dependencies:
15
15
  requirements:
16
16
  - - '='
17
17
  - !ruby/object:Gem::Version
18
- version: 0.1.0
18
+ version: 0.1.1
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - '='
24
24
  - !ruby/object:Gem::Version
25
- version: 0.1.0
25
+ version: 0.1.1
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: json
28
28
  requirement: !ruby/object:Gem::Requirement
@@ -76,7 +76,7 @@ licenses:
76
76
  - MIT
77
77
  metadata:
78
78
  source_code_uri: https://github.com/libtmux/libtmux-ruby
79
- documentation_uri: https://libtmux.org/en/ruby/v0.1.0/workspace/
79
+ documentation_uri: https://libtmux.org/en/ruby/v0.1.1/workspace/
80
80
  rdoc_options: []
81
81
  require_paths:
82
82
  - lib