iterm_cli 1.0.3 → 1.0.4
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 +5 -5
- data/.rubocop.yml +129 -0
- data/CHANGELOG.md +5 -1
- data/Gemfile +1 -1
- data/README.md +4 -0
- data/bin/rubocop +29 -0
- data/iterm_cli.gemspec +7 -7
- data/lib/iterm_cli/cli.rb +1 -1
- data/lib/iterm_cli/session_manager.rb +9 -11
- data/lib/iterm_cli/terminal/function.rb +3 -3
- data/lib/iterm_cli/terminal/list_sessions.rb +1 -1
- data/lib/iterm_cli/terminal/new_session.rb +5 -5
- data/lib/iterm_cli/terminal/send_keys.rb +2 -2
- data/lib/iterm_cli/version.rb +1 -1
- metadata +19 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 25cebfc56bdee4afdfa5ac2594068dc35cc10ab220ed718f89576bb3d74dca40
|
4
|
+
data.tar.gz: 43f921ebf4da8de3f55f4e6321878ec2817f492e528e7522234134098d159500
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 763c71eef7da2f6658382203edb953954dfcd64cb94dcf70807e6a9b1262ea0750763414daa130646e5e85aa26e182cef5cdee354e8b79e421004001ff7209a3
|
7
|
+
data.tar.gz: 3a1e2b3a76a1e02f4b23fb9612029d555b40a7f0716aa8e4da631e0a5acc724a6aed153c566476a6aca1e16e89cbc3d9cedf932ca9b32ff61df14b61d2348e74
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,129 @@
|
|
1
|
+
AllCops:
|
2
|
+
Exclude:
|
3
|
+
- bin/*
|
4
|
+
- node_modules/**/*
|
5
|
+
|
6
|
+
Layout/CaseIndentation:
|
7
|
+
EnforcedStyle: end
|
8
|
+
|
9
|
+
Layout/EndAlignment:
|
10
|
+
EnforcedStyleAlignWith: variable
|
11
|
+
|
12
|
+
Layout/EmptyLinesAroundAccessModifier:
|
13
|
+
EnforcedStyle: only_before
|
14
|
+
|
15
|
+
Layout/SpaceInLambdaLiteral:
|
16
|
+
EnforcedStyle: require_space
|
17
|
+
|
18
|
+
Layout/SpaceInsideBlockBraces:
|
19
|
+
SpaceBeforeBlockParameters: false
|
20
|
+
|
21
|
+
Layout/SpaceInsideHashLiteralBraces:
|
22
|
+
EnforcedStyle: no_space
|
23
|
+
|
24
|
+
Metrics/AbcSize:
|
25
|
+
Enabled: false
|
26
|
+
|
27
|
+
Metrics/BlockLength:
|
28
|
+
Enabled: false
|
29
|
+
|
30
|
+
Metrics/ClassLength:
|
31
|
+
Enabled: false
|
32
|
+
|
33
|
+
Metrics/CyclomaticComplexity:
|
34
|
+
Enabled: false
|
35
|
+
|
36
|
+
Metrics/LineLength:
|
37
|
+
Enabled: false
|
38
|
+
|
39
|
+
Metrics/MethodLength:
|
40
|
+
Enabled: false
|
41
|
+
|
42
|
+
Metrics/ModuleLength:
|
43
|
+
Enabled: false
|
44
|
+
|
45
|
+
Metrics/PerceivedComplexity:
|
46
|
+
Enabled: false
|
47
|
+
|
48
|
+
Naming/HeredocDelimiterNaming:
|
49
|
+
Enabled: false
|
50
|
+
|
51
|
+
Naming/PredicateName:
|
52
|
+
Enabled: false
|
53
|
+
|
54
|
+
Naming/UncommunicativeMethodParamName:
|
55
|
+
Enabled: false
|
56
|
+
|
57
|
+
Style/Alias:
|
58
|
+
EnforcedStyle: prefer_alias_method
|
59
|
+
|
60
|
+
Style/AsciiComments:
|
61
|
+
Enabled: false
|
62
|
+
|
63
|
+
Style/BlockDelimiters:
|
64
|
+
Enabled: false
|
65
|
+
|
66
|
+
Style/Documentation:
|
67
|
+
Enabled: false
|
68
|
+
|
69
|
+
Style/EmptyCaseCondition:
|
70
|
+
Enabled: false
|
71
|
+
|
72
|
+
Style/EmptyMethod:
|
73
|
+
EnforcedStyle: expanded
|
74
|
+
|
75
|
+
Style/FrozenStringLiteralComment:
|
76
|
+
Enabled: false
|
77
|
+
|
78
|
+
Style/HashSyntax:
|
79
|
+
Exclude:
|
80
|
+
- Rakefile
|
81
|
+
- "**/*.rake"
|
82
|
+
|
83
|
+
Style/Lambda:
|
84
|
+
EnforcedStyle: literal
|
85
|
+
|
86
|
+
Style/IfUnlessModifier:
|
87
|
+
Enabled: false
|
88
|
+
|
89
|
+
Style/MultilineBlockChain:
|
90
|
+
Enabled: false
|
91
|
+
|
92
|
+
Style/NumericLiterals:
|
93
|
+
Enabled: false
|
94
|
+
|
95
|
+
Style/NumericPredicate:
|
96
|
+
Enabled: false
|
97
|
+
|
98
|
+
Style/PercentLiteralDelimiters:
|
99
|
+
PreferredDelimiters:
|
100
|
+
'%i': '()'
|
101
|
+
'%w': '()'
|
102
|
+
'%r': '()'
|
103
|
+
|
104
|
+
Style/PerlBackrefs:
|
105
|
+
Enabled: false
|
106
|
+
|
107
|
+
Style/SpecialGlobalVars:
|
108
|
+
Enabled: false
|
109
|
+
|
110
|
+
Style/StringLiterals:
|
111
|
+
EnforcedStyle: double_quotes
|
112
|
+
|
113
|
+
Style/StringLiteralsInInterpolation:
|
114
|
+
EnforcedStyle: double_quotes
|
115
|
+
|
116
|
+
Style/SymbolArray:
|
117
|
+
Enabled: false
|
118
|
+
|
119
|
+
Style/TrailingCommaInArguments:
|
120
|
+
EnforcedStyleForMultiline: consistent_comma
|
121
|
+
|
122
|
+
Style/TrailingCommaInArrayLiteral:
|
123
|
+
EnforcedStyleForMultiline: consistent_comma
|
124
|
+
|
125
|
+
Style/TrailingCommaInHashLiteral:
|
126
|
+
EnforcedStyleForMultiline: consistent_comma
|
127
|
+
|
128
|
+
Style/ZeroLengthPredicate:
|
129
|
+
Enabled: false
|
data/CHANGELOG.md
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
data/bin/rubocop
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application 'rubocop' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
require "pathname"
|
12
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
13
|
+
Pathname.new(__FILE__).realpath)
|
14
|
+
|
15
|
+
bundle_binstub = File.expand_path("../bundle", __FILE__)
|
16
|
+
|
17
|
+
if File.file?(bundle_binstub)
|
18
|
+
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
|
19
|
+
load(bundle_binstub)
|
20
|
+
else
|
21
|
+
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
22
|
+
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
require "rubygems"
|
27
|
+
require "bundler/setup"
|
28
|
+
|
29
|
+
load Gem.bin_path("rubocop", "rubocop")
|
data/iterm_cli.gemspec
CHANGED
@@ -1,7 +1,6 @@
|
|
1
|
-
|
2
|
-
lib = File.expand_path('../lib', __FILE__)
|
1
|
+
lib = File.expand_path("lib", __dir__)
|
3
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require
|
3
|
+
require "iterm_cli/version"
|
5
4
|
|
6
5
|
Gem::Specification.new do |spec|
|
7
6
|
spec.name = "iterm_cli"
|
@@ -9,14 +8,14 @@ Gem::Specification.new do |spec|
|
|
9
8
|
spec.authors = ["labocho"]
|
10
9
|
spec.email = ["labocho@penguinlab.jp"]
|
11
10
|
|
12
|
-
spec.summary =
|
13
|
-
spec.description =
|
11
|
+
spec.summary = "Command line interface for iTerm2"
|
12
|
+
spec.description = "Command line interface for iTerm2"
|
14
13
|
spec.homepage = "https://github.com/labocho/iterm_cli"
|
15
14
|
spec.license = "MIT"
|
16
15
|
|
17
|
-
spec.files = `git ls-files -z`.split("\x0").reject {
|
16
|
+
spec.files = `git ls-files -z`.split("\x0").reject {|f| f.match(%r{^(test|spec|features)/}) }
|
18
17
|
spec.bindir = "exe"
|
19
|
-
spec.executables = spec.files.grep(%r
|
18
|
+
spec.executables = spec.files.grep(%r(^exe/)) {|f| File.basename(f) }
|
20
19
|
spec.require_paths = ["lib"]
|
21
20
|
|
22
21
|
spec.add_dependency "thor", "~> 0.19.1"
|
@@ -25,4 +24,5 @@ Gem::Specification.new do |spec|
|
|
25
24
|
spec.add_development_dependency "bundler", "~> 1.10"
|
26
25
|
spec.add_development_dependency "rake", "~> 10.0"
|
27
26
|
spec.add_development_dependency "rspec"
|
27
|
+
spec.add_development_dependency "rubocop"
|
28
28
|
end
|
data/lib/iterm_cli/cli.rb
CHANGED
@@ -14,8 +14,8 @@ module ITermCLI
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def self.load(sessions_file)
|
17
|
-
unless File.
|
18
|
-
|
17
|
+
unless File.exist?(sessions_file)
|
18
|
+
warn "#{sessions_file} not found"
|
19
19
|
exit 1
|
20
20
|
end
|
21
21
|
sessions = YAML.load_file(sessions_file)
|
@@ -31,10 +31,10 @@ module ITermCLI
|
|
31
31
|
def start(names)
|
32
32
|
sessions_will_start = select_sessions_by_names(names)
|
33
33
|
existed = existed_session_names
|
34
|
-
sessions_will_start.reject!{|s| existed.include?(s.name) }
|
34
|
+
sessions_will_start.reject! {|s| existed.include?(s.name) }
|
35
35
|
|
36
36
|
mutex = Mutex.new
|
37
|
-
sessions_will_start.map{|session|
|
37
|
+
sessions_will_start.map {|session|
|
38
38
|
Thread.new {
|
39
39
|
mutex.synchronize { $stdout.puts "Start #{session.name}" }
|
40
40
|
Terminal::NewSession.call([session.command], name: session.name)
|
@@ -45,10 +45,10 @@ module ITermCLI
|
|
45
45
|
def kill(names)
|
46
46
|
sessions_will_kill = select_sessions_by_names(names)
|
47
47
|
existed = existed_session_names
|
48
|
-
sessions_will_kill.select!{|s| existed.include?(s.name) }
|
48
|
+
sessions_will_kill.select! {|s| existed.include?(s.name) }
|
49
49
|
|
50
50
|
mutex = Mutex.new
|
51
|
-
sessions_will_kill.map{|session|
|
51
|
+
sessions_will_kill.map {|session|
|
52
52
|
Thread.new {
|
53
53
|
mutex.synchronize { $stdout.puts "Kill #{session.name}" }
|
54
54
|
Terminal::SendKeys.call(session.kill.split(" "), target: session.name)
|
@@ -58,7 +58,7 @@ module ITermCLI
|
|
58
58
|
|
59
59
|
def list
|
60
60
|
existed = existed_session_names
|
61
|
-
column_width = sessions.values.map{|s| s.name.length }.max
|
61
|
+
column_width = sessions.values.map {|s| s.name.length }.max
|
62
62
|
sessions.values.each do |session|
|
63
63
|
prefix = if existed.include?(session.name)
|
64
64
|
"*"
|
@@ -78,7 +78,7 @@ module ITermCLI
|
|
78
78
|
names.each do |name|
|
79
79
|
s = sessions[name]
|
80
80
|
unless s
|
81
|
-
|
81
|
+
warn "#{name} not defined"
|
82
82
|
exit 1
|
83
83
|
end
|
84
84
|
r << s
|
@@ -88,8 +88,7 @@ module ITermCLI
|
|
88
88
|
end
|
89
89
|
|
90
90
|
def parse_sessions(sessions)
|
91
|
-
sessions.
|
92
|
-
s = {name: k}
|
91
|
+
sessions.each_with_object({}) do |(k, v), h|
|
93
92
|
session = case v
|
94
93
|
when String
|
95
94
|
Session.new(name: k, command: v, kill: "C-c")
|
@@ -97,7 +96,6 @@ module ITermCLI
|
|
97
96
|
Session.new(v.merge(name: k))
|
98
97
|
end
|
99
98
|
h[k] = session
|
100
|
-
h
|
101
99
|
end
|
102
100
|
end
|
103
101
|
|
@@ -8,15 +8,15 @@ module ITermCLI
|
|
8
8
|
new.call(*args)
|
9
9
|
end
|
10
10
|
|
11
|
-
def call(*
|
11
|
+
def call(*_args)
|
12
12
|
raise NotImplementedError
|
13
13
|
end
|
14
14
|
|
15
15
|
def osascript(source, arg = {})
|
16
16
|
out, err, status = Open3.capture3("/usr/bin/osascript", "-l", "JavaScript", "-e", source, arg.to_json)
|
17
17
|
unless status.success?
|
18
|
-
|
19
|
-
|
18
|
+
warn "osascript exited with #{status.to_i}"
|
19
|
+
warn err
|
20
20
|
exit status.to_i
|
21
21
|
end
|
22
22
|
out
|
@@ -2,7 +2,7 @@ require "shellwords"
|
|
2
2
|
module ITermCLI
|
3
3
|
module Terminal
|
4
4
|
class NewSession < Function
|
5
|
-
SOURCE = <<-JS
|
5
|
+
SOURCE = <<-JS.freeze
|
6
6
|
function run(argv) {
|
7
7
|
var options = JSON.parse(argv[0]);
|
8
8
|
var iTerm = Application("iTerm2");
|
@@ -23,7 +23,7 @@ module ITermCLI
|
|
23
23
|
executable = command.shellsplit.first
|
24
24
|
|
25
25
|
unless which(executable)
|
26
|
-
|
26
|
+
warn "No such file or directory: #{executable}"
|
27
27
|
exit 1
|
28
28
|
end
|
29
29
|
|
@@ -50,7 +50,7 @@ module ITermCLI
|
|
50
50
|
def join_command(command_and_args)
|
51
51
|
case command_and_args.size
|
52
52
|
when 0
|
53
|
-
ENV["SHELL"]
|
53
|
+
ENV["SHELL"] + " -l"
|
54
54
|
when 1
|
55
55
|
command_and_args[0]
|
56
56
|
else
|
@@ -59,12 +59,12 @@ module ITermCLI
|
|
59
59
|
end
|
60
60
|
|
61
61
|
def set_env_lines
|
62
|
-
ENV.reject{|k,
|
62
|
+
ENV.reject {|k, _v| k == "_" }.map {|kv| "export " + kv.map(&:shellescape).join("=") }
|
63
63
|
end
|
64
64
|
|
65
65
|
def write_script(script)
|
66
66
|
filename = Dir.mktmpdir("iterm-new-session") + "/iterm-new-session.sh"
|
67
|
-
|
67
|
+
File.write(filename, script)
|
68
68
|
filename
|
69
69
|
end
|
70
70
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module ITermCLI
|
2
2
|
module Terminal
|
3
3
|
class SendKeys < Function
|
4
|
-
SOURCE = <<-JS
|
4
|
+
SOURCE = <<-JS.freeze
|
5
5
|
function run(argv) {
|
6
6
|
var options = JSON.parse(argv[0]);
|
7
7
|
var iTerm = Application("iTerm2");
|
@@ -23,7 +23,7 @@ module ITermCLI
|
|
23
23
|
options = {target: nil}.merge(options)
|
24
24
|
target = options[:target]
|
25
25
|
|
26
|
-
text = keys.map{|t|
|
26
|
+
text = keys.map {|t|
|
27
27
|
case t
|
28
28
|
when /\AC-(.)$\z/
|
29
29
|
($1.ord & 0b00011111).chr
|
data/lib/iterm_cli/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: iterm_cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- labocho
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-11-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -80,6 +80,20 @@ dependencies:
|
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rubocop
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
83
97
|
description: Command line interface for iTerm2
|
84
98
|
email:
|
85
99
|
- labocho@penguinlab.jp
|
@@ -90,6 +104,7 @@ extra_rdoc_files: []
|
|
90
104
|
files:
|
91
105
|
- ".gitignore"
|
92
106
|
- ".rspec"
|
107
|
+
- ".rubocop.yml"
|
93
108
|
- ".travis.yml"
|
94
109
|
- CHANGELOG.md
|
95
110
|
- CODE_OF_CONDUCT.md
|
@@ -98,6 +113,7 @@ files:
|
|
98
113
|
- README.md
|
99
114
|
- Rakefile
|
100
115
|
- bin/console
|
116
|
+
- bin/rubocop
|
101
117
|
- bin/setup
|
102
118
|
- exe/iterm
|
103
119
|
- iterm_cli.gemspec
|
@@ -129,8 +145,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
129
145
|
- !ruby/object:Gem::Version
|
130
146
|
version: '0'
|
131
147
|
requirements: []
|
132
|
-
|
133
|
-
rubygems_version: 2.5.1
|
148
|
+
rubygems_version: 3.0.3
|
134
149
|
signing_key:
|
135
150
|
specification_version: 4
|
136
151
|
summary: Command line interface for iTerm2
|