cl-magic 0.3.3 → 0.3.6

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: '0999ba01e614cf06ee6743675a486597876ee648b5c8e659f0afb468918703bd'
4
- data.tar.gz: e5ad4f67f7fe2f4ab75cdb31dbfb54dee39101482bf9fe482b67c3fc2fb3f14f
3
+ metadata.gz: 71c4c46c64a10366da292bd149d47d5568b78514fe8eaa0cb40a18ccad515459
4
+ data.tar.gz: 351ac7cb0c9e83b7404830b0f3856b67e93fd001a4cfc3cba9fa32180bf2f9da
5
5
  SHA512:
6
- metadata.gz: 8c0d00d9e476d43a2178edb581965879cac36fb0cc70037850613371ebe639f0e2badffcd63b86986246f0348ed13458be29522304f5f81d65e22c54c4c0a113
7
- data.tar.gz: 9a89994bc628eaf9fe5de592d989cc581bf0dfcbd645d5ab135d495a2c5cc47adcd30e8a32a0142a1367aaf765f55f202fb1545e29db313bd4439a29e2d54f5f
6
+ metadata.gz: 18abee5dcd99c9bdeb3ec3dcf4c800a8a3ff0294ff1216cb0233169f6b10869febb24df4b85b297404604aecd344560c633196ba8901be4927e6fdcded57a5b0
7
+ data.tar.gz: 233840c65bfff65eb338f485037aafb055c1730ee58f76263cdb3321ad41c795dec509db0aaf55540c51f2978180c9e0caf4f7f0d07f08a21b67795fe95136c2
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cl-magic (0.3.3)
4
+ cl-magic (0.3.6)
5
5
  optparse-subcommand
6
6
  pastel
7
7
  tty-command
@@ -34,7 +34,6 @@ GEM
34
34
  wisper (2.0.1)
35
35
 
36
36
  PLATFORMS
37
- arm64-darwin-21
38
37
  ruby
39
38
 
40
39
  DEPENDENCIES
@@ -44,4 +43,4 @@ DEPENDENCIES
44
43
  rake (~> 13.0)
45
44
 
46
45
  BUNDLED WITH
47
- 2.3.6
46
+ 2.1.4
data/README.md CHANGED
@@ -20,192 +20,4 @@ cd $MAGIC_DIR bundle install --path=vendor
20
20
 
21
21
  # symlink
22
22
  ln -s $MAGIC_DIR/bin/cl /usr/local/bin
23
- ```
24
-
25
- ## Usage
26
-
27
- TODO: Write usage instructions here
28
-
29
- ## Development
30
-
31
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
32
-
33
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
34
-
35
- # OLD OLD OLD OLD OLD OLD OLD OLD OLD OLD OLD OLD
36
-
37
- # Terminal
38
-
39
- * `sudo nano /etc/motd`
40
- * add some [ascii art](https://www.asciiart.eu/) to bring you joy
41
- * make your prompt not suck PROMPT='\w $ '
42
- * or [customize the prompt](https://ss64.com/bash/syntax-prompt.html) yourself
43
-
44
- ## IOS
45
-
46
- Install [iTerm2](https://iterm2.com/) and fix the coloring
47
-
48
- By adding the following to your `.zshrc`
49
-
50
- ```
51
- export CLICOLOR=1
52
- export TERM=xterm-256color
53
- ```
54
-
55
- Install [homebrew](https://brew.sh/)
56
-
57
- # Useful packages
58
-
59
- Install the basics: `jq git vim`
60
- * mac `the_silver_searcher`
61
- * linux `silversearcher-ag`
62
-
63
- ## IOS
64
-
65
- Database clients
66
-
67
- ```
68
- brew install libpq
69
- brew link --force libpq
70
- brew install mysql-client
71
- ```
72
-
73
- Github CLI
74
-
75
- ```
76
- brew install gh
77
- ```
78
-
79
- ## Linux
80
-
81
- Database clients
82
-
83
- ```
84
- sudo apt-get install default-mysql-client postgresql-client
85
- ```
86
-
87
- Github CLI
88
-
89
- * [install instructions](https://github.com/cli/cli/blob/trunk/docs/install_linux.md)
90
-
91
- # Editor
92
-
93
- [VSCode](https://code.visualstudio.com/)
94
-
95
- # Docker
96
-
97
- Install docker
98
-
99
- * [docker desktop](https://docs.docker.com/get-docker/)
100
- * [docker on linux](https://docs.docker.com/engine/install/debian/)
101
-
102
- Resources
103
-
104
- * go to your docker desktop -> preferences -> resources and set CPU=5 and Memory 10GB
105
- * give it a healthy amount of resources if you don't like waiting and want to avoid Error 137
106
- * Remember to "apply & restart" or restart with `sudo systemctl restart docker`
107
-
108
- # Git
109
- Often pre-installed, but you need to configure it by editing `~/.gitconfig`
110
-
111
- ```
112
- [user]
113
- email = you@domain.com
114
- name = First Last
115
- [core]
116
- excludesfile = ~/.gitignore
117
- [alias]
118
- map = log --pretty=oneline --abbrev-commit --graph --all
119
- ls = log --graph --pretty=oneline --abbrev-commit
120
- [pull]
121
- rebase = true
122
- [init]
123
- defaultBranch = main
124
- [log]
125
- abbrevcommit = yes
126
- [fetch]
127
- prune = true
128
- ```
129
-
130
- # SSH key
131
-
132
- * generate a key with `ssh-keygen`, if you don't already have one?
133
- * go with the default name `id_rsa` and give it a password
134
- * then cat `~/.ssh/id_rsa.pub` and copy the contents to github settings ssh keys
135
-
136
- # Cloud tools
137
-
138
- ## Install gcloud
139
-
140
- * confirm python works `python3 --version`; if not install it `brew install python3`.
141
- * then follow instructions: [Install the Google Cloud CLI](https://cloud.google.com/sdk/docs/install-sdk)
142
- * when you `gcloud init`, you'll need to know your project name and zone
143
-
144
- ## K8 tools
145
-
146
- Install [kubectl](https://kubernetes.io/docs/tasks/tools/)
147
-
148
- Install Krew
149
- * Kubectl [has plugins](https://kubernetes.io/docs/tasks/extend-kubectl/kubectl-plugins/) and
150
- * the [krew plugin manager](https://krew.sigs.k8s.io/) helps you install them.
151
- * Use the [quickstart to install krew](https://krew.sigs.k8s.io/docs/user-guide/setup/install/#bash).
152
-
153
- K8 Logs
154
-
155
- * [stern](https://github.com/wercker/stern) is a must have tool for reading logs
156
- * install with `kubectl krew install stern`
157
-
158
- ## HashiCorp Vault & Terraform
159
-
160
- Linux users follow instructions on [terraform.io]](https://www.terraform.io/cli/install/apt)
161
-
162
- IOS instructions
163
-
164
- ```
165
- brew tap hashicorp/tap
166
- brew install hashicorp/tap/vault
167
- brew install hashicorp/tap/terraform
168
- ```
169
-
170
- # Programming
171
-
172
- ## Node
173
-
174
- [nodenv](https://github.com/nodenv/nodenv) - manage different versions of node
175
- * NOTE: sometimes we install ancient versions with nodenv and that requires python2
176
- * you’ll have it by using the ENV variable (ex. `PYENV_VERSION=2.7.15 nodenv install some_ancient_version`)
177
-
178
- ## Ruby
179
-
180
- [rbenv](https://github.com/rbenv/rbenv) - manage different versions of ruby
181
-
182
- # Magic Tools
183
-
184
- Correct version of ruby
185
-
186
- ```
187
- rbenv install 2.7.5
188
- ```
189
-
190
- Clone the repo and install the tools
191
-
192
- ```
193
- bundle install --path=vendor
194
- ```
195
-
196
- Symlink so it's available everywhere
197
-
198
- ```
199
- sudo ln -s $(pwd)/bin/cl /usr/local/bin/cl
200
- ```
201
-
202
- ## DK command
203
-
204
- For the dk command you’ll want an alias
205
-
206
- ```
207
- echo alias dk=\"cl dk\" >> ~/.zshrc
208
- source ~/.zshrc
209
- ```
210
-
211
- You’ll want to ignore the generated .cl-dk.yaml that this command creates so `echo ".cl-dk.yml" >> ~/.gitignore`
23
+ ```
data/bin/install_gem ADDED
@@ -0,0 +1,81 @@
1
+ #!/bin/bash
2
+ set -euo pipefail
3
+
4
+ #
5
+ # Detect Ruby
6
+ #
7
+
8
+ has_ruby=$(ruby -v)
9
+ if [[ $has_ruby != *"2.7.5"* ]]; then
10
+ echo ""
11
+ echo "(missing) ruby 2.7.5"
12
+ echo "Please install ruby 2.7.5"
13
+ exit 1
14
+ else
15
+ echo ""
16
+ echo "✅ Ruby 2.7.5"
17
+ fi
18
+
19
+ #
20
+ # Detect Gem
21
+ #
22
+
23
+ has_gem=$(gem list | grep cl-magic || true)
24
+ if [[ $has_gem != *"cl-magic"* ]]; then
25
+ echo "(missing) cl-magic gem"
26
+ echo "⌛ installling cl-magic"
27
+ echo ""
28
+ gem install cl-magic
29
+ else
30
+ echo "✅ cl-magic gem"
31
+ echo ""
32
+ echo "⌛ updating cl-magic"
33
+ echo ""
34
+ gem update cl-magic || true
35
+ fi
36
+
37
+ # find magic tools
38
+ MAGIC_INSTALLED_AT="$(gem info cl-magic | grep Installed | cut -d':' -f2 | xargs)/gems"
39
+ MAGIC_DIR="$(ls -d1 $MAGIC_INSTALLED_AT/cl-magic-* | tail -1)"
40
+
41
+ #
42
+ # symlink
43
+ #
44
+
45
+ echo ""
46
+ FILE=/usr/local/bin/cl
47
+ if test -f "$FILE"; then
48
+ echo "⌛ removing old symlink"
49
+ rm $FILE
50
+ fi
51
+ echo "⌛ linking 'cl' into /usr/local/bin"
52
+ ln -s $MAGIC_DIR/bin/cl /usr/local/bin
53
+
54
+ #
55
+ # vendorized gems
56
+ #
57
+
58
+ echo "⌛ installing dependencies"
59
+ echo ""
60
+ cd $MAGIC_DIR && bundle install --path=vendor
61
+
62
+ #
63
+ # Complete
64
+ #
65
+
66
+ echo ""
67
+ echo "✅ tools installed"
68
+ echo ""
69
+ echo "IMPORTANT: follow up steps."
70
+ echo ""
71
+
72
+ echo "Step 1: add the 'dk' alias to your bash startup file"
73
+ echo ""
74
+ if [[ $SHELL == *"zsh"* ]]; then
75
+ bash_startup_file="~/.zshrc"
76
+ else
77
+ bash_startup_file="~/.bashrc"
78
+ fi
79
+ echo " echo \"alias dk='cl dk'\" >> $bash_startup_file"
80
+ echo " source $bash_startup_file"
81
+ echo ""
data/lib/cl/magic/cl CHANGED
@@ -21,6 +21,7 @@ def get_command_tree()
21
21
  cmd_group = command_tree.fetch('', []) << {
22
22
  cmd: fn_parts.first,
23
23
  filename: filename,
24
+ description: get_description(filename)
24
25
  }
25
26
  command_tree[''] = cmd_group
26
27
  else
@@ -28,6 +29,7 @@ def get_command_tree()
28
29
  cmd_group = command_tree.fetch(fn_parts.first, []) << {
29
30
  cmd: fn_parts[1..-1].join('-'),
30
31
  filename: filename,
32
+ description: get_description(filename)
31
33
  }
32
34
  command_tree[fn_parts.first] = cmd_group
33
35
  end
@@ -35,20 +37,42 @@ def get_command_tree()
35
37
  return command_tree
36
38
  end
37
39
 
40
+ def get_description(filename)
41
+ # Optionally, subcommands can put a description on the second line of the file
42
+ lines = File.readlines(filename)
43
+ description = if lines[1] && lines[1].strip.start_with?('#')
44
+ lines[1].strip.gsub(/^#\s*/, '')
45
+ else
46
+ nil
47
+ end
48
+ return description ? description : ""
49
+ end
50
+
38
51
  def print_help(banner, command_tree)
39
52
  puts banner
40
53
  command_tree.keys.sort.each do |group|
54
+ prefix = group.empty? ? "" : " "
41
55
  puts ""
42
56
  puts group unless group.empty?
43
57
  sorted_commands = command_tree[group].sort_by{|h| h[:cmd]}
44
- print_commands(sorted_commands)
58
+ print_commands(sorted_commands, prefix)
45
59
  end
46
60
  puts ""
47
61
  end
48
62
 
49
63
  def print_commands(commands, prefix=' ')
64
+ just_len = 20 - prefix.length
50
65
  commands.sort_by{|h| h[:cmd]}.each do |cmd_hash|
51
- puts "#{prefix}#{cmd_hash[:cmd]}"
66
+ desc_parts = cmd_hash[:description].split(';')
67
+ puts "#{prefix}#{cmd_hash[:cmd].ljust(just_len)} #{desc_parts.first}"
68
+ remaining_desc_parts = desc_parts[1..]
69
+ if remaining_desc_parts.any?
70
+ remaining_desc_parts.each do |desc_part|
71
+ puts "#{"".rjust(20)} #{desc_part}"
72
+ end
73
+ puts ""
74
+ end
75
+ puts "" if cmd_hash[:description].end_with? ';'
52
76
  end
53
77
  end
54
78
 
@@ -60,9 +84,12 @@ def execute_subcommand(subcommand, command_tree)
60
84
  commands = command_tree[''] # global command?
61
85
  else
62
86
  commands = command_tree.fetch(subcommand, [])
63
- subcommand = ARGV.shift if commands.any? # next part of command
64
- if subcommand.nil?
87
+ sub_subcommand = ARGV.shift if commands.any? # next part of command
88
+ if sub_subcommand.nil?
89
+ puts ""
90
+ puts "#{subcommand}"
65
91
  print_commands(commands)
92
+ puts ""
66
93
  exit(0)
67
94
  end
68
95
  end
data/lib/cl/magic/cl-auth CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # Need to authenticate? Check here first
2
3
  require 'optparse'
3
4
  require 'optparse/subcommand'
4
5
  require 'tty-command'
@@ -10,14 +11,14 @@ require 'cl/magic/common/gcloud.rb'
10
11
  require 'cl/magic/common/kubectl.rb'
11
12
 
12
13
  @logger = get_logger()
13
- @cl_cmd_name = "cl aws okta-auth"
14
+ @cl_cmd_name = "cl auth"
14
15
 
15
16
  #
16
17
  # Features
17
18
  #
18
19
 
19
20
  def auth_gcp_docker(options)
20
- write_history("""#{@cl_cmd_name}""")
21
+ write_history("""#{@cl_cmd_name} gcp-docker""")
21
22
  cmd = "gcloud auth configure-docker"
22
23
  @logger.puts
23
24
  @logger.wait cmd
@@ -25,13 +26,45 @@ def auth_gcp_docker(options)
25
26
  end
26
27
 
27
28
  def github_cli(options)
28
- write_history("""#{@cl_cmd_name}""")
29
+ write_history("""#{@cl_cmd_name} github-cli""")
29
30
  cmd = "gh auth login"
30
31
  @logger.puts
31
32
  @logger.wait cmd
32
33
  exec(cmd)
33
34
  end
34
35
 
36
+ def get_aws_profiles()
37
+ command = "cat ~/.aws/config | grep 'profile' | cut -d ' ' -f 2 | cut -d ']' -f 1"
38
+ return TTY::Command.new(:printer => :null).run(command).out.strip.chomp.split(' ').collect {|v|[v]}
39
+ end
40
+
41
+ def aws_okta(options)
42
+ is_tty = $stdout.isatty
43
+
44
+ # pick profile
45
+ profiles = get_aws_profiles()
46
+ profile = pick_single_result(profiles, "Pick aws profile", options[:aws_profile])
47
+ options[:aws_profile] = profile.first
48
+
49
+ # history
50
+ history_command = """#{@cl_cmd_name} aws-okta \\
51
+ --aws-profile #{options[:aws_profile]}
52
+ """
53
+ write_history(history_command)
54
+
55
+ # cmd = "aws-okta add" # old
56
+ # do work
57
+ if is_tty
58
+ puts
59
+ @logger.info "export into your environment with"
60
+ puts
61
+ puts "export $(#{history_command})"
62
+ else
63
+ cmd = "aws-okta exec #{options[:aws_profile]} -- env | grep AWS_"
64
+ exec(cmd)
65
+ end
66
+ end
67
+
35
68
  #
36
69
  # Options
37
70
  #
@@ -62,6 +95,14 @@ github_cli_banner = <<DOC
62
95
 
63
96
  DOC
64
97
 
98
+ aws_okta_banner = <<DOC
99
+
100
+ Authenticate with https://github.com/segmentio/aws-okta
101
+
102
+ Usage: #{@cl_cmd_name} aws-okta [options]
103
+
104
+ DOC
105
+
65
106
  global = OptionParser.new do |g|
66
107
  g.banner = global_banner
67
108
  add_help_and_verbose(g)
@@ -76,6 +117,15 @@ global = OptionParser.new do |g|
76
117
  options[:action] = :github_cli
77
118
  end
78
119
 
120
+ g.subcommand 'aws-okta' do |s|
121
+ s.banner = aws_okta_banner
122
+ options[:action] = :aws_okta
123
+
124
+ s.on("-p", "--aws-profile PROFILE", "aws profile name in ~/.aws/config") do |v|
125
+ options[:aws_profile] = v
126
+ end
127
+ end
128
+
79
129
  end
80
130
 
81
131
  #
data/lib/cl/magic/cl-dk CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # Turnkey docker development tool
2
3
  require 'yaml'
3
4
  require 'json'
4
5
  require 'tty-command'
@@ -16,7 +17,7 @@ require 'cl/magic/common/parse_and_pick.rb'
16
17
  #
17
18
 
18
19
  def get_base_compose_hash()
19
- cmd = "cd #{@working_dir} && docker compose config"
20
+ cmd = "cd #{@working_dir} && docker compose config 2> /dev/null"
20
21
  return YAML.load(`#{cmd}`)
21
22
  end
22
23
 
@@ -24,6 +25,18 @@ def get_save_parts_filepath()
24
25
  return File.join(@working_dir, ".cl-dk-parts.yml")
25
26
  end
26
27
 
28
+ def get_base_compose_parts_and_make_hashes()
29
+ compose_hash = get_base_compose_hash()
30
+ dk_parts_hash = {}
31
+ dk_make_hash = {}
32
+ if compose_hash
33
+ compose_hash = merge_world_files(compose_hash, show_help=ARGV.include?("--help"))
34
+ dk_parts_hash = compose_hash['x-dk-parts'] ? compose_hash.delete('x-dk-parts') : {}
35
+ dk_make_hash = compose_hash['x-dk-make'] ? compose_hash.delete('x-dk-make') : {}
36
+ end
37
+ return compose_hash, dk_parts_hash, dk_make_hash
38
+ end
39
+
27
40
  # world
28
41
 
29
42
  def get_repo_basename()
@@ -152,11 +165,21 @@ def print_set_world_help()
152
165
  end
153
166
 
154
167
  def print_set_parts_help()
168
+ compose_hash, dk_parts_hash, dk_make_hash = get_base_compose_parts_and_make_hashes()
169
+
170
+ # print help
155
171
  puts ""
156
172
  puts "Usage: dk [DK_PARTS] set-parts"
157
173
  puts ""
158
174
  puts "Set parts for a project and apply to every 'dk' command"
159
175
  puts ""
176
+ if dk_parts_hash.keys.any?
177
+ puts "Parts:"
178
+ dk_parts_hash.keys.each do |key|
179
+ print_dk_help_line(key, dk_parts_hash[key].fetch('help'))
180
+ end
181
+ puts ""
182
+ end
160
183
  end
161
184
 
162
185
  #
@@ -468,19 +491,10 @@ when "set-context"
468
491
  when "set-parts"
469
492
  run_dk_set_parts()
470
493
  else
471
-
472
- # get compose settings
473
- compose_hash = get_base_compose_hash()
494
+ compose_hash, dk_parts_hash, dk_make_hash = get_base_compose_parts_and_make_hashes()
474
495
  if compose_hash
475
496
 
476
- # world
477
- compose_hash = merge_world_files(compose_hash, show_help=ARGV.include?("--help"))
478
-
479
- # x-dk fragments
480
- dk_parts_hash = compose_hash['x-dk-parts'] ? compose_hash.delete('x-dk-parts') : {}
481
- dk_make_hash = compose_hash['x-dk-make'] ? compose_hash.delete('x-dk-make') : {}
482
-
483
- # parts
497
+ # parts & args
484
498
  saved_part_keys = get_saved_parts(dk_parts_hash)
485
499
  compose_args, selected_part_keys = merge_parts_save_and_prep_args(compose_hash, dk_parts_hash, dk_make_hash, saved_part_keys)
486
500
 
@@ -492,5 +506,8 @@ else
492
506
  else
493
507
  run_dk(compose_args)
494
508
  end
509
+ else
510
+ @logger.error "no docker configuration found"
511
+ exit 1
495
512
  end
496
513
  end
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # Human readable envkeys
2
3
  require 'optparse'
3
4
  require 'optparse/subcommand'
4
5
  require 'tty-command'
@@ -17,16 +18,25 @@ require 'cl/magic/common/kubectl.rb'
17
18
  #
18
19
 
19
20
  def do_work(options)
20
- envkey_str = `cd #{@working_dir} && envkey-source`
21
+ cmd = "envkey-source"
22
+ @logger.wait cmd
23
+ envkey_str = `cd #{@working_dir} && #{cmd}`
24
+
25
+ @logger.wait "making it readable"
21
26
  envkey_array = envkey_str.split(' ')
22
27
  result = if options[:filter]
23
28
  envkey_array.select {|o|
24
29
  o.gsub("'","").start_with? options[:filter]
25
30
  }
26
31
  else
32
+ @logger.wait "consider using --filter next time"
27
33
  envkey_array
28
34
  end
29
- puts result
35
+
36
+ @logger.puts ""
37
+ result.each do |r|
38
+ @logger.puts r
39
+ end
30
40
  end
31
41
 
32
42
  #
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # Connect to google cloud sql instance
2
3
  require 'optparse'
3
4
  require 'optparse/subcommand'
4
5
  require 'tty-command'
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # Work with gcloud docker image tags
2
3
  require 'optparse'
3
4
  require 'optparse/subcommand'
4
5
  require 'tty-command'
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # Find a commit and open in a browser
2
3
  require 'optparse'
3
4
  require 'optparse/subcommand'
4
5
  require 'tty-command'
@@ -18,7 +19,7 @@ require 'cl/magic/common/kubectl.rb'
18
19
 
19
20
  def do_work(options)
20
21
  cmd = "glab api /projects/:id/repository/commits/#{options[:commit]} | jq .web_url | xargs open"
21
- @logger.info cmd
22
+ @logger.wait cmd
22
23
  exec("cd #{@working_dir} && #{cmd}")
23
24
  end
24
25
 
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # History of 'cl' commands you run
2
3
  require 'optparse'
3
4
  require 'optparse/subcommand'
4
5
  require 'tty-command'
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # Copy a file to a container in K8
2
3
  require 'optparse'
3
4
  require 'optparse/subcommand'
4
5
  require 'tty-command'
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # Find deployment in K8 and describe it
2
3
  require 'optparse'
3
4
  require 'optparse/subcommand'
4
5
  require 'tty-command'
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # Find/save K8 cluster & namespace;then '--ktx' other kube commands
2
3
  require 'optparse'
3
4
  require 'optparse/subcommand'
4
5
  require 'tty-command'
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # Find pods in k8 and follow the logs
2
3
  require 'optparse'
3
4
  require 'optparse/subcommand'
4
5
  require 'tty-command'
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # Find K8 deployment and reboot pods
2
3
  require 'optparse'
3
4
  require 'optparse/subcommand'
4
5
  require 'tty-command'
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # Search resources in k8 and list them;then select one to describe it
2
3
  require 'optparse'
3
4
  require 'optparse/subcommand'
4
5
  require 'tty-command'
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # Same as search, but across all clusters
2
3
  require 'optparse'
3
4
  require 'optparse/subcommand'
4
5
  require 'tty-command'
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # Find container in k8 and ssh into it
2
3
  require 'optparse'
3
4
  require 'optparse/subcommand'
4
5
  require 'tty-command'
data/lib/cl/magic/cl-poll CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # Run any command every second
2
3
  require 'optparse'
3
4
  require 'optparse/subcommand'
4
5
  require 'tty-command'
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # Where cl commands are made
2
3
  require 'optparse'
3
4
  require 'optparse/subcommand'
4
5
  require 'tty-command'
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # Explore HashiCorp vault
2
3
  require 'optparse'
3
4
  require 'optparse/subcommand'
4
5
  require 'tty-command'
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Cl
4
4
  module Magic
5
- VERSION = "0.3.3"
5
+ VERSION = "0.3.6"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cl-magic
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.3.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Don Najd
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-03-15 00:00:00.000000000 Z
11
+ date: 2023-03-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -120,13 +120,12 @@ files:
120
120
  - README.md
121
121
  - bin/cl
122
122
  - bin/console
123
+ - bin/install_gem
123
124
  - bin/setup
124
125
  - cl-magic.gemspec
125
126
  - lib/cl/magic.rb
126
127
  - lib/cl/magic/cl
127
128
  - lib/cl/magic/cl-auth
128
- - lib/cl/magic/cl-aws-okta-auth
129
- - lib/cl/magic/cl-aws-okta-env
130
129
  - lib/cl/magic/cl-dk
131
130
  - lib/cl/magic/cl-envkey
132
131
  - lib/cl/magic/cl-gc-sql
@@ -1,52 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require 'optparse'
3
- require 'optparse/subcommand'
4
- require 'tty-command'
5
- require 'tty-prompt'
6
-
7
- require 'cl/magic/common/common_options.rb'
8
- require 'cl/magic/common/logging.rb'
9
- require 'cl/magic/common/gcloud.rb'
10
- require 'cl/magic/common/kubectl.rb'
11
-
12
- @logger = get_logger()
13
- @cl_cmd_name = File.basename(__FILE__).split('-').join(' ')
14
-
15
- #
16
- # Features
17
- #
18
-
19
- def aws_okta(options)
20
- write_history("""#{@cl_cmd_name}""")
21
- cmd = "aws-okta add"
22
- @logger.puts
23
- @logger.wait cmd
24
- exec(cmd)
25
- end
26
-
27
- #
28
- # Options
29
- #
30
-
31
-
32
- options = {}
33
- global_banner = <<DOC
34
-
35
- Authenticate with https://github.com/segmentio/aws-okta
36
-
37
- Usage: #{@cl_cmd_name} aws-okta auth [options]
38
-
39
- DOC
40
-
41
- global = OptionParser.new do |g|
42
- g.banner = global_banner
43
- add_help_and_verbose(g)
44
- end
45
-
46
- #
47
- # Run
48
- #
49
-
50
- global.parse(ARGV)
51
-
52
- aws_okta(options)
@@ -1,79 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require 'optparse'
3
- require 'optparse/subcommand'
4
- require 'tty-command'
5
- require 'tty-prompt'
6
-
7
- require 'cl/magic/common/common_options.rb'
8
- require 'cl/magic/common/logging.rb'
9
- require 'cl/magic/common/gcloud.rb'
10
- require 'cl/magic/common/kubectl.rb'
11
-
12
- @logger = get_logger()
13
- @cl_cmd_name = "cl aws okta-env"
14
-
15
- #
16
- # Features
17
- #
18
-
19
- def get_aws_profiles()
20
- command = "cat ~/.aws/config | grep 'profile' | cut -d ' ' -f 2 | cut -d ']' -f 1"
21
- return TTY::Command.new(:printer => :null).run(command).out.strip.chomp.split(' ').collect {|v|[v]}
22
- end
23
-
24
- def do_work(options)
25
- is_tty = $stdout.isatty
26
-
27
- # pick profile
28
- profiles = get_aws_profiles()
29
- profile = pick_single_result(profiles, "Pick aws profile", options[:aws_profile])
30
- options[:aws_profile] = profile.first
31
-
32
- # history
33
- history_command = """#{@cl_cmd_name} \\
34
- --aws-profile #{options[:aws_profile]}
35
- """
36
- write_history(history_command)
37
-
38
- # do work
39
- if is_tty
40
- puts
41
- @logger.info "export into your environment with"
42
- puts
43
- puts "export $(#{history_command})"
44
- else
45
- cmd = "aws-okta exec #{options[:aws_profile]} -- env | grep AWS_"
46
- exec(cmd)
47
- end
48
- end
49
-
50
- #
51
- # Options
52
- #
53
-
54
-
55
- options = {}
56
- global_banner = <<DOC
57
-
58
- Fetch environment variables using https://github.com/segmentio/aws-okta
59
-
60
- Usage: #{@cl_cmd_name} aws-okta env [options]
61
-
62
- DOC
63
-
64
- global = OptionParser.new do |g|
65
- g.banner = global_banner
66
- add_help_and_verbose(g)
67
-
68
- g.on("-p", "--aws-profile PROFILE", "aws profile name in ~/.aws/config") do |v|
69
- options[:aws_profile] = v
70
- end
71
- end
72
-
73
- #
74
- # Run
75
- #
76
-
77
- global.parse(ARGV)
78
-
79
- do_work(options)