mtncd 0.0.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 ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ NTJlNzcwODU3MjhkMGRkNDlhNDYwOTgwZTBjZTM3MGRkZTA0N2I3Mg==
5
+ data.tar.gz: !binary |-
6
+ MTlmZjJhOTE1M2FhOTM2Yzg4Yjk2ZTU0ODc4NmVlYTZmMjVjNDA1NQ==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ YzlkZDgwOGE4ZjRhZGExMzQ4MjkzNWVmMmNiYzJjYmEzOWU5NTQ4ZTBiNjRi
10
+ ZTgxNWEzMTMzODQyMTg5NmEzYjkzOGZiOGNiYmYwZmVhZGE5Zjc3NTZhN2Yy
11
+ YWY1NzNiNGJhY2E0NTQwY2QyYzg2ZDVjOGY4NmFiZmM0MGYyM2Y=
12
+ data.tar.gz: !binary |-
13
+ OTY5YjYwMGIxN2E3ODVmZDMwYmE3Y2FhYWI3MzUyZDI5MWMyYTY0YTI5Y2Yw
14
+ YTNhNmUxN2YyOWMwZGQ0YTk5OWU5ZTU5YjEzMDM2YjdiY2ZmNGRlMWMxZTMy
15
+ NDlhYThjZWQzNDc1YTcxZDc0NjhiNGZiMWZmYTE3MDFmMGE3Yjc=
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source 'https://rubygems.org'
2
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,77 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ mtncd (0.0.1)
5
+ awesome_print
6
+ gli (= 2.12.2)
7
+ msgpack
8
+ redis
9
+ resque
10
+ serfx
11
+
12
+ GEM
13
+ remote: https://rubygems.org/
14
+ specs:
15
+ aruba (0.6.1)
16
+ childprocess (>= 0.3.6)
17
+ cucumber (>= 1.1.1)
18
+ rspec-expectations (>= 2.7.0)
19
+ awesome_print (1.2.0)
20
+ builder (3.2.2)
21
+ childprocess (0.5.5)
22
+ ffi (~> 1.0, >= 1.0.11)
23
+ cucumber (1.3.17)
24
+ builder (>= 2.1.2)
25
+ diff-lcs (>= 1.1.3)
26
+ gherkin (~> 2.12)
27
+ multi_json (>= 1.7.5, < 2.0)
28
+ multi_test (>= 0.1.1)
29
+ diff-lcs (1.2.5)
30
+ ffi (1.9.6)
31
+ gherkin (2.12.2)
32
+ multi_json (~> 1.3)
33
+ gli (2.12.2)
34
+ json (1.8.1)
35
+ mixlib-log (1.6.0)
36
+ mono_logger (1.1.0)
37
+ msgpack (0.5.8)
38
+ multi_json (1.10.1)
39
+ multi_test (0.1.1)
40
+ rack (1.5.2)
41
+ rack-protection (1.5.3)
42
+ rack
43
+ rake (10.3.2)
44
+ rdoc (4.1.2)
45
+ json (~> 1.4)
46
+ redis (3.1.0)
47
+ redis-namespace (1.5.1)
48
+ redis (~> 3.0, >= 3.0.4)
49
+ resque (1.25.2)
50
+ mono_logger (~> 1.0)
51
+ multi_json (~> 1.0)
52
+ redis-namespace (~> 1.3)
53
+ sinatra (>= 0.9.2)
54
+ vegas (~> 0.1.2)
55
+ rspec-expectations (3.1.2)
56
+ diff-lcs (>= 1.2.0, < 2.0)
57
+ rspec-support (~> 3.1.0)
58
+ rspec-support (3.1.2)
59
+ serfx (0.0.7)
60
+ mixlib-log
61
+ msgpack
62
+ sinatra (1.4.5)
63
+ rack (~> 1.4)
64
+ rack-protection (~> 1.4)
65
+ tilt (~> 1.3, >= 1.3.4)
66
+ tilt (1.4.1)
67
+ vegas (0.1.11)
68
+ rack (>= 1.0.0)
69
+
70
+ PLATFORMS
71
+ ruby
72
+
73
+ DEPENDENCIES
74
+ aruba
75
+ mtncd!
76
+ rake
77
+ rdoc
data/README.md ADDED
@@ -0,0 +1,27 @@
1
+ # Example yaml config file (.mtncdconf)
2
+ ---
3
+ node: test
4
+ role: central
5
+ default_exclude: mtn\-aws2
6
+ deploy:
7
+ global:
8
+ stop: stop_deploy
9
+ start: deploy
10
+ local:
11
+ stop: stop_deploy
12
+ start: deploy
13
+ system:
14
+ resque:
15
+ workers: 0
16
+ redis:
17
+ ip: 127.0.0.1
18
+ port: 6379
19
+ serf:
20
+ global:
21
+ ip: < some ip >
22
+ port: < some port >
23
+ auth: super secret token
24
+ local:
25
+ ip: < some ip >
26
+ port: < some port >
27
+ auth: super secret token
data/README.rdoc ADDED
@@ -0,0 +1,6 @@
1
+ = mtncd
2
+
3
+ Describe your project here
4
+
5
+ :include:mtncd.rdoc
6
+
data/Rakefile ADDED
@@ -0,0 +1,45 @@
1
+ require 'rake/clean'
2
+ require 'rubygems'
3
+ require 'rubygems/package_task'
4
+ require 'rdoc/task'
5
+ require 'cucumber'
6
+ require 'cucumber/rake/task'
7
+ require "bundler/gem_tasks"
8
+ Rake::RDocTask.new do |rd|
9
+ rd.main = "README.rdoc"
10
+ rd.rdoc_files.include("README.rdoc","lib/**/*.rb","bin/**/*")
11
+ rd.title = 'Your application title'
12
+ end
13
+
14
+ spec = eval(File.read('mtncd.gemspec'))
15
+
16
+ Gem::PackageTask.new(spec) do |pkg|
17
+ end
18
+ CUKE_RESULTS = 'results.html'
19
+ CLEAN << CUKE_RESULTS
20
+ desc 'Run features'
21
+ Cucumber::Rake::Task.new(:features) do |t|
22
+ opts = "features --format html -o #{CUKE_RESULTS} --format progress -x"
23
+ opts += " --tags #{ENV['TAGS']}" if ENV['TAGS']
24
+ t.cucumber_opts = opts
25
+ t.fork = false
26
+ end
27
+
28
+ desc 'Run features tagged as work-in-progress (@wip)'
29
+ Cucumber::Rake::Task.new('features:wip') do |t|
30
+ tag_opts = ' --tags ~@pending'
31
+ tag_opts = ' --tags @wip'
32
+ t.cucumber_opts = "features --format html -o #{CUKE_RESULTS} --format pretty -x -s#{tag_opts}"
33
+ t.fork = false
34
+ end
35
+
36
+ task :cucumber => :features
37
+ task 'cucumber:wip' => 'features:wip'
38
+ task :wip => 'features:wip'
39
+ require 'rake/testtask'
40
+ Rake::TestTask.new do |t|
41
+ t.libs << "test"
42
+ t.test_files = FileList['test/*_test.rb']
43
+ end
44
+
45
+ task :default => [:test,:features]
data/bin/mtncd ADDED
@@ -0,0 +1,300 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding
3
+ require 'gli'
4
+ begin # XXX: Remove this begin/rescue before distributing your app
5
+ require 'mtncd'
6
+ require 'yaml'
7
+ require 'securerandom'
8
+ require 'serfx'
9
+ require 'resque'
10
+ require 'msgpack'
11
+ require 'awesome_print'
12
+ require 'redis'
13
+ require 'open3'
14
+
15
+ rescue LoadError
16
+ STDERR.puts "In development, you need to use `bundle exec bin/mtncd` to run your app"
17
+ STDERR.puts "At install-time, RubyGems will make sure lib, etc. are in the load path"
18
+ STDERR.puts "Feel free to remove this message from bin/mtncd now"
19
+ exit 64
20
+ end
21
+
22
+ include GLI::App
23
+
24
+ program_desc 'Helper tools for controlling MTN CICD pipeline'
25
+
26
+ version Mtncd::VERSION
27
+
28
+ subcommand_option_handling :normal
29
+ arguments :strict
30
+
31
+ desc 'start or stop a deployment'
32
+ command :deploy do |deploy|
33
+
34
+ deploy.desc "starts a deployment"
35
+ deploy.command :start do |start|
36
+
37
+ start.desc 'deploy starting with environment'
38
+ start.default_value 'integration'
39
+ start.flag :env, :must_match => {
40
+ 'integration' => :integ,
41
+ 'staging' => :stage,
42
+ 'prod' => :prod
43
+ }
44
+
45
+ start.desc 'use deployment id'
46
+ start.default_value SecureRandom.uuid
47
+ start.flag :id
48
+
49
+ start.desc 'local or global cluster command'
50
+ start.default_value 'global'
51
+ start.flag :cluster, :must_match => {
52
+ 'global' => :global,
53
+ 'local' => :local
54
+ }
55
+
56
+ start.desc 'regex matching shipcodes to exclude from a deploy (overrides config file)'
57
+ start.flag :exclude
58
+
59
+ start.desc 'comma-separated list of ship codes'
60
+ start.flag :ships
61
+
62
+ start.desc 'single deployment (environment or ship)'
63
+ start.default_value false
64
+ start.switch :single
65
+
66
+ start.action do |global_options,options,args|
67
+ if $config['role'] == 'sled' && options[:cluster] == :global
68
+ raise "global commands are only available on central or infra nodes"
69
+ end
70
+
71
+ if $config['role'] == 'central' && options[:cluster] == :local
72
+ raise "local commands are only available on infra or sled nodes"
73
+ end
74
+
75
+ event_options_hash = {
76
+ 'id' => "#{options[:id]}",
77
+ 'single' => options[:single],
78
+ }
79
+ event_options_hash['exclusion'] = options[:exclude].nil? ? $config['default_exclude'] : options[:exclude]
80
+ event_options_hash['env'] = options[:env] unless options[:env].nil?
81
+ event_options_hash['shipcodes'] = options[:ships].split(",") unless options[:ships].nil?
82
+
83
+ serf_options_hash = {
84
+ 'ip' => $config['system']['serf'][options[:cluster]]['ip'],
85
+ 'port' => $config['system']['serf'][options[:cluster]]['port'],
86
+ 'auth' => $config['system']['serf'][options[:cluster]]['auth'],
87
+ 'event' => $config['deploy'][options[:cluster]]['start']
88
+ }
89
+
90
+ begin
91
+ Serfx.connect(host: serf_options_hash['ip'], port: serf_options_hash['port'], authkey: serf_options_hash['auth']) do |conn|
92
+ resp = conn.event(serf_options_hash['event'], event_options_hash.to_msgpack, false)
93
+ puts "deploy start success: #{resp.body}"
94
+ end
95
+ rescue Serfx::RPCError => e
96
+ raise "Error running 'deploy start' : #{e.message}"
97
+ end
98
+ end
99
+ end
100
+
101
+ deploy.desc "stops a deployment"
102
+ deploy.command :stop do |stop|
103
+ stop.desc 'use deployment id'
104
+ stop.flag :id, :required => true
105
+
106
+ stop.desc 'local or global cluster command'
107
+ stop.default_value 'global'
108
+ stop.flag :cluster, :must_match => {
109
+ "global" => :global,
110
+ "local" => :local
111
+ }
112
+
113
+ stop.action do |global_options,options,args|
114
+ if $config['role'] == 'sled' && options[:cluster] == :global
115
+ raise "global commands are only available on central or infra nodes"
116
+ end
117
+
118
+ if $config['role'] == 'central' && options[:cluster] == :local
119
+ raise "local commands are only available on infra or sled nodes"
120
+ end
121
+
122
+ event_options_hash = {
123
+ 'id' => "#{options[:id]}"
124
+ }
125
+
126
+ serf_options_hash = {
127
+ 'ip' => $config['system']['serf'][options[:cluster]]['ip'],
128
+ 'port' => $config['system']['serf'][options[:cluster]]['port'],
129
+ 'auth' => $config['system']['serf'][options[:cluster]]['auth'],
130
+ 'event' => $config['deploy'][options[:cluster]]['stop']
131
+ }
132
+
133
+ begin
134
+ Serfx.connect(host: serf_options_hash['ip'], port: serf_options_hash['port'], authkey: serf_options_hash['auth']) do |conn|
135
+ resp = conn.event(serf_options_hash['event'], event_options_hash.to_msgpack, false)
136
+ puts "deploy stop success: #{resp.body}"
137
+ end
138
+ rescue Serfx::RPCError => e
139
+ raise "Error running 'deploy stop' : #{e.message}"
140
+ end
141
+ end
142
+ end
143
+
144
+ deploy.desc "checks the status of a deployment"
145
+ deploy.command :status do |status|
146
+ status.action do |global_options,options,args|
147
+ puts "not yet implemented"
148
+ end
149
+ end
150
+
151
+ end
152
+
153
+ desc 'cluster status'
154
+ command :status do |status|
155
+ status.desc 'local or global cluster'
156
+ status.default_value 'global'
157
+ status.flag :cluster, :must_match => {
158
+ 'global' => :global,
159
+ 'local' => :local
160
+ }
161
+
162
+ status.action do |global_options,options,args|
163
+ if $config['role'] == 'sled' && options[:cluster] == :global
164
+ raise "global status is only available on central or infra nodes"
165
+ end
166
+
167
+ if $config['role'] == 'central' && options[:cluster] == :local
168
+ raise "local status is only available on infra or sled nodes"
169
+ end
170
+
171
+ serf_options_hash = {
172
+ 'ip' => $config['system']['serf'][options[:cluster]]['ip'],
173
+ 'port' => $config['system']['serf'][options[:cluster]]['port'],
174
+ 'auth' => $config['system']['serf'][options[:cluster]]['auth']
175
+ }
176
+
177
+ command_string = serf_options_hash['auth'].nil? ? "serf members -rpc-addr=#{serf_options_hash['ip']}:#{serf_options_hash['port']}" : "serf members -rpc-addr=#{serf_options_hash['ip']}:#{serf_options_hash['port']} -rpc-auth=#{serf_options_hash['auth']}"
178
+
179
+ stdin, stdout, stderr, wait_thr = Open3.popen3(command_string)
180
+ if wait_thr.value == 0
181
+ puts stdout.read
182
+ else
183
+ puts "local failed: #{stdout.read}"
184
+ end
185
+ end
186
+ end
187
+
188
+
189
+ desc 'Status of pipeline components on this particular machine'
190
+ command :system do |system|
191
+ system.action do |global_options,options,args|
192
+ success = true
193
+ # check redis
194
+ result = "OK"
195
+ begin
196
+ redis = Redis.new(:host => $config['system']['redis']['ip'], :port => $config['system']['redis']['port'])
197
+ rescue
198
+ result = "\033[31mFAIL\033[0m"
199
+ success = false
200
+ end
201
+ puts "Redis - Connected to #{$config['system']['redis']['ip']}:#{$config['system']['redis']['port']} - [#{result}]"
202
+
203
+ # check resque
204
+ Resque.redis = "#{$config['system']['redis']['ip']}:#{$config['system']['redis']['port']}"
205
+ result = (Resque.workers.count == $config['system']['resque']['workers']) ? "OK" : "\033[31mFAIL\033[0m"
206
+ success = Resque.workers.count == $config['system']['resque']['workers'] unless success == false
207
+ puts "Resque - Should have #{$config['system']['resque']['workers']} workers, running #{Resque.workers.count} workers - [#{result}]"
208
+
209
+ # check serf
210
+ if $config['role'] != 'central'
211
+ begin
212
+ Serfx.connect(host: $config['system']['serf']['local']['ip'], port: $config['system']['serf']['local']['port'], authkey:$config['system']['serf']['local']['auth']) do |conn|
213
+ result = (conn.members.body['Members'].length > 1) ? "OK" : "\033[31mFAIL\033[0m"
214
+ end
215
+ rescue Serfx::RPCError => e
216
+ result = "\033[31mFAIL\033[0m"
217
+ success = false
218
+ end
219
+
220
+ puts "Serf Local Cluster - connected and has more than one member - [#{result}]"
221
+ end
222
+
223
+ if $config['role'] != 'sled'
224
+ begin
225
+ Serfx.connect(host: $config['system']['serf']['global']['ip'], port: $config['system']['serf']['global']['port'], authkey:$config['system']['serf']['global']['auth']) do |conn|
226
+ result = (conn.members.body['Members'].length > 1) ? "OK" : "\033[31mFAIL\033[0m"
227
+ end
228
+ rescue Serfx::RPCError => e
229
+ result = "\033[31mFAIL\033[0m"
230
+ success = false
231
+ end
232
+
233
+ puts "Serf Global Cluster - connected and has more than one member - [#{result}]"
234
+ end
235
+
236
+ raise "Pipeline node #{$config['node']} is likely unstable" unless success == true
237
+ end
238
+ end
239
+
240
+ pre do |global,command,options,args|
241
+ $config = nil
242
+ begin
243
+ $config = YAML.load_file(File.join(Dir.home, '.mtncdconf'))
244
+ rescue
245
+ raise "Missing #{File.join(Dir.home, '.mtncdconf')}"
246
+ end
247
+
248
+ # check the file
249
+ raise "Invalid #{File.join(Dir.home, '.mtncdconf')}" if $config['node'].nil?
250
+ raise "Invalid #{File.join(Dir.home, '.mtncdconf')}" if $config['role'].nil?
251
+ raise "Invalid #{File.join(Dir.home, '.mtncdconf')}" if $config['deploy'].nil?
252
+
253
+ if $config['role'] == 'central' || $config['role'] == 'ship'
254
+ raise "Invalid #{File.join(Dir.home, '.mtncdconf')}" if $config['deploy']['global'].nil?
255
+ raise "Invalid #{File.join(Dir.home, '.mtncdconf')}" if $config['deploy']['global']['stop'].nil?
256
+ raise "Invalid #{File.join(Dir.home, '.mtncdconf')}" if $config['deploy']['global']['start'].nil?
257
+ end
258
+
259
+ if $config['role'] == 'ship' || $config['role'] == 'sled'
260
+ raise "Invalid #{File.join(Dir.home, '.mtncdconf')}" if $config['deploy']['local'].nil?
261
+ raise "Invalid #{File.join(Dir.home, '.mtncdconf')}" if $config['deploy']['local']['stop'].nil?
262
+ raise "Invalid #{File.join(Dir.home, '.mtncdconf')}" if $config['deploy']['local']['start'].nil?
263
+ end
264
+
265
+ raise "Invalid #{File.join(Dir.home, '.mtncdconf')}" if $config['system'].nil?
266
+ raise "Invalid #{File.join(Dir.home, '.mtncdconf')}" if $config['system']['resque'].nil?
267
+ raise "Invalid #{File.join(Dir.home, '.mtncdconf')}" if $config['system']['resque']['workers'].nil?
268
+
269
+ raise "Invalid #{File.join(Dir.home, '.mtncdconf')}" if $config['system']['redis'].nil?
270
+ raise "Invalid #{File.join(Dir.home, '.mtncdconf')}" if $config['system']['redis']['ip'].nil?
271
+ raise "Invalid #{File.join(Dir.home, '.mtncdconf')}" if $config['system']['redis']['port'].nil?
272
+
273
+ raise "Invalid #{File.join(Dir.home, '.mtncdconf')}" if $config['system']['serf'].nil?
274
+ if $config['role'] == 'central' || $config['role'] == 'ship'
275
+ raise "Invalid #{File.join(Dir.home, '.mtncdconf')}" if $config['system']['serf']['global'].nil?
276
+ raise "Invalid #{File.join(Dir.home, '.mtncdconf')}" if $config['system']['serf']['global']['ip'].nil?
277
+ raise "Invalid #{File.join(Dir.home, '.mtncdconf')}" if $config['system']['serf']['global']['port'].nil?
278
+ end
279
+ if $config['role'] == 'ship' || $config['role'] == 'sled'
280
+ raise "Invalid #{File.join(Dir.home, '.mtncdconf')}" if $config['system']['serf']['local'].nil?
281
+ raise "Invalid #{File.join(Dir.home, '.mtncdconf')}" if $config['system']['serf']['local']['ip'].nil?
282
+ raise "Invalid #{File.join(Dir.home, '.mtncdconf')}" if $config['system']['serf']['local']['port'].nil?
283
+ end
284
+
285
+ true
286
+ end
287
+
288
+ post do |global,command,options,args|
289
+ # Post logic here
290
+ # Use skips_post before a command to skip this
291
+ # block on that command only
292
+ end
293
+
294
+ on_error do |exception|
295
+ # Error logic here
296
+ # return false to skip default error handling
297
+ true
298
+ end
299
+
300
+ exit run(ARGV)
@@ -0,0 +1,8 @@
1
+ Feature: My bootstrapped app kinda works
2
+ In order to get going on coding my awesome app
3
+ I want to have aruba and cucumber setup
4
+ So I don't have to do it myself
5
+
6
+ Scenario: App just runs
7
+ When I get help for "mtncd"
8
+ Then the exit status should be 0
@@ -0,0 +1,6 @@
1
+ When /^I get help for "([^"]*)"$/ do |app_name|
2
+ @app_name = app_name
3
+ step %(I run `#{app_name} help`)
4
+ end
5
+
6
+ # Add more step definitions here
@@ -0,0 +1,15 @@
1
+ require 'aruba/cucumber'
2
+
3
+ ENV['PATH'] = "#{File.expand_path(File.dirname(__FILE__) + '/../../bin')}#{File::PATH_SEPARATOR}#{ENV['PATH']}"
4
+ LIB_DIR = File.join(File.expand_path(File.dirname(__FILE__)),'..','..','lib')
5
+
6
+ Before do
7
+ # Using "announce" causes massive warnings on 1.9.2
8
+ @puts = true
9
+ @original_rubylib = ENV['RUBYLIB']
10
+ ENV['RUBYLIB'] = LIB_DIR + File::PATH_SEPARATOR + ENV['RUBYLIB'].to_s
11
+ end
12
+
13
+ After do
14
+ ENV['RUBYLIB'] = @original_rubylib
15
+ end
@@ -0,0 +1,3 @@
1
+ module Mtncd
2
+ VERSION = '0.0.1'
3
+ end
data/lib/mtncd.rb ADDED
@@ -0,0 +1,4 @@
1
+ require 'mtncd/version.rb'
2
+
3
+ # Add requires for other files you add to your project here, so
4
+ # you just need to require this one file in your bin file
data/mtncd.gemspec ADDED
@@ -0,0 +1,28 @@
1
+ # Ensure we require the local version and not one we might have installed already
2
+ require File.join([File.dirname(__FILE__),'lib','mtncd','version.rb'])
3
+ spec = Gem::Specification.new do |s|
4
+ s.name = 'mtncd'
5
+ s.version = Mtncd::VERSION
6
+ s.author = 'MTN Satellite Communications'
7
+ s.email = 'marat_garafutdinov@mtnsat.com'
8
+ s.homepage = 'https://github.com/mtnsat'
9
+ s.platform = Gem::Platform::RUBY
10
+ s.summary = 'A helper tool for MTN CICD pipeline'
11
+ s.files = `git ls-files`.split("
12
+ ")
13
+ s.require_paths << 'lib'
14
+ s.has_rdoc = true
15
+ s.extra_rdoc_files = ['README.rdoc','mtncd.rdoc']
16
+ s.rdoc_options << '--title' << 'mtncd' << '--main' << 'README.rdoc' << '-ri'
17
+ s.bindir = 'bin'
18
+ s.executables << 'mtncd'
19
+ s.add_dependency('resque', '1.25.2')
20
+ s.add_dependency('serfx', '0.0.8')
21
+ s.add_dependency('msgpack', '0.5.9')
22
+ s.add_dependency('awesome_print', '1.2.0')
23
+ s.add_dependency('redis', '3.1.0')
24
+ s.add_development_dependency('rake')
25
+ s.add_development_dependency('rdoc')
26
+ s.add_development_dependency('aruba')
27
+ s.add_runtime_dependency('gli','2.12.2')
28
+ end
data/mtncd.rdoc ADDED
@@ -0,0 +1,5 @@
1
+ = mtncd
2
+
3
+ Generate this with
4
+ mtncd rdoc
5
+ After you have described your command line interface
@@ -0,0 +1,14 @@
1
+ require 'test_helper'
2
+
3
+ class DefaultTest < Test::Unit::TestCase
4
+
5
+ def setup
6
+ end
7
+
8
+ def teardown
9
+ end
10
+
11
+ def test_the_truth
12
+ assert true
13
+ end
14
+ end
@@ -0,0 +1,9 @@
1
+ require 'test/unit'
2
+
3
+ # Add test libraries you want to use here, e.g. mocha
4
+
5
+ class Test::Unit::TestCase
6
+
7
+ # Add global extensions to the test case class here
8
+
9
+ end
metadata ADDED
@@ -0,0 +1,192 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mtncd
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - MTN Satellite Communications
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-11-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: resque
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '='
18
+ - !ruby/object:Gem::Version
19
+ version: 1.25.2
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '='
25
+ - !ruby/object:Gem::Version
26
+ version: 1.25.2
27
+ - !ruby/object:Gem::Dependency
28
+ name: serfx
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '='
32
+ - !ruby/object:Gem::Version
33
+ version: 0.0.8
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '='
39
+ - !ruby/object:Gem::Version
40
+ version: 0.0.8
41
+ - !ruby/object:Gem::Dependency
42
+ name: msgpack
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '='
46
+ - !ruby/object:Gem::Version
47
+ version: 0.5.9
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '='
53
+ - !ruby/object:Gem::Version
54
+ version: 0.5.9
55
+ - !ruby/object:Gem::Dependency
56
+ name: awesome_print
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '='
60
+ - !ruby/object:Gem::Version
61
+ version: 1.2.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.2.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: redis
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '='
74
+ - !ruby/object:Gem::Version
75
+ version: 3.1.0
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '='
81
+ - !ruby/object:Gem::Version
82
+ version: 3.1.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: rake
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ! '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ! '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rdoc
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ! '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ! '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: aruba
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ! '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: gli
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - '='
130
+ - !ruby/object:Gem::Version
131
+ version: 2.12.2
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - '='
137
+ - !ruby/object:Gem::Version
138
+ version: 2.12.2
139
+ description:
140
+ email: marat_garafutdinov@mtnsat.com
141
+ executables:
142
+ - mtncd
143
+ extensions: []
144
+ extra_rdoc_files:
145
+ - README.rdoc
146
+ - mtncd.rdoc
147
+ files:
148
+ - Gemfile
149
+ - Gemfile.lock
150
+ - README.md
151
+ - README.rdoc
152
+ - Rakefile
153
+ - bin/mtncd
154
+ - features/mtncd.feature
155
+ - features/step_definitions/mtncd_steps.rb
156
+ - features/support/env.rb
157
+ - lib/mtncd.rb
158
+ - lib/mtncd/version.rb
159
+ - mtncd.gemspec
160
+ - mtncd.rdoc
161
+ - test/default_test.rb
162
+ - test/test_helper.rb
163
+ homepage: https://github.com/mtnsat
164
+ licenses: []
165
+ metadata: {}
166
+ post_install_message:
167
+ rdoc_options:
168
+ - --title
169
+ - mtncd
170
+ - --main
171
+ - README.rdoc
172
+ - -ri
173
+ require_paths:
174
+ - lib
175
+ - lib
176
+ required_ruby_version: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ! '>='
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ required_rubygems_version: !ruby/object:Gem::Requirement
182
+ requirements:
183
+ - - ! '>='
184
+ - !ruby/object:Gem::Version
185
+ version: '0'
186
+ requirements: []
187
+ rubyforge_project:
188
+ rubygems_version: 2.2.2
189
+ signing_key:
190
+ specification_version: 4
191
+ summary: A helper tool for MTN CICD pipeline
192
+ test_files: []