circler 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 758ad4e9d1cc5a9b711b00b506e9785279118979
4
+ data.tar.gz: 1070e56f4c7e83b3d684481c5a31a05342125338
5
+ SHA512:
6
+ metadata.gz: 9d6e88b6a875e1dadc00f91abac62be4c0cca5f5f5f2c11d0cdd70569210189a2677b4cdbe250da0ede0b399be320201ddce307223baddd7be42e527a4bffacc
7
+ data.tar.gz: 457f4f10d5a32d0e2d67c23ea280090fc216e1c936c6365cae1a626cfd33284c7aebf41e538f1c3b1998777e24636827eb8fdddab487987e5080efc267b81a9e
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in circle.gemspec
4
+ gemspec
@@ -0,0 +1,69 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ circler (0.1.1)
5
+ circleci (~> 0.2.0)
6
+ colorize (~> 0.7.7)
7
+ faraday (~> 0.9.2)
8
+ highline (~> 1.7.8)
9
+ launchy (~> 2.4.3)
10
+ rugged (~> 0.24.0b11)
11
+ terminal-table (~> 1.5.2)
12
+ thor (~> 0.19.1)
13
+
14
+ GEM
15
+ remote: https://rubygems.org/
16
+ specs:
17
+ addressable (2.4.0)
18
+ circleci (0.2.1)
19
+ rest-client (~> 1.8)
20
+ colorize (0.7.7)
21
+ diff-lcs (1.2.5)
22
+ domain_name (0.5.20160128)
23
+ unf (>= 0.0.5, < 1.0.0)
24
+ faraday (0.9.2)
25
+ multipart-post (>= 1.2, < 3)
26
+ highline (1.7.8)
27
+ http-cookie (1.0.2)
28
+ domain_name (~> 0.5)
29
+ launchy (2.4.3)
30
+ addressable (~> 2.3)
31
+ mime-types (2.99.1)
32
+ multipart-post (2.0.0)
33
+ netrc (0.11.0)
34
+ rake (10.5.0)
35
+ rest-client (1.8.0)
36
+ http-cookie (>= 1.0.2, < 2.0)
37
+ mime-types (>= 1.16, < 3.0)
38
+ netrc (~> 0.7)
39
+ rspec (3.4.0)
40
+ rspec-core (~> 3.4.0)
41
+ rspec-expectations (~> 3.4.0)
42
+ rspec-mocks (~> 3.4.0)
43
+ rspec-core (3.4.3)
44
+ rspec-support (~> 3.4.0)
45
+ rspec-expectations (3.4.0)
46
+ diff-lcs (>= 1.2.0, < 2.0)
47
+ rspec-support (~> 3.4.0)
48
+ rspec-mocks (3.4.1)
49
+ diff-lcs (>= 1.2.0, < 2.0)
50
+ rspec-support (~> 3.4.0)
51
+ rspec-support (3.4.1)
52
+ rugged (0.24.0b13)
53
+ terminal-table (1.5.2)
54
+ thor (0.19.1)
55
+ unf (0.1.4)
56
+ unf_ext
57
+ unf_ext (0.0.7.2)
58
+
59
+ PLATFORMS
60
+ ruby
61
+
62
+ DEPENDENCIES
63
+ bundler (~> 1.9)
64
+ circler!
65
+ rake (~> 10.0)
66
+ rspec
67
+
68
+ BUNDLED WITH
69
+ 1.10.6
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2016 unhappychoice
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,65 @@
1
+ # Circler
2
+
3
+ [![Circle CI](https://circleci.com/gh/unhappychoice/circle.svg?style=svg)](https://circleci.com/gh/unhappychoice/circle)
4
+
5
+ Circler is a CLI tool for [Circle CI](https://circleci.com).
6
+
7
+ ## Installation
8
+
9
+ ```sh
10
+ $ gem install circler
11
+ ```
12
+
13
+ ## Usage
14
+
15
+ #### projects
16
+
17
+ list all the projects you can see.
18
+
19
+ ```sh
20
+ $ circle projects
21
+ ```
22
+
23
+ #### builds
24
+
25
+ list specific projects' builds.
26
+
27
+ ```sh
28
+ $ circle builds
29
+
30
+ # Options:
31
+ # p, [--project=user/project]
32
+ # b, [--branch=some-branch]
33
+ ```
34
+
35
+ #### build
36
+
37
+ show specific build description.
38
+
39
+ ```sh
40
+ $ circle build
41
+
42
+ # Options:
43
+ # p, [--project=user/project]
44
+ # n, [--build=build-number]
45
+ ```
46
+
47
+ #### browse
48
+
49
+ open Circle CI website
50
+
51
+ ```sh
52
+ $ circle browse
53
+
54
+ # Options:
55
+ # p, [--project=user/project]
56
+ # n, [--build=build-number]
57
+ ```
58
+
59
+ ## Contributing
60
+
61
+ Bug reports and pull requests are welcome on GitHub at https://github.com/unhappychoice/circler.
62
+
63
+ ## License
64
+
65
+ The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
@@ -0,0 +1,3 @@
1
+ machine:
2
+ ruby:
3
+ version: 2.2.2
@@ -0,0 +1,35 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'circler/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "circler"
8
+ spec.version = Circler::VERSION
9
+ spec.authors = ["unhappychoice"]
10
+ spec.email = ["unhappychoice@gmail.com"]
11
+
12
+ spec.summary = %q{CLI tool for Circle CI}
13
+ spec.description = %q{A command line tool for circle ci}
14
+ spec.homepage = "https://github.com/unhappychoice/circler"
15
+ spec.license = "MIT"
16
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
17
+ spec.bindir = "bin"
18
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
19
+ spec.require_paths = ["lib"]
20
+
21
+ # Production
22
+ spec.add_dependency 'thor', '~> 0.19.1'
23
+ spec.add_dependency 'faraday', '~> 0.9.2'
24
+ spec.add_dependency 'launchy', '~> 2.4.3'
25
+ spec.add_dependency 'circleci', '~> 0.2.0'
26
+ spec.add_dependency 'rugged', '~> 0.24.0b11'
27
+ spec.add_dependency 'terminal-table', '~> 1.5.2'
28
+ spec.add_dependency 'highline', '~> 1.7.8'
29
+ spec.add_dependency 'colorize', '~> 0.7.7'
30
+
31
+ # Development
32
+ spec.add_development_dependency "bundler", "~> 1.9"
33
+ spec.add_development_dependency "rake", "~> 10.0"
34
+ spec.add_development_dependency "rspec"
35
+ end
@@ -0,0 +1,4 @@
1
+ require 'circler/cli'
2
+
3
+ module Circler
4
+ end
@@ -0,0 +1,55 @@
1
+ require 'thor'
2
+ require 'faraday'
3
+ require 'launchy'
4
+ require 'terminal-table'
5
+ require 'highline/import'
6
+ require 'colorize'
7
+ require 'rugged'
8
+ require 'circleci'
9
+ require 'circler'
10
+ require 'circler/command/base_command'
11
+ require 'circler/command/projects_command'
12
+ require 'circler/command/builds_command'
13
+ require 'circler/command/build_command'
14
+ require 'circler/command/browse_command'
15
+ require 'circler/response/project'
16
+ require 'circler/response/build'
17
+ require 'circler/response/step'
18
+ require 'circler/printer/project_printer'
19
+ require 'circler/printer/build_printer'
20
+ require 'circler/printer/step_printer'
21
+
22
+ module Circler
23
+ class CLI < Thor
24
+ desc 'projects', 'list projects'
25
+ def projects
26
+ ProjectsCommand.run(options)
27
+ end
28
+
29
+ desc 'builds', 'list builds'
30
+ method_option :project, aliases: 'p', type: :string, banner: 'user/project'
31
+ method_option :branch, aliases: 'b', type: :string, banner: 'some-branch'
32
+ def builds
33
+ BuildsCommand.run(options)
34
+ end
35
+
36
+ desc 'build', 'show build description'
37
+ method_option :project, aliases: 'p', type: :string, banner: 'user/project'
38
+ method_option :build, aliases: 'n', type: :numeric, banner: 'build-number'
39
+ def build
40
+ BuildCommand.run(options)
41
+ end
42
+
43
+ desc 'browse', 'open circle ci website'
44
+ method_option :project, aliases: 'p', type: :string, banner: 'user/project'
45
+ method_option :build, aliases: 'n', type: :numeric, banner: 'build-number'
46
+ def browse
47
+ BrowseCommand.run(options)
48
+ end
49
+
50
+ desc 'version', 'show gem version'
51
+ def version
52
+ say Circler::VERSION
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,29 @@
1
+ module Circler
2
+ class BaseCommand
3
+ class << self
4
+ def setup_token()
5
+ CircleCi.configure do |config|
6
+ config.token = ENV['CIRCLE_CI_TOKEN'] || ask('Circle CI token ? :')
7
+ end
8
+ end
9
+
10
+ def project_name(options)
11
+ if options.project
12
+ options.project
13
+ elsif self.reponame
14
+ self.reponame
15
+ else
16
+ say ProjectPrinter.new(Project.all)
17
+ ask('Input user-name/project-name :')
18
+ end
19
+ end
20
+
21
+ def reponame
22
+ repository = Rugged::Repository.new('.')
23
+ origin = repository.remotes.find { |r| r.name == 'origin' }
24
+ return $1 if origin.url =~ %r{git@github.com:(\w+/\w+)\.git}
25
+ nil
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,16 @@
1
+ module Circler
2
+ class BrowseCommand < BaseCommand
3
+ class << self
4
+ def run(options)
5
+ project = project_name(options)
6
+ number = options.build
7
+ Launchy.open url(project, number)
8
+ end
9
+
10
+ def url(project, number)
11
+ return "https://circleci.com/gh/#{project}" unless number
12
+ return "https://circleci.com/gh/#{project}/#{number}"
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,13 @@
1
+ module Circler
2
+ class BuildCommand < BaseCommand
3
+ class << self
4
+ def run(options)
5
+ setup_token
6
+ username, reponame = project_name(options).split('/')
7
+ number = options.build || ask('Input build number')
8
+ build = Build.get(username, reponame, number)
9
+ say StepPrinter.new(build.steps)
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,18 @@
1
+ module Circler
2
+ class BuildsCommand < BaseCommand
3
+ class << self
4
+ def run(options)
5
+ setup_token
6
+ username, reponame = project_name(options).split('/')
7
+
8
+ if options.branch
9
+ builds = Build.branch(username, reponame, options.branch)
10
+ else
11
+ builds = Build.all(username, reponame)
12
+ end
13
+
14
+ say BuildPrinter.new(builds)
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,10 @@
1
+ module Circler
2
+ class ProjectsCommand < BaseCommand
3
+ class << self
4
+ def run(options)
5
+ setup_token
6
+ say ProjectPrinter.new(Project.all)
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,30 @@
1
+ module Circler
2
+ class BuildPrinter
3
+ def initialize(builds, compact: false)
4
+ @builds = builds
5
+ @compact = compact
6
+ end
7
+
8
+ def to_s
9
+ if @compact
10
+ @builds.map(&:information)
11
+ else
12
+ Terminal::Table.new(title: title, headings: headings, rows: rows).to_s
13
+ end
14
+ end
15
+
16
+ private
17
+
18
+ def title
19
+ "Recent Builds / #{@builds.first.username}/#{@builds.first.reponame}".green
20
+ end
21
+
22
+ def headings
23
+ ['Number', 'Status', 'Branch', 'Author', 'Commit', 'Duration', 'Start time']
24
+ end
25
+
26
+ def rows
27
+ @builds.map(&:information)
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,21 @@
1
+ module Circler
2
+ class ProjectPrinter
3
+ attr_accessor :compact
4
+ def initialize(projects, compact: false)
5
+ @projects = projects
6
+ @compact = compact
7
+ end
8
+
9
+ def to_s
10
+ if compact
11
+ @projects.map(&:name_array)
12
+ else
13
+ Terminal::Table.new(
14
+ title: 'Projects'.green,
15
+ headings: ['User name', 'Repository name'],
16
+ rows: @projects.map(&:information)
17
+ ).to_s
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,44 @@
1
+ module Circler
2
+ class StepPrinter
3
+ def initialize(steps, compact: false)
4
+ @steps = steps
5
+ @compact = compact
6
+ end
7
+
8
+ def to_s
9
+ table = Terminal::Table.new do |t|
10
+ @steps.each do |s|
11
+ t << [{ value: s.type.green, alignment: :center, :colspan => 2 }]
12
+ t << :separator
13
+ s.actions.each do |a|
14
+ t << [
15
+ colorize_by_status(a['name'].slice(0..120), a['status']),
16
+ format_time(a['run_time_millis'].to_i)
17
+ ]
18
+ end
19
+ t << :separator
20
+ end
21
+ end
22
+ table.to_s
23
+ end
24
+
25
+ private
26
+
27
+ def colorize_by_status(string, status)
28
+ case status
29
+ when 'success', 'fixed' then string.green
30
+ when 'canceled' then string.yellow
31
+ when 'failed' then string.red
32
+ when 'no_tests', 'not_run' then string.light_black
33
+ else string
34
+ end
35
+ end
36
+
37
+ def format_time(time)
38
+ return '' unless time
39
+ minute = format('%02d', time / 1000 / 60)
40
+ second = format('%02d', (time / 1000) % 60)
41
+ "#{minute}:#{second}"
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,77 @@
1
+ module Circler
2
+ class Build
3
+ class << self
4
+ def all(username, reponame)
5
+ CircleCi::Project.recent_builds(username, reponame)
6
+ .body
7
+ .map { |b| Build.new(b) }
8
+ end
9
+
10
+ def branch(username, reponame, branch)
11
+ CircleCi::Project.recent_builds_branch(username, reponame, branch)
12
+ .body
13
+ .map { |b| Build.new(b) }
14
+ end
15
+
16
+ def get(username, reponame, number)
17
+ Build.new(CircleCi::Build.get(username, reponame, number).body)
18
+ end
19
+ end
20
+
21
+ def initialize(hash)
22
+ @hash = hash
23
+ end
24
+
25
+ def username
26
+ @hash['username']
27
+ end
28
+
29
+ def reponame
30
+ @hash['reponame']
31
+ end
32
+
33
+ def information
34
+ [
35
+ @hash['build_num'],
36
+ colorize_by_status(@hash['status'], @hash['status']),
37
+ colorize_by_status(@hash['branch'], @hash['status']),
38
+ @hash['author_name'],
39
+ (@hash['subject'] || '').slice(0..60),
40
+ format_time(@hash['build_time_millis']),
41
+ @hash['start_time'],
42
+ ]
43
+ end
44
+
45
+ def steps
46
+ hash = @hash['steps'].group_by { |s| s['actions'].first['type'] }
47
+ hash.map { |type, step| Step.new(type, step) }
48
+ end
49
+
50
+ private
51
+
52
+ def self.colorize_by_status(string, status)
53
+ case status
54
+ when 'success', 'fixed' then string.green
55
+ when 'canceled' then string.yellow
56
+ when 'failed' then string.red
57
+ when 'no_tests', 'not_run' then string.light_black
58
+ else string
59
+ end
60
+ end
61
+
62
+ def colorize_by_status(string, status)
63
+ self.class.colorize_by_status(string, status)
64
+ end
65
+
66
+ def self.format_time(time)
67
+ return '' unless time
68
+ minute = format('%02d', time / 1000 / 60)
69
+ second = format('%02d', (time / 1000) % 60)
70
+ "#{minute}:#{second}"
71
+ end
72
+
73
+ def format_time(time)
74
+ self.class.format_time(time)
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,15 @@
1
+ module Circler
2
+ class Project
3
+ def initialize(hash)
4
+ @hash = hash
5
+ end
6
+
7
+ def information
8
+ [@hash['username'], @hash['reponame']]
9
+ end
10
+
11
+ def self.all
12
+ CircleCi::Project.all.body.map { |p| Project.new(p) }
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,20 @@
1
+ module Circler
2
+ class Step
3
+ attr_reader :type
4
+
5
+ def initialize(type, hash)
6
+ @type = type
7
+ @hash = hash
8
+ end
9
+
10
+ def actions
11
+ @hash.flat_map { |s| s['actions'] }
12
+ end
13
+
14
+ def logs
15
+ actions.map do |a|
16
+ Faraday.new(a.output_url).get.body
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,3 @@
1
+ module Circler
2
+ VERSION = "0.1.1"
3
+ end
metadata ADDED
@@ -0,0 +1,219 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: circler
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - unhappychoice
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-02-23 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: thor
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.19.1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.19.1
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.9.2
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 0.9.2
41
+ - !ruby/object:Gem::Dependency
42
+ name: launchy
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 2.4.3
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 2.4.3
55
+ - !ruby/object:Gem::Dependency
56
+ name: circleci
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 0.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: 0.2.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: rugged
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.24.0b11
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.24.0b11
83
+ - !ruby/object:Gem::Dependency
84
+ name: terminal-table
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 1.5.2
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 1.5.2
97
+ - !ruby/object:Gem::Dependency
98
+ name: highline
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 1.7.8
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 1.7.8
111
+ - !ruby/object:Gem::Dependency
112
+ name: colorize
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: 0.7.7
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: 0.7.7
125
+ - !ruby/object:Gem::Dependency
126
+ name: bundler
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '1.9'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '1.9'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rake
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '10.0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '10.0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: rspec
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ description: A command line tool for circle ci
168
+ email:
169
+ - unhappychoice@gmail.com
170
+ executables: []
171
+ extensions: []
172
+ extra_rdoc_files: []
173
+ files:
174
+ - Gemfile
175
+ - Gemfile.lock
176
+ - LICENSE.txt
177
+ - README.md
178
+ - Rakefile
179
+ - circle.yml
180
+ - circler.gemspec
181
+ - lib/circler.rb
182
+ - lib/circler/cli.rb
183
+ - lib/circler/command/base_command.rb
184
+ - lib/circler/command/browse_command.rb
185
+ - lib/circler/command/build_command.rb
186
+ - lib/circler/command/builds_command.rb
187
+ - lib/circler/command/projects_command.rb
188
+ - lib/circler/printer/build_printer.rb
189
+ - lib/circler/printer/project_printer.rb
190
+ - lib/circler/printer/step_printer.rb
191
+ - lib/circler/response/build.rb
192
+ - lib/circler/response/project.rb
193
+ - lib/circler/response/step.rb
194
+ - lib/circler/version.rb
195
+ homepage: https://github.com/unhappychoice/circler
196
+ licenses:
197
+ - MIT
198
+ metadata: {}
199
+ post_install_message:
200
+ rdoc_options: []
201
+ require_paths:
202
+ - lib
203
+ required_ruby_version: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - ">="
206
+ - !ruby/object:Gem::Version
207
+ version: '0'
208
+ required_rubygems_version: !ruby/object:Gem::Requirement
209
+ requirements:
210
+ - - ">="
211
+ - !ruby/object:Gem::Version
212
+ version: '0'
213
+ requirements: []
214
+ rubyforge_project:
215
+ rubygems_version: 2.4.5
216
+ signing_key:
217
+ specification_version: 4
218
+ summary: CLI tool for Circle CI
219
+ test_files: []