ranch-hand 0.7.1 → 0.8.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
2
  SHA256:
3
- metadata.gz: 1fcf2dcd9fa4d7109d4e40ee519904acde93eab7d6861444900e045d8f9e85fd
4
- data.tar.gz: 579f8858997fc6d180e400d97463cf49f64a6f29084d4224108b7256a61b1708
3
+ metadata.gz: e00a609606b6a4c9fab740093f660f8de3b4a655cbe8d3ab23a381d6cb26be97
4
+ data.tar.gz: fe56f11021d0a8ed6e68231bf7096cbc06b053ee02341a7ce53d369f63d92db1
5
5
  SHA512:
6
- metadata.gz: ee5fa837162469e9076186dd625bd4d8f2491836494a91d72861bc5571fba58a37719be2d8d190a948bc571e9542fb8098dd6888a5bba01073db15b25bfea78f
7
- data.tar.gz: 11d3035683053d219e80d1da994b3a0ef634e07c4908344fb924c88ffe728724bd35651aa014d074e31904cdec85856c30334e475311bc803ed4f3de152f104f
6
+ metadata.gz: 876144c9dc6339c290eb167e6d5f9a3eb29f73b1188e210b9e362eea27b60abcb6c5f6fb881d65b98751b865b2efde82103b4b510ce0f180fec1be1a326d7cb8
7
+ data.tar.gz: c7ef6622566ab70f3f8765b6d4efb86c8c0380ecd80dcfd049ae1c3b5d4c5ac4a20bec5a5855bf27280fb0ad281b2b87a298e6eda3687e632c0d9206c8b2ab92
data/Changelog.md CHANGED
@@ -1,3 +1,11 @@
1
+ ### 0.8.0
2
+ - Add ability to specify a command prefix that will be added to all commands run via `ranch-hand exec` by default (peregrinator/ranch-hand/issues/8)
3
+ - Add ability to edit the project config file via new command `ranch-hand update_config` (peregrinator/ranch-hand/issues/9)
4
+ - Add ohmyzsh aliases for new commands
5
+ ### 0.7.1
6
+ Add Oh My Zsh plugin to provide shortcuts, see files/ranch-hand.plugin.zsh
7
+ Add new `ranch-hand ohmyzsh` command to install plugins
8
+
1
9
  ### 0.7.0
2
10
  #### Features
3
11
  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.
@@ -10,4 +18,4 @@ Add support for command arguments. Commands that use arguments no longer need to
10
18
  ### 0.6.0
11
19
 
12
20
  Updates for Ruby 3.0 compat
13
- - https://rubyreferences.github.io/rubychanges/3.0.html#keyword-arguments-are-now-fully-separated-from-positional-arguments
21
+ - https://rubyreferences.github.io/rubychanges/3.0.html#keyword-arguments-are-now-fully-separated-from-positional-arguments
data/bin/ranch-hand CHANGED
@@ -30,13 +30,20 @@ module RanchHandCLI
30
30
  end
31
31
  end
32
32
 
33
- desc 'Initializes ranch hand for project'
33
+ desc 'Initializes ranch hand for current project'
34
34
  command :init do |c|
35
35
  c.action do |global_options, command_options, args|
36
36
  RanchHand::Base.init
37
37
  end
38
38
  end
39
39
 
40
+ desc 'Updates ranch hand config for current project'
41
+ command :update_config do |c|
42
+ c.action do |global_options, command_options, args|
43
+ RanchHand::Base.update_config
44
+ end
45
+ end
46
+
40
47
  desc 'Execs into a running container'
41
48
  command :exec do |c|
42
49
  config = RanchHand::Config.load
@@ -44,14 +51,20 @@ module RanchHandCLI
44
51
  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."
45
52
  c.switch [:rm, :remove], negatable: false, desc: "Used to indicated that you want to remove a previously saved command."
46
53
  c.switch [:r, :repeat], negatable: false, desc: "Repeat the last command ran (against the same pod)."
54
+ c.switch [:sp, :skip_prefix], negatable: false, default_value: false, desc: "Do not add configured command prefix."
47
55
 
48
56
  c.flag [:c, :command], desc: "Command to run once (not permanently stored)"
49
57
  c.flag [:f, :filter], desc: "Filter pods returned to those that contain the string provided (negative matches supported). Examples: '-f nginx', '-f -apache'"
50
58
  c.flag [:n, :namespace], required: true, default_value: config[:namespace], desc: "Namespace against which to retreive pods and run command"
51
59
  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"
52
60
 
61
+ default_command_options = {
62
+ command_prefix: config[:command_prefix],
63
+ prefer_ui: config[:prefer_ui]
64
+ }
65
+
53
66
  c.action do |global_options, command_options, args|
54
- RanchHand::KubeCtl.new.exec(args: args, cmd_options: command_options)
67
+ RanchHand::KubeCtl.new.exec(args: args, cmd_options: default_command_options.merge(command_options))
55
68
  end
56
69
  end
57
70
 
@@ -1,4 +1,6 @@
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
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 rhu='ranch-hand update_config' # update default ranch hand settings for a project
5
+ alias rhe='ranch-hand exec' # run a command in a container
6
+ alias rhes='ranch-hand exec --skip-prefix' # run a command in a container but skip default command_prefix
@@ -34,5 +34,11 @@ module RanchHand
34
34
  RanchHand::Logger.info("installation complete")
35
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
36
  end
37
+
38
+ def self.update_config
39
+ RanchHand::Logger.info("updating ranch-hand config for project")
40
+ RanchHand::Config.update
41
+ RanchHand::Logger.info("update complete")
42
+ end
37
43
  end
38
44
  end
@@ -10,4 +10,4 @@ module RanchHand
10
10
  TTY::Prompt.new
11
11
  end
12
12
  end
13
- end
13
+ end
@@ -15,24 +15,51 @@ module RanchHand
15
15
  end
16
16
  end
17
17
 
18
+ def self.update
19
+ save(generate_config(load))
20
+ end
21
+
18
22
  private
19
23
 
20
- def self.generate_config
24
+ def self.generate_config(current={})
25
+ unless current.empty?
26
+ puts "Current config:"
27
+ pp current
28
+ puts "A blank entry to the following prompts will keep the current config value."
29
+ end
30
+
21
31
  namespace = prompt.ask('Namespace:')
22
32
  group = prompt.ask('Use group command by default? (Y/n):')
23
- group = %w(n N).include?(group) ? false : true
24
33
  pod = prompt.ask('Pod name:')
34
+ prefix = prompt.ask('Command prefix (optional):')
25
35
 
26
- {
36
+ # set default value if there is no current or entered value
37
+ if group.nil? && current[:group].nil?
38
+ group = %w(n N).include?(group) ? false : true
39
+ end
40
+
41
+ # if command prefix is provided set prefer_ui to false
42
+ # prefer_ui skips the #exec command line ui if set to true
43
+ # this supports a base case where the prefix command is the
44
+ # only command the user wants to run (eg. simple connection to the pod)
45
+ if current[:prefer_ui]
46
+ prefer_ui = nil
47
+ elsif prefix || current[:command_prefix]
48
+ prefer_ui = false
49
+ else
50
+ prefer_ui = true
51
+ end
52
+
53
+ current.merge({
54
+ command_prefix: prefix,
27
55
  group: group,
28
56
  namespace: namespace,
29
- pod: pod
30
- }
57
+ pod: pod,
58
+ prefer_ui: prefer_ui
59
+ }.compact)
31
60
  end
32
61
 
33
62
  def self.save(config)
34
- # File.new(project_config_path, 'w+', 0640)
35
-
36
63
  File.open(project_config_path, 'w', 0640) do |f|
37
64
  f.write(config.to_yaml)
38
65
  end
@@ -1,4 +1,4 @@
1
1
  module RanchHand
2
2
  RANCH_HAND_HOME = File.join(ENV['HOME'], '.ranch-hand')
3
3
  STORE_FILE = File.join(RANCH_HAND_HOME, 'store.yml')
4
- end
4
+ end
@@ -6,19 +6,27 @@ module RanchHand
6
6
  args = Array(args)
7
7
 
8
8
  namespace = cmd_options.delete(:namespace)
9
-
9
+
10
10
  if cmd_options[:remove]
11
11
  remove_command(namespace)
12
12
  elsif cmd_options[:repeat]
13
13
  repeat_command(namespace)
14
- elsif cmd_options[:command]
14
+ elsif cmd_options[:command] || (!cmd_options[:prefer_ui] && cmd_options[:command_prefix])
15
15
  pod = select_pod(namespace, cmd_options)
16
- run_command(namespace, pod, cmd_options[:command], args)
16
+ run_command(namespace, pod, generate_command(cmd_options), args)
17
17
  else
18
18
  choose_command(namespace, cmd_options)
19
19
  end
20
20
  end
21
21
 
22
+ def generate_command(cmd_options)
23
+ if cmd_options[:skip_prefix]
24
+ command = cmd_options[:command]
25
+ else
26
+ command = "#{cmd_options[:command_prefix]} #{cmd_options[:command]}".strip
27
+ end
28
+ end
29
+
22
30
  def run_command(namespace, pod, cmd, args=[])
23
31
  system("rancher kubectl -n #{namespace} exec -it #{pod} -- #{cmd} #{args.join(' ')}".strip)
24
32
  end
@@ -26,7 +34,7 @@ module RanchHand
26
34
  def choose_command(namespace, options={})
27
35
  pod = select_pod(namespace, options)
28
36
  type, cmd = select_command(namespace, pod)
29
-
37
+
30
38
  run_command(namespace, pod, cmd)
31
39
  end
32
40
 
@@ -59,9 +67,9 @@ module RanchHand
59
67
 
60
68
  if options[:filter]
61
69
  if options[:filter].start_with?('-')
62
- pods = pods.reject{|p| p.match?(/#{options[:filter][1..-1]}/)}
70
+ pods = pods.reject{|p| p.match?(/#{options[:filter][1..-1]}/)}
63
71
  else
64
- pods = pods.select{|p| p.match?(/#{options[:filter]}/)}
72
+ pods = pods.select{|p| p.match?(/#{options[:filter]}/)}
65
73
  end
66
74
  end
67
75
  prompt.error("No pods matching filter: '#{options[:filter]}'") and exit if pods.empty?
@@ -183,10 +191,5 @@ module RanchHand
183
191
  def storage
184
192
  @storage ||= RanchHand::Storage.new
185
193
  end
186
-
187
- # def project_config
188
- # project_config_file = File.join(Dir.pwd, ".ranch-hand")
189
- # YAML.load_file(project_config_file) || {}
190
- # end
191
194
  end
192
- end
195
+ end
@@ -8,4 +8,4 @@ module RanchHand
8
8
  @@logger ||= ::Logger.new(STDOUT)
9
9
  end
10
10
  end
11
- end
11
+ end
@@ -21,4 +21,4 @@ module RanchHand
21
21
  end
22
22
  end
23
23
  end
24
- end
24
+ end
@@ -1,3 +1,3 @@
1
1
  module RanchHand
2
- VERSION = "0.7.1"
2
+ VERSION = "0.8.0"
3
3
  end
data/lib/ranch_hand.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  # stdlib
2
2
  require 'fileutils'
3
3
  require 'logger'
4
+ require 'pp'
4
5
  require 'yaml'
5
6
 
6
7
  # gems
@@ -15,4 +16,4 @@ require 'ranch_hand/constants.rb'
15
16
  require 'ranch_hand/kube_ctl.rb'
16
17
  require 'ranch_hand/logger.rb'
17
18
  require 'ranch_hand/storage.rb'
18
- require 'ranch_hand/version.rb'
19
+ require 'ranch_hand/version.rb'
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.7.1
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peregrinator
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-08-27 00:00:00.000000000 Z
11
+ date: 2022-03-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler