takelage 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +674 -0
  3. data/README.md +159 -0
  4. data/bin/tau +5 -0
  5. data/lib/Thorfile +1 -0
  6. data/lib/takelage/bit/cli.rb +18 -0
  7. data/lib/takelage/bit/clipboard/cli.rb +68 -0
  8. data/lib/takelage/bit/clipboard/module.rb +174 -0
  9. data/lib/takelage/bit/scope/cli.rb +58 -0
  10. data/lib/takelage/bit/scope/module.rb +81 -0
  11. data/lib/takelage/completion/cli.rb +21 -0
  12. data/lib/takelage/default.yml +30 -0
  13. data/lib/takelage/docker/cli.rb +16 -0
  14. data/lib/takelage/docker/container/check/cli.rb +40 -0
  15. data/lib/takelage/docker/container/check/module.rb +44 -0
  16. data/lib/takelage/docker/container/cli.rb +127 -0
  17. data/lib/takelage/docker/container/module.rb +168 -0
  18. data/lib/takelage/docker/image/cli.rb +41 -0
  19. data/lib/takelage/docker/image/module.rb +33 -0
  20. data/lib/takelage/docker/image/tag/check/cli.rb +47 -0
  21. data/lib/takelage/docker/image/tag/check/module.rb +56 -0
  22. data/lib/takelage/docker/image/tag/cli.rb +16 -0
  23. data/lib/takelage/docker/image/tag/latest/cli.rb +49 -0
  24. data/lib/takelage/docker/image/tag/latest/module.rb +31 -0
  25. data/lib/takelage/docker/image/tag/list/cli.rb +46 -0
  26. data/lib/takelage/docker/image/tag/list/module.rb +44 -0
  27. data/lib/takelage/docker/socket/cli.rb +61 -0
  28. data/lib/takelage/docker/socket/module.rb +137 -0
  29. data/lib/takelage/git/check/cli.rb +46 -0
  30. data/lib/takelage/git/check/module.rb +64 -0
  31. data/lib/takelage/git/cli.rb +10 -0
  32. data/lib/takelage/info/cli.rb +10 -0
  33. data/lib/takelage/info/project/cli.rb +47 -0
  34. data/lib/takelage/lib/config.rb +80 -0
  35. data/lib/takelage/lib/logging.rb +30 -0
  36. data/lib/takelage/lib/project.rb +57 -0
  37. data/lib/takelage/lib/subcmd.rb +13 -0
  38. data/lib/takelage/lib/system.rb +107 -0
  39. data/lib/takelage/self/cli.rb +40 -0
  40. data/lib/takelage/self/config/cli.rb +70 -0
  41. data/lib/takelage/self/module.rb +26 -0
  42. data/lib/takelage/version +1 -0
  43. data/lib/takelage.rb +198 -0
  44. metadata +185 -0
@@ -0,0 +1,107 @@
1
+ require 'pathname'
2
+ require 'open3'
3
+ require 'yaml'
4
+
5
+
6
+ # Interaction with the operating system
7
+ module SystemModule
8
+
9
+ # Run a command and return the result.
10
+ # @return [Boolean] success of command run
11
+ def run_and_check(command)
12
+ log.debug "Running command '#{command}'"
13
+ stdout_str, stderr_str, status = Open3.capture3 command
14
+ return stdout_str, stderr_str, status
15
+ end
16
+
17
+ # Print hash as yaml.
18
+ def hash_to_yaml(hash)
19
+ if hash == {}
20
+ return nil.to_yaml
21
+ end
22
+ return hash.to_yaml
23
+ end
24
+
25
+ # @return [Hash] content of yaml file
26
+ def read_yaml_file(file)
27
+ log.debug "Reading YAML file \"#{file}\""
28
+
29
+ # Check file existenc
30
+ unless File.exists? file
31
+ log.debug "File \"#{file}\" doesn't exist"
32
+ return nil
33
+ end
34
+
35
+ # Read file
36
+ begin
37
+ content_yaml = File.read file
38
+ rescue
39
+ log.debug "Unable to read file \"#{file}\""
40
+ return nil
41
+ end
42
+
43
+ # Parse YAML
44
+ begin
45
+ content = YAML.load content_yaml
46
+ rescue
47
+ log.debug "Invalid YAML file \"#{file}\""
48
+ log.debug "Try: yamllint #{file}"
49
+ return nil
50
+ end
51
+
52
+ content
53
+ end
54
+
55
+ # Remove directory tree.
56
+ def rm_fr(directory)
57
+ unless File.directory? directory
58
+ log.error "Cannot remove non-existing directory \"#{directory}\""
59
+ return
60
+ end
61
+ log.debug "Removing directory \"#{directory}\" recursively"
62
+ Pathname.new(directory).rmtree
63
+ end
64
+
65
+ # Run a command.
66
+ # @return [String] stdout of command
67
+ def run(command, realtime=false)
68
+ log.debug "Running command '#{command}'"
69
+ stdout_str = ''
70
+ stderr_str = ''
71
+ status = ''
72
+ exitstatus = -1
73
+ Open3.popen3 command do |stdin, stdout, stderr, thread|
74
+ stdout.each do |line|
75
+ say line if realtime
76
+ stdout_str += line
77
+ end
78
+ stderr_str = stderr
79
+ status = thread.value
80
+ exitstatus = thread.value.exitstatus
81
+ end
82
+ unless status.success?
83
+ log.error "Command \"#{command}\" failed!"
84
+ log.debug "status: #{status}"
85
+ log.debug "stdout: #{stdout_str}"
86
+ log.debug "stderr: #{stderr_str}"
87
+ exit exitstatus
88
+ end
89
+ stdout_str
90
+ end
91
+
92
+ # Use Kernel#exec to replace the ruby process with a command.
93
+ def run_and_exit(command)
94
+ log.debug "Running command '#{command}' and exiting afterwards"
95
+ exec command
96
+ end
97
+
98
+ # Use Kernel#fork and Kernel#exec to run a command as a background process.
99
+ def run_and_fork(command)
100
+ log.debug "Running command '#{command}' as a background process"
101
+ job = fork do
102
+ exec command
103
+ end
104
+ Process.detach(job)
105
+ end
106
+
107
+ end
@@ -0,0 +1,40 @@
1
+ module Takelage
2
+
3
+ # semantic version number
4
+ VERSION = (File.read "#{File.dirname(__FILE__)}/../version").chomp
5
+
6
+ # takelage self
7
+ class Self < SubCommandBase
8
+
9
+ include LoggingModule
10
+ include SelfModule
11
+
12
+ desc 'config [COMMAND]', 'Manage takelage configuration'
13
+ subcommand 'config', SelfConfig
14
+
15
+ #
16
+ # self list
17
+ #
18
+ desc 'list', 'List all commands'
19
+ long_desc <<-LONGDESC.gsub("\n", "\x5")
20
+ List all commands
21
+ LONGDESC
22
+ # List all commands.
23
+ def list
24
+ self_list
25
+ end
26
+
27
+ #
28
+ # self version
29
+ #
30
+ desc 'version', 'Print takelage semantic version number'
31
+ long_desc <<-LONGDESC.gsub("\n", "\x5")
32
+ Print takelage semantic version number
33
+ LONGDESC
34
+ #Print takelage semantic version number.
35
+ # @return [String] semantic version number
36
+ def version
37
+ say VERSION
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,70 @@
1
+ module Takelage
2
+
3
+ # takelage bit
4
+ class SelfConfig < SubCommandBase
5
+
6
+ include LoggingModule
7
+ include SystemModule
8
+ include ConfigModule
9
+
10
+ #
11
+ # config defaults
12
+ #
13
+ desc 'default', 'Print takelage default configuration'
14
+ long_desc <<-LONGDESC.gsub("\n", "\x5")
15
+ Print takelage default configuration
16
+ This command will print the takelage default configuration in YAML format.
17
+ You can use it as a starting point for your own configuration by
18
+ redirecting the output to your local takelage configuration file
19
+ (which is by default ~/.takelage.yml):
20
+
21
+ takelage self config defaults > ~/.takelage.yml
22
+ LONGDESC
23
+ # Print takelage default configuration.
24
+ def default
25
+ say hash_to_yaml(config.default)
26
+ end
27
+
28
+ #
29
+ # config home
30
+ #
31
+ desc 'home', 'Print takelage home config file configuration'
32
+ long_desc <<-LONGDESC.gsub("\n", "\x5")
33
+ Print takelage home config file configuration
34
+ This command will print the configuration read from the takelage
35
+ configuration file in your home directory ~/.takelage.yml).
36
+ LONGDESC
37
+ # Print takelage home config file configuration.
38
+ def home
39
+ say hash_to_yaml(config.home)
40
+ end
41
+
42
+ #
43
+ # config project
44
+ #
45
+ desc 'project', 'Print takelage project config file configuration'
46
+ long_desc <<-LONGDESC.gsub("\n", "\x5")
47
+ Print takelage project config file configuration
48
+ This command will print the configuration read from the takelage
49
+ configuration file .takelage.yml in your home directory).
50
+ LONGDESC
51
+ # Print takelage home config file configuration.
52
+ def project
53
+ say hash_to_yaml(config.project)
54
+ end
55
+
56
+ #
57
+ # config active
58
+ #
59
+ desc 'active', 'Print active takelage configuration'
60
+ long_desc <<-LONGDESC.gsub("\n", "\x5")
61
+ Print active takelage configuration
62
+ This command will print the configuration read from the takelage
63
+ configuration file (which is by default ~/.takelage.yml).
64
+ LONGDESC
65
+ # Print active takelage configuration.
66
+ def active
67
+ say hash_to_yaml(config.active)
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,26 @@
1
+ # takelage self
2
+ module SelfModule
3
+
4
+ # Backend method for config self.
5
+ def self_list
6
+
7
+ # use Thorfile which requires relative takelage.rb
8
+ thorfile_dir = "#{File.dirname(__FILE__)}/../"
9
+
10
+ # use thor list to get the list of commands and subcommands
11
+ cmd_thor_list = "bash -c '" +
12
+ "cd #{thorfile_dir} && " +
13
+ "thor list" +
14
+ "'"
15
+ thor_list = `#{cmd_thor_list}`
16
+
17
+ # manipulate thor list output
18
+ thor_list.gsub! "takelage\n", ''
19
+ thor_list.gsub! "------\n", ''
20
+ thor_list.gsub! 'thor ', 'tau '
21
+ thor_list.gsub! /(.*)takelage:c_l_i:(.*)#(.*)/, '\1\2 #\3'
22
+ thor_list.gsub! /.*COMMAND.*\n/, ''
23
+
24
+ say thor_list
25
+ end
26
+ end
@@ -0,0 +1 @@
1
+ 0.1.0
data/lib/takelage.rb ADDED
@@ -0,0 +1,198 @@
1
+ require 'etc'
2
+ require 'fileutils'
3
+ require 'fylla'
4
+ require 'json'
5
+ require 'logger'
6
+ require 'net/http'
7
+ require 'rake'
8
+ require 'socket'
9
+ require 'thor'
10
+ require 'timeout'
11
+ require 'yaml'
12
+
13
+ require_relative 'takelage/lib/logging'
14
+ require_relative 'takelage/lib/subcmd'
15
+ require_relative 'takelage/lib/system'
16
+ require_relative 'takelage/lib/config'
17
+ require_relative 'takelage/lib/project'
18
+
19
+ require_relative 'takelage/git/check/module'
20
+ require_relative 'takelage/git/check/cli'
21
+ require_relative 'takelage/git/cli'
22
+ require_relative 'takelage/bit/scope/module'
23
+ require_relative 'takelage/bit/scope/cli'
24
+ require_relative 'takelage/bit/clipboard/module'
25
+ require_relative 'takelage/bit/clipboard/cli'
26
+ require_relative 'takelage/bit/cli'
27
+ require_relative 'takelage/completion/cli'
28
+ require_relative 'takelage/docker/socket/module'
29
+ require_relative 'takelage/docker/socket/cli'
30
+ require_relative 'takelage/docker/image/tag/list/module'
31
+ require_relative 'takelage/docker/image/tag/list/cli'
32
+ require_relative 'takelage/docker/image/tag/latest/module'
33
+ require_relative 'takelage/docker/image/tag/latest/cli'
34
+ require_relative 'takelage/docker/image/tag/check/module'
35
+ require_relative 'takelage/docker/image/tag/check/cli'
36
+ require_relative 'takelage/docker/image/tag/cli'
37
+ require_relative 'takelage/docker/image/module'
38
+ require_relative 'takelage/docker/image/cli'
39
+ require_relative 'takelage/docker/container/check/module'
40
+ require_relative 'takelage/docker/container/check/cli'
41
+ require_relative 'takelage/docker/container/module'
42
+ require_relative 'takelage/docker/container/cli'
43
+ require_relative 'takelage/docker/cli'
44
+ require_relative 'takelage/info/project/cli'
45
+ require_relative 'takelage/info/cli'
46
+ require_relative 'takelage/self/config/cli'
47
+ require_relative 'takelage/self/module'
48
+ require_relative 'takelage/self/cli'
49
+
50
+
51
+ # Facilitate the takelage devops workflow.
52
+ module Takelage
53
+
54
+ # takelage
55
+ class CLI < Thor
56
+
57
+ include LoggingModule
58
+ include SystemModule
59
+ include ConfigModule
60
+ include ProjectModule
61
+
62
+ check_unknown_options!
63
+
64
+ # @return [String] bash completion code
65
+ attr_reader :bash_fylla
66
+
67
+ option :loglevel,
68
+ :aliases => 'l',
69
+ :default => 'INFO',
70
+ :desc => 'One of: FATAL, ERROR, WARN, INFO, DEBUG'
71
+ # Initialize takelage cli.
72
+ def initialize(args = [], local_options = {}, configuration = {})
73
+
74
+ # Initialize thor parent class
75
+ super args, local_options, configuration
76
+
77
+ # Initialize global singleton log
78
+ initialize_logging options[:loglevel].to_s.upcase
79
+
80
+ # Initialize global singleton config
81
+ initialize_config
82
+
83
+ # Initialize global singleton project
84
+ initialize_project
85
+
86
+ # fylla bash completion code
87
+ @bash_fylla = Fylla.bash_completion self
88
+ end
89
+
90
+ #
91
+ # Subcommands
92
+ #
93
+
94
+ desc 'bit [COMMAND] ', 'Manage bit'
95
+ subcommand 'bit', Bit
96
+
97
+ desc 'completion [COMMAND] ', 'Print shell completion code'
98
+ subcommand 'completion', Completion
99
+
100
+ desc 'docker [COMMAND] ', 'Manage docker containers'
101
+ subcommand 'docker', Docker
102
+
103
+ desc 'git [COMMAND] ', 'Manage git'
104
+ subcommand 'git', Git
105
+
106
+ desc 'info [COMMAND] ', 'Get information'
107
+ subcommand 'info', Info
108
+
109
+ desc 'self [COMMAND] ', 'Manage takelage tools'
110
+ subcommand 'self', Self
111
+
112
+ #
113
+ # Top-level commands
114
+ #
115
+
116
+ desc 'config', 'Alias for tau self config active'
117
+ # takelage config: {takelage::SelfConfig#active}
118
+ def config
119
+ Takelage::SelfConfig.new.active
120
+ end
121
+
122
+ desc 'copy [DIR] [SCOPE]', 'Alias for tau bit clipboard copy'
123
+ # takelage copy: {takelage::BitClipboard#copy}
124
+ def copy(dir_or_file, scope)
125
+ Takelage::BitClipboard.new.copy dir_or_file, scope
126
+ end
127
+
128
+ desc 'project', 'Alias for tau info project active'
129
+ # takelage project: {takelage::InfoProject#active}
130
+ def project
131
+ Takelage::InfoProject.new.active
132
+ end
133
+
134
+ desc 'login', 'Alias for tau docker container login'
135
+ # takelage login: {takelage::DockerContainer#login}
136
+ def login
137
+ Takelage::DockerContainer.new.login
138
+ end
139
+
140
+ desc 'list', 'Alias for tau self list'
141
+ # takelage version: {takelage::Self#list}
142
+ def list
143
+ Takelage::Self.new.list
144
+ end
145
+
146
+ desc 'nuke', 'Alias for tau docker container nuke'
147
+ # takelage nuke: {takelage::DockerContainer#nuke}
148
+ def nuke
149
+ Takelage::DockerContainer.new.nuke
150
+ end
151
+
152
+ desc 'paste [COMPONENT] [DIR]', 'Alias for tau bit clipboard paste'
153
+ # takelage paste: {takelage::BitClipboard#paste}
154
+ def paste(cid, dir)
155
+ Takelage::BitClipboard.new.paste cid, dir
156
+ end
157
+
158
+ desc 'pull', 'Alias for tau bit clipboard pull'
159
+ # takelage pull: {takelage::BitClipboard#pull}
160
+ def pull
161
+ Takelage::BitClipboard.new.pull
162
+ end
163
+
164
+ desc 'purge', 'Alias for tau docker container purge'
165
+ # takelage purge: {takelage::DockerContainer#purge}
166
+ def purge
167
+ Takelage::DockerContainer.new.purge
168
+ end
169
+
170
+ desc 'push', 'Alias for tau bit clipboard push'
171
+ # takelage push: {takelage::BitClipboard#push}
172
+ def push
173
+ Takelage::BitClipboard.new.push
174
+ end
175
+
176
+ desc 'update', 'Alias for tau docker image update'
177
+ # takelage update: {takelage::DockerImage#update}
178
+ def update
179
+ Takelage::DockerImage.new.update
180
+ end
181
+
182
+ desc 'version', 'Alias for tau self version'
183
+ # takelage version: {takelage::Self#version}
184
+ def version
185
+ Takelage::Self.new.version
186
+ end
187
+
188
+ #
189
+ # Administrative functions
190
+ #
191
+
192
+ # Behave as expected by correctly reporting failure in exit status.
193
+ # See https://github.com/erikhuda/thor/wiki/Making-An-Executable
194
+ def self.exit_on_failure?
195
+ true
196
+ end
197
+ end
198
+ end
metadata ADDED
@@ -0,0 +1,185 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: takelage
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Geospin
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-12-08 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: json
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.1'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: logger
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.4'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.4'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '12.3'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '12.3'
55
+ - !ruby/object:Gem::Dependency
56
+ name: thor
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: bundler
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.17'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.17'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rake
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '12.3'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '12.3'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rspec
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '3.9'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '3.9'
111
+ description: tau-cli is a thor command line script to tame the takelage devops workflow
112
+ email:
113
+ - takelage@geospin.de
114
+ executables:
115
+ - tau
116
+ extensions: []
117
+ extra_rdoc_files: []
118
+ files:
119
+ - LICENSE
120
+ - README.md
121
+ - bin/tau
122
+ - lib/Thorfile
123
+ - lib/takelage.rb
124
+ - lib/takelage/bit/cli.rb
125
+ - lib/takelage/bit/clipboard/cli.rb
126
+ - lib/takelage/bit/clipboard/module.rb
127
+ - lib/takelage/bit/scope/cli.rb
128
+ - lib/takelage/bit/scope/module.rb
129
+ - lib/takelage/completion/cli.rb
130
+ - lib/takelage/default.yml
131
+ - lib/takelage/docker/cli.rb
132
+ - lib/takelage/docker/container/check/cli.rb
133
+ - lib/takelage/docker/container/check/module.rb
134
+ - lib/takelage/docker/container/cli.rb
135
+ - lib/takelage/docker/container/module.rb
136
+ - lib/takelage/docker/image/cli.rb
137
+ - lib/takelage/docker/image/module.rb
138
+ - lib/takelage/docker/image/tag/check/cli.rb
139
+ - lib/takelage/docker/image/tag/check/module.rb
140
+ - lib/takelage/docker/image/tag/cli.rb
141
+ - lib/takelage/docker/image/tag/latest/cli.rb
142
+ - lib/takelage/docker/image/tag/latest/module.rb
143
+ - lib/takelage/docker/image/tag/list/cli.rb
144
+ - lib/takelage/docker/image/tag/list/module.rb
145
+ - lib/takelage/docker/socket/cli.rb
146
+ - lib/takelage/docker/socket/module.rb
147
+ - lib/takelage/git/check/cli.rb
148
+ - lib/takelage/git/check/module.rb
149
+ - lib/takelage/git/cli.rb
150
+ - lib/takelage/info/cli.rb
151
+ - lib/takelage/info/project/cli.rb
152
+ - lib/takelage/lib/config.rb
153
+ - lib/takelage/lib/logging.rb
154
+ - lib/takelage/lib/project.rb
155
+ - lib/takelage/lib/subcmd.rb
156
+ - lib/takelage/lib/system.rb
157
+ - lib/takelage/self/cli.rb
158
+ - lib/takelage/self/config/cli.rb
159
+ - lib/takelage/self/module.rb
160
+ - lib/takelage/version
161
+ homepage: https://geospin.de
162
+ licenses:
163
+ - GPL-3.0
164
+ metadata:
165
+ yard.run: yard
166
+ post_install_message:
167
+ rdoc_options: []
168
+ require_paths:
169
+ - lib
170
+ required_ruby_version: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - ">="
173
+ - !ruby/object:Gem::Version
174
+ version: '0'
175
+ required_rubygems_version: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - ">="
178
+ - !ruby/object:Gem::Version
179
+ version: '0'
180
+ requirements: []
181
+ rubygems_version: 3.0.8
182
+ signing_key:
183
+ specification_version: 4
184
+ summary: takelage devops workflow cli
185
+ test_files: []