ops_team 1.0.1 → 1.2.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.
Files changed (6) hide show
  1. checksums.yaml +4 -4
  2. data/bin/ops +25 -2
  3. data/lib/action.rb +13 -1
  4. data/lib/ops.rb +6 -7
  5. data/ops_team.gemspec +1 -1
  6. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bf2a309a88bc396994795bca23a308043e8e8ec6c16a5e7b85baf0b66e15ed83
4
- data.tar.gz: 526857c4d776fddf9d20d96c81cf4ab6905a364601d32fb5989467439f366aea
3
+ metadata.gz: 57af38c44173187c829e4f07a894dac672b86dd3033564591804b693afa87fc8
4
+ data.tar.gz: bb9c475b0959e8d81d491406d533307a2276252ae99a2d27bb8bd91d1b65d302
5
5
  SHA512:
6
- metadata.gz: 815571122a732fcc85046f386ae9918c961033dc1c6141ad8d32334b2beb09ee9775b83640dad88d100d67a463468667a9dd9bbc5875e2b8612dc64fcc0d53e0
7
- data.tar.gz: 6c4146afc51d45f1f80f91c57093750160589d0d6bf89cd6df2c2f79f6d58e30525edee2a122e3b0059d7bfd2a2f0f2a1b0e3f4ceefe4f1373ad0c1892fead77
6
+ metadata.gz: d0ce89fe185230286256475fc1ada7d0fdf9d4aec5d31e0a6b2b735ea7f38d1d31a02c2dcdb65d99918cf4a47b745eb9953f60b8803b0fb739b38aabf4818984
7
+ data.tar.gz: a44717efc73eac86671f942322c9ca51e83403236c7897b854a86a32876e5c2e8179b50fb1b3cdb1e47d7c12342d7e4c29c39b0f9ddc9674a9fb7325db26842b
data/bin/ops CHANGED
@@ -1,8 +1,31 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
- require_relative "../loader"
4
+ require 'optparse'
5
+
6
+
7
+ def usage
8
+ puts "ops [-f|--file <ops_yml>] action [<action args>"
9
+ puts " ops_yml: the config file to load instead of './ops.yml'"
10
+ puts " action_args: arguments to the action loaded from the config file; depends on the action"
11
+
12
+ exit(1)
13
+ end
5
14
 
15
+ options = {}
16
+ while ARGV[0]&.match(/^-/)
17
+ opt = ARGV.shift
18
+ case opt
19
+ when '-f', '--file'
20
+ usage unless ARGV.length >= 1
21
+
22
+ options[:file] = ARGV.shift
23
+ else
24
+ usage
25
+ end
26
+ end
27
+
28
+ require_relative "../loader"
6
29
  require 'ops'
7
30
 
8
- Ops.new(ARGV).run
31
+ Ops.new(ARGV, config_file: options[:file]).run
@@ -17,7 +17,11 @@ class Action
17
17
  raise NotAllowedInEnvError, "Action not allowed in #{Environment.environment} environment."
18
18
  end
19
19
 
20
- Kernel.exec(to_s)
20
+ if perform_shell_expansion?
21
+ Kernel.exec(to_s)
22
+ else
23
+ Kernel.exec(*to_a)
24
+ end
21
25
  end
22
26
 
23
27
  def to_s
@@ -60,6 +64,10 @@ class Action
60
64
 
61
65
  private
62
66
 
67
+ def to_a
68
+ command.split(" ").reject(&:nil?) | @args
69
+ end
70
+
63
71
  def not_in_envs
64
72
  @config["not_in_envs"] || []
65
73
  end
@@ -75,4 +83,8 @@ class Action
75
83
 
76
84
  true
77
85
  end
86
+
87
+ def perform_shell_expansion?
88
+ @config["shell_expansion"].nil? ? true : @config["shell_expansion"]
89
+ end
78
90
  end
data/lib/ops.rb CHANGED
@@ -14,8 +14,6 @@ require_rel "builtins"
14
14
 
15
15
  # executes commands based on local `ops.yml`
16
16
  class Ops
17
- CONFIG_FILE = "ops.yml"
18
-
19
17
  INVALID_SYNTAX_EXIT_CODE = 64
20
18
  UNKNOWN_ACTION_EXIT_CODE = 65
21
19
  ERROR_LOADING_APP_CONFIG_EXIT_CODE = 66
@@ -32,9 +30,10 @@ class Ops
32
30
  end
33
31
  end
34
32
 
35
- def initialize(argv)
33
+ def initialize(argv, config_file: nil)
36
34
  @action_name = argv[0]
37
35
  @args = argv[1..-1]
36
+ @config_file = config_file || "ops.yml"
38
37
 
39
38
  Options.set(config["options"] || {})
40
39
  end
@@ -106,21 +105,21 @@ class Ops
106
105
  if config_file_exists?
107
106
  parsed_config_contents
108
107
  else
109
- Output.warn("File '#{CONFIG_FILE}' does not exist.") unless @action_name == "init"
108
+ Output.warn("File '#{@config_file}' does not exist.") unless @action_name == "init"
110
109
  {}
111
110
  end
112
111
  end
113
112
  end
114
113
 
115
114
  def parsed_config_contents
116
- YAML.load_file(CONFIG_FILE)
115
+ YAML.load_file(@config_file)
117
116
  rescue StandardError => e
118
- Output.warn("Error parsing '#{CONFIG_FILE}': #{e}")
117
+ Output.warn("Error parsing '#{@config_file}': #{e}")
119
118
  {}
120
119
  end
121
120
 
122
121
  def config_file_exists?
123
- File.exist?(CONFIG_FILE)
122
+ File.exist?(@config_file)
124
123
  end
125
124
  end
126
125
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = 'ops_team'
5
- s.version = '1.0.1'
5
+ s.version = '1.2.1'
6
6
  s.authors = [
7
7
  'nickthecook@gmail.com'
8
8
  ]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ops_team
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - nickthecook@gmail.com