middleman-build-reporter 0.0.1 → 0.0.2

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.
Files changed (26) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/README.md +56 -4
  4. data/features/build_reporter.feature +2 -1
  5. data/features/build_reporter_fingerprint_helper.feature +6 -0
  6. data/features/step_definitions/build_reporter_fingerprint_steps.rb +8 -0
  7. data/fixtures/build-reporter-fingerprint/build/images/background.png +0 -0
  8. data/fixtures/build-reporter-fingerprint/build/images/middleman.png +0 -0
  9. data/fixtures/build-reporter-fingerprint/build/javascripts/all.js +1 -0
  10. data/fixtures/build-reporter-fingerprint/build/stylesheets/all.css +55 -0
  11. data/fixtures/build-reporter-fingerprint/build/stylesheets/normalize.css +375 -0
  12. data/fixtures/build-reporter-fingerprint/config.rb +4 -0
  13. data/fixtures/build-reporter-fingerprint/source/images/background.png +0 -0
  14. data/fixtures/build-reporter-fingerprint/source/images/middleman.png +0 -0
  15. data/fixtures/build-reporter-fingerprint/source/index.html.erb +11 -0
  16. data/fixtures/build-reporter-fingerprint/source/javascripts/all.js +1 -0
  17. data/fixtures/build-reporter-fingerprint/source/layouts/layout.erb +19 -0
  18. data/fixtures/build-reporter-fingerprint/source/stylesheets/all.css +55 -0
  19. data/fixtures/build-reporter-fingerprint/source/stylesheets/normalize.css +375 -0
  20. data/lib/middleman-build-reporter/extension.rb +15 -9
  21. data/lib/middleman-build-reporter/reporter.rb +10 -13
  22. data/lib/middleman-build-reporter/version.rb +1 -1
  23. data/middleman-build-reporter.gemspec +9 -9
  24. data/spec/middleman-build-reporter/extension_spec.rb +3 -8
  25. data/spec/middleman-build-reporter/reporter_spec.rb +15 -27
  26. metadata +53 -36
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b39877eb52f82b5dd645fa574f290dabbeda31ab
4
- data.tar.gz: c4eda5340278dd8a1805c36c73b94cabdbd804be
3
+ metadata.gz: 7582879cb653cc74131e0ef87e4f1598aada2ab9
4
+ data.tar.gz: 10a658adb6abe171a25b7b5304476792d50156f9
5
5
  SHA512:
6
- metadata.gz: 2fd1ef6f55335ae01ada5ec5015463e21c931c7d15a40bd5ed4ff05ba4c389043486a5df21e2db02891b8a6555fc70d9f8d1d6636ca0575ce1029667f6895ec5
7
- data.tar.gz: bfb45f439283acac26763344244d6bfba9f530a2ad62ce1e3a1ef47f728194c134fa354483ca53cbef10e95ac7b06be569bc6bad3de3f4f819fdf5c2ac124aa9
6
+ metadata.gz: 7effe01a14c4a2d786a9876a9152f17999bd18e3f08d695a792bc6cdec68158d69918b54ec43410058f008501d0579a5d2d13730dc7682b359912cd5ca20425e
7
+ data.tar.gz: 2af823834b00d8b6b5955a4d3bb7b4001ec07b784f94cb48403dcbf0bbceca0691ed4b1050a9de14e3a13dac454fd026b787811dd5b1083bf6a7f313cd7ef5d7
data/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
+ pkg
1
2
  tmp
2
3
  Gemfile.lock
3
4
  coverage
data/README.md CHANGED
@@ -2,9 +2,12 @@
2
2
 
3
3
  # middleman-build-reporter
4
4
 
5
- Fingerprint your [Middleman](http://middlemanapp.com) build with YAML and/or JSON files reporting build-time details.
5
+ middleman-build-reporter helps you understand what code has been deployed to an environment, and whether you're viewing cached or stale build artifacts.
6
6
 
7
- middleman-build-reporter helps you understand what code has been deployed to an environment.
7
+ Features:
8
+
9
+ 1. Generate YAML and/or JSON files reporting build-time/version details for your [Middleman](http://middlemanapp.com) app.
10
+ 2. Fingerprint each Middleman HTML template with a `<!-- FINGERPRINT -->` comment surfacing build-time/version details.
8
11
 
9
12
  ## Output
10
13
 
@@ -30,6 +33,19 @@ The `build/build.json`:
30
33
  }
31
34
  ```
32
35
 
36
+ middleman-build-reporter also offers a `build_reporter_fingerprint` helper to fingerprint HTML templates:
37
+
38
+ ```html
39
+ <!--
40
+ FINGERPRINT:
41
+ ---
42
+ branch: master
43
+ revision: c786c0addcde128a0823c40ebb4a3ab453411f10
44
+ build_time: '2014-10-21 07:27:51 -0400'
45
+ version: 1.2.3
46
+ --!>
47
+ ```
48
+
33
49
  ## Usage
34
50
 
35
51
  In your `Gemfile`:
@@ -70,10 +86,41 @@ activate :build_reporter do |build|
70
86
  # optional; an array of desired build reporter file formats
71
87
  # supported formats: yaml, json
72
88
  # defaults to ['yaml']
73
- build.reporter_file_formats = ['json', 'json']
89
+ build.reporter_file_formats = ['yaml', 'json']
74
90
  end
75
91
  ```
76
92
 
93
+ ## Fingerprinting you HTML templates
94
+
95
+ Use the `build_reporter_fingerprint` to fingerprint your HTML templates with build/version details:
96
+
97
+ Example usage in `layouts/layout.erb`:
98
+
99
+ ```html
100
+ <body>
101
+ <h1>Some Site</h1>
102
+ </body>
103
+
104
+ <%= build_reporter_fingerprint %>
105
+ ```
106
+
107
+ Example fingerprint HTML comment:
108
+
109
+ ```html
110
+ <body>
111
+ <h1>Some Site</h1>
112
+ </body>
113
+
114
+ <!--
115
+ FINGERPRINT:
116
+ ---
117
+ branch: master
118
+ revision: c786c0addcde128a0823c40ebb4a3ab453411f10
119
+ build_time: '2014-10-21 07:27:51 -0400'
120
+ version: 1.2.3
121
+ --!>
122
+ ```
123
+
77
124
  ## Reporting additional custom build details
78
125
 
79
126
  Add any additional build details to a `.build_reporter.yml` file in your project's root.
@@ -87,6 +134,7 @@ The `.build_reporter.yml`:
87
134
  ```
88
135
  ---
89
136
  foo: 'bar'
137
+ baz: 'bim'
90
138
  ```
91
139
 
92
140
  The output `build/build.yaml`:
@@ -97,15 +145,19 @@ revision: 244921c81c9e21a1973659df5f702937b91cfcd4
97
145
  build_time: 2014-09-20 10:50:55 -0400
98
146
  version: 1.2.3
99
147
  foo: bar
148
+ baz: bim
100
149
  ```
101
150
 
102
151
  ### Example - using .build_reporter.yml to override built-in middleman-build-reporter details:
103
152
 
153
+ The `.build_reporter.yml` file can also override the values set by `Middleman::BuildReporter::Reporter`.
154
+
104
155
  The `.build_reporter.yml`:
105
156
 
106
157
  ```
107
158
  ---
108
159
  revision: 'some_revision'
160
+ build_time: 'some_other_time'
109
161
  ```
110
162
 
111
163
  The output `build/build.yaml`:
@@ -113,6 +165,6 @@ The output `build/build.yaml`:
113
165
  ```
114
166
  branch: master
115
167
  revision: some_revision
116
- build_time: 2014-09-20 10:50:55 -0400
168
+ build_time: some_other_time
117
169
  version: 1.2.3
118
170
  ```
@@ -1,7 +1,8 @@
1
1
  Feature: Build reporter
2
2
 
3
3
  Scenario: build.yaml should report a branch
4
- Given a successfully built app at "basic-app"
4
+ Given a fixture app "basic-app"
5
+ And a successfully built app at "basic-app"
5
6
  When I cd to "build"
6
7
  Then the file "build.yaml" should report the current branch
7
8
 
@@ -0,0 +1,6 @@
1
+ Feature: Build reporter fingerprint helper
2
+
3
+ Scenario: the build reporter fingerprint should be written to the template
4
+ Given a successfully built app at "build-reporter-fingerprint"
5
+ When I cd to "build"
6
+ Then the file "index.html" should report the build fingerprint
@@ -0,0 +1,8 @@
1
+ Then /the file "([^"]*)" should report the build fingerprint/ do |file|
2
+ prep_for_fs_check do
3
+ html = File.open(file).read
4
+
5
+ expect(html.include?("<!--\nFINGERPRINT:\n---\nbranch:")).to eq true
6
+ end
7
+ end
8
+
@@ -0,0 +1 @@
1
+ //= require_tree .
@@ -0,0 +1,55 @@
1
+ @charset "utf-8";
2
+
3
+ body {
4
+ background: #d4d4d4 url("../images/background.png");
5
+ text-align: center;
6
+ font-family: sans-serif; }
7
+
8
+ h1 {
9
+ color: rgba(0, 0, 0, .3);
10
+ font-weight: bold;
11
+ font-size: 32px;
12
+ letter-spacing: -1px;
13
+ text-transform: uppercase;
14
+ text-shadow: 0 1px 0 rgba(255, 255, 255, .5);
15
+ background: url("../images/middleman.png") no-repeat center 100px;
16
+ padding: 350px 0 10px;
17
+ margin: 0; }
18
+
19
+ .doc {
20
+ font-size: 14px;
21
+ margin: 0; }
22
+ .doc:before,
23
+ .doc:after {
24
+ opacity: .2;
25
+ padding: 6px;
26
+ font-style: normal;
27
+ position: relative;
28
+ content: "•"; }
29
+ .doc a {
30
+ color: rgba(0, 0, 0, 0.3); }
31
+ .doc a:hover {
32
+ color: #666; }
33
+
34
+ .welcome {
35
+ -webkit-animation-name: welcome;
36
+ -webkit-animation-duration: .9s; }
37
+
38
+ @-webkit-keyframes welcome {
39
+ from {
40
+ -webkit-transform: scale(0);
41
+ opacity: 0;
42
+ }
43
+ 50% {
44
+ -webkit-transform: scale(0);
45
+ opacity: 0;
46
+ }
47
+ 82.5% {
48
+ -webkit-transform: scale(1.03);
49
+ -webkit-animation-timing-function: ease-out;
50
+ opacity: 1;
51
+ }
52
+ to {
53
+ -webkit-transform: scale(1);
54
+ }
55
+ }
@@ -0,0 +1,375 @@
1
+ /*! normalize.css v2.0.1 | MIT License | git.io/normalize */
2
+
3
+ /* ==========================================================================
4
+ HTML5 display definitions
5
+ ========================================================================== */
6
+
7
+ /*
8
+ * Corrects `block` display not defined in IE 8/9.
9
+ */
10
+
11
+ article,
12
+ aside,
13
+ details,
14
+ figcaption,
15
+ figure,
16
+ footer,
17
+ header,
18
+ hgroup,
19
+ nav,
20
+ section,
21
+ summary {
22
+ display: block;
23
+ }
24
+
25
+ /*
26
+ * Corrects `inline-block` display not defined in IE 8/9.
27
+ */
28
+
29
+ audio,
30
+ canvas,
31
+ video {
32
+ display: inline-block;
33
+ }
34
+
35
+ /*
36
+ * Prevents modern browsers from displaying `audio` without controls.
37
+ * Remove excess height in iOS 5 devices.
38
+ */
39
+
40
+ audio:not([controls]) {
41
+ display: none;
42
+ height: 0;
43
+ }
44
+
45
+ /*
46
+ * Addresses styling for `hidden` attribute not present in IE 8/9.
47
+ */
48
+
49
+ [hidden] {
50
+ display: none;
51
+ }
52
+
53
+ /* ==========================================================================
54
+ Base
55
+ ========================================================================== */
56
+
57
+ /*
58
+ * 1. Sets default font family to sans-serif.
59
+ * 2. Prevents iOS text size adjust after orientation change, without disabling
60
+ * user zoom.
61
+ */
62
+
63
+ html {
64
+ font-family: sans-serif; /* 1 */
65
+ -webkit-text-size-adjust: 100%; /* 2 */
66
+ -ms-text-size-adjust: 100%; /* 2 */
67
+ }
68
+
69
+ /*
70
+ * Removes default margin.
71
+ */
72
+
73
+ body {
74
+ margin: 0;
75
+ }
76
+
77
+ /* ==========================================================================
78
+ Links
79
+ ========================================================================== */
80
+
81
+ /*
82
+ * Addresses `outline` inconsistency between Chrome and other browsers.
83
+ */
84
+
85
+ a:focus {
86
+ outline: thin dotted;
87
+ }
88
+
89
+ /*
90
+ * Improves readability when focused and also mouse hovered in all browsers.
91
+ */
92
+
93
+ a:active,
94
+ a:hover {
95
+ outline: 0;
96
+ }
97
+
98
+ /* ==========================================================================
99
+ Typography
100
+ ========================================================================== */
101
+
102
+ /*
103
+ * Addresses `h1` font sizes within `section` and `article` in Firefox 4+,
104
+ * Safari 5, and Chrome.
105
+ */
106
+
107
+ h1 {
108
+ font-size: 2em;
109
+ }
110
+
111
+ /*
112
+ * Addresses styling not present in IE 8/9, Safari 5, and Chrome.
113
+ */
114
+
115
+ abbr[title] {
116
+ border-bottom: 1px dotted;
117
+ }
118
+
119
+ /*
120
+ * Addresses style set to `bolder` in Firefox 4+, Safari 5, and Chrome.
121
+ */
122
+
123
+ b,
124
+ strong {
125
+ font-weight: bold;
126
+ }
127
+
128
+ /*
129
+ * Addresses styling not present in Safari 5 and Chrome.
130
+ */
131
+
132
+ dfn {
133
+ font-style: italic;
134
+ }
135
+
136
+ /*
137
+ * Addresses styling not present in IE 8/9.
138
+ */
139
+
140
+ mark {
141
+ background: #ff0;
142
+ color: #000;
143
+ }
144
+
145
+
146
+ /*
147
+ * Corrects font family set oddly in Safari 5 and Chrome.
148
+ */
149
+
150
+ code,
151
+ kbd,
152
+ pre,
153
+ samp {
154
+ font-family: monospace, serif;
155
+ font-size: 1em;
156
+ }
157
+
158
+ /*
159
+ * Improves readability of pre-formatted text in all browsers.
160
+ */
161
+
162
+ pre {
163
+ white-space: pre;
164
+ white-space: pre-wrap;
165
+ word-wrap: break-word;
166
+ }
167
+
168
+ /*
169
+ * Sets consistent quote types.
170
+ */
171
+
172
+ q {
173
+ quotes: "\201C" "\201D" "\2018" "\2019";
174
+ }
175
+
176
+ /*
177
+ * Addresses inconsistent and variable font size in all browsers.
178
+ */
179
+
180
+ small {
181
+ font-size: 80%;
182
+ }
183
+
184
+ /*
185
+ * Prevents `sub` and `sup` affecting `line-height` in all browsers.
186
+ */
187
+
188
+ sub,
189
+ sup {
190
+ font-size: 75%;
191
+ line-height: 0;
192
+ position: relative;
193
+ vertical-align: baseline;
194
+ }
195
+
196
+ sup {
197
+ top: -0.5em;
198
+ }
199
+
200
+ sub {
201
+ bottom: -0.25em;
202
+ }
203
+
204
+ /* ==========================================================================
205
+ Embedded content
206
+ ========================================================================== */
207
+
208
+ /*
209
+ * Removes border when inside `a` element in IE 8/9.
210
+ */
211
+
212
+ img {
213
+ border: 0;
214
+ }
215
+
216
+ /*
217
+ * Corrects overflow displayed oddly in IE 9.
218
+ */
219
+
220
+ svg:not(:root) {
221
+ overflow: hidden;
222
+ }
223
+
224
+ /* ==========================================================================
225
+ Figures
226
+ ========================================================================== */
227
+
228
+ /*
229
+ * Addresses margin not present in IE 8/9 and Safari 5.
230
+ */
231
+
232
+ figure {
233
+ margin: 0;
234
+ }
235
+
236
+ /* ==========================================================================
237
+ Forms
238
+ ========================================================================== */
239
+
240
+ /*
241
+ * Define consistent border, margin, and padding.
242
+ */
243
+
244
+ fieldset {
245
+ border: 1px solid #c0c0c0;
246
+ margin: 0 2px;
247
+ padding: 0.35em 0.625em 0.75em;
248
+ }
249
+
250
+ /*
251
+ * 1. Corrects color not being inherited in IE 8/9.
252
+ * 2. Remove padding so people aren't caught out if they zero out fieldsets.
253
+ */
254
+
255
+ legend {
256
+ border: 0; /* 1 */
257
+ padding: 0; /* 2 */
258
+ }
259
+
260
+ /*
261
+ * 1. Corrects font family not being inherited in all browsers.
262
+ * 2. Corrects font size not being inherited in all browsers.
263
+ * 3. Addresses margins set differently in Firefox 4+, Safari 5, and Chrome
264
+ */
265
+
266
+ button,
267
+ input,
268
+ select,
269
+ textarea {
270
+ font-family: inherit; /* 1 */
271
+ font-size: 100%; /* 2 */
272
+ margin: 0; /* 3 */
273
+ }
274
+
275
+ /*
276
+ * Addresses Firefox 4+ setting `line-height` on `input` using `!important` in
277
+ * the UA stylesheet.
278
+ */
279
+
280
+ button,
281
+ input {
282
+ line-height: normal;
283
+ }
284
+
285
+ /*
286
+ * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
287
+ * and `video` controls.
288
+ * 2. Corrects inability to style clickable `input` types in iOS.
289
+ * 3. Improves usability and consistency of cursor style between image-type
290
+ * `input` and others.
291
+ */
292
+
293
+ button,
294
+ html input[type="button"], /* 1 */
295
+ input[type="reset"],
296
+ input[type="submit"] {
297
+ -webkit-appearance: button; /* 2 */
298
+ cursor: pointer; /* 3 */
299
+ }
300
+
301
+ /*
302
+ * Re-set default cursor for disabled elements.
303
+ */
304
+
305
+ button[disabled],
306
+ input[disabled] {
307
+ cursor: default;
308
+ }
309
+
310
+ /*
311
+ * 1. Addresses box sizing set to `content-box` in IE 8/9.
312
+ * 2. Removes excess padding in IE 8/9.
313
+ */
314
+
315
+ input[type="checkbox"],
316
+ input[type="radio"] {
317
+ box-sizing: border-box; /* 1 */
318
+ padding: 0; /* 2 */
319
+ }
320
+
321
+ /*
322
+ * 1. Addresses `appearance` set to `searchfield` in Safari 5 and Chrome.
323
+ * 2. Addresses `box-sizing` set to `border-box` in Safari 5 and Chrome
324
+ * (include `-moz` to future-proof).
325
+ */
326
+
327
+ input[type="search"] {
328
+ -webkit-appearance: textfield; /* 1 */
329
+ -moz-box-sizing: content-box;
330
+ -webkit-box-sizing: content-box; /* 2 */
331
+ box-sizing: content-box;
332
+ }
333
+
334
+ /*
335
+ * Removes inner padding and search cancel button in Safari 5 and Chrome
336
+ * on OS X.
337
+ */
338
+
339
+ input[type="search"]::-webkit-search-cancel-button,
340
+ input[type="search"]::-webkit-search-decoration {
341
+ -webkit-appearance: none;
342
+ }
343
+
344
+ /*
345
+ * Removes inner padding and border in Firefox 4+.
346
+ */
347
+
348
+ button::-moz-focus-inner,
349
+ input::-moz-focus-inner {
350
+ border: 0;
351
+ padding: 0;
352
+ }
353
+
354
+ /*
355
+ * 1. Removes default vertical scrollbar in IE 8/9.
356
+ * 2. Improves readability and alignment in all browsers.
357
+ */
358
+
359
+ textarea {
360
+ overflow: auto; /* 1 */
361
+ vertical-align: top; /* 2 */
362
+ }
363
+
364
+ /* ==========================================================================
365
+ Tables
366
+ ========================================================================== */
367
+
368
+ /*
369
+ * Remove most spacing between table cells.
370
+ */
371
+
372
+ table {
373
+ border-collapse: collapse;
374
+ border-spacing: 0;
375
+ }
@@ -0,0 +1,4 @@
1
+ activate :build_reporter do |build|
2
+ build.repo_root = '../../../'
3
+ build.version = '1.2.3'
4
+ end
@@ -0,0 +1,11 @@
1
+ ---
2
+ title: Welcome to Middleman
3
+ ---
4
+
5
+ <div class="welcome">
6
+ <h1>Middleman is Watching</h1>
7
+ <p class="doc">
8
+ <%= link_to "Read Online Documentation", "http://middlemanapp.com/" %>
9
+ </p><!-- .doc -->
10
+ <%= build_reporter_fingerprint %>
11
+ </div><!-- .welcome -->
@@ -0,0 +1 @@
1
+ //= require_tree .
@@ -0,0 +1,19 @@
1
+ <!doctype html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+
6
+ <!-- Always force latest IE rendering engine or request Chrome Frame -->
7
+ <meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible">
8
+
9
+ <!-- Use title if it's in the page YAML frontmatter -->
10
+ <title><%= current_page.data.title || "The Middleman" %></title>
11
+
12
+ <%= stylesheet_link_tag "normalize", "all" %>
13
+ <%= javascript_include_tag "all" %>
14
+ </head>
15
+
16
+ <body class="<%= page_classes %>">
17
+ <%= yield %>
18
+ </body>
19
+ </html>
@@ -0,0 +1,55 @@
1
+ @charset "utf-8";
2
+
3
+ body {
4
+ background: #d4d4d4 url("../images/background.png");
5
+ text-align: center;
6
+ font-family: sans-serif; }
7
+
8
+ h1 {
9
+ color: rgba(0, 0, 0, .3);
10
+ font-weight: bold;
11
+ font-size: 32px;
12
+ letter-spacing: -1px;
13
+ text-transform: uppercase;
14
+ text-shadow: 0 1px 0 rgba(255, 255, 255, .5);
15
+ background: url("../images/middleman.png") no-repeat center 100px;
16
+ padding: 350px 0 10px;
17
+ margin: 0; }
18
+
19
+ .doc {
20
+ font-size: 14px;
21
+ margin: 0; }
22
+ .doc:before,
23
+ .doc:after {
24
+ opacity: .2;
25
+ padding: 6px;
26
+ font-style: normal;
27
+ position: relative;
28
+ content: "•"; }
29
+ .doc a {
30
+ color: rgba(0, 0, 0, 0.3); }
31
+ .doc a:hover {
32
+ color: #666; }
33
+
34
+ .welcome {
35
+ -webkit-animation-name: welcome;
36
+ -webkit-animation-duration: .9s; }
37
+
38
+ @-webkit-keyframes welcome {
39
+ from {
40
+ -webkit-transform: scale(0);
41
+ opacity: 0;
42
+ }
43
+ 50% {
44
+ -webkit-transform: scale(0);
45
+ opacity: 0;
46
+ }
47
+ 82.5% {
48
+ -webkit-transform: scale(1.03);
49
+ -webkit-animation-timing-function: ease-out;
50
+ opacity: 1;
51
+ }
52
+ to {
53
+ -webkit-transform: scale(1);
54
+ }
55
+ }