simpleci-cli 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (8) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +10 -0
  3. data/Gemfile +4 -0
  4. data/README.md +36 -0
  5. data/Rakefile +10 -0
  6. data/bin/simpleci +113 -0
  7. data/simpleci-cli.gemspec +23 -0
  8. metadata +134 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 850da64a7c75d7215c337a1f3bfff3665308d65d
4
+ data.tar.gz: 7908296acd8b9cbb2bc94f74d2cbf9f36e666af2
5
+ SHA512:
6
+ metadata.gz: 97c84dde9a3316d8a51df828b196bdc7ed5b53a723756ad89cfed65d53112587cff15b19d20d924f78c7741fa03f6c9422791e26bd3e271e260eed194e939638
7
+ data.tar.gz: aefbc4d031db93e1588316ffd25e17fc03cf43ce6a1f50e52735832c0221c355c5c5d830136b1b8d45219e0ca28d8063e8ec651cafd1485d75b9e5f26b4d913b
data/.gitignore ADDED
@@ -0,0 +1,10 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ .idea/
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in simpleci-cli.gemspec
4
+ gemspec
data/README.md ADDED
@@ -0,0 +1,36 @@
1
+ # Simpleci::Cli
2
+
3
+ Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/simpleci/cli`. To experiment with that code, run `bin/console` for an interactive prompt.
4
+
5
+ TODO: Delete this and the text above, and describe your gem
6
+
7
+ ## Installation
8
+
9
+ Add this line to your application's Gemfile:
10
+
11
+ ```ruby
12
+ gem 'simpleci-cli'
13
+ ```
14
+
15
+ And then execute:
16
+
17
+ $ bundle
18
+
19
+ Or install it yourself as:
20
+
21
+ $ gem install simpleci-cli
22
+
23
+ ## Usage
24
+
25
+ TODO: Write usage instructions here
26
+
27
+ ## Development
28
+
29
+ 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.
30
+
31
+ 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 tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
32
+
33
+ ## Contributing
34
+
35
+ Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/simpleci-cli.
36
+
data/Rakefile ADDED
@@ -0,0 +1,10 @@
1
+ require "bundler/gem_tasks"
2
+ require "rake/testtask"
3
+
4
+ Rake::TestTask.new(:test) do |t|
5
+ t.libs << "test"
6
+ t.libs << "lib"
7
+ t.test_files = FileList['test/**/*_test.rb']
8
+ end
9
+
10
+ task :default => :test
data/bin/simpleci ADDED
@@ -0,0 +1,113 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rubygems'
4
+ require 'bundler'
5
+
6
+ require 'trollop'
7
+ require 'faraday'
8
+ require 'json'
9
+ require 'terminal-table'
10
+ require 'yaml'
11
+
12
+
13
+ def opts
14
+ @opts ||= Trollop::options do
15
+ opt :server, 'server endpoint', type: :string, default: 'http://localhost:3000', short: '-s'
16
+ opt :client_id, 'server client id', type: :string, default: ENV['SIMPLECI_KEY'], short: '-u'
17
+ opt :secret, 'server client secret', type: :string, default: ENV['SIMPLECI_SECRET'], short: '-p'
18
+ opt :user, 'user to represent', type: :string, default: 'me', short: '-a'
19
+ end
20
+ end
21
+
22
+ def conn
23
+ @conn ||= Faraday.new(url: opts[:server]) do |faraday|
24
+ faraday.request :url_encoded # form-encode POST params
25
+ faraday.adapter Faraday.default_adapter # make requests with Net::HTTP
26
+ faraday.headers['Authorization'] = "#{opts[:client_id]}:#{opts[:secret]}"
27
+ end
28
+ end
29
+
30
+ def req(method, path, params={})
31
+ res = conn.send(method, path, params)
32
+ body = JSON.parse(res.body)
33
+ # puts body
34
+ body
35
+ end
36
+
37
+ def req_user(method, path, params={})
38
+ req(method, "/api/users/#{opts[:user]}/#{path}", params)
39
+ end
40
+
41
+ def print_table(args=[])
42
+ args = [args] unless args.is_a?(Array)
43
+
44
+ keys = args[0].map { |k, _| k }
45
+ rows = [keys] + args.map { |h| h.values_at(*keys) }
46
+ puts Terminal::Table.new(rows: rows)
47
+ end
48
+
49
+ def main(cmd)
50
+
51
+ case cmd
52
+ when 'me'
53
+ print_table(req(:get, '/api/users/me')['user'])
54
+
55
+ when 'users'
56
+ print_table(req(:get, '/api/users')['users'])
57
+
58
+ when 'jobs'
59
+ print_table(req(:get, '/api/users/me/job_definitions')['job_definitions'])
60
+
61
+ when 'emit'
62
+ events ||= Trollop::options do
63
+ opt :event, 'event name', type: :string, short: '-n'
64
+ opt :payload, 'payload for event', type: :string, short: '-p'
65
+ end
66
+
67
+ if events[:event] && events[:payload]
68
+ req_user(:post, 'events', { event: { payload: JSON.parse(events[:payload]), name: events[:event] } })
69
+ else
70
+ Trollop::educate
71
+ end
72
+
73
+ when 'secrets'
74
+ req_user(:get, 'secrets')
75
+
76
+ when 'provision-secrets'
77
+ req_user(:get, 'secrets')['secrets'].each do |secret|
78
+ puts "export #{secret['key']}=#{secret['value']}"
79
+ end
80
+
81
+ when 'add-secret'
82
+ secrets ||= Trollop::options do
83
+ opt :secret, 'secret to store', type: :string, short: '-n'
84
+ opt :value, 'value to store', type: :string, short: '-v'
85
+ end
86
+
87
+ if secrets[:secret] && secrets[:value]
88
+ req_user(:post, 'secrets', { secret: {key: secrets[:secret], value: secrets[:value] } })
89
+ else
90
+ Trollop::educate
91
+ end
92
+
93
+
94
+ when 'apply'
95
+ created = []
96
+ builds = YAML.load_file(opts[:jobs_definition_file])
97
+ builds.each do |name, config|
98
+ job = config.merge(name: name)
99
+ created << req_user(:post, 'job_definitions', job_definition: job)['job_definition']
100
+ end
101
+ print_table(created)
102
+
103
+ when 'generate-key'
104
+ print_table(req_user(:post, 'tokens')['token'])
105
+
106
+ end
107
+ end
108
+
109
+ if ARGV.empty?
110
+ opts
111
+ Trollop::educate
112
+ end
113
+ main(ARGV[0])
@@ -0,0 +1,23 @@
1
+ # coding: utf-8
2
+
3
+ Gem::Specification.new do |spec|
4
+ spec.name = "simpleci-cli"
5
+ spec.version = "0.1.0"
6
+ spec.authors = ["Colin Walker"]
7
+ spec.email = ["colin@musefind.com"]
8
+
9
+ spec.summary = %q{SimpleCI Cli}
10
+ spec.homepage = "http://github.com/coldog/simpleci-cli"
11
+
12
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
13
+ spec.bindir = "bin"
14
+ spec.executables = ["simpleci"]
15
+
16
+ spec.add_dependency "trollop"
17
+ spec.add_dependency "faraday"
18
+ spec.add_dependency "terminal-table"
19
+
20
+ spec.add_development_dependency "bundler", "~> 1.12"
21
+ spec.add_development_dependency "rake", "~> 10.0"
22
+ spec.add_development_dependency "minitest", "~> 5.0"
23
+ end
metadata ADDED
@@ -0,0 +1,134 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: simpleci-cli
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Colin Walker
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-07-21 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: trollop
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: faraday
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: terminal-table
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: bundler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.12'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.12'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '10.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '10.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: minitest
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '5.0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '5.0'
97
+ description:
98
+ email:
99
+ - colin@musefind.com
100
+ executables:
101
+ - simpleci
102
+ extensions: []
103
+ extra_rdoc_files: []
104
+ files:
105
+ - ".gitignore"
106
+ - Gemfile
107
+ - README.md
108
+ - Rakefile
109
+ - bin/simpleci
110
+ - simpleci-cli.gemspec
111
+ homepage: http://github.com/coldog/simpleci-cli
112
+ licenses: []
113
+ metadata: {}
114
+ post_install_message:
115
+ rdoc_options: []
116
+ require_paths:
117
+ - lib
118
+ required_ruby_version: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: '0'
123
+ required_rubygems_version: !ruby/object:Gem::Requirement
124
+ requirements:
125
+ - - ">="
126
+ - !ruby/object:Gem::Version
127
+ version: '0'
128
+ requirements: []
129
+ rubyforge_project:
130
+ rubygems_version: 2.5.1
131
+ signing_key:
132
+ specification_version: 4
133
+ summary: SimpleCI Cli
134
+ test_files: []