From a73d82a5566ece5fe242c3caf13eae70a33c8141 Mon Sep 17 00:00:00 2001 From: "John F. Mercer" Date: Fri, 21 Aug 2015 18:58:53 -0400 Subject: [PATCH 1/7] Initial implementation of thorough gulp automation * Adds build script to package.json * Formatting cleanup, courtesy of jspm * Adds build.min.js files to gitignore * Installs require-dir * Refactors gulp setup * Activates live reload in gulp serve * Adds dist/ to gitignore * Adds buildjs task * Adds Travis-CI integration * adds clean task * Extracts buildjs task into its own file * Adds build image task * Adds css build task --- .gitignore | 7 ++++++- .travis.yml | 11 +++++++++++ README.md | 2 ++ gulp/build.js | 10 ++++++++++ gulp/buildcss.js | 19 +++++++++++++++++++ gulp/buildimg.js | 16 ++++++++++++++++ gulp/buildjs.js | 16 ++++++++++++++++ gulp/clean.js | 9 +++++++++ gulp/serve.js | 15 +++++++++++++++ gulpfile.js | 39 +++++++++++++++++++++++++++++++-------- package.json | 16 +++++++++++++--- 11 files changed, 148 insertions(+), 12 deletions(-) create mode 100644 .travis.yml create mode 100644 gulp/build.js create mode 100644 gulp/buildcss.js create mode 100644 gulp/buildimg.js create mode 100644 gulp/buildjs.js create mode 100644 gulp/clean.js create mode 100644 gulp/serve.js diff --git a/.gitignore b/.gitignore index c67aac4..eeb7817 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,7 @@ node_modules/* -src/jspm_packages/* \ No newline at end of file +src/jspm_packages/* +dist/* + +# TODO: Remove +build.min.js +build.min.js.map diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..91237ba --- /dev/null +++ b/.travis.yml @@ -0,0 +1,11 @@ +language: node_js + +node_js: + - "0.12" + +before_script: + - npm install -g gulp jspm + - npm install + - jspm install + +script: gulp build diff --git a/README.md b/README.md index 53f9814..86259ea 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +[![Build Status](https://travis-ci.org/radify/PR.js.svg)](https://travis-ci.org/radify/PR.js) + # PR.js _Programatically validate pull requests against the [contribution guidelines](https://help.github.com/articles/setting-guidelines-for-repository-contributors/)_ diff --git a/gulp/build.js b/gulp/build.js new file mode 100644 index 0000000..adc3650 --- /dev/null +++ b/gulp/build.js @@ -0,0 +1,10 @@ +'use strict'; + +var gulp = require('gulp'); +var runSeq = require('run-sequence'); + +gulp.task('build', function(done) { + runSeq('clean', ['buildjs', 'buildcss', 'buildimg'], done); +}); + + diff --git a/gulp/buildcss.js b/gulp/buildcss.js new file mode 100644 index 0000000..608ae80 --- /dev/null +++ b/gulp/buildcss.js @@ -0,0 +1,19 @@ +'use strict'; + +var gulp = require('gulp'); +var autoprefixer = require('gulp-autoprefixer'); +var concat = require('gulp-concat'); +var minifyCss = require('gulp-minify-css'); +var rename = require('gulp-rename'); + +// Build CSS for distribution. +gulp.task('buildcss', function () { + gulp.src(global.paths.css) + .pipe(concat('app.css')) + .pipe(autoprefixer()) + .pipe(minifyCss()) + .pipe(rename({ + suffix: '.min' + })) + .pipe(gulp.dest(global.paths.dist)); +}); diff --git a/gulp/buildimg.js b/gulp/buildimg.js new file mode 100644 index 0000000..bd09d7f --- /dev/null +++ b/gulp/buildimg.js @@ -0,0 +1,16 @@ +'use strict'; + +var gulp = require('gulp'); +var imagemin = require('gulp-imagemin'); +var pngquant = require('imagemin-pngquant'); + +// Build images for distribution. +gulp.task('buildimg', function () { + gulp.src(global.paths.img) + .pipe(imagemin({ + progressive: true, + svgoPlugins: [{removeViewBox: false}], + use: [pngquant()] + })) + .pipe(gulp.dest(global.paths.dist + '/img')); +}); diff --git a/gulp/buildjs.js b/gulp/buildjs.js new file mode 100644 index 0000000..e06fca6 --- /dev/null +++ b/gulp/buildjs.js @@ -0,0 +1,16 @@ +'use strict'; + +var gulp = require('gulp'); +var exec = require('child_process').execSync; + +// Build JS for distribution. +gulp.task('buildjs', function () { + exec('npm run buildjs', function (err, stdout, stderr) { + if (err) { + throw err; + } + else { + console.log('Build complete!'); + } + }); +}); diff --git a/gulp/clean.js b/gulp/clean.js new file mode 100644 index 0000000..bd0c2d9 --- /dev/null +++ b/gulp/clean.js @@ -0,0 +1,9 @@ +'use strict'; + +var gulp = require('gulp'); +var del = require('del'); + +// Empty the build dir. +gulp.task('clean', function (done) { + del([global.paths.dist + '/*'], done); +}); diff --git a/gulp/serve.js b/gulp/serve.js new file mode 100644 index 0000000..90868b4 --- /dev/null +++ b/gulp/serve.js @@ -0,0 +1,15 @@ +'use strict'; + +var gulp = require('gulp'); +var connect = require('gulp-connect'); + +// Start local dev server. +gulp.task('serve', function() { + connect.server({ + root: global.paths.index, + port: 3003, + livereload: true + }); + + console.log("Demo server started at localhost:3003"); +}); diff --git a/gulpfile.js b/gulpfile.js index 1e2cd22..4bc1334 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -1,11 +1,34 @@ +'use strict'; + +/* + * gulpfile.js + * =========== + * Rather than manage one giant configuration file responsible + * for creating multiple tasks, each task has been broken out into + * its own file in the 'gulp' folder. Any files in that directory get + * automatically required below. + * + * To add a new task, simply add a new task file in that directory. + */ + var gulp = require('gulp'); -var conn = require('gulp-connect'); +var requireDir = require('require-dir'); + +global.paths = { + // CSS sources + 'css': './css/*', + // Distribution folder. + 'dist': './dist', + // Image sources. + 'img': './img/*', + // TODO: replace with ./src or ./build + 'index': './', + // Sources folder. + 'src': './src' +}; -gulp.task('serve', function() { - conn.server({ - root: __dirname, - port: 3003 - }); +// Require all tasks in the 'gulp' folder. +requireDir('./gulp', { recurse: false }); - console.log("Demo server started at localhost:3003"); -}); \ No newline at end of file +// Default task; start local server. +gulp.task('default', ['serve']); diff --git a/package.json b/package.json index 29d1ce3..ef9f06a 100644 --- a/package.json +++ b/package.json @@ -2,8 +2,10 @@ "name": "pr.js", "version": "0.1.1", "description": "Simple validation for pull request workflows", - "main": "index.js", - "scripts": {}, + "main": "index.html", + "scripts": { + "buildjs": "jspm bundle-sfx pr.js build.min.js --minify" + }, "author": { "name": "Radify, Inc.", "email": "line@radify.io", @@ -34,11 +36,19 @@ ], "dependencies": {}, "devDependencies": { + "del": "^1.2.1", "gulp": "^3.9.0", + "gulp-autoprefixer": "^2.3.1", "gulp-babel": "^5.2.1", "gulp-concat": "^2.6.0", "gulp-connect": "^2.2.0", - "gulp-uglify": "^1.2.0" + "gulp-imagemin": "^2.3.0", + "gulp-minify-css": "^1.2.0", + "gulp-rename": "^1.2.2", + "gulp-uglify": "^1.2.0", + "imagemin-pngquant": "^4.1.2", + "require-dir": "^0.3.0", + "run-sequence": "^1.1.2" }, "bugs": { "url": "https://github.com/radify/PR.js/issues" From ef3d2fb3eb35c02195d457377248552ab06efbb4 Mon Sep 17 00:00:00 2001 From: Nate Abele Date: Mon, 24 Aug 2015 20:33:54 -0400 Subject: [PATCH 2/7] Implementing gulp test task --- gulp/test.js | 10 ++++ gulpfile.js | 6 ++- package.json | 3 ++ spec/index.js | 11 ----- spec/parsers/{Message.js => MessageSpec.js} | 2 +- spec/parsers/{Subject.js => SubjectSpec.js} | 2 +- .../{HasSubject.js => HasSubjectSpec.js} | 2 +- ...ashedCommits.js => SquashedCommitsSpec.js} | 2 +- ...{SubjectFormat.js => SubjectFormatSpec.js} | 2 +- src/config.js | 48 ------------------- 10 files changed, 23 insertions(+), 65 deletions(-) create mode 100644 gulp/test.js delete mode 100644 spec/index.js rename spec/parsers/{Message.js => MessageSpec.js} (84%) rename spec/parsers/{Subject.js => SubjectSpec.js} (95%) rename spec/rules/{HasSubject.js => HasSubjectSpec.js} (92%) rename spec/rules/{SquashedCommits.js => SquashedCommitsSpec.js} (85%) rename spec/rules/{SubjectFormat.js => SubjectFormatSpec.js} (92%) delete mode 100644 src/config.js diff --git a/gulp/test.js b/gulp/test.js new file mode 100644 index 0000000..af24763 --- /dev/null +++ b/gulp/test.js @@ -0,0 +1,10 @@ +'use strict'; + +require('babel-core/register'); + +var gulp = require('gulp'); +var jasmine = require('gulp-jasmine'); + +gulp.task('test', function () { + return gulp.src(global.paths.specs).pipe(jasmine({ includeStackTrace: true })); +}); diff --git a/gulpfile.js b/gulpfile.js index 4bc1334..a164020 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -24,7 +24,11 @@ global.paths = { // TODO: replace with ./src or ./build 'index': './', // Sources folder. - 'src': './src' + 'src': './src', + // Specs folder. + 'spec': './spec', + // Specs glob. + 'specs': './spec/**/*Spec.js' }; // Require all tasks in the 'gulp' folder. diff --git a/package.json b/package.json index ef9f06a..8a164d0 100644 --- a/package.json +++ b/package.json @@ -36,6 +36,7 @@ ], "dependencies": {}, "devDependencies": { + "babel-core": "^5.8.22", "del": "^1.2.1", "gulp": "^3.9.0", "gulp-autoprefixer": "^2.3.1", @@ -43,10 +44,12 @@ "gulp-concat": "^2.6.0", "gulp-connect": "^2.2.0", "gulp-imagemin": "^2.3.0", + "gulp-jasmine": "^2.0.1", "gulp-minify-css": "^1.2.0", "gulp-rename": "^1.2.2", "gulp-uglify": "^1.2.0", "imagemin-pngquant": "^4.1.2", + "jasmine": "^2.3.2", "require-dir": "^0.3.0", "run-sequence": "^1.1.2" }, diff --git a/spec/index.js b/spec/index.js deleted file mode 100644 index ef926f0..0000000 --- a/spec/index.js +++ /dev/null @@ -1,11 +0,0 @@ -import jasmine from "jasmine"; -import jasmineHtml from "jasmineHtml"; -import jasmineBoot from "jasmineBoot"; - -import MessageSpec from "parsers/MessageSpec"; -import SubjectSpec from "parsers/SubjectSpec"; -import HasSubjectSpec from "rules/HasSubjectSpec"; -import SquashedCommitsSpec from "rules/SquashedCommitsSpec"; -import SubjectFormatSpec from "rules/SubjectFormatSpec"; - -if (typeof window !== undefined) window.onload(); diff --git a/spec/parsers/Message.js b/spec/parsers/MessageSpec.js similarity index 84% rename from spec/parsers/Message.js rename to spec/parsers/MessageSpec.js index ce5a244..abbead9 100644 --- a/spec/parsers/Message.js +++ b/spec/parsers/MessageSpec.js @@ -1,4 +1,4 @@ -import Message from "parsers/Message"; +import Message from "../../src/parsers/Message"; describe("parsers/Message", () => { it("should pull the first commit message from a PR, split into lines", () => { diff --git a/spec/parsers/Subject.js b/spec/parsers/SubjectSpec.js similarity index 95% rename from spec/parsers/Subject.js rename to spec/parsers/SubjectSpec.js index 0a81e5c..2c8468d 100644 --- a/spec/parsers/Subject.js +++ b/spec/parsers/SubjectSpec.js @@ -1,4 +1,4 @@ -import Subject from "parsers/Subject"; +import Subject from "../../src/parsers/Subject"; describe("parsers/Subject", () => { it("should split valid subject lines into object hash", () => { diff --git a/spec/rules/HasSubject.js b/spec/rules/HasSubjectSpec.js similarity index 92% rename from spec/rules/HasSubject.js rename to spec/rules/HasSubjectSpec.js index 2b2e140..b70e6b8 100644 --- a/spec/rules/HasSubject.js +++ b/spec/rules/HasSubjectSpec.js @@ -1,4 +1,4 @@ -import HasSubject from "rules/HasSubject"; +import HasSubject from "../../src/rules/HasSubject"; describe("rules/HasSubject", () => { diff --git a/spec/rules/SquashedCommits.js b/spec/rules/SquashedCommitsSpec.js similarity index 85% rename from spec/rules/SquashedCommits.js rename to spec/rules/SquashedCommitsSpec.js index 3a8d85d..6fdc7a5 100644 --- a/spec/rules/SquashedCommits.js +++ b/spec/rules/SquashedCommitsSpec.js @@ -1,4 +1,4 @@ -import SquashedCommits from "rules/SquashedCommits"; +import SquashedCommits from "../../src/rules/SquashedCommits"; describe("rules/SquashedCommits", () => { diff --git a/spec/rules/SubjectFormat.js b/spec/rules/SubjectFormatSpec.js similarity index 92% rename from spec/rules/SubjectFormat.js rename to spec/rules/SubjectFormatSpec.js index bfeba8b..20239cd 100644 --- a/spec/rules/SubjectFormat.js +++ b/spec/rules/SubjectFormatSpec.js @@ -1,4 +1,4 @@ -import SubjectFormat from "rules/SubjectFormat"; +import SubjectFormat from "../../src/rules/SubjectFormat"; describe("rules/SubjectFormat", () => { diff --git a/src/config.js b/src/config.js deleted file mode 100644 index 6d9d561..0000000 --- a/src/config.js +++ /dev/null @@ -1,48 +0,0 @@ -System.config({ - baseURL: "src/", - defaultJSExtensions: true, - transpiler: "babel", - babelOptions: { - "optional": [ - "runtime" - ] - }, - paths: { - "github:*": "jspm_packages/github/*", - "npm:*": "jspm_packages/npm/*", - "*Spec": "../spec/*.js", - "jasmineBoot": "https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.3.3/boot.js", - "jasmineHtml": "https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.3.3/jasmine-html.js", - "jasmine": "https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.3.3/jasmine.js" - }, - - map: { - "angular": "npm:angular@1.4.0-rc.2", - "angular-ui-router": "npm:angular-ui-router@0.2.15", - "babel": "npm:babel-core@5.8.22", - "babel-runtime": "npm:babel-runtime@5.8.20", - "core-js": "npm:core-js@1.1.1", - "marked": "npm:marked@0.3.3", - "ramda": "npm:ramda@0.14.0", - "github:jspm/nodelibs-process@0.1.1": { - "process": "npm:process@0.10.1" - }, - "npm:angular-ui-router@0.2.15": { - "process": "github:jspm/nodelibs-process@0.1.1" - }, - "npm:angular@1.4.0-rc.2": { - "process": "github:jspm/nodelibs-process@0.1.1" - }, - "npm:babel-runtime@5.8.20": { - "process": "github:jspm/nodelibs-process@0.1.1" - }, - "npm:core-js@1.1.1": { - "fs": "github:jspm/nodelibs-fs@0.1.2", - "process": "github:jspm/nodelibs-process@0.1.1", - "systemjs-json": "github:systemjs/plugin-json@0.1.0" - }, - "npm:ramda@0.14.0": { - "process": "github:jspm/nodelibs-process@0.1.1" - } - } -}); From 32d47fe0f02f59830795156b9e6de4ffad376d8d Mon Sep 17 00:00:00 2001 From: Nate Abele Date: Mon, 24 Aug 2015 20:35:33 -0400 Subject: [PATCH 3/7] Removing test.html & updating test instructions --- README.md | 2 +- test.html | 31 ------------------------------- 2 files changed, 1 insertion(+), 32 deletions(-) delete mode 100644 test.html diff --git a/README.md b/README.md index 86259ea..2fb3bb5 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ Most projects have rules of some kind about how to submit pull requests, which o **Test** - - [`http://localhost:3003/test.html`](http://localhost:3003/test.html) + - `gulp test` ### Roadmap diff --git a/test.html b/test.html deleted file mode 100644 index 2a8debc..0000000 --- a/test.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - Jasmine Spec Runner: PR.js - - - - - - - - - - - - - - - - - - - - \ No newline at end of file From d5a1bb4c968d9b6a34a51b0d8d59434be438cc5c Mon Sep 17 00:00:00 2001 From: "John F. Mercer" Date: Wed, 26 Aug 2015 17:10:49 -0400 Subject: [PATCH 4/7] Runs tests and adds CI * The default task now runs both build and test * Travis now runs `gulp` instead of `gulp build` * Adds 'test' to package.json scripts * Restores jspm's config.js * Per jspm docs, adds jspm as npm devDependency * Travis now runs npm & jspm locally, not globally * TODO: setup PhantomJS testing * Currently, the parsers and validators are tested * BUT the UI code is NOT tested * We must add UI code testing at some point. --- .travis.yml | 4 ++-- gulpfile.js | 4 ++-- package.json | 4 +++- src/config.js | 41 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 48 insertions(+), 5 deletions(-) create mode 100644 src/config.js diff --git a/.travis.yml b/.travis.yml index 91237ba..5899789 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,8 +4,8 @@ node_js: - "0.12" before_script: - - npm install -g gulp jspm - npm install - jspm install -script: gulp build +script: gulp + diff --git a/gulpfile.js b/gulpfile.js index a164020..71caf43 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -34,5 +34,5 @@ global.paths = { // Require all tasks in the 'gulp' folder. requireDir('./gulp', { recurse: false }); -// Default task; start local server. -gulp.task('default', ['serve']); +// Default task; test & build +gulp.task('default', ['test', 'build']); diff --git a/package.json b/package.json index 8a164d0..e476ebf 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,8 @@ "description": "Simple validation for pull request workflows", "main": "index.html", "scripts": { - "buildjs": "jspm bundle-sfx pr.js build.min.js --minify" + "buildjs": "jspm bundle-sfx pr.js build.min.js --minify", + "test": "gulp test" }, "author": { "name": "Radify, Inc.", @@ -50,6 +51,7 @@ "gulp-uglify": "^1.2.0", "imagemin-pngquant": "^4.1.2", "jasmine": "^2.3.2", + "jspm": "^0.16.1", "require-dir": "^0.3.0", "run-sequence": "^1.1.2" }, diff --git a/src/config.js b/src/config.js new file mode 100644 index 0000000..8f31dca --- /dev/null +++ b/src/config.js @@ -0,0 +1,41 @@ +System.config({ + baseURL: "src/", + defaultJSExtensions: true, + transpiler: "babel", + babelOptions: { + "optional": [ + "runtime" + ] + }, + paths: { + "github:*": "jspm_packages/github/*", + "npm:*": "jspm_packages/npm/*", + "*Spec": "../spec/*.js" + }, + + map: { + "angular": "npm:angular@1.4.0-rc.2", + "angular-ui-router": "npm:angular-ui-router@0.2.15", + "babel": "npm:babel-core@5.8.22", + "babel-core": "npm:babel-core@5.8.22", + "babel-runtime": "npm:babel-runtime@5.2.17", + "core-js": "npm:core-js@0.9.8", + "marked": "npm:marked@0.3.3", + "ramda": "npm:ramda@0.14.0", + "github:jspm/nodelibs-process@0.1.1": { + "process": "npm:process@0.10.1" + }, + "npm:angular-ui-router@0.2.15": { + "process": "github:jspm/nodelibs-process@0.1.1" + }, + "npm:angular@1.4.0-rc.2": { + "process": "github:jspm/nodelibs-process@0.1.1" + }, + "npm:core-js@0.9.8": { + "process": "github:jspm/nodelibs-process@0.1.1" + }, + "npm:ramda@0.14.0": { + "process": "github:jspm/nodelibs-process@0.1.1" + } + } +}); From 03bc39af558a71c27b24b80df7657cad9d745fd0 Mon Sep 17 00:00:00 2001 From: "John F. Mercer" Date: Thu, 27 Aug 2015 21:51:01 -0400 Subject: [PATCH 5/7] Fixes elementary errors in gitignore * Also, removes cached files which shouldn't be in the index. --- .gitignore | 6 +++--- dist/app.min.css | 1 - dist/img/PRjs.svg | 1 - dist/img/radify.svg | 1 - 4 files changed, 3 insertions(+), 6 deletions(-) delete mode 100644 dist/app.min.css delete mode 100644 dist/img/PRjs.svg delete mode 100644 dist/img/radify.svg diff --git a/.gitignore b/.gitignore index eeb7817..22904b2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ -node_modules/* -src/jspm_packages/* -dist/* +node_modules/ +src/jspm_packages/ +dist/ # TODO: Remove build.min.js diff --git a/dist/app.min.css b/dist/app.min.css deleted file mode 100644 index 953a0d0..0000000 --- a/dist/app.min.css +++ /dev/null @@ -1 +0,0 @@ -.row.bottom,.row.top,body,html{overflow:hidden}.col.pulls,.col.repos{border-right:2px solid #fff}.btn,.owner .title a,form.homeForm button.start,form.homeForm button.start span.glyphicon,form.homeForm input.search{-webkit-transition:all .3s linear;-moz-transition:all .3s linear;-ms-transition:all .3s linear;-o-transition:all .3s linear}.owner img,footer img{vertical-align:middle}.owner .title a,footer a{text-transform:uppercase}body,html{background:#e5eaed;color:#4a5154;font-family:'Open Sans',sans-serif;height:100%;margin:0;min-width:320px;padding:0;position:relative}.row.top{height:40%}.row.bottom{height:50%}.col{float:left;height:100%;overflow:auto;padding:0 10px;width:33%}.col.repos{width:20%}.col.pulls{width:35%}.col.pull{width:45%}.col-body{margin:5px;overflow:auto}.repo{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;text-align:left}div.homeHeader,footer,form.homeForm{text-align:center}.results{margin:15px;height:92%;overflow:auto}.owner .title a:after,.well.pull:after{height:16px;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);content:""}.note{font-style:italic;color:#999}.owner{background:#fff}.owner .title{display:inline}.owner .title a{color:#787f82;display:block;font-size:16px;font-weight:600;padding:30px 15px;position:relative}.owner .title a:after{background:#fff;bottom:-6px;border-radius:4px;background-clip:padding-box;display:block;left:30px;position:absolute;width:16px}.avatar,.owner img{border-radius:4px;background-clip:padding-box}.owner .title a img{margin-right:10px;opacity:.8}.owner .title a:focus img,.owner .title a:hover img,footer:hover{opacity:1}.owner .title a:focus,.owner .title a:hover{color:#4a5154;text-decoration:none}.owner img{max-height:51px}.owner div.headerLogo{position:absolute;right:22px;top:36px;width:120px}.pull p{display:inline;padding:1px;margin:0}.pull .title{font-size:24px;font-weight:600;letter-spacing:-.05em;line-height:130%;padding-bottom:20px;min-height:40px}.avatar{float:left;margin-right:10px;max-width:40px;max-height:40px}.search{padding:4px;width:300px}h4{margin-top:0}.well{background:#fff;border:none;box-shadow:none;padding:30px 15px;position:relative}.well.pull:after{background:#fff;top:-6px;border-radius:4px;background-clip:padding-box;display:block;left:15px;position:absolute;width:16px}.well img{max-width:100%}.btn{background:#94cd7e;border:none;color:#fff}.btn:focus,.btn:hover{background:#76bf59;color:#fff}div.home{height:100%;overflow:auto;position:absolute;top:0;width:100%}div.bottom,div.top{overflow:hidden;width:100%}div.homeHeader{background:#fff}div.homeHeader h1{margin:42px auto 30px;max-width:230px}div.homeHeader p{color:#787f82;font-size:32px;font-weight:300;margin-bottom:30px}form.homeForm{margin:8.5% 0}form.homeForm input.search{background:rgba(255,255,255,.6);border-radius:6px;background-clip:padding-box;border:none;box-shadow:0 0 0 1px #c9ccce;font-size:18px;max-width:600px;padding:16px 24px;width:100%}form.homeForm input.search:hover{background:#fff}form.homeForm input.search:focus{background:#fff;box-shadow:0 0 0 4px #c9e6be;outline:0}form.homeForm input.search::-webkit-input-placeholder{color:#c9ccce;font-weight:300}form.homeForm input.search:-moz-placeholder{color:#c9ccce;font-weight:300}form.homeForm input.search::-moz-placeholder{color:#c9ccce;font-weight:300}form.homeForm input.search:-ms-input-placeholder{color:#c9ccce;font-weight:300}form.homeForm button.start{background:#94cd7e;border-radius:6px;background-clip:padding-box;border:0;clear:both;color:#fff;display:block;font-size:24px;font-weight:600;margin:40px auto;padding:12px 0;width:230px}form.homeForm button.start span.glyphicon{position:relative;top:2px}form.homeForm button.start:focus,form.homeForm button.start:hover{background:#76bf59;outline:0}form.homeForm button.start:focus span.glyphicon,form.homeForm button.start:hover span.glyphicon{margin-left:10px}ul.nav-pills li.active a,ul.nav-pills li.active a:focus,ul.nav-pills li.active a:hover{background:#4a5154;color:#fff}ul.nav-pills a{background:#d9e0e5;color:#787f82;font-weight:700;-webkit-transition:all .15s linear;-moz-transition:all .15s linear;-ms-transition:all .15s linear;-o-transition:all .15s linear}ul.nav-pills a:focus,ul.nav-pills a:hover{background:#c7d2d8;box-shadow:inset 0 2px 0 0 rgba(0,0,0,.05);color:#4a5154}ul.nav-pills a:active{background:#c1cdd4;box-shadow:inset 0 2px 0 0 rgba(0,0,0,.15)}div.top{bottom:310px;zoom:1;padding:0;position:absolute;top:130px}div.top:after,div.top:before{content:"";display:table}div.top:after{clear:both}div.topWrapper{height:75%}.result-title{margin:0 0 15px;padding:5px 10px;background:#96c396;color:#eee}.result-title.failed{background:#d76464;color:#fff}.test-results{list-style-type:none;padding-left:5px}.test-results li{padding-right:5px}.result-item{padding:0 0 10px 8px}.result-item span{position:relative}.result-item.result-passed{color:#94cd7e}.result-item.result-failed{color:#cd7e7e}.result-item .well{margin-top:4px}.result-item .well p{margin-bottom:1px}.result-item.result-failed .well{border-color:#e9c8c8;background:#f6f6f6}div.bottom{bottom:50px;height:250px;position:absolute}footer{background:#d5dadd;border-top:1px solid rgba(0,0,0,.1);position:fixed;bottom:0;right:0;opacity:.8;padding:10px 0 8px;-webkit-transition:all .3s linear;-moz-transition:all .3s linear;-ms-transition:all .3s linear;-o-transition:all .3s linear;width:100%}footer img{height:25px}footer a{color:#8b9194;font-size:14px;font-weight:400;display:block;opacity:.8;padding:0 8px;text-decoration:none}footer a:hover{color:#595e60;opacity:1;text-decoration:none}footer span{display:none}@media only screen and (min-width:530px){div.homeHeader h1{margin:8.5% auto 6%}div.homeHeader p{margin-bottom:6%}form.homeForm input.search{font-size:24px}footer{text-align:right}footer a,footer span{display:inline}}@media only screen and (min-width:1420px){div.homeHeader h1{margin:118px auto 84px}div.homeHeader p,form.homeForm{margin-bottom:84px}form.homeForm{margin-top:84px}form.homeForm input.search{font-size:24px}footer{text-align:right}footer a,footer span{display:inline}} \ No newline at end of file diff --git a/dist/img/PRjs.svg b/dist/img/PRjs.svg deleted file mode 100644 index e055f59..0000000 --- a/dist/img/PRjs.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/dist/img/radify.svg b/dist/img/radify.svg deleted file mode 100644 index caf71d1..0000000 --- a/dist/img/radify.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file From 593485ef4f2b39406549072d9e2885167c95ae61 Mon Sep 17 00:00:00 2001 From: "John F. Mercer" Date: Fri, 28 Aug 2015 14:59:46 -0400 Subject: [PATCH 6/7] Adds encrypted Github auth for jspm * This implements [these instructions](https://github.com/jspm/jspm-cli/wiki/Registries#travis-ci). * Security Note: It is safe to commit the encrypted string to version control. Only Travis can unlock it. --- .travis.yml | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/.travis.yml b/.travis.yml index 5899789..af7fc7c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,11 +1,13 @@ +env: + global: + secure: icqVmAGwiQ++yridEPAYByJ8qznw4iEc2dq8WYksSCF5Q3s9079sHUWJ2gDuCYGCACAatFKTwrixwUaNEmKOiF+mq0aITfrTfneksMnDPHM6m0I+4wQBZ7P4YStUoBYvThYuC6BjafoImH1C8MlUdZd1D18yIYlXUT06tIDzuD3azgLPM8UGNsCfskFDKnsW0hrl09LrK04+NNXHMhoiO0RW1W4mjhRMHPFij8IRLB/3D4wlV1xDt1jp0ddD96eX0PCx5hhfYbcm54ChcIOPo/gqrVQRT7OpvudDHfm0XLr9O4Dvhj/yawKRJL6nDBfoKHrOCdM9HxbIgmgYoWPu5E+17Gk2LVSnw4mdkJiWyaRN8mbSTMa7BEiEui9NtZddwHAyaZEMPw2ynPA+UgtET6HBcmEmXaCJc88Zgdwn4pzq9nNUXcqLvWbxL0GgMGjyOmTt5TvzYQ64MyNSv4txpPwQlalbiWti36vYS+3exg5YMyWbMnOU3CT5WIQtiKeEK9+Vojk2GyCHXAmhTAyq/Xd1ibg6PjnXqcK09auH2BPUxo/V6KfkoWowkldceGyM1tijELn+j5PcR3FgaPZ5NeX8MEoZzHE/g818o9Q9KOD9KuqklHM+mBsdLE/laFk4c9CBiEycA3k3mfbe8h1Slq6q87kX0EXzKUBBIoSy8Z4= language: node_js - node_js: - - "0.12" - +- '0.12' +before_install: +- npm install -g jspm +- jspm config registries.github.auth $RADIFY_JSPM_GITHUB_AUTH_TOKEN before_script: - - npm install - - jspm install - +- npm install +- jspm install script: gulp - From b05c3d3e17938e9a0ae831029fdf0e4aa7069808 Mon Sep 17 00:00:00 2001 From: "John F. Mercer" Date: Fri, 28 Aug 2015 15:12:18 -0400 Subject: [PATCH 7/7] Fixes jspm Github auth in Travis --- .travis.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index af7fc7c..ec30e24 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,3 @@ -env: - global: - secure: icqVmAGwiQ++yridEPAYByJ8qznw4iEc2dq8WYksSCF5Q3s9079sHUWJ2gDuCYGCACAatFKTwrixwUaNEmKOiF+mq0aITfrTfneksMnDPHM6m0I+4wQBZ7P4YStUoBYvThYuC6BjafoImH1C8MlUdZd1D18yIYlXUT06tIDzuD3azgLPM8UGNsCfskFDKnsW0hrl09LrK04+NNXHMhoiO0RW1W4mjhRMHPFij8IRLB/3D4wlV1xDt1jp0ddD96eX0PCx5hhfYbcm54ChcIOPo/gqrVQRT7OpvudDHfm0XLr9O4Dvhj/yawKRJL6nDBfoKHrOCdM9HxbIgmgYoWPu5E+17Gk2LVSnw4mdkJiWyaRN8mbSTMa7BEiEui9NtZddwHAyaZEMPw2ynPA+UgtET6HBcmEmXaCJc88Zgdwn4pzq9nNUXcqLvWbxL0GgMGjyOmTt5TvzYQ64MyNSv4txpPwQlalbiWti36vYS+3exg5YMyWbMnOU3CT5WIQtiKeEK9+Vojk2GyCHXAmhTAyq/Xd1ibg6PjnXqcK09auH2BPUxo/V6KfkoWowkldceGyM1tijELn+j5PcR3FgaPZ5NeX8MEoZzHE/g818o9Q9KOD9KuqklHM+mBsdLE/laFk4c9CBiEycA3k3mfbe8h1Slq6q87kX0EXzKUBBIoSy8Z4= language: node_js node_js: - '0.12' @@ -11,3 +8,6 @@ before_script: - npm install - jspm install script: gulp +env: + global: + secure: lPYM9GGMD1qyd4/zhRTGpipOtxHwtQ0EFxgNg9KjRBEMkTLHjeZI0JQNskn0E8ZYXbjYghdUFvXkAAED5F9d0igPRcuLtAau1iGnW2PGyK2rzHE/fpplWFYIdm65CtQP4hv0bEGw3UBx9WkFDqs7NiRTE5YiDh75woP88weI7oxqlfpJdyvMJgoSda87dBYkYVOHCaMGrLkXK3GQhR6eJ20WZIp0TCbiMYLEzpo45BDMZSf9K0yRPiJ9vA3bgWUJGqfW4Dt6k10pKD1Q5SE/WeingOphiBK5Lrfp+Y7i1JkOpPzRC5rDMwJJUbJQpUeAvrmDQCf9VUmrib2iBA5dpRAe4xgOmdNEZaJEjS9lSU+dOtcBHo9mrlJ9pEHSzJO7Q3oLQC8nq7bf/SP1ZlQUnWqtxM3eIUnkIYJTBtzzQkHC3qpa5OZvWHrJIGqj8E1Mafp+1YHhelCHhg+ePiy1sXUvWF+1w3FC8M3O51Q/9YhjetpoqeshjmMdwJaV/8+WMZBieFHLzgLGIySTK6YQUMkUppqmVg524AwTDmMvgfZtr8xN/eBX3SnrUZjW9ILk00qCU/Q6qc/6IczCRyaByBajG2jqePn0wM78F6fGUMVO2Cdpp0P3+uSzKDb8XA8Vp7T1c4JthZ2ljRgP/Lgp4lUD/qEO1qio4a36sd6OVjc=