From 32f7a8ac7b44d7ec5e1211eb1a3af63d29d23e9b Mon Sep 17 00:00:00 2001 From: Sami Samhuri Date: Thu, 26 Nov 2009 20:40:00 -0800 Subject: [PATCH] [CHANGED] added injection script and pretty printing. --- inject.rb | 62 ++++++++++++++++++++++++ prettyprint.py | 36 ++++++++++++++ ext.js => src/ext.js | 0 {ext => src/ext}/pretty-print.js | 0 {ext => src/ext}/scene-assistant-base.js | 0 {ext => src/ext}/typeof.js | 0 6 files changed, 98 insertions(+) create mode 100755 inject.rb create mode 100755 prettyprint.py rename ext.js => src/ext.js (100%) rename {ext => src/ext}/pretty-print.js (100%) rename {ext => src/ext}/scene-assistant-base.js (100%) rename {ext => src/ext}/typeof.js (100%) diff --git a/inject.rb b/inject.rb new file mode 100755 index 0000000..9ed9128 --- /dev/null +++ b/inject.rb @@ -0,0 +1,62 @@ +#!/usr/bin/env ruby + +require 'rubygems' +require 'json' +require 'fileutils' + +def inject + FileUtils.cp_r(mojo_ext_path, target_mojo_ext_path) + + mojo_ext_source_dict = {'source' => 'mojo-ext/ext.js'} + unless sources.first == mojo_ext_source_dict + sources.unshift(mojo_ext_source_dict) + save_sources! + end +end + +def extended? + File.exists?(File.join(project_path, 'mojo-ext')) +end + +def sources + $sources ||= JSON.parse(File.read(sources_file)) +end + +def sources_file + File.join(project_path, 'sources.json') +end + +def save_sources! + FileUtils.mv(sources_file, File.join(project_path, 'sources.json-backup')) + File.open(sources_file, 'w') {|f| f.puts(sources.to_json)} + `./prettyprint.py "#{sources_file}" "#{sources_file}"` +end + +def project_path + ARGV.first || Dir.pwd +end + +def main + unless File.exists?(sources_file) + raise "no Mojo project found at #{project_path}" + end + + if extended? + puts "project already contains Mojo.Ext, bailing" + else + inject + puts "injected Mojo.Ext" + end +end + +def mojo_ext_path + File.expand_path(File.join('..', 'src'), __FILE__) +end + +def target_mojo_ext_path + File.join(project_path, 'mojo-ext') +end + +if $0 == __FILE__ + main +end diff --git a/prettyprint.py b/prettyprint.py new file mode 100755 index 0000000..c3ce629 --- /dev/null +++ b/prettyprint.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python + +""" +Convert JSON data to human-readable form. + +Usage: + prettyJSON.py inputFile [outputFile] +""" + +import sys +import simplejson as json + + +def main(args): + try: + inputFile = open(args[1]) + input = json.load(inputFile) + inputFile.close() + except IndexError: + usage() + return False + if len(args) < 3: + print json.dumps(input, sort_keys = False, indent = 4) + else: + outputFile = open(args[2], "w") + json.dump(input, outputFile, sort_keys = False, indent = 4) + outputFile.close() + return True + + +def usage(): + print __doc__ + + +if __name__ == "__main__": + sys.exit(not main(sys.argv)) diff --git a/ext.js b/src/ext.js similarity index 100% rename from ext.js rename to src/ext.js diff --git a/ext/pretty-print.js b/src/ext/pretty-print.js similarity index 100% rename from ext/pretty-print.js rename to src/ext/pretty-print.js diff --git a/ext/scene-assistant-base.js b/src/ext/scene-assistant-base.js similarity index 100% rename from ext/scene-assistant-base.js rename to src/ext/scene-assistant-base.js diff --git a/ext/typeof.js b/src/ext/typeof.js similarity index 100% rename from ext/typeof.js rename to src/ext/typeof.js