myronmarston-integrity 0.1.7.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. data/README.markdown +66 -0
  2. data/Rakefile +110 -0
  3. data/VERSION.yml +4 -0
  4. data/app.rb +137 -0
  5. data/bin/integrity +4 -0
  6. data/config/config.sample.ru +31 -0
  7. data/config/config.sample.yml +38 -0
  8. data/config/thin.sample.yml +13 -0
  9. data/integrity.gemspec +76 -0
  10. data/lib/integrity.rb +82 -0
  11. data/lib/integrity/build.rb +61 -0
  12. data/lib/integrity/core_ext/object.rb +6 -0
  13. data/lib/integrity/core_ext/string.rb +5 -0
  14. data/lib/integrity/helpers.rb +16 -0
  15. data/lib/integrity/helpers/authorization.rb +33 -0
  16. data/lib/integrity/helpers/breadcrumbs.rb +20 -0
  17. data/lib/integrity/helpers/forms.rb +28 -0
  18. data/lib/integrity/helpers/pretty_output.rb +45 -0
  19. data/lib/integrity/helpers/rendering.rb +14 -0
  20. data/lib/integrity/helpers/resources.rb +13 -0
  21. data/lib/integrity/helpers/urls.rb +47 -0
  22. data/lib/integrity/installer.rb +132 -0
  23. data/lib/integrity/migrations.rb +152 -0
  24. data/lib/integrity/notifier.rb +50 -0
  25. data/lib/integrity/notifier/base.rb +55 -0
  26. data/lib/integrity/project.rb +117 -0
  27. data/lib/integrity/project_builder.rb +51 -0
  28. data/lib/integrity/scm.rb +19 -0
  29. data/lib/integrity/scm/git.rb +91 -0
  30. data/lib/integrity/scm/git/uri.rb +57 -0
  31. data/public/buttons.css +82 -0
  32. data/public/reset.css +7 -0
  33. data/public/spinner.gif +0 -0
  34. data/test/helpers.rb +48 -0
  35. data/test/helpers/acceptance.rb +126 -0
  36. data/test/helpers/acceptance/git_helper.rb +99 -0
  37. data/test/helpers/acceptance/textfile_notifier.rb +26 -0
  38. data/test/helpers/expectations.rb +5 -0
  39. data/test/helpers/expectations/be_a.rb +23 -0
  40. data/test/helpers/expectations/change.rb +90 -0
  41. data/test/helpers/expectations/have.rb +105 -0
  42. data/test/helpers/expectations/have_tag.rb +128 -0
  43. data/test/helpers/expectations/predicates.rb +37 -0
  44. data/test/helpers/fixtures.rb +83 -0
  45. data/views/_build_info.haml +18 -0
  46. data/views/build.haml +2 -0
  47. data/views/error.haml +36 -0
  48. data/views/home.haml +23 -0
  49. data/views/integrity.sass +387 -0
  50. data/views/layout.haml +28 -0
  51. data/views/new.haml +51 -0
  52. data/views/not_found.haml +31 -0
  53. data/views/notifier.haml +7 -0
  54. data/views/project.builder +21 -0
  55. data/views/project.haml +28 -0
  56. data/views/unauthorized.haml +38 -0
  57. metadata +258 -0
@@ -0,0 +1,28 @@
1
+ !!! Strict
2
+ %html{ :lang => "en", :"xml:lang" => "en", :xmlns => "http://www.w3.org/1999/xhtml" }
3
+ %head
4
+ %meta{ :content => "text/html; charset=utf-8", :"http-equiv" => "Content-Type" }
5
+ %meta{ :content => "en", :"http-equiv" => "Content-Language" }
6
+ %title= "#{@title.last} | integrity"
7
+ %link{ :media => "screen", :type => "text/css", :href => "/reset.css", :rel => "stylesheet" }
8
+ %link{ :media => "screen", :type => "text/css", :href => "/buttons.css", :rel => "stylesheet" }
9
+ %link{ :media => "screen", :type => "text/css", :href => "/integrity.css", :rel => "stylesheet" }
10
+ - unless @project.nil?
11
+ %link{ :rel => "alternate", :type => "application/atom+xml", :title => "Build history Atom", :href => "#{project_path(@project)}.atom"}
12
+
13
+ %body
14
+ #header
15
+ %h1= @title.join(" / ")
16
+ %address.watermark
17
+ checked with
18
+ %a{ :href => "http://integrityapp.com", :title => "The fun continuous integration server" } integrity
19
+ #content= yield
20
+ - if Integrity.config && Integrity.config[:use_basic_auth]
21
+ #footer
22
+ - if authorized?
23
+ Oh, hello
24
+ %strong&= current_user
25
+ - else
26
+ Hey there!
27
+ %a{ :href => "/login" } Log In
28
+ if you have a user
@@ -0,0 +1,51 @@
1
+ %form{ :method => "post", :action => (@project.new_record? ? "/" : project_path(@project)) }
2
+ - unless @project.new_record?
3
+ .hidden
4
+ %input{ :name => "_method", :type => "hidden", :value => "put" }
5
+
6
+ %p.required{ :class => error_class(@project, :name) }
7
+ %label{ :for => "project_name" }<
8
+ &== Name #{errors_on @project, :name}
9
+ %input.text#project_name{ :name => "project_data[name]", :type => "text", :value => h(@project.name) }
10
+
11
+ %p.required{ :class => error_class(@project, :uri) }
12
+ %label{ :for => "project_repository" }<
13
+ &== Git repository #{errors_on @project, :uri}
14
+ %input.text#project_repository{ :name => "project_data[uri]", :type => "text", :value => h(@project.uri) }
15
+
16
+ %p.normal{ :class => error_class(@project, :branch) }
17
+ %label{ :for => "project_branch" }<
18
+ &== Branch to track #{errors_on @project, :branch}
19
+ %input.text#project_branch{ :name => "project_data[branch]", :type => "text", :value => "master", :value => h(@project.branch) }
20
+
21
+ %p.normal{ :class => error_class(@project, :command) }
22
+ %label{ :for => "project_build_script" }
23
+ &== Build script #{errors_on @project, :command}
24
+ %textarea#project_build_script{ :name => "project_data[command]", :cols => 40, :rows => 1 }
25
+ &== #{@project.command.to_s}
26
+
27
+ %p.normal.checkbox
28
+ %label{ :for => "project_public" } Public project
29
+ %input.hidden{ :name => "project_data[public]", :value => "0", :type => "hidden" }
30
+ %input.checkbox#project_public{ checkbox("project_data[public]", @project.public?) }
31
+
32
+ - Notifier.available.each do |notifier|
33
+ = notifier_form(notifier)
34
+
35
+ %p.submit
36
+ %button.positive{ :type => "submit" }= @project.new_record? ? "Create Project" : "Update Project"
37
+
38
+ - unless @project.new_record?
39
+ %h2 Push URL
40
+ %p
41
+ You can use this Push URL with your GitHub project to enable automated continuous integration.
42
+ %p
43
+ %code#push_url= push_url_for(@project)
44
+
45
+ %form{ :method => "post", :action => project_path(@project) }
46
+ .hidden
47
+ %input{ :name => "_method", :type => "hidden", :value => "delete" }
48
+ %h2 Delete this project
49
+ %p.submit.destroy
50
+ This will delete the project and all the builds in the system
51
+ %button.negative{ :type => "submit" } Yes, I'm sure, nuke it
@@ -0,0 +1,31 @@
1
+ .error
2
+ %h1
3
+ Ehm, you seem a bit lost, sir. Maybe going to the
4
+ %a{ :href => "/", :rel => "home" } list of projects
5
+ will help?
6
+ %dl
7
+ %dt Ouch. This is a 404 error-thingie, right?
8
+ %dd Yeah, you browsed to a page that doesn't exist in this server.
9
+
10
+ %dt What can I do?
11
+ %dd
12
+ As a very good book says on its cover:
13
+ = succeed "." do
14
+ %strong DON'T PANIC
15
+ / if you didn't get the reference you aren't as nerd as you should be
16
+ You should probably just go back to
17
+ %a{ :href => "/", :rel => "home" } the projects list
18
+ or, alternatively, go
19
+ = succeed "." do
20
+ %a{ :href => request.referer } back from whence you came
21
+
22
+ %dt
23
+ What the hell is
24
+ = succeed "?" do
25
+ %strong Integrity
26
+ %dd
27
+ Integrity is your friendly
28
+ %a{ :href => "http://en.wikipedia.org/wiki/Continuous_integration" } Continuous Integration
29
+ server. If you want to know more about us, check our website at
30
+ = succeed "." do
31
+ %a{ :href => "http://integrityapp.com" } integrityapp.com
@@ -0,0 +1,7 @@
1
+ %h2.notifier
2
+ %label
3
+ %input.checkbox{ checkbox("enabled_notifiers[]", enabled, :value => notifier, :id => "enabled_notifiers_#{notifier.downcase}") }
4
+ == #{notifier} Notifications
5
+ %span.warning be aware that no validation will be made on these fields
6
+ %fieldset{ :id => "#{notifier.downcase}_config" }
7
+ = yield
@@ -0,0 +1,21 @@
1
+ xml.instruct!
2
+ xml.feed :xmlns => "http://www.w3.org/2005/Atom" do
3
+ xml.title "Build history for #{@project.name}"
4
+ xml.subtitle @project.uri
5
+ xml.updated @project.builds.first.created_at
6
+ xml.link :href => "#{project_url(@project)}.atom", :rel => "self"
7
+ xml.id "#{project_url(@project)}.atom"
8
+
9
+ @project.builds.each do |build|
10
+ xml.entry do
11
+ xml.id build_url(build)
12
+ xml.link :href => build_url(build), :rel => "alternate", :type => "text/html"
13
+ xml.updated build.created_at
14
+ xml.published build.created_at
15
+
16
+ xml.title "Built #{build.short_commit_identifier} #{build.successful? ? "successfully" : "and failed"}"
17
+ xml.author { xml.name(build.commit_author.name) }
18
+ xml.content("<div>#{partial(:build_info, :build => build)}</div>", :type => "html")
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,28 @@
1
+ #administrative
2
+ %a{ :href => project_path(@project, :edit) } Edit Project
3
+
4
+ - if @project.builds.empty?
5
+ %form.blank_slate{ :action => project_path(@project, :builds), :method => :post }
6
+ %p No builds for this project, buddy
7
+ %h1
8
+ You can request a
9
+ %button{ :type => :submit } manual build
10
+ - else
11
+ - @build = @project.last_build
12
+ #last_build{ :class => @build.status }
13
+ = partial(:build_info, :build => @build)
14
+
15
+ %form{ :action => project_path(@project, :builds), :method => :post }
16
+ %p.submit
17
+ %button{ :type => :submit } Request Manual Build
18
+
19
+ - unless @project.previous_builds.empty?
20
+ %h2 Previous builds
21
+ %ul#previous_builds
22
+ - @project.previous_builds.each do |build|
23
+ %li{ :class => build.status }
24
+ %a{ :href => build_path(build) }
25
+ %strong.build<
26
+ &== Build #{build.short_commit_identifier}
27
+ %span.attribution<
28
+ == by #{build.commit_author.name}, #{pretty_date build.commited_at}
@@ -0,0 +1,38 @@
1
+ .error
2
+ %h1
3
+ So... you don't know the password? Hmm... You can
4
+ %a{ :href => "/login" } try again
5
+ or
6
+ = succeed "." do
7
+ %a{ :href => "/", :rel => "home" } go back
8
+
9
+ %dl
10
+ %dt Er... So... I'm trying to login without a password...
11
+ %dd
12
+ Hey pal, sorry, but I can't let in anyone that isn't
13
+ = succeed "." do
14
+ %strong on the list
15
+ I could lose my job you know? You'll have to come up with
16
+ a valid password :-(
17
+
18
+ %dt What can I do?
19
+ %dd
20
+ This just means that you can't access some part of this Integrity
21
+ server, but that shouldn't let you out of some of the
22
+ %a{ :href => "/" } awesome projects
23
+ hosted here. If this was just a misunderstanding and you
24
+ %strong do
25
+ have a password, then
26
+ = succeed "." do
27
+ %a{ :href => "/login" } click here to try again
28
+
29
+ %dt
30
+ So what the hell is
31
+ = succeed "?" do
32
+ %strong Integrity
33
+ %dd
34
+ Integrity is your friendly
35
+ %a{ :href => "http://en.wikipedia.org/wiki/Continuous_integration" } Continuous Integration
36
+ server. If you want to know more about us, check our website at
37
+ = succeed "." do
38
+ %a{ :href => "http://integrityapp.com" } integrityapp.com
metadata ADDED
@@ -0,0 +1,258 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: myronmarston-integrity
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.7.1
5
+ platform: ruby
6
+ authors:
7
+ - "Nicol\xC3\xA1s Sanguinetti"
8
+ - Simon Rozet
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2009-01-31 00:00:00 -08:00
14
+ default_executable: integrity
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: sinatra
18
+ type: :runtime
19
+ version_requirement:
20
+ version_requirements: !ruby/object:Gem::Requirement
21
+ requirements:
22
+ - - ">="
23
+ - !ruby/object:Gem::Version
24
+ version: 0.9.0.3
25
+ version:
26
+ - !ruby/object:Gem::Dependency
27
+ name: haml
28
+ type: :runtime
29
+ version_requirement:
30
+ version_requirements: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: "0"
35
+ version:
36
+ - !ruby/object:Gem::Dependency
37
+ name: dm-core
38
+ type: :runtime
39
+ version_requirement:
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ version: 0.9.5
45
+ version:
46
+ - !ruby/object:Gem::Dependency
47
+ name: dm-validations
48
+ type: :runtime
49
+ version_requirement:
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: 0.9.5
55
+ version:
56
+ - !ruby/object:Gem::Dependency
57
+ name: dm-types
58
+ type: :runtime
59
+ version_requirement:
60
+ version_requirements: !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ version: 0.9.5
65
+ version:
66
+ - !ruby/object:Gem::Dependency
67
+ name: dm-timestamps
68
+ type: :runtime
69
+ version_requirement:
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: 0.9.5
75
+ version:
76
+ - !ruby/object:Gem::Dependency
77
+ name: dm-aggregates
78
+ type: :runtime
79
+ version_requirement:
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: 0.9.5
85
+ version:
86
+ - !ruby/object:Gem::Dependency
87
+ name: dm-migrations
88
+ type: :runtime
89
+ version_requirement:
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ version: 0.9.5
95
+ version:
96
+ - !ruby/object:Gem::Dependency
97
+ name: data_objects
98
+ type: :runtime
99
+ version_requirement:
100
+ version_requirements: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: 0.9.5
105
+ version:
106
+ - !ruby/object:Gem::Dependency
107
+ name: do_sqlite3
108
+ type: :runtime
109
+ version_requirement:
110
+ version_requirements: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - ">="
113
+ - !ruby/object:Gem::Version
114
+ version: 0.9.5
115
+ version:
116
+ - !ruby/object:Gem::Dependency
117
+ name: json
118
+ type: :runtime
119
+ version_requirement:
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: "0"
125
+ version:
126
+ - !ruby/object:Gem::Dependency
127
+ name: foca-sinatra-diddies
128
+ type: :runtime
129
+ version_requirement:
130
+ version_requirements: !ruby/object:Gem::Requirement
131
+ requirements:
132
+ - - ">="
133
+ - !ruby/object:Gem::Version
134
+ version: 0.0.2
135
+ version:
136
+ - !ruby/object:Gem::Dependency
137
+ name: thor
138
+ type: :runtime
139
+ version_requirement:
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: "0"
145
+ version:
146
+ - !ruby/object:Gem::Dependency
147
+ name: uuidtools
148
+ type: :runtime
149
+ version_requirement:
150
+ version_requirements: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - ">="
153
+ - !ruby/object:Gem::Version
154
+ version: "0"
155
+ version:
156
+ - !ruby/object:Gem::Dependency
157
+ name: bcrypt-ruby
158
+ type: :runtime
159
+ version_requirement:
160
+ version_requirements: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - ">="
163
+ - !ruby/object:Gem::Version
164
+ version: "0"
165
+ version:
166
+ description: Your Friendly Continuous Integration server. Easy, fun and painless!
167
+ email: contacto@nicolassanguinetti.info
168
+ executables:
169
+ - integrity
170
+ extensions: []
171
+
172
+ extra_rdoc_files: []
173
+
174
+ files:
175
+ - README.markdown
176
+ - Rakefile
177
+ - VERSION.yml
178
+ - app.rb
179
+ - bin/integrity
180
+ - config/config.sample.ru
181
+ - config/config.sample.yml
182
+ - config/thin.sample.yml
183
+ - integrity.gemspec
184
+ - lib/integrity.rb
185
+ - lib/integrity/build.rb
186
+ - lib/integrity/core_ext/object.rb
187
+ - lib/integrity/core_ext/string.rb
188
+ - lib/integrity/helpers.rb
189
+ - lib/integrity/helpers/authorization.rb
190
+ - lib/integrity/helpers/breadcrumbs.rb
191
+ - lib/integrity/helpers/forms.rb
192
+ - lib/integrity/helpers/pretty_output.rb
193
+ - lib/integrity/helpers/rendering.rb
194
+ - lib/integrity/helpers/resources.rb
195
+ - lib/integrity/helpers/urls.rb
196
+ - lib/integrity/installer.rb
197
+ - lib/integrity/migrations.rb
198
+ - lib/integrity/notifier.rb
199
+ - lib/integrity/notifier/base.rb
200
+ - lib/integrity/project.rb
201
+ - lib/integrity/project_builder.rb
202
+ - lib/integrity/scm.rb
203
+ - lib/integrity/scm/git.rb
204
+ - lib/integrity/scm/git/uri.rb
205
+ - public/buttons.css
206
+ - public/reset.css
207
+ - public/spinner.gif
208
+ - test/helpers.rb
209
+ - test/helpers/acceptance.rb
210
+ - test/helpers/acceptance/git_helper.rb
211
+ - test/helpers/acceptance/textfile_notifier.rb
212
+ - test/helpers/expectations.rb
213
+ - test/helpers/expectations/be_a.rb
214
+ - test/helpers/expectations/change.rb
215
+ - test/helpers/expectations/have.rb
216
+ - test/helpers/expectations/have_tag.rb
217
+ - test/helpers/expectations/predicates.rb
218
+ - test/helpers/fixtures.rb
219
+ - views/_build_info.haml
220
+ - views/build.haml
221
+ - views/error.haml
222
+ - views/home.haml
223
+ - views/integrity.sass
224
+ - views/layout.haml
225
+ - views/new.haml
226
+ - views/not_found.haml
227
+ - views/notifier.haml
228
+ - views/project.builder
229
+ - views/project.haml
230
+ - views/unauthorized.haml
231
+ has_rdoc: false
232
+ homepage: http://integrityapp.com
233
+ post_install_message: Run `integrity help` for information on how to setup Integrity.
234
+ rdoc_options: []
235
+
236
+ require_paths:
237
+ - lib
238
+ required_ruby_version: !ruby/object:Gem::Requirement
239
+ requirements:
240
+ - - ">="
241
+ - !ruby/object:Gem::Version
242
+ version: "0"
243
+ version:
244
+ required_rubygems_version: !ruby/object:Gem::Requirement
245
+ requirements:
246
+ - - ">="
247
+ - !ruby/object:Gem::Version
248
+ version: "0"
249
+ version:
250
+ requirements: []
251
+
252
+ rubyforge_project: integrity
253
+ rubygems_version: 1.2.0
254
+ signing_key:
255
+ specification_version: 2
256
+ summary: The easy and fun Continuous Integration server
257
+ test_files: []
258
+