Class: Toolshed::Commands::TicketInformation

Inherits:
Object
  • Object
show all
Defined in:
lib/toolshed/commands/ticket_information.rb

Instance Method Summary collapse

Instance Method Details

#execute(args, options = {}) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/toolshed/commands/ticket_information.rb', line 4

def execute(args, options = {})
  begin
    ticket_tracker_class =  Object.const_get("Toolshed::TicketTracking::#{Toolshed::Client.ticket_tracking_tool.camel_case}")

    use_project_id = Object.const_get("#{ticket_tracker_class}::USE_PROJECT_ID") rescue false
    if use_project_id
      ticket_tracker_project_id = read_user_input_project("Project ID (Default: #{Toolshed::Client.default_pivotal_tracker_project_id}):", options.merge!({ default: Toolshed::Client.default_pivotal_tracker_project_id }))
      options.merge!({ project_id: ticket_tracker_project_id })
    end

    use_project_name = Object.const_get("#{ticket_tracker_class}::USE_PROJECT_NAME") rescue false
    if use_project_name
      ticket_tracker_project_name = read_user_input_project("Project Name (Default: #{Toolshed::Client.default_ticket_tracker_project}):", options.merge!({ default: Toolshed::Client.default_ticket_tracker_project }))
      options.merge!({ project: ticket_tracker_project_name })
    end

    default_ticket_id = Toolshed::TicketTracking::story_id_from_branch_name(Toolshed::Git::Base.branch_name)
    ticket_id = read_user_input_ticket_id("Story ID (Default: #{default_ticket_id}):", options.merge!({ default: default_ticket_id }))
    options.merge!({ ticket_id: ticket_id })

    ticket_tracker = ticket_tracker_class.create_instance(options)

    if use_project_id
      puts "Using Project: #{ticket_tracker_project_id}"
    end
    puts "Using Ticket: #{ticket_id}"

    result = ticket_tracker.ticket

    if (options[:field])
      field_value = result.send(options[:field])
      if (options[:clipboard])
        Clipboard.copy field_value
      end

      puts field_value
    elsif(options[:formatted_string])
      formatted_string = options[:formatted_string].gsub(/\{(.*?)\}/) { |m| result.send(m.gsub("{", "").gsub("}", "")) }
      if (options[:clipboard])
        Clipboard.copy formatted_string
      end

      puts formatted_string
    else
      result.instance_variables.each do |name, value|
        puts "#{name}: #{result.instance_variable_get(name).inspect}"
      end
    end

    return
  rescue => e
    puts e.message
    exit
  end
end

#read_user_input_project(message, options) ⇒ Object



60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/toolshed/commands/ticket_information.rb', line 60

def read_user_input_project(message, options)
  return options[:default] if (options.has_key?(:use_defaults))

  puts message
  value = $stdin.gets.chomp

  if (value.empty?)
    value = options[:default]
  end

  value
end

#read_user_input_ticket_id(message, options) ⇒ Object



73
74
75
76
77
78
79
80
81
82
83
84
# File 'lib/toolshed/commands/ticket_information.rb', line 73

def read_user_input_ticket_id(message, options)
  return options[:default] if (options.has_key?(:use_defaults))

  puts message
  value = $stdin.gets.chomp

  if (value.empty?)
    value = options[:default]
  end

  value
end