ranch-hand 0.5.0 → 0.7.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: 48c84c3e4ddf11d37bb17c9bc444ccc0700f1f9ed384625e44a076bb87430cff
4
- data.tar.gz: eececbaadd4d0f51df193d4bf347475a53e8c4adfd1597eaaeaa688b701d2475
3
+ metadata.gz: 1fcf2dcd9fa4d7109d4e40ee519904acde93eab7d6861444900e045d8f9e85fd
4
+ data.tar.gz: 579f8858997fc6d180e400d97463cf49f64a6f29084d4224108b7256a61b1708
5
5
  SHA512:
6
- metadata.gz: 8dc1dfd8aacea8c3e94052f9b4e5d3bef1b6bfe9613a0c70a76ebbea48e3e8b85fd3dba10a1e8d9aa7b64d78dc02f36ed3f27f2fc3f08180dca8ab34865eb8cc
7
- data.tar.gz: d728d0493913d69331764620855311288c49c98529f0b47fe5917f800e41b28aca5ddb11545fddbb5a60321c78a83e7152b24cc116304d53868298bc02e7198f
6
+ metadata.gz: ee5fa837162469e9076186dd625bd4d8f2491836494a91d72861bc5571fba58a37719be2d8d190a948bc571e9542fb8098dd6888a5bba01073db15b25bfea78f
7
+ data.tar.gz: 11d3035683053d219e80d1da994b3a0ef634e07c4908344fb924c88ffe728724bd35651aa014d074e31904cdec85856c30334e475311bc803ed4f3de152f104f
data/Changelog.md ADDED
@@ -0,0 +1,13 @@
1
+ ### 0.7.0
2
+ #### Features
3
+ Add support for command arguments. Commands that use arguments no longer need to be wrapped in a string in order to be passed properly. This provides a better interface for editor plugins that automatically append arguments to the end of a custom command.
4
+ - https://github.com/peregrinator/ranch-hand/commit/a70d44042507d407c0088a2a8ffa4d4514a800af
5
+ - ex: before: `ranch-hand exec -c 'rspec spec/foo.rb:21'`, now: `ranch-hand exec -c rspec spec/foo.rb:21`
6
+
7
+ #### Bugfixes:
8
+ - d76855: correctly handle scenario in which the namespace queried has no pods
9
+
10
+ ### 0.6.0
11
+
12
+ Updates for Ruby 3.0 compat
13
+ - https://rubyreferences.github.io/rubychanges/3.0.html#keyword-arguments-are-now-fully-separated-from-positional-arguments
data/README.md CHANGED
@@ -5,7 +5,7 @@
5
5
  Provides a simple interface on top the Rancher CLI and the Kubectl commands to make running commands in pods easier.
6
6
  This is particularily useful when using Kubernetes in a development environment.
7
7
 
8
- ![ranch-hand demo](https://github.com/peregrinator/ranch-hand/raw/master/doc/ranch-hand-demo.gif "Ranch-hand Demo")
8
+ ![ranch-hand demo](https://github.com/peregrinator/ranch-hand/raw/main/doc/ranch-hand-demo.gif "Ranch-hand Demo")
9
9
 
10
10
  ## Installation
11
11
 
@@ -25,14 +25,14 @@ Or install it yourself as:
25
25
 
26
26
  ## Setup
27
27
 
28
- Once ranch-hand is installed, run `ranch-hand setup` from the command line. This will the necessary files in a `~/.ranch-hand`.
28
+ Once ranch-hand is installed, run `ranch-hand setup` from the command line. This will create the necessary files in `~/.ranch-hand`.
29
29
 
30
30
  #### Project setup
31
31
 
32
- Project setup is optional. You can create a set of default values for certain flags by running `ranch-hand init` in any directory. When ranch-hand is run from a directory it will use the values in a `.ranch-hand` file if it is present.
32
+ Project setup is optional. You can create a set of default values for certain flags by running `ranch-hand init` in any directory. When ranch-hand is run from a directory it will use the values in the `.ranch-hand` file if it is present.
33
33
 
34
34
  Normally you might run the following command: `ranch-hand -n my-namespace -g -p my-project -c /bin/bash`
35
- Using `ranch-hand init` you can set the namespace, grouping flag and pod name as defaults, instead allowing you to just run: `ranch-hand -c /bin/bash`.
35
+ Using `ranch-hand init` you can set the namespace, grouping flag and pod name as defaults, and instead just run: `ranch-hand -c /bin/bash`.
36
36
 
37
37
  ## Usage
38
38
 
data/bin/ranch-hand CHANGED
@@ -14,7 +14,7 @@ module RanchHandCLI
14
14
  version RanchHand::VERSION
15
15
 
16
16
  subcommand_option_handling :normal
17
- arguments :strict
17
+ arguments :loose
18
18
 
19
19
  desc 'Sets up ranch hand'
20
20
  command :setup do |c|
@@ -23,6 +23,13 @@ module RanchHandCLI
23
23
  end
24
24
  end
25
25
 
26
+ desc 'Installs ranch hand Oh My Zsh shortcuts'
27
+ command :ohmyzsh do |c|
28
+ c.action do |global_options, options, args|
29
+ RanchHand::Base.install_ohmyzsh
30
+ end
31
+ end
32
+
26
33
  desc 'Initializes ranch hand for project'
27
34
  command :init do |c|
28
35
  c.action do |global_options, command_options, args|
@@ -37,14 +44,14 @@ module RanchHandCLI
37
44
  c.switch [:g, :group], negatable: true, default_value: config[:group] || false, desc: "Group pods returned so that there is only one from each deployment, --no-group can be used to override project config as needed."
38
45
  c.switch [:rm, :remove], negatable: false, desc: "Used to indicated that you want to remove a previously saved command."
39
46
  c.switch [:r, :repeat], negatable: false, desc: "Repeat the last command ran (against the same pod)."
40
-
47
+
41
48
  c.flag [:c, :command], desc: "Command to run once (not permanently stored)"
42
49
  c.flag [:f, :filter], desc: "Filter pods returned to those that contain the string provided (negative matches supported). Examples: '-f nginx', '-f -apache'"
43
50
  c.flag [:n, :namespace], required: true, default_value: config[:namespace], desc: "Namespace against which to retreive pods and run command"
44
51
  c.flag [:p, :pod], default_value: config[:pod], desc: "Run command in a specific pod. If used with -g only the pod name can be specified and the command will be run against the first in the group"
45
52
 
46
53
  c.action do |global_options, command_options, args|
47
- RanchHand::KubeCtl.new.exec(command_options)
54
+ RanchHand::KubeCtl.new.exec(args: args, cmd_options: command_options)
48
55
  end
49
56
  end
50
57
 
@@ -0,0 +1,4 @@
1
+ alias rh='ranch-hand' # main binary alias
2
+ alias rhs='ranch-hand setup' # setup ranch hand with Rancher CLI credentials
3
+ alias rhi='ranch-hand init' # initialize default ranch hand settings in a project
4
+ alias rhe='ranch-hand exec' # run a command in a container
@@ -12,5 +12,27 @@ module RanchHand
12
12
  RanchHand::Config.create
13
13
  RanchHand::Logger.info("initialization complete")
14
14
  end
15
+
16
+ def self.install_ohmyzsh
17
+ RanchHand::Logger.info("installing ranch-hand Oh My Zsh shortcuts")
18
+
19
+ unless ENV['ZSH_CUSTOM'] || ENV['ZSH']
20
+ RanchHand::Logger.warn("Could not find $ZSH_CUSTOM or $ZSH in your environment, can not install shortcuts")
21
+ return
22
+ end
23
+
24
+ zsh_custom_dir = ENV['ZSH_CUSTOM'] || File.join(ENV['ZSH'], 'custom')
25
+
26
+ zsh_plugin_dir = File.join(zsh_custom_dir, 'plugins', 'ranch-hand')
27
+ FileUtils.mkdir_p(zsh_plugin_dir)
28
+
29
+ current_path = File.expand_path(File.dirname(__FILE__))
30
+ gem_plugin_path = File.join(current_path, '..', '..', 'files', 'ranch-hand.plugin.zsh')
31
+
32
+ FileUtils.cp(gem_plugin_path, zsh_plugin_dir)
33
+
34
+ RanchHand::Logger.info("installation complete")
35
+ RanchHand::Logger.info("Don't forget to add 'ranch-hand' to your plugins in ~/.zshrc -- e.g. plugins=(ranch-hand) -- and then 'source ~/.zshrc'")
36
+ end
15
37
  end
16
- end
38
+ end
@@ -3,7 +3,7 @@ module RanchHand
3
3
  private
4
4
 
5
5
  def command(opts={})
6
- TTY::Command.new(opts)
6
+ TTY::Command.new(**opts)
7
7
  end
8
8
 
9
9
  def prompt
@@ -2,25 +2,25 @@ module RanchHand
2
2
  class KubeCtl
3
3
  include RanchHand::Commands
4
4
 
5
- def exec(options={})
6
- # options = project_config.merge(options)
5
+ def exec(args: [], cmd_options: {})
6
+ args = Array(args)
7
7
 
8
- namespace = options.delete(:namespace)
8
+ namespace = cmd_options.delete(:namespace)
9
9
 
10
- if options[:remove]
10
+ if cmd_options[:remove]
11
11
  remove_command(namespace)
12
- elsif options[:repeat]
12
+ elsif cmd_options[:repeat]
13
13
  repeat_command(namespace)
14
- elsif options[:command]
15
- pod = select_pod(namespace, options)
16
- run_command(namespace, pod, options[:command])
14
+ elsif cmd_options[:command]
15
+ pod = select_pod(namespace, cmd_options)
16
+ run_command(namespace, pod, cmd_options[:command], args)
17
17
  else
18
- choose_command(namespace, options)
18
+ choose_command(namespace, cmd_options)
19
19
  end
20
20
  end
21
21
 
22
- def run_command(namespace, pod, cmd)
23
- system("rancher kubectl -n #{namespace} exec -it #{pod} -- #{cmd}")
22
+ def run_command(namespace, pod, cmd, args=[])
23
+ system("rancher kubectl -n #{namespace} exec -it #{pod} -- #{cmd} #{args.join(' ')}".strip)
24
24
  end
25
25
 
26
26
  def choose_command(namespace, options={})
@@ -175,7 +175,9 @@ module RanchHand
175
175
 
176
176
  def pods(namespace)
177
177
  pods_cmd = "rancher kubectl -n #{namespace} get po"
178
- command(printer: :null).run(pods_cmd).out.split("\n")[1..-1].map{|l| l.split(/\s+/)[0]}
178
+ pods = command(printer: :null).run(pods_cmd).out.split("\n")[1..-1]&.map{|l| l.split(/\s+/)[0]}
179
+
180
+ pods || []
179
181
  end
180
182
 
181
183
  def storage
@@ -1,3 +1,3 @@
1
1
  module RanchHand
2
- VERSION = "0.5.0"
2
+ VERSION = "0.7.1"
3
3
  end
data/ranch-hand.gemspec CHANGED
@@ -23,12 +23,14 @@ Gem::Specification.new do |spec|
23
23
  spec.executables = spec.files.grep(%r{^bin/ranch-hand}) { |f| File.basename(f) }
24
24
  spec.require_paths = ["lib"]
25
25
 
26
+ spec.required_ruby_version = '~> 3.0'
27
+
26
28
  spec.add_development_dependency "bundler", "~> 2.0"
27
29
  spec.add_development_dependency "rake", "~> 10.0"
28
30
  spec.add_development_dependency "rspec", "~> 3.0"
29
31
 
30
- spec.add_runtime_dependency "gli", "~> 2.18"
31
- spec.add_runtime_dependency "pry", "~> 0.12.2"
32
- spec.add_runtime_dependency "tty-command", "~> 0.8.2"
33
- spec.add_runtime_dependency "tty-prompt", "~> 0.18.1"
32
+ spec.add_runtime_dependency "gli", "~> 2.20"
33
+ spec.add_runtime_dependency "pry", "~> 0.14"
34
+ spec.add_runtime_dependency "tty-command", "~> 0.10"
35
+ spec.add_runtime_dependency "tty-prompt", "~> 0.23"
34
36
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ranch-hand
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peregrinator
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-11-22 00:00:00.000000000 Z
11
+ date: 2021-08-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -58,56 +58,56 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '2.18'
61
+ version: '2.20'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '2.18'
68
+ version: '2.20'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: pry
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 0.12.2
75
+ version: '0.14'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 0.12.2
82
+ version: '0.14'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: tty-command
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 0.8.2
89
+ version: '0.10'
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: 0.8.2
96
+ version: '0.10'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: tty-prompt
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 0.18.1
103
+ version: '0.23'
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: 0.18.1
110
+ version: '0.23'
111
111
  description: ''
112
112
  email:
113
113
  - bob.burbach@gmail.com
@@ -120,6 +120,7 @@ files:
120
120
  - ".rspec"
121
121
  - ".travis.yml"
122
122
  - CODE_OF_CONDUCT.md
123
+ - Changelog.md
123
124
  - Gemfile
124
125
  - LICENSE.txt
125
126
  - README.md
@@ -128,6 +129,7 @@ files:
128
129
  - bin/ranch-hand
129
130
  - bin/setup
130
131
  - doc/ranch-hand-demo.gif
132
+ - files/ranch-hand.plugin.zsh
131
133
  - lib/ranch_hand.rb
132
134
  - lib/ranch_hand/base.rb
133
135
  - lib/ranch_hand/commands.rb
@@ -148,17 +150,16 @@ require_paths:
148
150
  - lib
149
151
  required_ruby_version: !ruby/object:Gem::Requirement
150
152
  requirements:
151
- - - ">="
153
+ - - "~>"
152
154
  - !ruby/object:Gem::Version
153
- version: '0'
155
+ version: '3.0'
154
156
  required_rubygems_version: !ruby/object:Gem::Requirement
155
157
  requirements:
156
158
  - - ">="
157
159
  - !ruby/object:Gem::Version
158
160
  version: '0'
159
161
  requirements: []
160
- rubyforge_project:
161
- rubygems_version: 2.7.6.2
162
+ rubygems_version: 3.2.22
162
163
  signing_key:
163
164
  specification_version: 4
164
165
  summary: Provides an interface between the Rancher CLI and the Kubectl commands