get_to_work 0.1.1 → 0.1.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 702f1cb0f80c92a0fc96a1351a93f11dd3799c29
4
- data.tar.gz: 95a4703aca307d23da758be2bd0cd9331e3235ff
3
+ metadata.gz: 99db98a21f49f1746d65a6a247c7e36493b06e17
4
+ data.tar.gz: 50c64d83496558636bc06bfe78c94f92620accdf
5
5
  SHA512:
6
- metadata.gz: c981e1db8108d16500160e45620b31804137f9ca155b9c71f12c2d7c1576929a24fcf3b1e626158f5203baf283b8d061d2188ee4896a452f4fd6801bb2dc219c
7
- data.tar.gz: 6564d6a0e3aefbfd7a1ff48136b4ff5bb246448b103da5257060aceb47af09a5b44a0c89ec9a1749b8a963d206df9905d077d1d26ecd29038fd407aa78da4aac
6
+ metadata.gz: e0577c64c70c83fe6a8e54b7b1874c11f59f972d686bc88fb5fe07ceddcac16aad42464f54d322d6b4a21e4931573c341974cf8ebcfda3d0f7fd18adb6452c54
7
+ data.tar.gz: e14692a6e1efe9287a15004688399c66eb5877dcc7517ed2d8a2be9c29ea0e2f7172c3acfa3a8903566da30ced26389a2f66494ad188d1b50e9cda32410f9a24
data/.rubocop.yml CHANGED
@@ -4,6 +4,8 @@ AllCops:
4
4
  - "vendor/**/*"
5
5
  - "db/schema.rb"
6
6
  UseCache: false
7
+ Style/LineLength:
8
+ Max: 130
7
9
  Style/CollectionMethods:
8
10
  Description: Preferred collection methods.
9
11
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#map-find-select-reduce-size
@@ -36,7 +38,7 @@ Style/IfUnlessModifier:
36
38
  Description: Favor modifier if/unless usage when you have a single-line body.
37
39
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#if-as-a-modifier
38
40
  Enabled: false
39
- MaxLineLength: 100
41
+ MaxLineLength: 130
40
42
  Style/OptionHash:
41
43
  Description: Don't use option hashes when you can use keyword arguments.
42
44
  Enabled: false
data/lib/get_to_work.rb CHANGED
@@ -11,6 +11,7 @@ require "get_to_work/keychain"
11
11
  require "get_to_work/command/bootstrap"
12
12
  require "get_to_work/command/start"
13
13
  require "get_to_work/command/stop"
14
+ require "get_to_work/command/last_story"
14
15
  require "get_to_work/service"
15
16
  require "get_to_work/service/pivotal_tracker"
16
17
  require "get_to_work/service/harvest"
@@ -1,20 +1,23 @@
1
1
  module GetToWork
2
2
  class CLI < Thor
3
- include GetToWork::Menu
4
-
5
3
  desc "bootstrap", "creates .gtw configuration for your current working directory"
6
4
  def bootstrap
7
- GetToWork::Command::Bootstrap.run(cli: self)
5
+ GetToWork::Command::Bootstrap.run
8
6
  end
9
7
 
10
8
  desc "start <Pivotal Tracker Story ID or URL>", "start working on a pivotal tracker story"
11
9
  def start(pt_id = nil)
12
- GetToWork::Command::Start.run(cli: self, pt_id: pt_id)
10
+ GetToWork::Command::Start.run(pt_id: pt_id)
13
11
  end
14
12
 
15
13
  desc "stop", "#stop working on your current story"
16
14
  def stop
17
- GetToWork::Command::Stop.run(cli: self)
15
+ GetToWork::Command::Stop.run
16
+ end
17
+
18
+ desc "last_story", "returns the id of the last story started"
19
+ def last_story
20
+ GetToWork::Command::LastStory.run
18
21
  end
19
22
  end
20
23
  end
@@ -2,13 +2,15 @@ require "keychain"
2
2
 
3
3
  module GetToWork
4
4
  class Command
5
+ include Thor::Shell
6
+ include GetToWork::Menu
7
+
5
8
  def self.run(opts = {})
6
9
  trap("SIGINT") { exit! }
7
10
  new(opts).run
8
11
  end
9
12
 
10
13
  def initialize(opts = {})
11
- @cli = opts[:cli]
12
14
  end
13
15
 
14
16
  def config_file
@@ -1,15 +1,13 @@
1
1
  module GetToWork
2
2
  class Command
3
3
  class Bootstrap < GetToWork::Command
4
- KEYCHAIN_SERVICE = "GetToWork::PivotalTracker".freeze
5
-
6
- def run(opts = {})
4
+ def run
7
5
  check_for_config_file
8
6
 
9
7
  pt = GetToWork::Service::PivotalTracker.new
10
8
 
11
- @cli.say "\n\nStep #1 #{pt.display_name} Setup", :magenta
12
- @cli.say "-----------------------------", :magenta
9
+ shell.say "\n\nStep #1 #{pt.display_name} Setup", :magenta
10
+ shell.say "-----------------------------", :magenta
13
11
 
14
12
  if pt.keychain
15
13
  pt.authenticate_with_keychain
@@ -23,9 +21,8 @@ module GetToWork
23
21
 
24
22
  GetToWork::ConfigFile.save
25
23
 
26
-
27
- @cli.say "\n\nStep #2 #{harvest_service.display_name} Setup", :magenta
28
- @cli.say "-----------------------------", :magenta
24
+ shell.say "\n\nStep #2 #{harvest_service.display_name} Setup", :magenta
25
+ shell.say "-----------------------------", :magenta
29
26
 
30
27
  unless harvest_service.authenticate_with_keychain
31
28
  subdomain, username, password = prompt_for_subdomain_and_login(harvest_service)
@@ -50,36 +47,34 @@ module GetToWork
50
47
  end
51
48
 
52
49
  def check_for_config_file
53
- @config_file = GetToWork::ConfigFile.instance
54
-
55
- if @config_file
56
- unless @cli.yes?("Would you like to overwrite your existing #{GetToWork::ConfigFile.filename} file? [y/N]", :green)
50
+ if config_file
51
+ unless shell.yes?("Would you like to overwrite your existing #{GetToWork::ConfigFile.filename} file? [y/N]", :green)
57
52
  exit(0)
58
53
  end
59
54
  end
60
55
  end
61
56
 
62
57
  def prompt_for_login(service)
63
- username = @cli.ask "#{service.display_name} Username:", :green
64
- password = @cli.ask "#{service.display_name} Password:", :green, echo: false
58
+ username = shell.ask "#{service.display_name} Username:", :green
59
+ password = shell.ask "#{service.display_name} Password:", :green, echo: false
65
60
 
66
61
  [username, password]
67
62
  end
68
63
 
69
64
  def prompt_for_subdomain_and_login(service)
70
- subdomain = @cli.ask "#{service.display_name} Subdomain:", :green
65
+ subdomain = shell.ask "#{service.display_name} Subdomain:", :green
71
66
  username, password = prompt_for_login(service)
72
67
 
73
68
  [subdomain, username, password]
74
69
  end
75
70
 
76
71
  def auth_with_service(service:, username:, password:, subdomain: nil)
77
- @cli.say "\n\nAuthenticating with #{service.display_name}...", :magenta
72
+ shell.say "\n\nAuthenticating with #{service.display_name}...", :magenta
78
73
 
79
74
  begin
80
75
  service.authenticate(username: username, password: password, subdomain: subdomain)
81
76
  rescue Service::UnauthorizedError
82
- @cli.say "Could not authenticate with #{service.display_name}", :red
77
+ shell.say "Could not authenticate with #{service.display_name}", :red
83
78
  exit(1)
84
79
  end
85
80
 
@@ -89,7 +84,7 @@ module GetToWork
89
84
  def prompt_select_project(service)
90
85
  project_options = GetToWork::MenuPresenter.with_collection(service.projects)
91
86
 
92
- @cli.menu_ask(
87
+ menu_ask(
93
88
  "\nSelect a #{service.display_name} project:",
94
89
  project_options,
95
90
  :green,
@@ -98,9 +93,13 @@ module GetToWork
98
93
  end
99
94
 
100
95
  def prompt_select_tasks(service, project)
101
- project_options = GetToWork::MenuPresenter.with_collection(project["tasks"])
96
+ tasks = project["tasks"].sort do |x, y|
97
+ x[:name] <=> y[:name]
98
+ end
99
+
100
+ project_options = GetToWork::MenuPresenter.with_collection(tasks)
102
101
 
103
- selected_project = @cli.menu_ask(
102
+ menu_ask(
104
103
  "\nSelect a #{service.display_name} Task:",
105
104
  project_options,
106
105
  :green,
@@ -0,0 +1,11 @@
1
+ module GetToWork
2
+ class Command
3
+ class LastStory < GetToWork::Command
4
+ def run
5
+ pt_data = config_file.data["pivotal_tracker"]
6
+ last_story_id = pt_data && pt_data["project_id"]
7
+ shell.say(last_story_id)
8
+ end
9
+ end
10
+ end
11
+ end
@@ -32,10 +32,10 @@ module GetToWork
32
32
  last_story = config_file["last_story"]
33
33
 
34
34
  if last_story
35
- @cli.say "\nWould you like to start a timer for your last story?", :green
36
- @cli.say " ##{last_story[:id.to_s]} ", [:bold, :cyan]
37
- @cli.say "#{last_story[:name.to_s]}", :magenta
38
- answer = @cli.yes? "\n[y/N]", :green
35
+ shell.say "\nWould you like to start a timer for your last story?", :green
36
+ shell.say " ##{last_story[:id.to_s]} ", [:bold, :cyan]
37
+ shell.say "#{last_story[:name.to_s]}", :magenta
38
+ answer = shell.yes? "\n[y/N]", :green
39
39
 
40
40
  if answer
41
41
  @pt_id = last_story["id"]
@@ -43,7 +43,7 @@ module GetToWork
43
43
  exit(0)
44
44
  end
45
45
  else
46
- @cli.say "Couldn't find your last started timer. Please specify a story id."
46
+ shell.say "Couldn't find your last started timer. Please specify a story id."
47
47
  exit(0)
48
48
  end
49
49
  end
@@ -3,7 +3,7 @@ module GetToWork
3
3
  class Stop < GetToWork::Command
4
4
  def run
5
5
  if last_timer
6
- @cli.say "\nStopping your current timer...\n\n", :green
6
+ shell.say "\nStopping your current timer...\n\n", :green
7
7
  result = harvest_service.stop_timer(last_timer)
8
8
 
9
9
  if result["id"]
@@ -11,7 +11,7 @@ module GetToWork
11
11
  config_file.save
12
12
  end
13
13
  else
14
- @cli.say "\nYour timer has already been stopped.\n\n", :red
14
+ shell.say "\nYour timer has already been stopped.\n\n", :red
15
15
  end
16
16
  end
17
17
  end
@@ -1,7 +1,7 @@
1
1
  module GetToWork
2
2
  module Menu
3
3
  def menu_ask(statement, options, *args)
4
- print_table(options.table) # Assuming MenuPresenter type
4
+ shell.print_table(options.table) # Assuming MenuPresenter type
5
5
  choice = ask(statement, *args)
6
6
  options.item_for(choice: choice)
7
7
  end
@@ -52,7 +52,9 @@ module GetToWork
52
52
  end
53
53
 
54
54
  def projects
55
- api_client.time.trackable_projects
55
+ api_client.time.trackable_projects.sort do |x, y|
56
+ x[:name] <=> y[:name]
57
+ end
56
58
  end
57
59
 
58
60
  def project
@@ -58,7 +58,9 @@ module GetToWork
58
58
  end
59
59
 
60
60
  def get_projects
61
- api_client.projects
61
+ api_client.projects.sort do |x, y|
62
+ x[:name] <=> y[:name]
63
+ end
62
64
  end
63
65
 
64
66
  def story(story_id)
@@ -1,3 +1,3 @@
1
1
  module GetToWork
2
- VERSION = "0.1.1".freeze
2
+ VERSION = "0.1.2".freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: get_to_work
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Rittersdorf
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-02-18 00:00:00.000000000 Z
11
+ date: 2016-03-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -217,6 +217,7 @@ files:
217
217
  - lib/get_to_work/cli.rb
218
218
  - lib/get_to_work/command.rb
219
219
  - lib/get_to_work/command/bootstrap.rb
220
+ - lib/get_to_work/command/last_story.rb
220
221
  - lib/get_to_work/command/start.rb
221
222
  - lib/get_to_work/command/stop.rb
222
223
  - lib/get_to_work/config_file.rb