heytmux 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 85b63f2a2697dfa9be0ef1b209e308f5ffce4480
4
- data.tar.gz: fe1606f7147b1bb5ca3f1283477f2796f83f163a
2
+ SHA256:
3
+ metadata.gz: fe3e03ac69a2016e30bea5cd11e8bb8dd367ea4acc7e9a6402185201f5a66e7c
4
+ data.tar.gz: 170eca1fda547fdd1b13b2a0e684903a5cea2f9812f993e6a9418e694e8f66f9
5
5
  SHA512:
6
- metadata.gz: 166da8ba7bc7393509acffe0f43b0c72209ca2c8e41f3467b10d77a0f9081a858342ade4e3d7d8f94cd247891844577bf80c7a255deacb7c588e0b6a6b9b1662
7
- data.tar.gz: 1289e4ec84118413d2868ebd91eb2c4ae5b0aacfdab632181bedf83c46d2ea805bb51a96069b63b275b0e294060bb49dfe1552daa66b0fb8a7621d463132f063
6
+ metadata.gz: f0287d21b34ced56d79fe24fa96dcf6efbc8985469df7ddd6a83103b9823e0911c000257af71c3f7148365bff15384884fb0bfb78bfa6ffdd20253a6b5ba7ea4
7
+ data.tar.gz: 8a73271ceb4baf815354603ec4edbe45a5ec43ab272ecba00c5559acfbec6b71f066fb81e6bd4e1fb82c4be5250a0bcc9e8fc2ae4e4f9a15e43d5e6a49c44533
data/README.md CHANGED
@@ -221,7 +221,7 @@ expanded according to the list.
221
221
  - pane {{item}}: sleep {{item}}
222
222
  ```
223
223
 
224
- Note that you have to quote a pane title if it starts with `{{ item }}`.
224
+ Note that you have to quote a pane title if it starts with `{{`.
225
225
 
226
226
  This is often useful when you have to work with a series of log files or with
227
227
  a set of servers.
@@ -238,6 +238,7 @@ a set of servers.
238
238
  - ssh user@{{item}} tail -f /var/log/server-{{item}}.log
239
239
  ```
240
240
 
241
+ Also note that `{{ item.index }}` expands to zero-based index of the item.
241
242
 
242
243
  #### Referring to environment variables
243
244
 
data/exe/heytmux CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
4
  require 'heytmux'
4
5
 
@@ -17,13 +18,13 @@ if (unreadable = ARGV.find { |f| !File.readable?(f) })
17
18
  end
18
19
 
19
20
  require 'yaml'
20
- strings = [$stdin.tty? ? nil : ['standard input', $stdin.read],
21
+ strings = [ARGV.any? || $stdin.tty? ? nil : ['standard input', $stdin.read],
21
22
  *ARGV.map { |f| [f, File.read(f)] }].compact
22
23
  specs = strings.map do |name, str|
23
24
  begin
24
25
  str = Heytmux.replace_env_vars(str)
25
26
  YAML.respond_to?(:safe_load) ? YAML.safe_load(str) : YAML.load(str)
26
- rescue => e
27
+ rescue StandardError => e
27
28
  abort("Failed to parse #{name}: #{e}")
28
29
  end
29
30
  end
data/heytmux.gemspec CHANGED
@@ -1,6 +1,6 @@
1
- # coding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
- lib = File.expand_path('../lib', __FILE__)
3
+ lib = File.expand_path('lib', __dir__)
4
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
5
  require 'heytmux/version'
6
6
 
@@ -21,11 +21,10 @@ Gem::Specification.new do |spec|
21
21
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
22
  spec.require_paths = ['lib']
23
23
 
24
- spec.required_ruby_version = '>= 2.0'
25
- spec.add_development_dependency 'bundler', '~> 1.15'
26
- spec.add_development_dependency 'rake', '~> 12.0'
27
- spec.add_development_dependency 'minitest', '~> 5.10'
24
+ spec.required_ruby_version = '>= 2.4'
25
+ spec.add_development_dependency 'bundler', '>= 2.2.15'
26
+ spec.add_development_dependency 'coveralls_reborn'
27
+ spec.add_development_dependency 'minitest'
28
28
  spec.add_development_dependency 'pry'
29
- spec.add_development_dependency 'simplecov'
30
- spec.add_development_dependency 'coveralls'
29
+ spec.add_development_dependency 'rake', '~> 12.0'
31
30
  end
data/lib/heytmux.rb CHANGED
@@ -18,6 +18,7 @@ module Heytmux
18
18
  PANES_KEY = 'panes'
19
19
  ITEMS_KEY = 'items'
20
20
  ITEM_PAT = /{{ *item *}}/i
21
+ ITEM_INDEX_PAT = /{{ *item\.index *}}/i
21
22
  ENV_PAT = /{{ *\$([a-z0-9_]+) *(?:\| *(.*?) *)?}}/i
22
23
 
23
24
  EXPECT_SLEEP_INTERVAL = 0.5
data/lib/heytmux/core.rb CHANGED
@@ -71,12 +71,13 @@ module Heytmux
71
71
 
72
72
  # Finds appropriate PaneActions for the commands and processes them
73
73
  def process_command!(window_index, pane)
74
- pane_index, item, commands = pane.values_at(:index, :item, :command)
74
+ pane_index, item, item_index, commands =
75
+ pane.values_at(:index, :item, :item_index, :command)
75
76
  [*commands].compact.each do |command|
76
77
  label, body = command.is_a?(Hash) ? command.first : [:paste, command]
77
78
  PaneAction.for(label).process(window_index, pane_index, body) do |source|
78
79
  string = source.to_s
79
- item ? string.gsub(ITEM_PAT, item) : string
80
+ item ? string.gsub(ITEM_PAT, item).gsub(ITEM_INDEX_PAT, item_index.to_s) : string
80
81
  end
81
82
  end
82
83
  end
@@ -141,11 +142,12 @@ module Heytmux
141
142
 
142
143
  def interpret_and_expand_pane_spec(pane, items, pane_indexer)
143
144
  title, command = pane.is_a?(Hash) ? pane.first : [pane.tr("\n", ' '), pane]
144
- if title =~ ITEM_PAT
145
- items.map do |item|
146
- title_sub = title.gsub(ITEM_PAT, item.to_s)
145
+ if title =~ ITEM_PAT || title =~ ITEM_INDEX_PAT
146
+ items.map.with_index do |item, item_idx|
147
+ title_sub = title.gsub(ITEM_PAT, item.to_s).gsub(ITEM_INDEX_PAT, item_idx.to_s)
147
148
  { title: title_sub, command: command,
148
- item: item.to_s, index: pane_indexer[title_sub] }
149
+ item: item.to_s, item_index: item_idx,
150
+ index: pane_indexer[title_sub] }
149
151
  end
150
152
  else
151
153
  [{ title: title, command: command, index: pane_indexer[title] }]
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Heytmux
4
- VERSION = '0.1.1'
4
+ VERSION = '0.2.0'
5
5
  end
metadata CHANGED
@@ -1,59 +1,45 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: heytmux
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Junegunn Choi
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-07-08 00:00:00.000000000 Z
11
+ date: 2021-04-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.15'
19
+ version: 2.2.15
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '1.15'
26
+ version: 2.2.15
27
27
  - !ruby/object:Gem::Dependency
28
- name: rake
28
+ name: coveralls_reborn
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '12.0'
33
+ version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '12.0'
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: minitest
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '5.10'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '5.10'
55
- - !ruby/object:Gem::Dependency
56
- name: pry
57
43
  requirement: !ruby/object:Gem::Requirement
58
44
  requirements:
59
45
  - - ">="
@@ -67,7 +53,7 @@ dependencies:
67
53
  - !ruby/object:Gem::Version
68
54
  version: '0'
69
55
  - !ruby/object:Gem::Dependency
70
- name: simplecov
56
+ name: pry
71
57
  requirement: !ruby/object:Gem::Requirement
72
58
  requirements:
73
59
  - - ">="
@@ -81,19 +67,19 @@ dependencies:
81
67
  - !ruby/object:Gem::Version
82
68
  version: '0'
83
69
  - !ruby/object:Gem::Dependency
84
- name: coveralls
70
+ name: rake
85
71
  requirement: !ruby/object:Gem::Requirement
86
72
  requirements:
87
- - - ">="
73
+ - - "~>"
88
74
  - !ruby/object:Gem::Version
89
- version: '0'
75
+ version: '12.0'
90
76
  type: :development
91
77
  prerelease: false
92
78
  version_requirements: !ruby/object:Gem::Requirement
93
79
  requirements:
94
- - - ">="
80
+ - - "~>"
95
81
  - !ruby/object:Gem::Version
96
- version: '0'
82
+ version: '12.0'
97
83
  description: Tmux scripting made easy
98
84
  email:
99
85
  - junegunn.c@gmail.com
@@ -121,7 +107,7 @@ files:
121
107
  homepage: https://github.com/junegunn/heytmux
122
108
  licenses: []
123
109
  metadata: {}
124
- post_install_message:
110
+ post_install_message:
125
111
  rdoc_options: []
126
112
  require_paths:
127
113
  - lib
@@ -129,16 +115,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
129
115
  requirements:
130
116
  - - ">="
131
117
  - !ruby/object:Gem::Version
132
- version: '2.0'
118
+ version: '2.4'
133
119
  required_rubygems_version: !ruby/object:Gem::Requirement
134
120
  requirements:
135
121
  - - ">="
136
122
  - !ruby/object:Gem::Version
137
123
  version: '0'
138
124
  requirements: []
139
- rubyforge_project:
140
- rubygems_version: 2.6.8
141
- signing_key:
125
+ rubygems_version: 3.2.15
126
+ signing_key:
142
127
  specification_version: 4
143
128
  summary: Hey tmux!
144
129
  test_files: []