#!/usr/bin/ruby
require 'rubygems'
require 'json'
require 'thor'

class Productionize < Thor
	desc "validate", "validate your AWS Data Pipleine JSON definition file"
	method_option :filename, :aliases => "-f", :desc => "the file you wish to validate"
	def validate
	  puts "validate #{options.inspect}"
	end
	desc "compile", "compile your AWS Data Pipeline definition file with your config file"
	method_option :filename, :aliases => "-f", :desc => "the AWS Data Pipeline JSON template file"
	method_option :config_file, :aliases => "-c", :default => "config.json", :desc => "the configuration file to be compiled with the template file"
	method_option :output_file, :aliases => "-o", :default =>  "template.compiled.json" , :desc => "the file to where compiled output will reside"
	def compile
	  filename = options.filename
	  config_file = options.config_file
	  unparsedTemplate = File.read(filename)
	  #puts unparsed
	  puts "parsing #{filename}"
	  parsedTemplate = JSON.parse(unparsedTemplate)
      #parsed.each do |element,data|
	  resultArr = parsedTemplate.fetch("objects")
	  #puts resultArr.length
	  #puts resultArr.class
	  #puts resultArr[0]["id"]
	  #abort
	  i =0
	  while i < resultArr.length do
	    #puts " id: #{resultArr[i]["id"]} ,type: #{resultArr[i]["type"]}"
	    if resultArr[i]["type"] == "RedshiftDatabase"
	    	puts resultArr[i]["clusterId"]
	    	puts resultArr[i]["databaseName"]
	    	puts resultArr[i]["username"]
	    	puts resultArr[i]["*password"]
	    	puts resultArr[i].inspect
	    end
	    i +=1
      end
	  #resultArr.each {|val, index| puts "#{val} => #{index}" }

      	#end
      	#puts data] #nil, because there is no top level key for the JSON string
      	#data.each {|key,val| puts " heres the key  #{key}    and the value ... #{val}   wtf   " } 
      #end
      #puts parsed.length

	  #puts "compile #{options.inspect}"
	end
end

Productionize.start
