heidi 0.3.1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. data/Gemfile +1 -0
  2. data/Gemfile.lock +3 -0
  3. data/README.rdoc +20 -0
  4. data/VERSION +1 -1
  5. data/bin/heidi +8 -82
  6. data/heidi.gemspec +49 -10
  7. data/lib/heidi.rb +4 -0
  8. data/lib/heidi/build.rb +42 -10
  9. data/lib/heidi/builder.rb +7 -2
  10. data/lib/heidi/hook.rb +2 -0
  11. data/lib/heidi/integrator.rb +11 -5
  12. data/lib/heidi/project.rb +37 -24
  13. data/lib/heidi/shell.rb +119 -0
  14. data/lib/heidi/tester.rb +6 -5
  15. data/lib/heidi/web.rb +65 -4
  16. data/lib/heidi/web/assets/css/bootstrap-responsive.css +643 -0
  17. data/lib/heidi/web/assets/css/bootstrap.css +3682 -0
  18. data/lib/heidi/web/{public/css/screen.css → assets/css/colors.css} +1 -75
  19. data/lib/heidi/web/assets/css/docs.css +772 -0
  20. data/lib/heidi/web/{public → assets}/images/HeidiBlue-480.png +0 -0
  21. data/lib/heidi/web/{public → assets}/images/HeidiBlue.gif +0 -0
  22. data/lib/heidi/web/{public → assets}/images/OrganisedMinds.png +0 -0
  23. data/lib/heidi/web/{public → assets}/images/heidi.jpeg +0 -0
  24. data/lib/heidi/web/assets/img/glyphicons-halflings-white.png +0 -0
  25. data/lib/heidi/web/assets/img/glyphicons-halflings.png +0 -0
  26. data/lib/heidi/web/assets/img/glyphicons/glyphicons_009_magic.png +0 -0
  27. data/lib/heidi/web/assets/img/glyphicons/glyphicons_042_group.png +0 -0
  28. data/lib/heidi/web/assets/img/glyphicons/glyphicons_079_podium.png +0 -0
  29. data/lib/heidi/web/assets/img/glyphicons/glyphicons_082_roundabout.png +0 -0
  30. data/lib/heidi/web/assets/img/glyphicons/glyphicons_155_show_thumbnails.png +0 -0
  31. data/lib/heidi/web/assets/img/glyphicons/glyphicons_163_iphone.png +0 -0
  32. data/lib/heidi/web/assets/img/glyphicons/glyphicons_214_resize_small.png +0 -0
  33. data/lib/heidi/web/assets/img/glyphicons/glyphicons_266_book_open.png +0 -0
  34. data/lib/heidi/web/assets/js/README.md +106 -0
  35. data/lib/heidi/web/assets/js/application.js +180 -0
  36. data/lib/heidi/web/assets/js/bootstrap-alert.js +94 -0
  37. data/lib/heidi/web/assets/js/bootstrap-button.js +100 -0
  38. data/lib/heidi/web/assets/js/bootstrap-carousel.js +157 -0
  39. data/lib/heidi/web/assets/js/bootstrap-collapse.js +136 -0
  40. data/lib/heidi/web/assets/js/bootstrap-dropdown.js +92 -0
  41. data/lib/heidi/web/assets/js/bootstrap-modal.js +210 -0
  42. data/lib/heidi/web/assets/js/bootstrap-popover.js +95 -0
  43. data/lib/heidi/web/assets/js/bootstrap-scrollspy.js +125 -0
  44. data/lib/heidi/web/assets/js/bootstrap-tab.js +130 -0
  45. data/lib/heidi/web/assets/js/bootstrap-tooltip.js +270 -0
  46. data/lib/heidi/web/assets/js/bootstrap-transition.js +51 -0
  47. data/lib/heidi/web/assets/js/bootstrap-typeahead.js +271 -0
  48. data/lib/heidi/web/assets/js/google-code-prettify/prettify.css +30 -0
  49. data/lib/heidi/web/assets/js/google-code-prettify/prettify.js +28 -0
  50. data/lib/heidi/web/assets/js/jquery.js +9252 -0
  51. data/lib/heidi/web/views/build.erb +40 -24
  52. data/lib/heidi/web/views/commit.erb +10 -7
  53. data/lib/heidi/web/views/config.erb +34 -18
  54. data/lib/heidi/web/views/home.erb +44 -25
  55. data/lib/heidi/web/views/layout.erb +57 -4
  56. data/lib/heidi/web/views/new_project.erb +56 -0
  57. data/lib/heidi/web/views/project.erb +114 -32
  58. data/lib/heidi/web/views/project_header.erb +20 -0
  59. data/spec/heidi/build_spec.rb +163 -2
  60. data/spec/heidi/builder_spec.rb +61 -1
  61. data/spec/heidi/hook_spec.rb +47 -1
  62. data/spec/heidi/integrator_spec.rb +96 -1
  63. data/spec/heidi/project_spec.rb +177 -2
  64. data/spec/heidi/shell_spec.rb +67 -0
  65. data/spec/heidi/web_spec.rb +78 -2
  66. data/spec/heidi_spec.rb +16 -5
  67. data/spec/spec_helper.rb +1 -1
  68. data/spec/support/01_rworld.rb +9 -0
  69. data/spec/support/mock_project.rb +39 -0
  70. data/spec/support/survivable.rb +10 -0
  71. metadata +131 -79
  72. data/spec/heidi/tester_spec.rb +0 -5
@@ -0,0 +1,643 @@
1
+ /*!
2
+ * Bootstrap Responsive v2.0.1
3
+ *
4
+ * Copyright 2012 Twitter, Inc
5
+ * Licensed under the Apache License v2.0
6
+ * http://www.apache.org/licenses/LICENSE-2.0
7
+ *
8
+ * Designed and built with all the love in the world @twitter by @mdo and @fat.
9
+ */
10
+ .clearfix {
11
+ *zoom: 1;
12
+ }
13
+ .clearfix:before,
14
+ .clearfix:after {
15
+ display: table;
16
+ content: "";
17
+ }
18
+ .clearfix:after {
19
+ clear: both;
20
+ }
21
+ .hidden {
22
+ display: none;
23
+ visibility: hidden;
24
+ }
25
+ @media (max-width: 480px) {
26
+ .nav-collapse {
27
+ -webkit-transform: translate3d(0, 0, 0);
28
+ }
29
+ .page-header h1 small {
30
+ display: block;
31
+ line-height: 18px;
32
+ }
33
+ input[class*="span"],
34
+ select[class*="span"],
35
+ textarea[class*="span"],
36
+ .uneditable-input {
37
+ display: block;
38
+ width: 100%;
39
+ min-height: 28px;
40
+ /* Make inputs at least the height of their button counterpart */
41
+
42
+ /* Makes inputs behave like true block-level elements */
43
+
44
+ -webkit-box-sizing: border-box;
45
+ /* Older Webkit */
46
+
47
+ -moz-box-sizing: border-box;
48
+ /* Older FF */
49
+
50
+ -ms-box-sizing: border-box;
51
+ /* IE8 */
52
+
53
+ box-sizing: border-box;
54
+ /* CSS3 spec*/
55
+
56
+ }
57
+ .input-prepend input[class*="span"],
58
+ .input-append input[class*="span"] {
59
+ width: auto;
60
+ }
61
+ input[type="checkbox"],
62
+ input[type="radio"] {
63
+ border: 1px solid #ccc;
64
+ }
65
+ .form-horizontal .control-group > label {
66
+ float: none;
67
+ width: auto;
68
+ padding-top: 0;
69
+ text-align: left;
70
+ }
71
+ .form-horizontal .controls {
72
+ margin-left: 0;
73
+ }
74
+ .form-horizontal .control-list {
75
+ padding-top: 0;
76
+ }
77
+ .form-horizontal .form-actions {
78
+ padding-left: 10px;
79
+ padding-right: 10px;
80
+ }
81
+ .modal {
82
+ position: absolute;
83
+ top: 10px;
84
+ left: 10px;
85
+ right: 10px;
86
+ width: auto;
87
+ margin: 0;
88
+ }
89
+ .modal.fade.in {
90
+ top: auto;
91
+ }
92
+ .modal-header .close {
93
+ padding: 10px;
94
+ margin: -10px;
95
+ }
96
+ .carousel-caption {
97
+ position: static;
98
+ }
99
+ }
100
+ @media (max-width: 767px) {
101
+ .container {
102
+ width: auto;
103
+ padding: 0 20px;
104
+ }
105
+ .row-fluid {
106
+ width: 100%;
107
+ }
108
+ .row {
109
+ margin-left: 0;
110
+ }
111
+ .row > [class*="span"],
112
+ .row-fluid > [class*="span"] {
113
+ float: none;
114
+ display: block;
115
+ width: auto;
116
+ margin: 0;
117
+ }
118
+ }
119
+ @media (min-width: 768px) and (max-width: 979px) {
120
+ .row {
121
+ margin-left: -20px;
122
+ *zoom: 1;
123
+ }
124
+ .row:before,
125
+ .row:after {
126
+ display: table;
127
+ content: "";
128
+ }
129
+ .row:after {
130
+ clear: both;
131
+ }
132
+ [class*="span"] {
133
+ float: left;
134
+ margin-left: 20px;
135
+ }
136
+ .span1 {
137
+ width: 42px;
138
+ }
139
+ .span2 {
140
+ width: 104px;
141
+ }
142
+ .span3 {
143
+ width: 166px;
144
+ }
145
+ .span4 {
146
+ width: 228px;
147
+ }
148
+ .span5 {
149
+ width: 290px;
150
+ }
151
+ .span6 {
152
+ width: 352px;
153
+ }
154
+ .span7 {
155
+ width: 414px;
156
+ }
157
+ .span8 {
158
+ width: 476px;
159
+ }
160
+ .span9 {
161
+ width: 538px;
162
+ }
163
+ .span10 {
164
+ width: 600px;
165
+ }
166
+ .span11 {
167
+ width: 662px;
168
+ }
169
+ .span12,
170
+ .container {
171
+ width: 724px;
172
+ }
173
+ .offset1 {
174
+ margin-left: 82px;
175
+ }
176
+ .offset2 {
177
+ margin-left: 144px;
178
+ }
179
+ .offset3 {
180
+ margin-left: 206px;
181
+ }
182
+ .offset4 {
183
+ margin-left: 268px;
184
+ }
185
+ .offset5 {
186
+ margin-left: 330px;
187
+ }
188
+ .offset6 {
189
+ margin-left: 392px;
190
+ }
191
+ .offset7 {
192
+ margin-left: 454px;
193
+ }
194
+ .offset8 {
195
+ margin-left: 516px;
196
+ }
197
+ .offset9 {
198
+ margin-left: 578px;
199
+ }
200
+ .offset10 {
201
+ margin-left: 640px;
202
+ }
203
+ .offset11 {
204
+ margin-left: 702px;
205
+ }
206
+ .row-fluid {
207
+ width: 100%;
208
+ *zoom: 1;
209
+ }
210
+ .row-fluid:before,
211
+ .row-fluid:after {
212
+ display: table;
213
+ content: "";
214
+ }
215
+ .row-fluid:after {
216
+ clear: both;
217
+ }
218
+ .row-fluid > [class*="span"] {
219
+ float: left;
220
+ margin-left: 2.762430939%;
221
+ }
222
+ .row-fluid > [class*="span"]:first-child {
223
+ margin-left: 0;
224
+ }
225
+ .row-fluid > .span1 {
226
+ width: 5.801104972%;
227
+ }
228
+ .row-fluid > .span2 {
229
+ width: 14.364640883%;
230
+ }
231
+ .row-fluid > .span3 {
232
+ width: 22.928176794%;
233
+ }
234
+ .row-fluid > .span4 {
235
+ width: 31.491712705%;
236
+ }
237
+ .row-fluid > .span5 {
238
+ width: 40.055248616%;
239
+ }
240
+ .row-fluid > .span6 {
241
+ width: 48.618784527%;
242
+ }
243
+ .row-fluid > .span7 {
244
+ width: 57.182320438000005%;
245
+ }
246
+ .row-fluid > .span8 {
247
+ width: 65.74585634900001%;
248
+ }
249
+ .row-fluid > .span9 {
250
+ width: 74.30939226%;
251
+ }
252
+ .row-fluid > .span10 {
253
+ width: 82.87292817100001%;
254
+ }
255
+ .row-fluid > .span11 {
256
+ width: 91.436464082%;
257
+ }
258
+ .row-fluid > .span12 {
259
+ width: 99.999999993%;
260
+ }
261
+ input.span1,
262
+ textarea.span1,
263
+ .uneditable-input.span1 {
264
+ width: 32px;
265
+ }
266
+ input.span2,
267
+ textarea.span2,
268
+ .uneditable-input.span2 {
269
+ width: 94px;
270
+ }
271
+ input.span3,
272
+ textarea.span3,
273
+ .uneditable-input.span3 {
274
+ width: 156px;
275
+ }
276
+ input.span4,
277
+ textarea.span4,
278
+ .uneditable-input.span4 {
279
+ width: 218px;
280
+ }
281
+ input.span5,
282
+ textarea.span5,
283
+ .uneditable-input.span5 {
284
+ width: 280px;
285
+ }
286
+ input.span6,
287
+ textarea.span6,
288
+ .uneditable-input.span6 {
289
+ width: 342px;
290
+ }
291
+ input.span7,
292
+ textarea.span7,
293
+ .uneditable-input.span7 {
294
+ width: 404px;
295
+ }
296
+ input.span8,
297
+ textarea.span8,
298
+ .uneditable-input.span8 {
299
+ width: 466px;
300
+ }
301
+ input.span9,
302
+ textarea.span9,
303
+ .uneditable-input.span9 {
304
+ width: 528px;
305
+ }
306
+ input.span10,
307
+ textarea.span10,
308
+ .uneditable-input.span10 {
309
+ width: 590px;
310
+ }
311
+ input.span11,
312
+ textarea.span11,
313
+ .uneditable-input.span11 {
314
+ width: 652px;
315
+ }
316
+ input.span12,
317
+ textarea.span12,
318
+ .uneditable-input.span12 {
319
+ width: 714px;
320
+ }
321
+ }
322
+ @media (max-width: 979px) {
323
+ body {
324
+ padding-top: 0;
325
+ }
326
+ .navbar-fixed-top {
327
+ position: static;
328
+ margin-bottom: 18px;
329
+ }
330
+ .navbar-fixed-top .navbar-inner {
331
+ padding: 5px;
332
+ }
333
+ .navbar .container {
334
+ width: auto;
335
+ padding: 0;
336
+ }
337
+ .navbar .brand {
338
+ padding-left: 10px;
339
+ padding-right: 10px;
340
+ margin: 0 0 0 -5px;
341
+ }
342
+ .navbar .nav-collapse {
343
+ clear: left;
344
+ }
345
+ .navbar .nav {
346
+ float: none;
347
+ margin: 0 0 9px;
348
+ }
349
+ .navbar .nav > li {
350
+ float: none;
351
+ }
352
+ .navbar .nav > li > a {
353
+ margin-bottom: 2px;
354
+ }
355
+ .navbar .nav > .divider-vertical {
356
+ display: none;
357
+ }
358
+ .navbar .nav .nav-header {
359
+ color: #999999;
360
+ text-shadow: none;
361
+ }
362
+ .navbar .nav > li > a,
363
+ .navbar .dropdown-menu a {
364
+ padding: 6px 15px;
365
+ font-weight: bold;
366
+ color: #999999;
367
+ -webkit-border-radius: 3px;
368
+ -moz-border-radius: 3px;
369
+ border-radius: 3px;
370
+ }
371
+ .navbar .dropdown-menu li + li a {
372
+ margin-bottom: 2px;
373
+ }
374
+ .navbar .nav > li > a:hover,
375
+ .navbar .dropdown-menu a:hover {
376
+ background-color: #222222;
377
+ }
378
+ .navbar .dropdown-menu {
379
+ position: static;
380
+ top: auto;
381
+ left: auto;
382
+ float: none;
383
+ display: block;
384
+ max-width: none;
385
+ margin: 0 15px;
386
+ padding: 0;
387
+ background-color: transparent;
388
+ border: none;
389
+ -webkit-border-radius: 0;
390
+ -moz-border-radius: 0;
391
+ border-radius: 0;
392
+ -webkit-box-shadow: none;
393
+ -moz-box-shadow: none;
394
+ box-shadow: none;
395
+ }
396
+ .navbar .dropdown-menu:before,
397
+ .navbar .dropdown-menu:after {
398
+ display: none;
399
+ }
400
+ .navbar .dropdown-menu .divider {
401
+ display: none;
402
+ }
403
+ .navbar-form,
404
+ .navbar-search {
405
+ float: none;
406
+ padding: 9px 15px;
407
+ margin: 9px 0;
408
+ border-top: 1px solid #222222;
409
+ border-bottom: 1px solid #222222;
410
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
411
+ -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
412
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
413
+ }
414
+ .navbar .nav.pull-right {
415
+ float: none;
416
+ margin-left: 0;
417
+ }
418
+ .navbar-static .navbar-inner {
419
+ padding-left: 10px;
420
+ padding-right: 10px;
421
+ }
422
+ .btn-navbar {
423
+ display: block;
424
+ }
425
+ .nav-collapse {
426
+ overflow: hidden;
427
+ height: 0;
428
+ }
429
+ }
430
+ @media (min-width: 980px) {
431
+ .nav-collapse.collapse {
432
+ height: auto !important;
433
+ }
434
+ }
435
+ @media (min-width: 1200px) {
436
+ .row {
437
+ margin-left: -30px;
438
+ *zoom: 1;
439
+ }
440
+ .row:before,
441
+ .row:after {
442
+ display: table;
443
+ content: "";
444
+ }
445
+ .row:after {
446
+ clear: both;
447
+ }
448
+ [class*="span"] {
449
+ float: left;
450
+ margin-left: 30px;
451
+ }
452
+ .span1 {
453
+ width: 70px;
454
+ }
455
+ .span2 {
456
+ width: 170px;
457
+ }
458
+ .span3 {
459
+ width: 270px;
460
+ }
461
+ .span4 {
462
+ width: 370px;
463
+ }
464
+ .span5 {
465
+ width: 470px;
466
+ }
467
+ .span6 {
468
+ width: 570px;
469
+ }
470
+ .span7 {
471
+ width: 670px;
472
+ }
473
+ .span8 {
474
+ width: 770px;
475
+ }
476
+ .span9 {
477
+ width: 870px;
478
+ }
479
+ .span10 {
480
+ width: 970px;
481
+ }
482
+ .span11 {
483
+ width: 1070px;
484
+ }
485
+ .span12,
486
+ .container {
487
+ width: 1170px;
488
+ }
489
+ .offset1 {
490
+ margin-left: 130px;
491
+ }
492
+ .offset2 {
493
+ margin-left: 230px;
494
+ }
495
+ .offset3 {
496
+ margin-left: 330px;
497
+ }
498
+ .offset4 {
499
+ margin-left: 430px;
500
+ }
501
+ .offset5 {
502
+ margin-left: 530px;
503
+ }
504
+ .offset6 {
505
+ margin-left: 630px;
506
+ }
507
+ .offset7 {
508
+ margin-left: 730px;
509
+ }
510
+ .offset8 {
511
+ margin-left: 830px;
512
+ }
513
+ .offset9 {
514
+ margin-left: 930px;
515
+ }
516
+ .offset10 {
517
+ margin-left: 1030px;
518
+ }
519
+ .offset11 {
520
+ margin-left: 1130px;
521
+ }
522
+ .row-fluid {
523
+ width: 100%;
524
+ *zoom: 1;
525
+ }
526
+ .row-fluid:before,
527
+ .row-fluid:after {
528
+ display: table;
529
+ content: "";
530
+ }
531
+ .row-fluid:after {
532
+ clear: both;
533
+ }
534
+ .row-fluid > [class*="span"] {
535
+ float: left;
536
+ margin-left: 2.564102564%;
537
+ }
538
+ .row-fluid > [class*="span"]:first-child {
539
+ margin-left: 0;
540
+ }
541
+ .row-fluid > .span1 {
542
+ width: 5.982905983%;
543
+ }
544
+ .row-fluid > .span2 {
545
+ width: 14.529914530000001%;
546
+ }
547
+ .row-fluid > .span3 {
548
+ width: 23.076923077%;
549
+ }
550
+ .row-fluid > .span4 {
551
+ width: 31.623931624%;
552
+ }
553
+ .row-fluid > .span5 {
554
+ width: 40.170940171000005%;
555
+ }
556
+ .row-fluid > .span6 {
557
+ width: 48.717948718%;
558
+ }
559
+ .row-fluid > .span7 {
560
+ width: 57.264957265%;
561
+ }
562
+ .row-fluid > .span8 {
563
+ width: 65.81196581200001%;
564
+ }
565
+ .row-fluid > .span9 {
566
+ width: 74.358974359%;
567
+ }
568
+ .row-fluid > .span10 {
569
+ width: 82.905982906%;
570
+ }
571
+ .row-fluid > .span11 {
572
+ width: 91.45299145300001%;
573
+ }
574
+ .row-fluid > .span12 {
575
+ width: 100%;
576
+ }
577
+ input.span1,
578
+ textarea.span1,
579
+ .uneditable-input.span1 {
580
+ width: 60px;
581
+ }
582
+ input.span2,
583
+ textarea.span2,
584
+ .uneditable-input.span2 {
585
+ width: 160px;
586
+ }
587
+ input.span3,
588
+ textarea.span3,
589
+ .uneditable-input.span3 {
590
+ width: 260px;
591
+ }
592
+ input.span4,
593
+ textarea.span4,
594
+ .uneditable-input.span4 {
595
+ width: 360px;
596
+ }
597
+ input.span5,
598
+ textarea.span5,
599
+ .uneditable-input.span5 {
600
+ width: 460px;
601
+ }
602
+ input.span6,
603
+ textarea.span6,
604
+ .uneditable-input.span6 {
605
+ width: 560px;
606
+ }
607
+ input.span7,
608
+ textarea.span7,
609
+ .uneditable-input.span7 {
610
+ width: 660px;
611
+ }
612
+ input.span8,
613
+ textarea.span8,
614
+ .uneditable-input.span8 {
615
+ width: 760px;
616
+ }
617
+ input.span9,
618
+ textarea.span9,
619
+ .uneditable-input.span9 {
620
+ width: 860px;
621
+ }
622
+ input.span10,
623
+ textarea.span10,
624
+ .uneditable-input.span10 {
625
+ width: 960px;
626
+ }
627
+ input.span11,
628
+ textarea.span11,
629
+ .uneditable-input.span11 {
630
+ width: 1060px;
631
+ }
632
+ input.span12,
633
+ textarea.span12,
634
+ .uneditable-input.span12 {
635
+ width: 1160px;
636
+ }
637
+ .thumbnails {
638
+ margin-left: -30px;
639
+ }
640
+ .thumbnails > li {
641
+ margin-left: 30px;
642
+ }
643
+ }