Sha256: 2f1f6573ac5de495416cb80156bbcaac6dccd4b7584c37c55c90e1db097f52df

Contents?: true

Size: 1.69 KB

Versions: 1

Compression:

Stored size: 1.69 KB

Contents

class Kit

	def initialize config

		config = load_config_file config if File.exists? config

		fail StandardError unless config.is_a? Hash
		fail StandardError unless config[:kits_path]

		@@kit_path = config[:kits_path]

		defaults = YAML.load File.read @@kit_path + "/config.yml"
		config = defaults.merge config

		load 'kit/db_sqlite3.rb' if config[:db_backend] == :sqlite3

		load @@kit_path + "/bit.rb"

		@@db = Backend.new config[:db_config]
		@@info = config[:info]
		@@actions = config[:actions]
	end

	def load_config_file file

		config = YAML.load File.read file
		@@config_path = File.absolute_path File.dirname file

		dir = config[:kits_path]
		if config[:kits_path].nil?
			dir = @@config_path
		else
			dir = File.absolute_path @@config_path + config[:kits_path] unless [ "/", "~" ].include? config[:kits_path][0]
		end

		config[:kits_path] = dir
		return config
	end

	def delete_dbs
		@@db.db_paths.each do |key, f|
			File.delete f
		end
	end

	def add_bit info
		Bit.new info
	end

	def add_task action, options
		fail NoAction unless @@actions.include? action
		@@db.insert_action action, options
	end

	def run_tasks

		collect_tasks_by_bit.each do |bit, tasks|
			s = Bit.new bit

			actions = tasks.group_by { |t| t[:action] } . keys

			actions.each do |a|
				load @@kit_path + "/#{a}/#{s.project_name}.rb"
				s.extend Actions
			end

			tasks.each do |t|
				s.add_task t
			end

			s.run_all

		end
	end

	private
	def collect_tasks_by_bit

		tasks = []
		@@actions.each_key do |action|
			tasks.push @@db.select_all_actions_by_status action, @@actions[action], :pending
		end
		tasks.flatten!

		tasks.group_by { |t| t[:bit] }
	end

	class NoAction < StandardError
	end

end

require 'kit/bit'

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
kit-0.0.5 lib/kit.rb