jackchop 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ N2I4NmFiMmVmMDQ2YjQ2NjcxNjRhNmMzYmU5NGQ3ODEzMTE0ZDlmOQ==
5
+ data.tar.gz: !binary |-
6
+ ZWZkZTFjMDQ2NmI2NzU1Y2MzMTJiNmYyOWU4Y2Y4Y2NhNmM4MzNmMg==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ NmQ0ZGUxM2U3OTc5MTE4Y2M2Mjk2NTkzZmVjZTQ3M2ZlN2I3MTlhNzA0OWU0
10
+ NWUwYWJhZDBlMzg2ZDBjZTk1M2QwMGE5YjU2ZTRjYmMxZGY1MGVmNmY3OTVk
11
+ ZDQ2ZWU2OTc3NmNlNjM2Y2UxYjE1YzQ1OTg5ZTJlYWE3YTY0YWM=
12
+ data.tar.gz: !binary |-
13
+ MWM3NTRjOWE1MmRhNjUyN2VlMzgwYzE0OTcxZmUyMzhlZmViNGE0NmExNzMz
14
+ Nzk4YTRlMzYwODE3ODczMzg4NjE2MmY5MzM2MjFkZDhkMDM3ZjhkNTllOTI4
15
+ MDkxNWE2ZWMwNWU3ZWI1ZGUwNTE4YzRmMTcyNWU3ZTMwOWVmNzY=
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.2.0
@@ -0,0 +1,16 @@
1
+ .vagrant
2
+ Berksfile.lock
3
+ *~
4
+ *#
5
+ .#*
6
+ \#*#
7
+ .*.sw[a-z]
8
+ *.un~
9
+ /cookbooks
10
+
11
+ # Bundler
12
+ Gemfile.lock
13
+ bin/*
14
+ .bundle/*
15
+
16
+ .kitchen/
@@ -27,7 +27,10 @@ Gem::Specification.new do |spec|
27
27
  spec.add_dependency "chef", "~> 11.4.4"
28
28
  spec.add_dependency "chefspec", "~> 1.0.0"
29
29
  spec.add_dependency "thor", "~> 0.18.1"
30
- spec.add_dependency "ridley", "~> 0.11.1"
30
+ spec.add_dependency "ridley", "~> 0.12.1"
31
+ spec.add_dependency "github_api", "~> 0.9.7"
32
+ spec.add_dependency "highline", "~> 1.6.19"
33
+ spec.add_dependency "travis", "~> 1.2.0"
31
34
 
32
35
  # Workaround for json dependency for chef and berkshelf. Chef
33
36
  # wants <= 1.7.7 and berkshelf >= 1.5 but bundler tries to grab 1.8.0
@@ -1,11 +1,16 @@
1
1
  require 'thor'
2
2
  require 'ridley'
3
3
  require 'berkshelf'
4
- require 'jackchop/generators/base_generator'
5
- require 'jackchop/generators/init_generator'
6
- require 'jackchop/cli'
7
4
 
8
5
  module Jackchop
6
+ autoload :BaseGenerator, 'jackchop/generators/base_generator'
7
+ autoload :InitGenerator, 'jackchop/generators/init_generator'
8
+ autoload :Cli, 'jackchop/cli'
9
+ autoload :Cookbook, 'jackchop/cli/cookbook'
10
+ autoload :Travis, 'jackchop/cli/travis'
11
+ autoload :GithubAPI, 'jackchop/api/github_api'
12
+ autoload :TravisAPI, 'jackchop/api/travis_api'
13
+
9
14
  def self.root
10
15
  @root ||= Pathname.new(File.expand_path('../', File.dirname(__FILE__)))
11
16
  end
@@ -0,0 +1,34 @@
1
+ require 'highline/import'
2
+ require 'github_api'
3
+
4
+ module Jackchop
5
+ module GithubAPI
6
+ GIT_REGEX = %r{^(?:https://|git://|git@)github\.com[:/](.*/.+?)(\.git)?$}
7
+
8
+ def find_repo_name
9
+ git_info = `git config --get remote.origin.url 2>&1`
10
+ $1 if git_info =~ GIT_REGEX
11
+ end
12
+
13
+ def github
14
+ @github ||= begin
15
+ github_username = ask("github username:")
16
+ github_password = ::HighLine.ask("github password: ") { |q| q.echo = false }
17
+ Github.new :login => github_username, :password => github_password
18
+ end
19
+ end
20
+
21
+ def github_auth_token
22
+ @github_token || begin
23
+ auth = github.oauth.all.find { |auth| auth.note == 'Jackchop' }
24
+ if auth
25
+ auth.token
26
+ else
27
+ auth = github.oauth.create "scopes" => ["user:email", "public_repo"], "note" => "Jackchop"
28
+ auth.token
29
+ end
30
+ end
31
+ end
32
+
33
+ end
34
+ end
@@ -0,0 +1,16 @@
1
+ require 'travis'
2
+
3
+ module Jackchop
4
+ module TravisAPI
5
+ include GithubAPI
6
+
7
+ def travis
8
+ @travis ||= begin
9
+ session = ::Travis::Client::Session.new
10
+ session.access_token = ::Travis.github_auth(github_auth_token)
11
+ session
12
+ end
13
+ end
14
+ end
15
+ end
16
+
@@ -1,9 +1,9 @@
1
- require 'thor'
2
- require 'jackchop/cli/cookbook'
3
-
4
1
  module Jackchop
5
2
  class Cli < Thor
6
- desc "cookbook", "Cookbook related tasks"
3
+ desc "cookbook", "Cookbook related tasks. Type jackchop cookbook for more help."
7
4
  subcommand 'cookbook', Cookbook
5
+
6
+ desc "travis", "Travis related tasks. Type jackchop travis for more help."
7
+ subcommand 'travis', Travis
8
8
  end
9
9
  end
@@ -8,17 +8,18 @@ module Jackchop
8
8
 
9
9
  desc "create [NAME]", "Creates a new cookbook"
10
10
  def create(name)
11
-
12
11
  Berkshelf::CookbookGenerator.new([File.join(Dir.pwd, name), name], default_berkshelf_options.merge(options)).invoke_all
13
12
  Jackchop::InitGenerator.new([File.join(Dir.pwd, name)], options).invoke_all
14
13
  end
15
14
 
16
- def default_berkshelf_options
17
- { :chef_minitest => true }
18
- end
19
-
20
15
  def self.banner(task, namespace = false, subcommand = true)
21
16
  "#{basename} #{task.formatted_usage(self, namespace, subcommand).split(':').join(' ')}"
22
17
  end
18
+
19
+ private
20
+
21
+ def default_berkshelf_options
22
+ { :chef_minitest => true, :metadata_entry => true }
23
+ end
23
24
  end
24
25
  end
@@ -0,0 +1,13 @@
1
+ require 'travis'
2
+
3
+ module Jackchop
4
+ class Travis < Thor
5
+ include TravisAPI
6
+ desc "enable [COOKBOOK]", "Enables the cookbook in travis-ci"
7
+ def enable
8
+ repo_name = find_repo_name
9
+ raise Thor::Error, "It does not appear that this repo exists on github. Have you pushed it?" if repo_name.nil?
10
+ travis.repo(repo_name).enable
11
+ end
12
+ end
13
+ end
@@ -1,6 +1,3 @@
1
- require 'chef/knife'
2
- require 'chef/knife/cookbook_create_specs'
3
-
4
1
  module Jackchop
5
2
  class InitGenerator < BaseGenerator
6
3
 
@@ -14,12 +11,17 @@ module Jackchop
14
11
  template "Rakefile.erb", target.join("Rakefile")
15
12
  template "Strainerfile.erb", target.join("Strainerfile")
16
13
  template "Gemfile.erb", target.join("Gemfile"), :force => true
14
+ template "gitignore.erb", target.join(".gitignore"), :force => true
15
+ end
17
16
 
17
+ def chef_spec
18
+ require 'chef/knife'
19
+ require 'chef/knife/cookbook_create_specs'
18
20
  chef_spec = ChefSpec::Knife::CookbookCreateSpecs.new
19
21
  chef_spec.config[:cookbook_path] = File.dirname(target)
20
22
  chef_spec.name_args[0] = File.basename(target)
21
23
  chef_spec.run
22
- end
24
+ end
23
25
 
24
26
  private
25
27
 
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jackchop
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
5
- prerelease:
4
+ version: 0.2.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Russell Teabeault
@@ -10,12 +9,11 @@ authors:
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2013-05-14 00:00:00.000000000 Z
12
+ date: 2013-05-16 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: bundler
17
16
  requirement: !ruby/object:Gem::Requirement
18
- none: false
19
17
  requirements:
20
18
  - - ~>
21
19
  - !ruby/object:Gem::Version
@@ -23,7 +21,6 @@ dependencies:
23
21
  type: :development
24
22
  prerelease: false
25
23
  version_requirements: !ruby/object:Gem::Requirement
26
- none: false
27
24
  requirements:
28
25
  - - ~>
29
26
  - !ruby/object:Gem::Version
@@ -31,7 +28,6 @@ dependencies:
31
28
  - !ruby/object:Gem::Dependency
32
29
  name: rake
33
30
  requirement: !ruby/object:Gem::Requirement
34
- none: false
35
31
  requirements:
36
32
  - - ! '>='
37
33
  - !ruby/object:Gem::Version
@@ -39,7 +35,6 @@ dependencies:
39
35
  type: :development
40
36
  prerelease: false
41
37
  version_requirements: !ruby/object:Gem::Requirement
42
- none: false
43
38
  requirements:
44
39
  - - ! '>='
45
40
  - !ruby/object:Gem::Version
@@ -47,7 +42,6 @@ dependencies:
47
42
  - !ruby/object:Gem::Dependency
48
43
  name: version
49
44
  requirement: !ruby/object:Gem::Requirement
50
- none: false
51
45
  requirements:
52
46
  - - ~>
53
47
  - !ruby/object:Gem::Version
@@ -55,7 +49,6 @@ dependencies:
55
49
  type: :development
56
50
  prerelease: false
57
51
  version_requirements: !ruby/object:Gem::Requirement
58
- none: false
59
52
  requirements:
60
53
  - - ~>
61
54
  - !ruby/object:Gem::Version
@@ -63,7 +56,6 @@ dependencies:
63
56
  - !ruby/object:Gem::Dependency
64
57
  name: berkshelf
65
58
  requirement: !ruby/object:Gem::Requirement
66
- none: false
67
59
  requirements:
68
60
  - - ~>
69
61
  - !ruby/object:Gem::Version
@@ -71,7 +63,6 @@ dependencies:
71
63
  type: :runtime
72
64
  prerelease: false
73
65
  version_requirements: !ruby/object:Gem::Requirement
74
- none: false
75
66
  requirements:
76
67
  - - ~>
77
68
  - !ruby/object:Gem::Version
@@ -79,7 +70,6 @@ dependencies:
79
70
  - !ruby/object:Gem::Dependency
80
71
  name: chef
81
72
  requirement: !ruby/object:Gem::Requirement
82
- none: false
83
73
  requirements:
84
74
  - - ~>
85
75
  - !ruby/object:Gem::Version
@@ -87,7 +77,6 @@ dependencies:
87
77
  type: :runtime
88
78
  prerelease: false
89
79
  version_requirements: !ruby/object:Gem::Requirement
90
- none: false
91
80
  requirements:
92
81
  - - ~>
93
82
  - !ruby/object:Gem::Version
@@ -95,7 +84,6 @@ dependencies:
95
84
  - !ruby/object:Gem::Dependency
96
85
  name: chefspec
97
86
  requirement: !ruby/object:Gem::Requirement
98
- none: false
99
87
  requirements:
100
88
  - - ~>
101
89
  - !ruby/object:Gem::Version
@@ -103,7 +91,6 @@ dependencies:
103
91
  type: :runtime
104
92
  prerelease: false
105
93
  version_requirements: !ruby/object:Gem::Requirement
106
- none: false
107
94
  requirements:
108
95
  - - ~>
109
96
  - !ruby/object:Gem::Version
@@ -111,7 +98,6 @@ dependencies:
111
98
  - !ruby/object:Gem::Dependency
112
99
  name: thor
113
100
  requirement: !ruby/object:Gem::Requirement
114
- none: false
115
101
  requirements:
116
102
  - - ~>
117
103
  - !ruby/object:Gem::Version
@@ -119,7 +105,6 @@ dependencies:
119
105
  type: :runtime
120
106
  prerelease: false
121
107
  version_requirements: !ruby/object:Gem::Requirement
122
- none: false
123
108
  requirements:
124
109
  - - ~>
125
110
  - !ruby/object:Gem::Version
@@ -127,23 +112,62 @@ dependencies:
127
112
  - !ruby/object:Gem::Dependency
128
113
  name: ridley
129
114
  requirement: !ruby/object:Gem::Requirement
130
- none: false
131
115
  requirements:
132
116
  - - ~>
133
117
  - !ruby/object:Gem::Version
134
- version: 0.11.1
118
+ version: 0.12.1
135
119
  type: :runtime
136
120
  prerelease: false
137
121
  version_requirements: !ruby/object:Gem::Requirement
138
- none: false
139
122
  requirements:
140
123
  - - ~>
141
124
  - !ruby/object:Gem::Version
142
- version: 0.11.1
125
+ version: 0.12.1
126
+ - !ruby/object:Gem::Dependency
127
+ name: github_api
128
+ requirement: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ~>
131
+ - !ruby/object:Gem::Version
132
+ version: 0.9.7
133
+ type: :runtime
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ~>
138
+ - !ruby/object:Gem::Version
139
+ version: 0.9.7
140
+ - !ruby/object:Gem::Dependency
141
+ name: highline
142
+ requirement: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - ~>
145
+ - !ruby/object:Gem::Version
146
+ version: 1.6.19
147
+ type: :runtime
148
+ prerelease: false
149
+ version_requirements: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - ~>
152
+ - !ruby/object:Gem::Version
153
+ version: 1.6.19
154
+ - !ruby/object:Gem::Dependency
155
+ name: travis
156
+ requirement: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - ~>
159
+ - !ruby/object:Gem::Version
160
+ version: 1.2.0
161
+ type: :runtime
162
+ prerelease: false
163
+ version_requirements: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - ~>
166
+ - !ruby/object:Gem::Version
167
+ version: 1.2.0
143
168
  - !ruby/object:Gem::Dependency
144
169
  name: json
145
170
  requirement: !ruby/object:Gem::Requirement
146
- none: false
147
171
  requirements:
148
172
  - - ~>
149
173
  - !ruby/object:Gem::Version
@@ -151,7 +175,6 @@ dependencies:
151
175
  type: :runtime
152
176
  prerelease: false
153
177
  version_requirements: !ruby/object:Gem::Requirement
154
- none: false
155
178
  requirements:
156
179
  - - ~>
157
180
  - !ruby/object:Gem::Version
@@ -176,13 +199,17 @@ files:
176
199
  - generator_files/Gemfile.erb
177
200
  - generator_files/Rakefile.erb
178
201
  - generator_files/Strainerfile.erb
202
+ - generator_files/gitignore.erb
179
203
  - generator_files/kitchen.yml.erb
180
204
  - generator_files/travis.yml.erb
181
205
  - img/jackchop.jpg
182
206
  - jackchop.gemspec
183
207
  - lib/jackchop.rb
208
+ - lib/jackchop/api/github_api.rb
209
+ - lib/jackchop/api/travis_api.rb
184
210
  - lib/jackchop/cli.rb
185
211
  - lib/jackchop/cli/cookbook.rb
212
+ - lib/jackchop/cli/travis.rb
186
213
  - lib/jackchop/generators/base_generator.rb
187
214
  - lib/jackchop/generators/init_generator.rb
188
215
  - lib/jackchop/rake_tasks.rb
@@ -190,32 +217,25 @@ files:
190
217
  homepage: http://github.com/RallySoftware-cookbooks/jackchop
191
218
  licenses:
192
219
  - MIT
220
+ metadata: {}
193
221
  post_install_message:
194
222
  rdoc_options: []
195
223
  require_paths:
196
224
  - lib
197
225
  required_ruby_version: !ruby/object:Gem::Requirement
198
- none: false
199
226
  requirements:
200
227
  - - ! '>='
201
228
  - !ruby/object:Gem::Version
202
229
  version: '0'
203
- segments:
204
- - 0
205
- hash: 2674304610272158957
206
230
  required_rubygems_version: !ruby/object:Gem::Requirement
207
- none: false
208
231
  requirements:
209
232
  - - ! '>='
210
233
  - !ruby/object:Gem::Version
211
234
  version: '0'
212
- segments:
213
- - 0
214
- hash: 2674304610272158957
215
235
  requirements: []
216
236
  rubyforge_project:
217
- rubygems_version: 1.8.25
237
+ rubygems_version: 2.0.3
218
238
  signing_key:
219
- specification_version: 3
239
+ specification_version: 4
220
240
  summary: Used to create new cookbooks with the desired testing frameworks and tasks.
221
241
  test_files: []