dude-cli 1.0.2 → 2.0.4
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 +4 -4
- data/.github/dependabot.yml +8 -0
- data/.gitignore +0 -2
- data/.travis.yml +4 -3
- data/CHANGELOG.md +25 -0
- data/Gemfile +0 -2
- data/Gemfile.lock +57 -54
- data/README.md +41 -25
- data/bin/dude +3 -2
- data/dude.gemspec +18 -15
- data/lib/dude.rb +13 -0
- data/lib/dude/commands.rb +24 -0
- data/lib/dude/commands/checkout.rb +21 -0
- data/lib/dude/commands/install.rb +57 -0
- data/lib/dude/commands/move.rb +15 -0
- data/lib/dude/commands/start.rb +29 -0
- data/lib/dude/commands/stop.rb +15 -0
- data/lib/dude/commands/tasks.rb +31 -0
- data/lib/dude/commands/track.rb +28 -0
- data/lib/dude/commands/version.rb +11 -0
- data/lib/dude/git.rb +5 -0
- data/lib/dude/git/checkout.rb +2 -16
- data/lib/dude/git/current_branch_name.rb +1 -2
- data/lib/dude/project_management/client.rb +25 -0
- data/lib/dude/project_management/entities/board.rb +9 -0
- data/lib/dude/project_management/entities/issue.rb +37 -0
- data/lib/dude/project_management/jira.rb +9 -0
- data/lib/dude/project_management/jira/client.rb +49 -0
- data/lib/dude/project_management/jira/get_current_tasks.rb +40 -0
- data/lib/dude/project_management/jira/get_task_name_by_id.rb +24 -0
- data/lib/dude/project_management/jira/move_task_to_list.rb +47 -0
- data/lib/dude/project_management/trello.rb +6 -0
- data/lib/dude/project_management/trello/checkout.rb +4 -0
- data/lib/dude/project_management/trello/client.rb +33 -0
- data/lib/dude/project_management/trello/get_current_tasks.rb +24 -0
- data/lib/dude/project_management/trello/get_lists.rb +15 -0
- data/lib/dude/project_management/trello/move_tasks_to_list.rb +14 -0
- data/lib/dude/settings.rb +6 -2
- data/lib/dude/time_trackers/toggl.rb +5 -0
- data/lib/dude/time_trackers/toggl/base.rb +18 -0
- data/lib/dude/{toggl → time_trackers/toggl}/start_time_entry.rb +14 -8
- data/lib/dude/{toggl → time_trackers/toggl}/stop_time_entry.rb +4 -2
- data/lib/dude/version.rb +1 -1
- metadata +69 -86
- data/.ruby-version +0 -1
- data/LICENSE.txt +0 -21
- data/lib/dude/cli.rb +0 -156
- data/lib/dude/gitlab/add_spend_time.rb +0 -36
- data/lib/dude/gitlab/base.rb +0 -38
- data/lib/dude/gitlab/count_spend_time.rb +0 -13
- data/lib/dude/gitlab/estimate.rb +0 -20
- data/lib/dude/gitlab/get_issue_info.rb +0 -9
- data/lib/dude/gitlab/get_issue_time_spent.rb +0 -9
- data/lib/dude/gitlab/get_issue_title.rb +0 -14
- data/lib/dude/gitlab/get_my_issues.rb +0 -31
- data/lib/dude/gitlab/move_issue.rb +0 -37
- data/lib/dude/interface.rb +0 -98
- data/lib/dude/report.rb +0 -38
- data/lib/dude/service.rb +0 -18
- data/lib/dude/toggl.rb +0 -40
- data/lib/dude/toggl/base.rb +0 -36
- data/lib/dude/toggl/issue_spend_time.rb +0 -56
- data/lib/dude/toggl/report.rb +0 -25
@@ -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
|
-
|
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,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
|
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?(
|
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 '#{
|
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
|
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
|
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
metadata
CHANGED
@@ -1,143 +1,115 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dude-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nikita Pupko
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-03-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: dry-cli
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
20
|
-
type: :
|
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
|
19
|
+
version: '0.6'
|
20
|
+
type: :runtime
|
49
21
|
prerelease: false
|
50
22
|
version_requirements: !ruby/object:Gem::Requirement
|
51
23
|
requirements:
|
52
24
|
- - "~>"
|
53
25
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.
|
26
|
+
version: '0.6'
|
55
27
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
28
|
+
name: faraday
|
57
29
|
requirement: !ruby/object:Gem::Requirement
|
58
30
|
requirements:
|
59
31
|
- - "~>"
|
60
32
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
62
|
-
type: :
|
33
|
+
version: '1.1'
|
34
|
+
type: :runtime
|
63
35
|
prerelease: false
|
64
36
|
version_requirements: !ruby/object:Gem::Requirement
|
65
37
|
requirements:
|
66
38
|
- - "~>"
|
67
39
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
40
|
+
version: '1.1'
|
69
41
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
42
|
+
name: colorize
|
71
43
|
requirement: !ruby/object:Gem::Requirement
|
72
44
|
requirements:
|
73
45
|
- - "~>"
|
74
46
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
47
|
+
version: 0.8.1
|
76
48
|
type: :runtime
|
77
49
|
prerelease: false
|
78
50
|
version_requirements: !ruby/object:Gem::Requirement
|
79
51
|
requirements:
|
80
52
|
- - "~>"
|
81
53
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
54
|
+
version: 0.8.1
|
83
55
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
56
|
+
name: jira-ruby
|
85
57
|
requirement: !ruby/object:Gem::Requirement
|
86
58
|
requirements:
|
87
59
|
- - "~>"
|
88
60
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
61
|
+
version: '2.1'
|
90
62
|
type: :runtime
|
91
63
|
prerelease: false
|
92
64
|
version_requirements: !ruby/object:Gem::Requirement
|
93
65
|
requirements:
|
94
66
|
- - "~>"
|
95
67
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
68
|
+
version: '2.1'
|
97
69
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
70
|
+
name: pry
|
99
71
|
requirement: !ruby/object:Gem::Requirement
|
100
72
|
requirements:
|
101
73
|
- - "~>"
|
102
74
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
104
|
-
type: :
|
75
|
+
version: 0.14.0
|
76
|
+
type: :development
|
105
77
|
prerelease: false
|
106
78
|
version_requirements: !ruby/object:Gem::Requirement
|
107
79
|
requirements:
|
108
80
|
- - "~>"
|
109
81
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
82
|
+
version: 0.14.0
|
111
83
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
84
|
+
name: rake
|
113
85
|
requirement: !ruby/object:Gem::Requirement
|
114
86
|
requirements:
|
115
87
|
- - "~>"
|
116
88
|
- !ruby/object:Gem::Version
|
117
|
-
version: '
|
118
|
-
type: :
|
89
|
+
version: '13.0'
|
90
|
+
type: :development
|
119
91
|
prerelease: false
|
120
92
|
version_requirements: !ruby/object:Gem::Requirement
|
121
93
|
requirements:
|
122
94
|
- - "~>"
|
123
95
|
- !ruby/object:Gem::Version
|
124
|
-
version: '
|
96
|
+
version: '13.0'
|
125
97
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
98
|
+
name: rspec
|
127
99
|
requirement: !ruby/object:Gem::Requirement
|
128
100
|
requirements:
|
129
101
|
- - "~>"
|
130
102
|
- !ruby/object:Gem::Version
|
131
|
-
version: '
|
132
|
-
type: :
|
103
|
+
version: '3.0'
|
104
|
+
type: :development
|
133
105
|
prerelease: false
|
134
106
|
version_requirements: !ruby/object:Gem::Requirement
|
135
107
|
requirements:
|
136
108
|
- - "~>"
|
137
109
|
- !ruby/object:Gem::Version
|
138
|
-
version: '
|
139
|
-
description: This program helps to combine such services as
|
140
|
-
|
110
|
+
version: '3.0'
|
111
|
+
description: This program helps to combine such services as Jira, Toggl and git and
|
112
|
+
replace most routine activities with one simple CLI utility.
|
141
113
|
email:
|
142
114
|
- work.pupko@gmail.com
|
143
115
|
executables:
|
@@ -145,13 +117,13 @@ executables:
|
|
145
117
|
extensions: []
|
146
118
|
extra_rdoc_files: []
|
147
119
|
files:
|
120
|
+
- ".github/dependabot.yml"
|
148
121
|
- ".gitignore"
|
149
122
|
- ".rspec"
|
150
|
-
- ".ruby-version"
|
151
123
|
- ".travis.yml"
|
124
|
+
- CHANGELOG.md
|
152
125
|
- Gemfile
|
153
126
|
- Gemfile.lock
|
154
|
-
- LICENSE.txt
|
155
127
|
- README.md
|
156
128
|
- Rakefile
|
157
129
|
- bin/console
|
@@ -159,34 +131,46 @@ files:
|
|
159
131
|
- bin/setup
|
160
132
|
- dude.gemspec
|
161
133
|
- lib/dude.rb
|
162
|
-
- lib/dude/
|
134
|
+
- lib/dude/commands.rb
|
135
|
+
- lib/dude/commands/checkout.rb
|
136
|
+
- lib/dude/commands/install.rb
|
137
|
+
- lib/dude/commands/move.rb
|
138
|
+
- lib/dude/commands/start.rb
|
139
|
+
- lib/dude/commands/stop.rb
|
140
|
+
- lib/dude/commands/tasks.rb
|
141
|
+
- lib/dude/commands/track.rb
|
142
|
+
- lib/dude/commands/version.rb
|
143
|
+
- lib/dude/git.rb
|
163
144
|
- lib/dude/git/checkout.rb
|
164
145
|
- lib/dude/git/current_branch_name.rb
|
165
|
-
- lib/dude/
|
166
|
-
- lib/dude/
|
167
|
-
- lib/dude/
|
168
|
-
- lib/dude/
|
169
|
-
- lib/dude/
|
170
|
-
- lib/dude/
|
171
|
-
- lib/dude/
|
172
|
-
- lib/dude/
|
173
|
-
- lib/dude/
|
174
|
-
- lib/dude/
|
175
|
-
- lib/dude/
|
176
|
-
- lib/dude/
|
146
|
+
- lib/dude/project_management/client.rb
|
147
|
+
- lib/dude/project_management/entities/board.rb
|
148
|
+
- lib/dude/project_management/entities/issue.rb
|
149
|
+
- lib/dude/project_management/jira.rb
|
150
|
+
- lib/dude/project_management/jira/client.rb
|
151
|
+
- lib/dude/project_management/jira/get_current_tasks.rb
|
152
|
+
- lib/dude/project_management/jira/get_task_name_by_id.rb
|
153
|
+
- lib/dude/project_management/jira/move_task_to_list.rb
|
154
|
+
- lib/dude/project_management/trello.rb
|
155
|
+
- lib/dude/project_management/trello/checkout.rb
|
156
|
+
- lib/dude/project_management/trello/client.rb
|
157
|
+
- lib/dude/project_management/trello/get_current_tasks.rb
|
158
|
+
- lib/dude/project_management/trello/get_lists.rb
|
159
|
+
- lib/dude/project_management/trello/move_tasks_to_list.rb
|
177
160
|
- lib/dude/settings.rb
|
178
|
-
- lib/dude/toggl.rb
|
179
|
-
- lib/dude/toggl/base.rb
|
180
|
-
- lib/dude/toggl/
|
181
|
-
- lib/dude/toggl/
|
182
|
-
- lib/dude/toggl/start_time_entry.rb
|
183
|
-
- lib/dude/toggl/stop_time_entry.rb
|
161
|
+
- lib/dude/time_trackers/toggl.rb
|
162
|
+
- lib/dude/time_trackers/toggl/base.rb
|
163
|
+
- lib/dude/time_trackers/toggl/start_time_entry.rb
|
164
|
+
- lib/dude/time_trackers/toggl/stop_time_entry.rb
|
184
165
|
- lib/dude/version.rb
|
185
166
|
homepage: https://github.com/npupko/dude
|
186
167
|
licenses:
|
187
168
|
- MIT
|
188
|
-
metadata:
|
189
|
-
|
169
|
+
metadata:
|
170
|
+
homepage_uri: https://github.com/npupko/dude
|
171
|
+
source_code_uri: https://github.com/npupko/dude
|
172
|
+
changelog_uri: https://github.com/npupko/dude/blob/master/CHANGELOG.md
|
173
|
+
post_install_message:
|
190
174
|
rdoc_options: []
|
191
175
|
require_paths:
|
192
176
|
- lib
|
@@ -194,16 +178,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
194
178
|
requirements:
|
195
179
|
- - ">="
|
196
180
|
- !ruby/object:Gem::Version
|
197
|
-
version: 2.
|
181
|
+
version: 2.3.0
|
198
182
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
199
183
|
requirements:
|
200
184
|
- - ">="
|
201
185
|
- !ruby/object:Gem::Version
|
202
186
|
version: '0'
|
203
187
|
requirements: []
|
204
|
-
|
205
|
-
|
206
|
-
signing_key:
|
188
|
+
rubygems_version: 3.1.4
|
189
|
+
signing_key:
|
207
190
|
specification_version: 4
|
208
191
|
summary: A daily assistant in the hard work of a programmer.
|
209
192
|
test_files: []
|