class Todone::MessageProcessor
Attributes
config[R]
config_dir[W]
Public Class Methods
commit_msg_file()
click to toggle source
# File lib/todone.rb, line 43 def commit_msg_file File.join(git_dir,'COMMIT_EDITMSG') end
git_config()
click to toggle source
# File lib/todone.rb, line 53 def git_config; File.join(git_dir,'config') end
git_dir()
click to toggle source
# File lib/todone.rb, line 47 def git_dir if Dir.getwd.split('/').last == 'hooks' then '..' elsif File.exists? '.git' then '.git' end end
init(options)
click to toggle source
# File lib/todone.rb, line 17 def init options return if options[:owner].nil? or options[:api_key].nil? dir = options.delete(:dir) || Todone::Consts::CONFIG_DIR conf_file = File.join(dir, Todone::Consts::CONFIG_FILE) FileUtils.mkdir_p dir unless File.exists? dir unless File.exists? conf_file File.open(conf_file, 'w') do |f| YAML.dump({ :owner => options[:owner], :api_key => options[:api_key] }, f) end end end
load_project_id()
click to toggle source
# File lib/todone.rb, line 34 def load_project_id File.open(Todone::MessageProcessor.git_config) do |file| file.each_line do |line| return file.gets.tr("\s\t\n",'').split('=').last if line.slice('[pivotal]') end end return nil end
needs_init?(dir = Todone::Consts::CONFIG_DIR)
click to toggle source
# File lib/todone.rb, line 13 def needs_init? dir = Todone::Consts::CONFIG_DIR not File.exists? File.join(dir, Todone::Consts::CONFIG_FILE) end
new(opts = {})
click to toggle source
# File lib/todone.rb, line 57 def initialize opts = {} self.config_dir = opts[:config_dir] project_id = opts[:project_id] || Todone::MessageProcessor.load_project_id @pp = Todone::PivotalPuller.new(:project_id => project_id, :tracker_token => config.api_key) if project_id end
Public Instance Methods
add_hook(project_id)
click to toggle source
# File lib/todone.rb, line 73 def add_hook project_id if File.exists? Todone::Consts::HOOK_FILE return ['exists_prepare_commit_msg_hook',{:project_id => project_id}] else File.open(Todone::Consts::HOOK_FILE,'w') do |f| f.write("todone tickets -s -w") end FileUtils.chmod 0751, Todone::Consts::HOOK_FILE return "prepare_commit_msg_hook_updated" end end
add_project(project)
click to toggle source
# File lib/todone.rb, line 63 def add_project project return 'missing_project' if project.nil? or project[:id].nil? or project[:users].nil? save_project_id project[:id] config[project[:id]] = project[:users].split(',') config.save config_dir return ['missing_hooks_dir', {:project => project}] unless File.exists? File.join('.git','hooks') return self.add_hook project[:id] end
config_dir()
click to toggle source
# File lib/todone.rb, line 94 def config_dir (@config_dir.nil? && Todone::Consts::CONFIG_DIR) || @config_dir end
method_missing(method_id, *args)
click to toggle source
Calls superclass method
# File lib/todone.rb, line 122 def method_missing(method_id, *args) super unless match = /view_(.*)/.match(method_id.to_s) and Todone::MessageProcessor.method_defined?(match[1]) method = match[1] view, data = self.send(method, *args) return self.send('missing_view',:method=> method) unless Todone::Views.method_defined? view self.send(view, data) end
save_project_id(project_id)
click to toggle source
# File lib/todone.rb, line 85 def save_project_id project_id `git config -f .git/config pivotal.project-id #{project_id}` end
tickets()
click to toggle source
# File lib/todone.rb, line 98 def tickets return ["missing_project_id"] if @pp.nil? api_data = @pp.pull_stories("started") if api_data.class == Hash api_data.delete("error") else ["show_pivotal_stories", { :stories => api_data } ] end end
write_tickets(opts = {})
click to toggle source
# File lib/todone.rb, line 108 def write_tickets opts = {} file = opts[:file] || Todone::MessageProcessor.commit_msg_file if File.exists? file File.open(file, 'r+') do |f| original_message = f.read f.pos = 0 f.write( view_tickets + original_message ) end else puts missing_write_file( :file => file ) end end