shagit 0.3.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,7 @@
1
+ /*
2
+ Copyright (c) 2008, Yahoo! Inc. All rights reserved.
3
+ Code licensed under the BSD License:
4
+ http://developer.yahoo.net/yui/license.txt
5
+ version: 2.5.2
6
+ */
7
+ html{color:#000;background:#FFF;}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}li{list-style:none;}caption,th{text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}q:before,q:after{content:'';}abbr,acronym {border:0;font-variant:normal;}sup {vertical-align:text-top;}sub {vertical-align:text-bottom;}input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit;}input,textarea,select{*font-size:100%;}legend{color:#000;}
@@ -0,0 +1,354 @@
1
+ html {
2
+ background-color: #e0e0e0; }
3
+
4
+ body {
5
+ font-size: 100%;
6
+ font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
7
+ color: #333333; }
8
+
9
+ a {
10
+ color: #73de2d;
11
+ text-decoration: none; }
12
+ a:hover {
13
+ color: #fff;
14
+ background-color: #73de2d; }
15
+
16
+ #header, #content, #footer {
17
+ width: 40em;
18
+ margin: 0 auto;
19
+ background: #eeeeee;
20
+ padding: 0 2em;
21
+ z-index: 0;
22
+ position: relative;
23
+ font-size: 1em; }
24
+
25
+ #header {
26
+ background: white; }
27
+ #header h1 {
28
+ font-weight: bold;
29
+ font-size: 1.5em; }
30
+ #header address.watermark {
31
+ position: absolute;
32
+ font-weight: bold;
33
+ right: 3em;
34
+ top: 0;
35
+ font-size: .75em;
36
+ color: #cccccc; }
37
+ #header address.watermark a {
38
+ color: #cccccc;
39
+ font-weight: bold;
40
+ font-size: 2em; }
41
+ #header address.watermark a:hover {
42
+ background: transparent;
43
+ color: #aaaaaa; }
44
+
45
+ #content {
46
+ padding-top: 1em;
47
+ padding-bottom: 2em; }
48
+ #content strong {
49
+ font-weight: bold; }
50
+ #content em {
51
+ font-style: italic; }
52
+ #content h1, #content h2, #content h3, #content h4, #content h5, #content h6 {
53
+ color: #4e4e4e; }
54
+ #content h1 {
55
+ font-size: 2em;
56
+ font-weight: bold;
57
+ margin-bottom: .75em;
58
+ padding: .25em 0;
59
+ line-height: 1.2;
60
+ border-bottom: 1px solid silver; }
61
+ #content h2 {
62
+ font-weight: bold;
63
+ font-size: 1.5em;
64
+ margin: 1em 0 .2em; }
65
+ #content h3 {
66
+ font-weight: bold;
67
+ font-size: 1.25em;
68
+ margin: .25em 0; }
69
+ #content h4, #content h5, #content h6 {
70
+ font-weight: bold;
71
+ margin-top: .5em; }
72
+ #content code, #content pre, #content textarea, #content input {
73
+ font-family: Monaco, Deja Vu Sans Mono, Inconsolata, Consolas, monospace; }
74
+ #content pre {
75
+ margin: .5em;
76
+ padding: .5em; }
77
+ #content form p {
78
+ margin-top: 1em;
79
+ position: relative; }
80
+ #content form p.checkbox label {
81
+ margin-top: 0 !important; }
82
+ #content form input.text, #content form textarea, #content form select {
83
+ width: 30em;
84
+ padding: .2em .4em;
85
+ color: #4e4e4e; }
86
+ #content form input.text {
87
+ height: 1.4em; }
88
+ #content form label {
89
+ float: left;
90
+ display: block;
91
+ margin-top: .5em;
92
+ width: 8em;
93
+ margin-right: .75em; }
94
+ #content form .with_errors label {
95
+ background: red;
96
+ color: white;
97
+ position: relative;
98
+ top: -.7em; }
99
+ #content form .with_errors.required label {
100
+ position: static;
101
+ margin-right: .25em;
102
+ padding: 0 .2em; }
103
+ #content form .with_errors input, #content form .with_errors textarea, #content form .with_errors select {
104
+ border: 2px solid #f22;
105
+ background: #fee;
106
+ color: #222222; }
107
+ #content form .required label {
108
+ float: none;
109
+ display: block;
110
+ width: auto;
111
+ position: relative;
112
+ font-weight: bold;
113
+ margin-top: 1em;
114
+ text-indent: -.65em; }
115
+ #content form .required label:before {
116
+ content: "* ";
117
+ color: #73de2d; }
118
+ #content form .required input.text {
119
+ width: 25.6em;
120
+ font-size: 24px;
121
+ font-weight: bold; }
122
+ #content form .normal {
123
+ margin-top: 2em; }
124
+ #content form h2.notifier label {
125
+ float: none;
126
+ width: auto;
127
+ margin-right: 0; }
128
+ #content form h2.notifier label .warning {
129
+ font-size: .5em;
130
+ font-weight: normal;
131
+ color: #999999; }
132
+ #content form fieldset {
133
+ padding-bottom: 1em;
134
+ margin-left: 1.35em;
135
+ border-bottom: 1px solid silver;
136
+ margin-bottom: 1em; }
137
+ #content form fieldset h3 {
138
+ margin-top: 1em;
139
+ margin-bottom: 0; }
140
+ #content form fieldset p.normal {
141
+ margin-top: 1em; }
142
+ #content form fieldset p label {
143
+ width: 6.7em; }
144
+ #content form p.submit {
145
+ margin-top: 2em; }
146
+ #content form p.submit:after {
147
+ display: block;
148
+ clear: both;
149
+ float: none;
150
+ content: ".";
151
+ text-indent: -9999em;
152
+ text-align: left; }
153
+ #content form p.submit.destroy button, #content form p.submit.manual-build button {
154
+ float: none;
155
+ display: inline; }
156
+ #content form p.submit.manual-build button {
157
+ margin-right: 0; }
158
+ #content #build form, #content #last_build form {
159
+ font-size: .75em; }
160
+ #content #build form p.submit, #content #last_build form p.submit {
161
+ margin: 0;
162
+ padding: 0;
163
+ position: absolute;
164
+ right: .5em;
165
+ top: 1.25em; }
166
+ #content .blank_slate p, #content .error p {
167
+ position: relative;
168
+ top: .3em; }
169
+ #content .blank_slate h1, #content .error h1 {
170
+ border-width: 0;
171
+ margin: 0;
172
+ padding: 0; }
173
+ #content .blank_slate h1 button, #content .error h1 button {
174
+ float: none;
175
+ border: 0 none;
176
+ background: transparent;
177
+ display: inline;
178
+ color: #73de2d;
179
+ padding: 0.25em 0;
180
+ margin: 0; }
181
+ #content .blank_slate h1 button:hover, #content .error h1 button:hover {
182
+ background: #73de2d;
183
+ color: #fff; }
184
+ #content .error dt {
185
+ margin-top: 1.4em;
186
+ margin-bottom: .3em;
187
+ font-size: 1.75em;
188
+ font-family: Georgia, Times New Roman, serif; }
189
+ #content .error dd {
190
+ line-height: 1.4; }
191
+ #content .error .backtrace {
192
+ margin: 1em 0;
193
+ overflow: "scroll";
194
+ height: 30em;
195
+ border: 1px solid silver;
196
+ line-height: 1.6; }
197
+ #content #projects {
198
+ margin: 1em 0 2em;
199
+ border-top: 1px solid silver; }
200
+ #content #projects li {
201
+ position: relative;
202
+ border-bottom: 1px solid silver; }
203
+ #content #projects li.odd {
204
+ background: #e6e6e6; }
205
+ #content #projects li a {
206
+ font-size: 2em;
207
+ padding: .25em;
208
+ line-height: 1.2;
209
+ font-weight: bold;
210
+ display: block; }
211
+ #content #projects li a.success {
212
+ color: #337022; }
213
+ #content #projects li a.failed {
214
+ color: #ff1100; }
215
+ #content #projects li a.building {
216
+ color: #777777; }
217
+ #content #projects li .meta {
218
+ position: absolute;
219
+ right: .6em;
220
+ top: 1.5em;
221
+ font-size: 0.8em;
222
+ color: #999999;
223
+ text-align: right; }
224
+ #content #projects li.success .meta {
225
+ color: #337022; }
226
+ #content #projects li.failed .meta {
227
+ color: #ff1100; }
228
+ #content #projects li.building .meta {
229
+ color: #777777; }
230
+ #content #previous_builds li a {
231
+ display: block;
232
+ padding: .25em;
233
+ margin-bottom: .25em;
234
+ border-width: 1px;
235
+ border-style: solid; }
236
+ #content #previous_builds li a strong {
237
+ font-size: 1.3em; }
238
+ #content #previous_builds li a .attribution {
239
+ font-size: .9em; }
240
+ #content #projects li.success a, #content #previous_builds li.success a {
241
+ background-color: #bbf8aa;
242
+ border-color: #99d688;
243
+ color: #337022; }
244
+ #content #projects li.success a .attribution, #content #previous_builds li.success a .attribution {
245
+ color: #77b466; }
246
+ #content #projects li.success a:hover, #content #previous_builds li.success a:hover {
247
+ background-color: #ddffcc; }
248
+ #content #projects li.failed a, #content #previous_builds li.failed a {
249
+ background-color: #ffbbaa;
250
+ border-color: #dd9988;
251
+ color: #ff1100; }
252
+ #content #projects li.failed a .attribution, #content #previous_builds li.failed a .attribution {
253
+ color: #bb7766; }
254
+ #content #projects li.failed a:hover, #content #previous_builds li.failed a:hover {
255
+ background-color: #ffddcc; }
256
+ #content #projects li.building a, #content #previous_builds li.building a {
257
+ background-color: #cccccc;
258
+ border-color: #aaaaaa;
259
+ color: #777777; }
260
+ #content #projects li.building a .attribution, #content #previous_builds li.building a .attribution {
261
+ color: #888888; }
262
+ #content #projects li.building a:hover, #content #previous_builds li.building a:hover {
263
+ background-color: #eeeeee; }
264
+ #content #build, #content #last_build {
265
+ position: relative; }
266
+ #content #build h1, #content #build blockquote, #content #last_build h1, #content #last_build blockquote {
267
+ border-width: 0 1px;
268
+ border-style: solid; }
269
+ #content #build h1, #content #last_build h1 {
270
+ border-top-width: 1px; }
271
+ #content #build blockquote, #content #last_build blockquote {
272
+ bottom-bottom-width: 1px;
273
+ line-height: 1.4; }
274
+ #content #build.success h1, #content #build.success blockquote, #content #last_build.success h1, #content #last_build.success blockquote {
275
+ background-color: #bbf8aa;
276
+ border-color: #99d688 #ccffbb #ccffbb #99d688; }
277
+ #content #build.success h1, #content #last_build.success h1 {
278
+ color: #337022; }
279
+ #content #build.success .meta, #content #last_build.success .meta {
280
+ color: #77b466; }
281
+ #content #build.failed h1, #content #build.failed blockquote, #content #last_build.failed h1, #content #last_build.failed blockquote {
282
+ background-color: #ffbbaa;
283
+ border-color: #dd9988 #ffccbb #ffccbb #dd9988; }
284
+ #content #build.failed h1, #content #last_build.failed h1 {
285
+ color: #ff1100; }
286
+ #content #build.failed .meta, #content #last_build.failed .meta {
287
+ color: #bb7766; }
288
+ #content #build.building h1, #content #build.building blockquote, #content #last_build.building h1, #content #last_build.building blockquote {
289
+ background-color: #cccccc;
290
+ border-color: #aaaaaa #dddddd #dddddd #aaaaaa; }
291
+ #content #build.building h1, #content #last_build.building h1 {
292
+ color: #777777; }
293
+ #content #build.building .meta, #content #last_build.building .meta {
294
+ color: #333333; }
295
+ #content #build h1, #content #last_build h1 {
296
+ margin-top: .5em;
297
+ margin-bottom: 0;
298
+ padding: .25em;
299
+ color: #337022; }
300
+ #content #build blockquote, #content #last_build blockquote {
301
+ padding: .75em;
302
+ margin-bottom: 2em; }
303
+ #content #build blockquote .meta, #content #last_build blockquote .meta {
304
+ margin-top: 1em;
305
+ display: block;
306
+ font-size: .9em; }
307
+ #content #build pre.output, #content #last_build pre.output {
308
+ background: #111;
309
+ color: #fff;
310
+ padding: .5em;
311
+ overflow: auto;
312
+ max-height: 50em;
313
+ font-size: .825em; }
314
+ #content #build pre.output .color30, #content #last_build pre.output .color30 {
315
+ color: #333; }
316
+ #content #build pre.output .color31, #content #last_build pre.output .color31 {
317
+ color: #e33; }
318
+ #content #build pre.output .color32, #content #last_build pre.output .color32 {
319
+ color: #3e3; }
320
+ #content #build pre.output .color33, #content #last_build pre.output .color33 {
321
+ color: #ee3; }
322
+ #content #build pre.output .color34, #content #last_build pre.output .color34 {
323
+ color: #33e; }
324
+ #content #build pre.output .color35, #content #last_build pre.output .color35 {
325
+ color: #e3e; }
326
+ #content #build pre.output .color36, #content #last_build pre.output .color36 {
327
+ color: #3ee; }
328
+ #content #build pre.output .color37, #content #last_build pre.output .color37 {
329
+ color: #fff; }
330
+ #content #push_path {
331
+ display: block;
332
+ margin-top: 1em;
333
+ margin-left: 2em; }
334
+
335
+ a.success {
336
+ color: #bbf8aa; }
337
+ a.success:hover {
338
+ background-color: #bbf8aa;
339
+ color: white; }
340
+ a.failed {
341
+ color: #ffbbaa; }
342
+ a.failed:hover {
343
+ background-color: #ffbbaa;
344
+ color: white; }
345
+
346
+ #footer {
347
+ padding: 1.5em 2.5em;
348
+ border-top: 1px solid #ccc;
349
+ font-size: .8em;
350
+ width: 50em !important;
351
+ color: #666;
352
+ text-align: right; }
353
+ #footer strong {
354
+ font-weight: bold; }
@@ -0,0 +1,99 @@
1
+ begin
2
+ GEM = "shagit"
3
+ AUTHOR = "Martin Gajdos"
4
+ EMAIL = "contact@roboprojects.com"
5
+ SUMMARY = "A simple web application for local, private git repository management"
6
+ HOMEPAGE = "http://github.com/unabatede/shagit"
7
+ INSTALL_MESSAGE = %q{
8
+ ========================================================================
9
+ Thanks for installing Shagit!
10
+ ------------------------------------------------------------------------
11
+ Please set the path to your working directory within the config.yml file
12
+ before starting Shagit.
13
+
14
+ Once you're done, you can start Shagit by running the following command:
15
+ shagit
16
+
17
+ For a production environment you should consider using Phusion Passenger
18
+ or any of the other known Ruby deployment solutions that can be run as a
19
+ daemon.
20
+
21
+ Find out more and get involved:
22
+ http://github.com/unabatede/shagit
23
+ ========================================================================
24
+ }
25
+
26
+ gem 'jeweler', '>= 1.0.0'
27
+ require 'jeweler'
28
+
29
+ Jeweler::Tasks.new do |s|
30
+ s.name = GEM
31
+ s.summary = SUMMARY
32
+ s.email = EMAIL
33
+ s.homepage = HOMEPAGE
34
+ s.description = SUMMARY
35
+ s.author = AUTHOR
36
+ s.post_install_message = INSTALL_MESSAGE
37
+ s.executables = ["shagit"]
38
+
39
+ s.require_path = 'lib'
40
+ s.files = %w(LICENSE CHANGES README.md config.ru config.yml shagit_app.rb VERSION.yml rakefile) + Dir.glob("{lib,public,views,test}/**/*")
41
+
42
+ # Runtime dependencies: When installing Formtastic these will be checked if they are installed.
43
+ # Will be offered to install these if they are not already installed.
44
+ s.add_dependency 'sinatra', '>= 0.9.4'
45
+ s.add_dependency 'haml', '>= 2.2.20'
46
+ s.add_dependency 'grit', '>= 2.0.0'
47
+
48
+ # Development dependencies. Not installed by default.
49
+ # Install with: sudo gem install shagit --development
50
+ s.add_development_dependency 'rack-test', '>= 0.5.3'
51
+ s.add_development_dependency 'webrat', '>= 0.7.0'
52
+ end
53
+
54
+ Jeweler::GemcutterTasks.new
55
+ rescue LoadError
56
+ puts "[shagit:] Jeweler - or one of its dependencies - is not available. Install it using superuser-rights with: gem install jeweler"
57
+ end
58
+
59
+ task :default => [:setup, :setup_config]
60
+
61
+ desc "This task will install all required gems by Shagit"
62
+ task :setup do
63
+ sh "gem install sinatra haml grit --no-ri --no-rdoc"
64
+ end
65
+
66
+ task :setup_dev_gems do
67
+ sh "gem install sinatra haml grit rack-test webrat jeweler --no-ri --no-rdoc"
68
+ end
69
+
70
+ task :test => [:unit_tests, :acceptance_tests]
71
+
72
+ desc "This task will run all unit tests located within the test/unit directory"
73
+ task :unit_tests do
74
+ #require 'rake/runtest'
75
+ #Rake.run_tests 'test/unit/*test.rb'
76
+ print "please run these tests manually by changing to test/unit and executing shagit_test.rb"
77
+ end
78
+
79
+ desc "This task will run all acceptance tests located within the test/acceptance directory"
80
+ task :acceptance_tests do
81
+ require 'rake/runtest'
82
+ Rake.run_tests 'test/acceptance/*test.rb'
83
+ end
84
+
85
+ desc "This task will generate the gemspec file and afterwards create the gem based on it"
86
+ task :build_gem => [:clean, :gemspec] do
87
+ sh "gem build shagit.gemspec"
88
+ end
89
+
90
+ desc "This task will remove all temporary and generated files"
91
+ task :clean do
92
+ puts "cleaning up..."
93
+ Dir.new(".").each do |filename|
94
+ if filename =~ /\w+\.gem|.log|.html/
95
+ puts "removing file: #{filename}"
96
+ File.delete(filename)
97
+ end
98
+ end
99
+ end