dude-cli 1.0.2 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +0 -2
  3. data/.travis.yml +4 -3
  4. data/CHANGELOG.md +25 -0
  5. data/Gemfile +3 -2
  6. data/Gemfile.lock +55 -54
  7. data/README.md +41 -25
  8. data/bin/dude +3 -2
  9. data/dude.gemspec +16 -16
  10. data/lib/dude.rb +14 -0
  11. data/lib/dude/commands.rb +24 -0
  12. data/lib/dude/commands/checkout.rb +21 -0
  13. data/lib/dude/commands/install.rb +57 -0
  14. data/lib/dude/commands/move.rb +15 -0
  15. data/lib/dude/commands/start.rb +29 -0
  16. data/lib/dude/commands/stop.rb +15 -0
  17. data/lib/dude/commands/tasks.rb +31 -0
  18. data/lib/dude/commands/track.rb +28 -0
  19. data/lib/dude/commands/version.rb +11 -0
  20. data/lib/dude/git.rb +5 -0
  21. data/lib/dude/git/checkout.rb +2 -16
  22. data/lib/dude/git/current_branch_name.rb +1 -2
  23. data/lib/dude/project_management/client.rb +25 -0
  24. data/lib/dude/project_management/entities/board.rb +9 -0
  25. data/lib/dude/project_management/entities/issue.rb +37 -0
  26. data/lib/dude/project_management/jira.rb +9 -0
  27. data/lib/dude/project_management/jira/client.rb +49 -0
  28. data/lib/dude/project_management/jira/get_current_tasks.rb +40 -0
  29. data/lib/dude/project_management/jira/get_task_name_by_id.rb +24 -0
  30. data/lib/dude/project_management/jira/move_task_to_list.rb +47 -0
  31. data/lib/dude/project_management/trello.rb +6 -0
  32. data/lib/dude/project_management/trello/checkout.rb +4 -0
  33. data/lib/dude/project_management/trello/client.rb +33 -0
  34. data/lib/dude/project_management/trello/get_current_tasks.rb +24 -0
  35. data/lib/dude/project_management/trello/get_lists.rb +15 -0
  36. data/lib/dude/project_management/trello/move_tasks_to_list.rb +14 -0
  37. data/lib/dude/settings.rb +6 -2
  38. data/lib/dude/time_trackers/toggl.rb +5 -0
  39. data/lib/dude/time_trackers/toggl/base.rb +18 -0
  40. data/lib/dude/{toggl → time_trackers/toggl}/start_time_entry.rb +14 -8
  41. data/lib/dude/{toggl → time_trackers/toggl}/stop_time_entry.rb +4 -2
  42. data/lib/dude/version.rb +1 -1
  43. metadata +56 -103
  44. data/.ruby-version +0 -1
  45. data/LICENSE.txt +0 -21
  46. data/lib/dude/cli.rb +0 -156
  47. data/lib/dude/gitlab/add_spend_time.rb +0 -36
  48. data/lib/dude/gitlab/base.rb +0 -38
  49. data/lib/dude/gitlab/count_spend_time.rb +0 -13
  50. data/lib/dude/gitlab/estimate.rb +0 -20
  51. data/lib/dude/gitlab/get_issue_info.rb +0 -9
  52. data/lib/dude/gitlab/get_issue_time_spent.rb +0 -9
  53. data/lib/dude/gitlab/get_issue_title.rb +0 -14
  54. data/lib/dude/gitlab/get_my_issues.rb +0 -31
  55. data/lib/dude/gitlab/move_issue.rb +0 -37
  56. data/lib/dude/interface.rb +0 -98
  57. data/lib/dude/report.rb +0 -38
  58. data/lib/dude/service.rb +0 -18
  59. data/lib/dude/toggl.rb +0 -40
  60. data/lib/dude/toggl/base.rb +0 -36
  61. data/lib/dude/toggl/issue_spend_time.rb +0 -56
  62. data/lib/dude/toggl/report.rb +0 -25
@@ -0,0 +1,4 @@
1
+ # TODO
2
+ response = client.get("/1/boards/#{BOARD_ID}/cards/#{id}")
3
+ extracted_branch_name = JSON.parse(response.body).dig('url').rpartition('/').last
4
+ Git::Checkout.new.call(extracted_branch_name)
@@ -0,0 +1,33 @@
1
+ # TODO
2
+
3
+ require 'faraday'
4
+ require 'json'
5
+
6
+ module Dude
7
+ module Trello
8
+ class Client
9
+ private
10
+
11
+ def faraday_client
12
+ @faraday_client ||= Faraday.new('https://api.trello.com/', {
13
+ params: {
14
+ key: "62b20e9eeab2d6e06145c69178521225",
15
+ token: "6285fc2d2ff6100a5c341838d0e4acfed3601ae503beb973ddccf1cfab088537"
16
+ }
17
+ })
18
+ end
19
+
20
+ def method_missing(method, *args, &block)
21
+ faraday_client.send(method, *args, &block)
22
+ end
23
+
24
+ def get_current_tasks
25
+ GetCurrentTasks.new(client).call
26
+ end
27
+
28
+ def move_task_to_list(id, list)
29
+ MoveTasksToList.new(client, id: id, list_name: list).call
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,24 @@
1
+ # TODO
2
+ module Dude
3
+ module ProjectManagement
4
+ module Trello
5
+ class GetCurrentTasks
6
+
7
+ def initialize
8
+ client = Trello::Client.new
9
+
10
+ response = client.get("/1/lists/#{TODO_LIST_ID}/cards", { fields: 'name,idShort' })
11
+
12
+ body = JSON.parse(response.body)
13
+
14
+ puts "To Do list\n".green.bold
15
+
16
+ body.map do |issue|
17
+ binding.pry
18
+ Entities::Issue.new(id: card['idShort'], title: card['name'], description: issue.description, status: issue.status.name)
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,15 @@
1
+ # TODO
2
+ module Dude
3
+ module Trello
4
+ class GetLists < Dry::CLI::Command
5
+ desc "Get board lists"
6
+
7
+ def call
8
+ client = Trello::Client.new
9
+ response = client.get "/1/boards/#{BOARD_ID}/lists"
10
+ body = JSON.parse(response.body)
11
+ puts body
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,14 @@
1
+ # TODO
2
+ module Dude
3
+ module Trello
4
+ class MoveTasksToList < Dry::CLI::Command
5
+ desc "Get board lists"
6
+
7
+ def call
8
+ # response = client.get("/1/boards/#{BOARD_ID}/cards/#{id}", { fields: 'id' })
9
+ # card_id = JSON.parse(response.body).dig('id')
10
+ # client.put("/1/cards/#{card_id}", { idList: selected_list(list) })
11
+ end
12
+ end
13
+ end
14
+ end
data/lib/dude/settings.rb CHANGED
@@ -3,10 +3,14 @@ module Dude
3
3
  CONFIG_FILE = '.duderc'
4
4
 
5
5
  def settings
6
- @settings ||= read(file).strip.split("\n").
7
- map {|a| a.split('=').map(&:strip) }.to_h
6
+ @settings ||= read(file).strip.split("\n").map do |line|
7
+ next if line =~ /^#/ || line.empty?
8
+ line.split('=').map(&:strip)
9
+ end.compact.to_h
8
10
  end
9
11
 
12
+ private
13
+
10
14
  def file
11
15
  @file = File.join(Dir.home, CONFIG_FILE)
12
16
  end
@@ -0,0 +1,5 @@
1
+ require_relative './toggl/base'
2
+ require_relative './toggl/start_time_entry'
3
+
4
+ module Toggl
5
+ end
@@ -0,0 +1,18 @@
1
+ module Dude
2
+ module Toggl
3
+ class Base
4
+ include Settings
5
+
6
+ def toggl_api
7
+ Faraday.new('https://api.track.toggl.com') do |conn|
8
+ conn.basic_auth settings['TOGGL_TOKEN'], 'api_token'
9
+ conn.headers['Content-Type'] = 'application/json'
10
+ end
11
+ end
12
+
13
+ def projects_response
14
+ toggl_api.get("/api/v8/workspaces/#{settings['TOGGL_WORKSPACE_ID']}/projects")
15
+ end
16
+ end
17
+ end
18
+ end
@@ -1,17 +1,23 @@
1
+ require 'dude/time_trackers/toggl/base'
2
+
1
3
  module Dude
2
4
  module Toggl
3
5
  class StartTimeEntry < Dude::Toggl::Base
4
6
 
5
- def call
7
+ def call(task_title:, project:)
8
+ @task_title = task_title
9
+ @project = project
10
+
6
11
  start_time_entry
7
12
  print_message
8
13
  end
9
14
 
15
+ private
16
+
17
+ attr_reader :task_title, :project
18
+
10
19
  def start_time_entry
11
- toggl_api['time_entries/start'].post(
12
- time_entry_params(options[:title]),
13
- content_type: :json
14
- )
20
+ toggl_api.post('/api/v8/time_entries/start', time_entry_params(task_title))
15
21
  end
16
22
 
17
23
  def time_entry_params(title)
@@ -26,7 +32,7 @@ module Dude
26
32
 
27
33
  def project_id
28
34
  projects_array.each do |arr|
29
- return arr.last if arr.first.eql?(options[:project_title])
35
+ return arr.last if arr.first.eql?(project.downcase)
30
36
  end
31
37
  nil
32
38
  end
@@ -36,11 +42,11 @@ module Dude
36
42
  end
37
43
 
38
44
  def parsed_response
39
- JSON.parse(projects_response)
45
+ JSON.parse(projects_response.body)
40
46
  end
41
47
 
42
48
  def print_message
43
- puts "Toggl task '#{options[:title]}' is started".colorize(:green)
49
+ puts "Toggl task '#{task_title}' is started".colorize(:green)
44
50
  end
45
51
  end
46
52
  end
@@ -1,3 +1,5 @@
1
+ require 'dude/time_trackers/toggl/base'
2
+
1
3
  module Dude
2
4
  module Toggl
3
5
  class StopTimeEntry < Dude::Toggl::Base
@@ -9,11 +11,11 @@ module Dude
9
11
  end
10
12
 
11
13
  def stop_current_time_entry
12
- toggl_api["time_entries/#{current_time_entry['id']}/stop"].put ''
14
+ toggl_api.put("api/v8/time_entries/#{current_time_entry['id']}/stop", '')
13
15
  end
14
16
 
15
17
  def current_time_entry
16
- JSON.parse(toggl_api['time_entries/current'].get)['data']
18
+ JSON.parse(toggl_api.get('api/v8/time_entries/current').body)['data']
17
19
  end
18
20
 
19
21
  def print_success_message
data/lib/dude/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Dude
2
- VERSION = "1.0.2"
2
+ VERSION = "2.0.0"
3
3
  end
metadata CHANGED
@@ -1,141 +1,85 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dude-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nikita Pupko
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-07-24 00:00:00.000000000 Z
11
+ date: 2021-03-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: bundler
14
+ name: dry-cli
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '1.16'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '1.16'
27
- - !ruby/object:Gem::Dependency
28
- name: rake
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '10.0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '10.0'
41
- - !ruby/object:Gem::Dependency
42
- name: pry
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: 0.11.3
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: 0.11.3
55
- - !ruby/object:Gem::Dependency
56
- name: rspec
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '3.0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '3.0'
69
- - !ruby/object:Gem::Dependency
70
- name: thor
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
17
+ - - ">="
74
18
  - !ruby/object:Gem::Version
75
- version: '0.20'
19
+ version: '0.6'
76
20
  type: :runtime
77
21
  prerelease: false
78
22
  version_requirements: !ruby/object:Gem::Requirement
79
23
  requirements:
80
- - - "~>"
24
+ - - ">="
81
25
  - !ruby/object:Gem::Version
82
- version: '0.20'
26
+ version: '0.6'
83
27
  - !ruby/object:Gem::Dependency
84
- name: colorize
28
+ name: faraday
85
29
  requirement: !ruby/object:Gem::Requirement
86
30
  requirements:
87
31
  - - "~>"
88
32
  - !ruby/object:Gem::Version
89
- version: '0.8'
33
+ version: '1.1'
90
34
  type: :runtime
91
35
  prerelease: false
92
36
  version_requirements: !ruby/object:Gem::Requirement
93
37
  requirements:
94
38
  - - "~>"
95
39
  - !ruby/object:Gem::Version
96
- version: '0.8'
40
+ version: '1.1'
97
41
  - !ruby/object:Gem::Dependency
98
- name: gitlab
42
+ name: colorize
99
43
  requirement: !ruby/object:Gem::Requirement
100
44
  requirements:
101
45
  - - "~>"
102
46
  - !ruby/object:Gem::Version
103
- version: '4.3'
47
+ version: 0.8.1
104
48
  type: :runtime
105
49
  prerelease: false
106
50
  version_requirements: !ruby/object:Gem::Requirement
107
51
  requirements:
108
52
  - - "~>"
109
53
  - !ruby/object:Gem::Version
110
- version: '4.3'
54
+ version: 0.8.1
111
55
  - !ruby/object:Gem::Dependency
112
- name: git
56
+ name: jira-ruby
113
57
  requirement: !ruby/object:Gem::Requirement
114
58
  requirements:
115
59
  - - "~>"
116
60
  - !ruby/object:Gem::Version
117
- version: '1.3'
61
+ version: '2.1'
118
62
  type: :runtime
119
63
  prerelease: false
120
64
  version_requirements: !ruby/object:Gem::Requirement
121
65
  requirements:
122
66
  - - "~>"
123
67
  - !ruby/object:Gem::Version
124
- version: '1.3'
68
+ version: '2.1'
125
69
  - !ruby/object:Gem::Dependency
126
- name: rest-client
70
+ name: pry
127
71
  requirement: !ruby/object:Gem::Requirement
128
72
  requirements:
129
73
  - - "~>"
130
74
  - !ruby/object:Gem::Version
131
- version: '2.0'
132
- type: :runtime
75
+ version: 0.13.1
76
+ type: :development
133
77
  prerelease: false
134
78
  version_requirements: !ruby/object:Gem::Requirement
135
79
  requirements:
136
80
  - - "~>"
137
81
  - !ruby/object:Gem::Version
138
- version: '2.0'
82
+ version: 0.13.1
139
83
  description: This program helps to combine such services as Gitlab, Toggl and git
140
84
  and replace most routine activities with one simple CLI utility.
141
85
  email:
@@ -147,11 +91,10 @@ extra_rdoc_files: []
147
91
  files:
148
92
  - ".gitignore"
149
93
  - ".rspec"
150
- - ".ruby-version"
151
94
  - ".travis.yml"
95
+ - CHANGELOG.md
152
96
  - Gemfile
153
97
  - Gemfile.lock
154
- - LICENSE.txt
155
98
  - README.md
156
99
  - Rakefile
157
100
  - bin/console
@@ -159,33 +102,44 @@ files:
159
102
  - bin/setup
160
103
  - dude.gemspec
161
104
  - lib/dude.rb
162
- - lib/dude/cli.rb
105
+ - lib/dude/commands.rb
106
+ - lib/dude/commands/checkout.rb
107
+ - lib/dude/commands/install.rb
108
+ - lib/dude/commands/move.rb
109
+ - lib/dude/commands/start.rb
110
+ - lib/dude/commands/stop.rb
111
+ - lib/dude/commands/tasks.rb
112
+ - lib/dude/commands/track.rb
113
+ - lib/dude/commands/version.rb
114
+ - lib/dude/git.rb
163
115
  - lib/dude/git/checkout.rb
164
116
  - lib/dude/git/current_branch_name.rb
165
- - lib/dude/gitlab/add_spend_time.rb
166
- - lib/dude/gitlab/base.rb
167
- - lib/dude/gitlab/count_spend_time.rb
168
- - lib/dude/gitlab/estimate.rb
169
- - lib/dude/gitlab/get_issue_info.rb
170
- - lib/dude/gitlab/get_issue_time_spent.rb
171
- - lib/dude/gitlab/get_issue_title.rb
172
- - lib/dude/gitlab/get_my_issues.rb
173
- - lib/dude/gitlab/move_issue.rb
174
- - lib/dude/interface.rb
175
- - lib/dude/report.rb
176
- - lib/dude/service.rb
117
+ - lib/dude/project_management/client.rb
118
+ - lib/dude/project_management/entities/board.rb
119
+ - lib/dude/project_management/entities/issue.rb
120
+ - lib/dude/project_management/jira.rb
121
+ - lib/dude/project_management/jira/client.rb
122
+ - lib/dude/project_management/jira/get_current_tasks.rb
123
+ - lib/dude/project_management/jira/get_task_name_by_id.rb
124
+ - lib/dude/project_management/jira/move_task_to_list.rb
125
+ - lib/dude/project_management/trello.rb
126
+ - lib/dude/project_management/trello/checkout.rb
127
+ - lib/dude/project_management/trello/client.rb
128
+ - lib/dude/project_management/trello/get_current_tasks.rb
129
+ - lib/dude/project_management/trello/get_lists.rb
130
+ - lib/dude/project_management/trello/move_tasks_to_list.rb
177
131
  - lib/dude/settings.rb
178
- - lib/dude/toggl.rb
179
- - lib/dude/toggl/base.rb
180
- - lib/dude/toggl/issue_spend_time.rb
181
- - lib/dude/toggl/report.rb
182
- - lib/dude/toggl/start_time_entry.rb
183
- - lib/dude/toggl/stop_time_entry.rb
132
+ - lib/dude/time_trackers/toggl.rb
133
+ - lib/dude/time_trackers/toggl/base.rb
134
+ - lib/dude/time_trackers/toggl/start_time_entry.rb
135
+ - lib/dude/time_trackers/toggl/stop_time_entry.rb
184
136
  - lib/dude/version.rb
185
137
  homepage: https://github.com/npupko/dude
186
- licenses:
187
- - MIT
188
- metadata: {}
138
+ licenses: []
139
+ metadata:
140
+ homepage_uri: https://github.com/npupko/dude
141
+ source_code_uri: https://github.com/npupko/dude
142
+ changelog_uri: https://github.com/npupko/dude/blob/master/CHANGELOG.md
189
143
  post_install_message:
190
144
  rdoc_options: []
191
145
  require_paths:
@@ -194,15 +148,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
194
148
  requirements:
195
149
  - - ">="
196
150
  - !ruby/object:Gem::Version
197
- version: 2.2.0
151
+ version: 2.3.0
198
152
  required_rubygems_version: !ruby/object:Gem::Requirement
199
153
  requirements:
200
154
  - - ">="
201
155
  - !ruby/object:Gem::Version
202
156
  version: '0'
203
157
  requirements: []
204
- rubyforge_project:
205
- rubygems_version: 2.7.3
158
+ rubygems_version: 3.1.4
206
159
  signing_key:
207
160
  specification_version: 4
208
161
  summary: A daily assistant in the hard work of a programmer.