jackchop 0.1.0 → 0.2.0

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.
@@ -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: []