dude-cli 1.0.0 → 2.0.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 +4 -4
- data/.github/dependabot.yml +8 -0
- data/.gitignore +0 -1
- data/.travis.yml +4 -3
- data/CHANGELOG.md +25 -0
- data/Gemfile +0 -2
- data/Gemfile.lock +57 -50
- data/README.md +41 -25
- data/bin/dude +3 -2
- data/dude.gemspec +21 -19
- data/lib/dude.rb +14 -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 +72 -89
- 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 -28
- data/lib/dude/toggl/issue_spend_time.rb +0 -59
- data/lib/dude/toggl/report.rb +0 -25
data/lib/dude/report.rb
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
require 'date'
|
2
|
-
require_relative 'settings'
|
3
|
-
|
4
|
-
module Dude
|
5
|
-
class Report
|
6
|
-
include Settings
|
7
|
-
attr_reader :report
|
8
|
-
|
9
|
-
def initialize(report)
|
10
|
-
@report = report
|
11
|
-
end
|
12
|
-
|
13
|
-
def week_time_worked
|
14
|
-
@time_worked ||= report['total_grand'] / 1000
|
15
|
-
end
|
16
|
-
|
17
|
-
def today_time_worked
|
18
|
-
@today_time_worked ||= report['week_totals'].map {|a| a.nil? ? 0 : a / 1000}[Time.now.wday - 1]
|
19
|
-
end
|
20
|
-
|
21
|
-
def days_without_weekends
|
22
|
-
@days_without_weekends ||= report['week_totals'][0..Time.now.wday - 1].compact.count
|
23
|
-
end
|
24
|
-
|
25
|
-
def weekends
|
26
|
-
@weekends ||= report['week_totals'][0..Time.now.wday - 1].
|
27
|
-
select { |a| a.nil? }.count
|
28
|
-
end
|
29
|
-
|
30
|
-
def hours_without_weekends
|
31
|
-
@hours_without_weekends ||= settings['HOURS_PER_WEEK'].to_i - weekends * settings['HOURS_PER_DAY'].to_i
|
32
|
-
end
|
33
|
-
|
34
|
-
def seconds_for_today
|
35
|
-
days_without_weekends * settings['HOURS_PER_DAY'].to_i * 3600
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
data/lib/dude/service.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
module Dude
|
2
|
-
module Service
|
3
|
-
attr_reader :options
|
4
|
-
def initialize(options = {})
|
5
|
-
@options = options
|
6
|
-
end
|
7
|
-
|
8
|
-
def self.included(klass)
|
9
|
-
klass.extend(ClassMethods)
|
10
|
-
end
|
11
|
-
|
12
|
-
module ClassMethods
|
13
|
-
def call(options = {})
|
14
|
-
new(options).call
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
data/lib/dude/toggl.rb
DELETED
@@ -1,40 +0,0 @@
|
|
1
|
-
require 'rest-client'
|
2
|
-
require 'date'
|
3
|
-
require_relative 'settings'
|
4
|
-
require_relative 'report'
|
5
|
-
|
6
|
-
module Dude
|
7
|
-
class Toggl
|
8
|
-
include Settings
|
9
|
-
attr_accessor :options
|
10
|
-
|
11
|
-
def initialize(options = {})
|
12
|
-
@options = options
|
13
|
-
end
|
14
|
-
|
15
|
-
|
16
|
-
def stop_current_time_entry
|
17
|
-
toggl_api["time_entries/#{current_time_entry['id']}/stop"].put ''
|
18
|
-
rescue NoMethodError
|
19
|
-
puts 'No runned time entries in Toggl'.colorize(:yellow)
|
20
|
-
end
|
21
|
-
|
22
|
-
def time_entry_params(title)
|
23
|
-
{
|
24
|
-
time_entry: {
|
25
|
-
description: title,
|
26
|
-
pid: project_id,
|
27
|
-
created_with: "dude"
|
28
|
-
}
|
29
|
-
}
|
30
|
-
end
|
31
|
-
|
32
|
-
def toggl_api
|
33
|
-
@toggl_api ||= RestClient::Resource.new(
|
34
|
-
'https://www.toggl.com/api/v8',
|
35
|
-
settings['TOGGL_TOKEN'],
|
36
|
-
'api_token'
|
37
|
-
)
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
data/lib/dude/toggl/base.rb
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
module Dude
|
2
|
-
module Toggl
|
3
|
-
class Base
|
4
|
-
include Service
|
5
|
-
include Settings
|
6
|
-
|
7
|
-
def toggl_api
|
8
|
-
@toggl_api ||= RestClient::Resource.new(
|
9
|
-
'https://www.toggl.com/api/v8',
|
10
|
-
settings['TOGGL_TOKEN'],
|
11
|
-
'api_token'
|
12
|
-
)
|
13
|
-
end
|
14
|
-
|
15
|
-
def toggl_report
|
16
|
-
@toggl_report ||= RestClient::Resource.new(
|
17
|
-
'https://www.toggl.com/reports/api/v2/weekly',
|
18
|
-
settings['TOGGL_TOKEN'],
|
19
|
-
'api_token'
|
20
|
-
)
|
21
|
-
end
|
22
|
-
|
23
|
-
def projects_response
|
24
|
-
toggl_api["workspaces/#{settings['TOGGL_WORKSPACE_ID']}/projects"].get
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
@@ -1,59 +0,0 @@
|
|
1
|
-
module Dude
|
2
|
-
module Toggl
|
3
|
-
class IssueSpendTime < Dude::Toggl::Base
|
4
|
-
def call
|
5
|
-
parse_time_entries_list
|
6
|
-
end
|
7
|
-
|
8
|
-
def params
|
9
|
-
{
|
10
|
-
workspace_id: settings['TOGGL_WORKSPACE_ID'],
|
11
|
-
user_agent: settings['TOGGL_EMAIL'],
|
12
|
-
start_date: '2013-03-10T15:42:46+02:00'
|
13
|
-
}
|
14
|
-
end
|
15
|
-
|
16
|
-
def response
|
17
|
-
toggl_api['time_entries'].get params
|
18
|
-
end
|
19
|
-
|
20
|
-
def time_entries
|
21
|
-
JSON.parse(response.body)
|
22
|
-
end
|
23
|
-
|
24
|
-
def current_issue_time_entries
|
25
|
-
time_entries.select { |entry| match_project_id?(entry) && match_issue_id?(entry) }
|
26
|
-
end
|
27
|
-
|
28
|
-
def match_project_id?(time_entry)
|
29
|
-
time_entry['pid'].eql? project_id
|
30
|
-
end
|
31
|
-
|
32
|
-
def match_issue_id?(time_entry)
|
33
|
-
# TODO: Deprecated behaviour
|
34
|
-
time_entry['description'].match?(/\(##{options[:issue_id]}\)/) ||
|
35
|
-
time_entry['description'].match?(/##{options[:issue_id]}\s/)
|
36
|
-
end
|
37
|
-
|
38
|
-
def formatted_time_entries
|
39
|
-
current_issue_time_entries.map {|a| [a['description'], a['duration']]}
|
40
|
-
end
|
41
|
-
|
42
|
-
def parse_time_entries_list
|
43
|
-
current_issue_time_entries.map {|a| a['duration'] }.sum
|
44
|
-
end
|
45
|
-
|
46
|
-
def project_id
|
47
|
-
# TODO: Concretize project selection
|
48
|
-
@project_id ||= projects_array.find do |title, id|
|
49
|
-
title.eql?(options[:project_title])
|
50
|
-
end.last
|
51
|
-
end
|
52
|
-
|
53
|
-
def projects_array
|
54
|
-
JSON.parse(projects_response)
|
55
|
-
.map { |a| [a['name'].downcase.gsub(/\s/, '-'), a['id']] }
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
data/lib/dude/toggl/report.rb
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
module Dude
|
2
|
-
module Toggl
|
3
|
-
class Report < Dude::Toggl::Base
|
4
|
-
def call
|
5
|
-
Dude::Report.new(parsed_response)
|
6
|
-
end
|
7
|
-
|
8
|
-
def response
|
9
|
-
toggl_report.get params: params
|
10
|
-
end
|
11
|
-
|
12
|
-
def params
|
13
|
-
{
|
14
|
-
workspace_id: settings['TOGGL_WORKSPACE_ID'],
|
15
|
-
user_agent: settings['TOGGL_EMAIL'],
|
16
|
-
since: Date.parse('monday').strftime('%Y-%m-%d')
|
17
|
-
}
|
18
|
-
end
|
19
|
-
|
20
|
-
def parsed_response
|
21
|
-
@parsed_response = JSON.parse(response.body)
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|