djanowski-helm 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.markdown CHANGED
@@ -12,14 +12,14 @@ Although Helm can receive all the parameters it needs from the command line, usu
12
12
 
13
13
  1. Edit `~/.helm_config` and add your credentials for the account. You can provide a token (recommended) or your username and password (this is necessary if you want to use scraping commands like `upload`).
14
14
 
15
- http://account.lighthouseapp.com:
16
- token: API token
15
+ http://your-account.lighthouseapp.com:
16
+ token: your API token
17
17
  username: username
18
18
  password: password
19
19
 
20
20
  2. Edit your project's `.helm_config`.
21
21
 
22
- url: http://account.lighthouseapp.com
22
+ url: http://your-account.lighthouseapp.com
23
23
  project: "Your project's full name"
24
24
 
25
25
  3. Try it.
@@ -35,6 +35,7 @@ This *will* change.
35
35
 
36
36
  Examples:
37
37
 
38
+ $ helm list
38
39
  $ helm list state:open
39
40
  $ helm list "responsible:me state:open"
40
41
 
data/bin/helm CHANGED
@@ -1,8 +1,42 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ if ARGV.empty?
4
+ puts <<-eos
5
+ Available helm commands:
6
+ # List tickets. The default filter
7
+ # is "responsible:me state:open milestone:next".
8
+ $ helm list [filter]
9
+
10
+ # Display information about a particular ticket.
11
+ $ helm info [ticket id]
12
+
13
+ # Display information about a particular milestone.
14
+ $ helm show [milestone id]
15
+
16
+ # Assign a ticket to self.
17
+ $ helm assign [ticket id]
18
+
19
+ # Assign a ticket to another user.
20
+ $ helm assign [ticket id] [user id]
21
+
22
+
23
+ # Assign a ticket to a milestone.
24
+ $ helm assign [ticket id] [milestone name]
25
+
26
+ # Create a new ticket.
27
+ $ echo "Ticket description" | helm create
28
+
29
+ Check http://github.com/djanowski/helm/ for more information.
30
+ eos
31
+ exit
32
+ end
33
+
3
34
  require 'rubygems'
35
+
36
+ gem 'soveran-drawer', '>= 0.0.5'
4
37
  require 'drawer'
5
- require 'helm'
38
+
39
+ require File.join(File.dirname(__FILE__), '..', 'lib', 'helm')
6
40
 
7
41
  def argv(key)
8
42
  start = "--#{key}="
@@ -13,14 +47,29 @@ end
13
47
  def append_arguments(args)
14
48
  args.each do |k, v|
15
49
  ARGV << "--#{k}=#{v}" unless argv(k)
16
- end
50
+ end if args
17
51
  end
18
52
 
19
- Drawer.open('.helm/config') do |config|
53
+ def configure(file)
54
+ puts <<-eos
55
+ The configuration file #{file} doesn't exist.
56
+ Please refer to the documentation to see what to
57
+ write in that file.
58
+ eos
59
+ exit
60
+ end
61
+
62
+ custom_config = File.expand_path('.helm_config')
63
+ global_config = File.expand_path('~/.helm/config')
64
+
65
+ configure(custom_config) unless File.exists?(custom_config)
66
+ configure(global_config) unless File.exists?(global_config)
67
+
68
+ Drawer.open(custom_config) do |config|
20
69
  append_arguments(config.cache)
21
70
  end
22
71
 
23
- Drawer.open('~/.helm_config') do |config|
72
+ Drawer.open(global_config) do |config|
24
73
  append_arguments(config.get(argv(:url)))
25
74
  end
26
75
 
@@ -14,6 +14,10 @@ module Helm
14
14
  def initialize(session)
15
15
  @session = session
16
16
  end
17
+
18
+ def format
19
+ @formatter ||= Helm::Formatter.new
20
+ end
17
21
  end
18
22
  end
19
23
  end
@@ -0,0 +1,19 @@
1
+ module Helm
2
+ module Commands
3
+ class Schedule < Command
4
+ def run
5
+ parameters :ticket, :milestone
6
+
7
+ ticket = session.ticket
8
+
9
+ current_milestone = session.milestone(ticket.milestone_id)
10
+
11
+ ticket.milestone_id = session.milestone.id
12
+
13
+ if ticket.save
14
+ puts format.ticket_change(ticket, :milestone, current_milestone, session.milestone)
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,15 @@
1
+ module Helm
2
+ class Formatter
3
+ def ticket_number(ticket)
4
+ "##{ticket.id}".rjust(4)
5
+ end
6
+
7
+ def ticket_with_title(ticket)
8
+ "#{ticket_number(ticket)} #{ticket.title}"
9
+ end
10
+
11
+ def ticket_change(ticket, attribute, old_value, new_value)
12
+ "#{ticket_number(ticket)} #{attribute} changed: #{old_value || '(none)'} => #{new_value}"
13
+ end
14
+ end
15
+ end
data/lib/helm/session.rb CHANGED
@@ -36,7 +36,7 @@ module Helm
36
36
  end
37
37
 
38
38
  @options = Choice.choices
39
- @cache = Drawer.open!('.helm/cache')
39
+ @cache = Drawer.open!('~/.helm/cache')
40
40
 
41
41
  configure
42
42
  end
@@ -71,14 +71,27 @@ module Helm
71
71
  project.tickets(:q => filter)
72
72
  end
73
73
 
74
- def milestone(id = nil)
75
- if id
76
- Lighthouse::Milestone.find(id)
74
+ def milestone(*args)
75
+ # TODO: ugly
76
+ debugger
77
+
78
+ if args.empty?
79
+ milestone_by_title(self[:milestone])
80
+ elsif args.first.nil?
81
+ nil
82
+ elsif args.first.to_i.to_s == args.first.to_s
83
+ Lighthouse::Milestone.find(args.first, :params => {:project_id => project.id})
77
84
  else
78
- @milestone ||= Lighthouse::Milestone.find(:all, :params => {:project_id => project.id}).detect {|m| m.title == self[:milestone] }
85
+ milestone_by_title(args.first)
79
86
  end
80
87
  end
81
88
 
89
+ def milestone_by_title(title)
90
+ title = title.to_s
91
+
92
+ Lighthouse::Milestone.find(:all, :params => {:project_id => project.id}).detect {|m| m.title == title }
93
+ end
94
+
82
95
  def user(id = nil)
83
96
  if id
84
97
  Lighthouse::User.find(id)
data/lib/helm.rb CHANGED
@@ -1,11 +1,14 @@
1
1
  require File.dirname(__FILE__) + '/helm/lighthouse'
2
2
  require File.dirname(__FILE__) + '/helm/session'
3
+ require File.dirname(__FILE__) + '/helm/formatter'
3
4
 
4
5
  require File.dirname(__FILE__) + '/helm/commands/command'
5
- require File.dirname(__FILE__) + '/helm/commands/info'
6
+
6
7
  require File.dirname(__FILE__) + '/helm/commands/assign'
7
8
  require File.dirname(__FILE__) + '/helm/commands/create'
9
+ require File.dirname(__FILE__) + '/helm/commands/info'
10
+ require File.dirname(__FILE__) + '/helm/commands/list'
8
11
  require File.dirname(__FILE__) + '/helm/commands/resolve'
12
+ require File.dirname(__FILE__) + '/helm/commands/schedule'
9
13
  require File.dirname(__FILE__) + '/helm/commands/show'
10
- require File.dirname(__FILE__) + '/helm/commands/list'
11
14
  require File.dirname(__FILE__) + '/helm/commands/upload'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: djanowski-helm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Damian Janowski
@@ -28,7 +28,7 @@ dependencies:
28
28
  requirements:
29
29
  - - ">="
30
30
  - !ruby/object:Gem::Version
31
- version: 0.0.4
31
+ version: 0.0.5
32
32
  version:
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: activeresource
@@ -54,14 +54,17 @@ files:
54
54
  - lib/helm/commands/info.rb
55
55
  - lib/helm/commands/list.rb
56
56
  - lib/helm/commands/resolve.rb
57
+ - lib/helm/commands/schedule.rb
57
58
  - lib/helm/commands/show.rb
58
59
  - lib/helm/commands/upload.rb
60
+ - lib/helm/formatter.rb
59
61
  - lib/helm/lighthouse.rb
60
62
  - lib/helm/project.rb
61
63
  - lib/helm/session.rb
62
64
  - lib/helm.rb
63
65
  - README.html
64
66
  - README.markdown
67
+ - README.textile
65
68
  - LICENSE
66
69
  - Rakefile
67
70
  has_rdoc: false