From 417a1e7c86a4605210432c8c21fa75ab1c316f2a Mon Sep 17 00:00:00 2001 From: Franklin Clark Date: Thu, 4 Sep 2014 01:00:29 -0700 Subject: [PATCH 01/10] Adding vagrant file and provision script --- .gitignore | 1 + .vagrant-provision.sh | 25 +++++++++++++++++++++++++ Vagrantfile | 7 +++++++ 3 files changed, 33 insertions(+) create mode 100644 .vagrant-provision.sh create mode 100644 Vagrantfile diff --git a/.gitignore b/.gitignore index 2a015f9..9d899cf 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .idea/ +.vagrant/ node_modules/ temp/ diff --git a/.vagrant-provision.sh b/.vagrant-provision.sh new file mode 100644 index 0000000..2f2cfc7 --- /dev/null +++ b/.vagrant-provision.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env bash + +NPM_DIR="/usr/local/share/npm" + +echo "Provisioning: started..." +echo "Current user is '$USER'" + +echo "Provisioning: Setting locale for apt package manager" +locale-gen UTF-8 + +echo "Provisioning: Installing node" +gem install sass + +echo "Provisioning: Installing node" +apt-get update +apt-get install -y nodejs nodejs-legacy npm + +echo "Provisioning: Installing yeoman and tumblr theme generator" +npm config -g set prefix $NPM_DIR +npm install --no-color -g yo grunt-cli generator-tumblr-theme +chmod -R 775 $NPM_DIR && chown -R vagrant $NPM_DIR + +echo "export PATH=\"\$PATH:$NPM_DIR/bin\"" >> /home/vagrant/.bashrc + +echo "Provisioning: Complete." diff --git a/Vagrantfile b/Vagrantfile new file mode 100644 index 0000000..f92d10e --- /dev/null +++ b/Vagrantfile @@ -0,0 +1,7 @@ +# -*- mode: ruby -*- +# vi: set ft=ruby : + +Vagrant.configure(2) do |config| + config.vm.box = "ubuntu/trusty64" + config.vm.provision :shell, path: ".vagrant-provision.sh" +end From 0bcd3a4fe607cb582f6739b422269278d297056d Mon Sep 17 00:00:00 2001 From: Franklin Clark Date: Sat, 6 Sep 2014 11:16:50 -0700 Subject: [PATCH 02/10] Updating vagrant test server network config * Renaming server grunt task to serve * Adding a remote serve grunt command (serve-remote) for remote machines or test machines * Adding public network config so the vagrant test box registers with external DHP * Downgrading test machine to 32 bit ubuntu --- .vagrant-provision.sh | 3 --- Vagrantfile | 3 ++- app/templates/Gruntfile.js | 25 ++++++++++++++++++++++--- 3 files changed, 24 insertions(+), 7 deletions(-) diff --git a/.vagrant-provision.sh b/.vagrant-provision.sh index 2f2cfc7..acc6fd7 100644 --- a/.vagrant-provision.sh +++ b/.vagrant-provision.sh @@ -5,9 +5,6 @@ NPM_DIR="/usr/local/share/npm" echo "Provisioning: started..." echo "Current user is '$USER'" -echo "Provisioning: Setting locale for apt package manager" -locale-gen UTF-8 - echo "Provisioning: Installing node" gem install sass diff --git a/Vagrantfile b/Vagrantfile index f92d10e..29d09c1 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -2,6 +2,7 @@ # vi: set ft=ruby : Vagrant.configure(2) do |config| - config.vm.box = "ubuntu/trusty64" + config.vm.box = "ubuntu/trusty32" + config.vm.network "public_network" config.vm.provision :shell, path: ".vagrant-provision.sh" end diff --git a/app/templates/Gruntfile.js b/app/templates/Gruntfile.js index de21756..4665b48 100644 --- a/app/templates/Gruntfile.js +++ b/app/templates/Gruntfile.js @@ -1,11 +1,16 @@ +var os = require('os'); + module.exports = function(grunt) { + + var appPort = 9000; + grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), watch: { scripts: { files: [ 'app/theme/scripts/*.js', - 'app/theme.tumblr', + 'app/theme.tumblr' ], options:{ livereload: true @@ -33,7 +38,7 @@ module.exports = function(grunt) { connect: { main: { options: { - port: 9000, + port: appPort, base: 'app' } } @@ -50,5 +55,19 @@ module.exports = function(grunt) { grunt.loadNpmTasks('grunt-contrib-sass'); grunt.loadNpmTasks('grunt-open'); grunt.registerTask('default', ['serve']); - grunt.registerTask('server', ['sass', 'connect', 'open', 'watch']); + grunt.registerTask('serve',['sass', 'connect', 'open', 'watch']); + grunt.registerTask('serve-remote',['sass', 'connect', 'print-remote', 'watch']); + grunt.registerTask('print-remote', function (err) { + var ifaces = os.networkInterfaces(); + console.log('Your remote server is browser-accessible via these URLs:') + for (var dev in ifaces) { + var alias=0; + ifaces[dev].forEach(function(details){ + if (details.family=='IPv4') { + console.log('http://'+details.address+':'+appPort, '('+dev+(alias?':'+alias:'')+')'); + ++alias; + } + }); + } + }); }; From a5fc40d83bad07967f089a0270122e442bc750dc Mon Sep 17 00:00:00 2001 From: Franklin Clark Date: Fri, 26 Sep 2014 02:04:37 -0700 Subject: [PATCH 03/10] #3 Preventing multiple instances of live reload from running in grunt --- app/templates/Gruntfile.js | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/app/templates/Gruntfile.js b/app/templates/Gruntfile.js index 4665b48..6d130a7 100644 --- a/app/templates/Gruntfile.js +++ b/app/templates/Gruntfile.js @@ -7,21 +7,18 @@ module.exports = function(grunt) { grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), watch: { + options:{ + livereload: true + }, scripts: { files: [ - 'app/theme/scripts/*.js', + 'app/theme/scripts/**/*/.js', 'app/theme.tumblr' - ], - options:{ - livereload: true - } + ] }, styles: { - files: ['app/theme/styles/*.scss'], - tasks: ['sass'], - options:{ - livereload: true - } + files: ['app/theme/styles/**/*.scss'], + tasks: ['sass'] } }, sass: { From 7414893cfc7f7f56933401f3fe54f0c80798861f Mon Sep 17 00:00:00 2001 From: Franklin Clark Date: Mon, 29 Sep 2014 22:34:15 -0700 Subject: [PATCH 04/10] Upgrading yosay from 0.3.0 to 1.0.0 * fixed typo in provision script --- .vagrant-provision.sh | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.vagrant-provision.sh b/.vagrant-provision.sh index acc6fd7..345f7e2 100644 --- a/.vagrant-provision.sh +++ b/.vagrant-provision.sh @@ -5,7 +5,7 @@ NPM_DIR="/usr/local/share/npm" echo "Provisioning: started..." echo "Current user is '$USER'" -echo "Provisioning: Installing node" +echo "Provisioning: Installing sass" gem install sass echo "Provisioning: Installing node" diff --git a/package.json b/package.json index 5bdffcf..09d2d96 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "dependencies": { "yeoman-generator": "^0.17.0", "chalk": "^0.5.0", - "yosay": "^0.3.0" + "yosay": "^1.0.0" }, "devDependencies": { "mocha": "*" From e80c9b7f10cf8b1d224d3690c7a3cd66e0d9847c Mon Sep 17 00:00:00 2001 From: Franklin Clark Date: Mon, 6 Oct 2014 02:43:16 -0700 Subject: [PATCH 05/10] Adding spotter node server script --- app/templates/spottr.js | 43 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 app/templates/spottr.js diff --git a/app/templates/spottr.js b/app/templates/spottr.js new file mode 100644 index 0000000..df9c855 --- /dev/null +++ b/app/templates/spottr.js @@ -0,0 +1,43 @@ + +var http = require('http'); + +http.createServer(function (req, res) { + + var url; + + if (req.url.match('^/content')) { + + // returns [1] as undefined if no greater than 0 in length + url = req.url.match('^/content\/(.*){0,}')[1]; + + if (url) { + + console.log('Spottr: Requesting source of "%s"', url); + + http.get('http://' + url, function (response) { + + res.writeHeader(200, {"Content-Type": "text/html"}); + + console.log('Spottr: Response received with status code %s', response.statusCode); + + if (response.statusCode === 200) { + response.setEncoding('utf8'); + response.on('data', function (chunk) { + res.write(chunk.toString()); + }); + response.on('end', function () { + // TODO make sure to end response if this 'end' event never happens + res.end(); + }) + } else { + res.write('Didn\'t work'); + res.end(); + } + }).on('error', function (e) { + console.log('Got error: ' + e.message); + }); + + } + }; + +}).listen('8080'); \ No newline at end of file From 589cec18e0395d570727b929150b3d4a078a53cd Mon Sep 17 00:00:00 2001 From: Franklin Date: Mon, 6 Oct 2014 23:19:55 -0700 Subject: [PATCH 06/10] Making spottr more stable by making routing more strict and supporting 404 behavior --- app/templates/spottr.js | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/app/templates/spottr.js b/app/templates/spottr.js index df9c855..027830b 100644 --- a/app/templates/spottr.js +++ b/app/templates/spottr.js @@ -1,11 +1,20 @@ - +/** + * Spottr + * + * A tumblr blog proxy that converts XML tumblr logs to JSON + * @author ffffranklin + */ + +var PORT = 8080; var http = require('http'); http.createServer(function (req, res) { var url; - if (req.url.match('^/content')) { + + // check if url path starts with content and has a character after it + if (req.url.match(/^\/content\/\S+/)) { // returns [1] as undefined if no greater than 0 in length url = req.url.match('^/content\/(.*){0,}')[1]; @@ -16,14 +25,14 @@ http.createServer(function (req, res) { http.get('http://' + url, function (response) { - res.writeHeader(200, {"Content-Type": "text/html"}); + res.writeHeader(200, {"Content-Type": "text/plain"}); console.log('Spottr: Response received with status code %s', response.statusCode); if (response.statusCode === 200) { response.setEncoding('utf8'); response.on('data', function (chunk) { - res.write(chunk.toString()); + res.write(chunk); }); response.on('end', function () { // TODO make sure to end response if this 'end' event never happens @@ -38,6 +47,12 @@ http.createServer(function (req, res) { }); } - }; + } else { + res.write('404'); + res.end(); + } + +}).listen(PORT); + +console.log('Spottr: Created Server "http://localhost:%s"', PORT); -}).listen('8080'); \ No newline at end of file From 6adcacb85b66861db046a29a701faf1091a2da2e Mon Sep 17 00:00:00 2001 From: Franklin Clark Date: Wed, 5 Nov 2014 01:43:53 -0800 Subject: [PATCH 07/10] #8 Adding spotter repo to dependencies --- app/templates/_package.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/templates/_package.json b/app/templates/_package.json index 5e96f82..abe586f 100644 --- a/app/templates/_package.json +++ b/app/templates/_package.json @@ -1,7 +1,9 @@ { "name": "package", "version": "0.0.0", - "dependencies": {}, + "dependencies": { + "spottr": "git://github.com/ffffranklin/spottr" + }, "devDependencies": { "grunt-contrib-sass": "^0.8.1", "grunt-contrib-watch": "~0.6.1", From 3230556f9e0a16f14aa87eedb2d4c81a58fa9e6a Mon Sep 17 00:00:00 2001 From: Franklin Clark Date: Thu, 6 Nov 2014 00:29:26 -0800 Subject: [PATCH 08/10] #6 Adding Spottr task to grunt --- .vagrant-provision.sh | 2 +- app/templates/Gruntfile.js | 9 +++++++-- app/templates/tumblr-themr-1.0.js | 3 ++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/.vagrant-provision.sh b/.vagrant-provision.sh index 345f7e2..833ec97 100644 --- a/.vagrant-provision.sh +++ b/.vagrant-provision.sh @@ -10,7 +10,7 @@ gem install sass echo "Provisioning: Installing node" apt-get update -apt-get install -y nodejs nodejs-legacy npm +apt-get install -y nodejs nodejs-legacy npm git echo "Provisioning: Installing yeoman and tumblr theme generator" npm config -g set prefix $NPM_DIR diff --git a/app/templates/Gruntfile.js b/app/templates/Gruntfile.js index 6d130a7..e914aff 100644 --- a/app/templates/Gruntfile.js +++ b/app/templates/Gruntfile.js @@ -1,4 +1,5 @@ var os = require('os'); +var SpottrServer = require('spottr'); module.exports = function(grunt) { @@ -52,8 +53,12 @@ module.exports = function(grunt) { grunt.loadNpmTasks('grunt-contrib-sass'); grunt.loadNpmTasks('grunt-open'); grunt.registerTask('default', ['serve']); - grunt.registerTask('serve',['sass', 'connect', 'open', 'watch']); - grunt.registerTask('serve-remote',['sass', 'connect', 'print-remote', 'watch']); + grunt.registerTask('serve',['sass', 'connect', 'spottr', 'open', 'watch']); + grunt.registerTask('serve-remote',['sass', 'connect', 'spottr', 'print-remote', 'watch']); + grunt.registerTask('spottr', function (err) { + var server = new SpottrServer(); + server.start(); + }); grunt.registerTask('print-remote', function (err) { var ifaces = os.networkInterfaces(); console.log('Your remote server is browser-accessible via these URLs:') diff --git a/app/templates/tumblr-themr-1.0.js b/app/templates/tumblr-themr-1.0.js index b22fe20..1981175 100644 --- a/app/templates/tumblr-themr-1.0.js +++ b/app/templates/tumblr-themr-1.0.js @@ -527,7 +527,8 @@ $.noConflict(); if (typeof TumblrThemr.cache[c] !== "undefined" && TumblrThemr.cache[c] !== null) { TumblrThemr.render(d, TumblrThemr.cache[c]) } else { - $.ajax({url: "http://tumblrxmltojson.icelab.com.au/content/" + c + "?callback=?",dataType: "json",success: function(e) { + // $.ajax({url: "http://tumblrxmltojson.icelab.com.au/content/" + c + "?callback=?",dataType: "json",success: function(e) { + $.ajax({url: "http://" + window.location.hostname + ":8080/content/" + c + "?callback=?",dataType: "json",success: function(e) { TumblrThemr.cache[c] = e; TumblrThemr.render(d, e) },error: function(e, f) { From 1a1cc214b9b4152ef4c25140d0e32b5bf1bb5ebe Mon Sep 17 00:00:00 2001 From: Franklin Clark Date: Fri, 7 Nov 2014 19:56:06 -0800 Subject: [PATCH 09/10] #30 Updating dependencies --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 09d2d96..49d2ebe 100644 --- a/package.json +++ b/package.json @@ -24,8 +24,8 @@ "yeoman-generator" ], "dependencies": { - "yeoman-generator": "^0.17.0", - "chalk": "^0.5.0", + "yeoman-generator": "^0.17.7", + "chalk": "^0.5.1", "yosay": "^1.0.0" }, "devDependencies": { From 8f414bd455b76cb12a9e4231711abf08eb9b4b8c Mon Sep 17 00:00:00 2001 From: Franklin Clark Date: Fri, 7 Nov 2014 20:15:08 -0800 Subject: [PATCH 10/10] Updating package version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 49d2ebe..9a2ab86 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "generator-tumblr-theme", - "version": "0.2.3", + "version": "0.3.0", "description": "A tumblr theme generator for Yeoman", "homepage": "https://github.com/ffffranklin/generator-tumblr-theme", "bugs": "https://github.com/ffffranklin/generator-tumblr-theme/issues",