abt-cli 0.0.18 → 0.0.23
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/abt +3 -3
- data/lib/abt.rb +6 -6
- data/lib/abt/ari.rb +20 -0
- data/lib/abt/ari_list.rb +13 -0
- data/lib/abt/base_command.rb +63 -0
- data/lib/abt/cli.rb +51 -52
- data/lib/abt/cli/arguments_parser.rb +7 -26
- data/lib/abt/cli/global_commands.rb +23 -0
- data/lib/abt/cli/global_commands/commands.rb +23 -0
- data/lib/abt/cli/global_commands/examples.rb +23 -0
- data/lib/abt/cli/global_commands/help.rb +23 -0
- data/lib/abt/cli/global_commands/readme.rb +23 -0
- data/lib/abt/cli/global_commands/share.rb +36 -0
- data/lib/abt/cli/global_commands/version.rb +23 -0
- data/lib/abt/cli/prompt.rb +64 -51
- data/lib/abt/docs.rb +48 -25
- data/lib/abt/docs/cli.rb +3 -3
- data/lib/abt/docs/markdown.rb +11 -8
- data/lib/abt/git_config.rb +21 -39
- data/lib/abt/helpers.rb +26 -8
- data/lib/abt/providers/asana/api.rb +9 -9
- data/lib/abt/providers/asana/base_command.rb +20 -38
- data/lib/abt/providers/asana/commands/add.rb +18 -15
- data/lib/abt/providers/asana/commands/branch_name.rb +13 -8
- data/lib/abt/providers/asana/commands/clear.rb +8 -7
- data/lib/abt/providers/asana/commands/current.rb +22 -38
- data/lib/abt/providers/asana/commands/finalize.rb +17 -18
- data/lib/abt/providers/asana/commands/harvest_time_entry_data.rb +20 -13
- data/lib/abt/providers/asana/commands/init.rb +8 -41
- data/lib/abt/providers/asana/commands/pick.rb +27 -26
- data/lib/abt/providers/asana/commands/projects.rb +5 -5
- data/lib/abt/providers/asana/commands/share.rb +6 -8
- data/lib/abt/providers/asana/commands/start.rb +33 -24
- data/lib/abt/providers/asana/commands/tasks.rb +6 -5
- data/lib/abt/providers/asana/configuration.rb +46 -44
- data/lib/abt/providers/asana/path.rb +36 -0
- data/lib/abt/providers/devops/api.rb +23 -11
- data/lib/abt/providers/devops/base_command.rb +22 -43
- data/lib/abt/providers/devops/commands/boards.rb +5 -7
- data/lib/abt/providers/devops/commands/branch_name.rb +14 -10
- data/lib/abt/providers/devops/commands/clear.rb +8 -7
- data/lib/abt/providers/devops/commands/current.rb +24 -49
- data/lib/abt/providers/devops/commands/harvest_time_entry_data.rb +26 -16
- data/lib/abt/providers/devops/commands/init.rb +33 -26
- data/lib/abt/providers/devops/commands/pick.rb +23 -24
- data/lib/abt/providers/devops/commands/share.rb +7 -6
- data/lib/abt/providers/devops/commands/{work-items.rb → work_items.rb} +3 -3
- data/lib/abt/providers/devops/configuration.rb +27 -56
- data/lib/abt/providers/devops/path.rb +51 -0
- data/lib/abt/providers/git/commands/branch.rb +25 -19
- data/lib/abt/providers/harvest/api.rb +8 -8
- data/lib/abt/providers/harvest/base_command.rb +20 -36
- data/lib/abt/providers/harvest/commands/clear.rb +8 -7
- data/lib/abt/providers/harvest/commands/current.rb +27 -35
- data/lib/abt/providers/harvest/commands/init.rb +10 -40
- data/lib/abt/providers/harvest/commands/pick.rb +15 -12
- data/lib/abt/providers/harvest/commands/projects.rb +5 -5
- data/lib/abt/providers/harvest/commands/share.rb +6 -8
- data/lib/abt/providers/harvest/commands/start.rb +5 -3
- data/lib/abt/providers/harvest/commands/stop.rb +13 -13
- data/lib/abt/providers/harvest/commands/tasks.rb +9 -6
- data/lib/abt/providers/harvest/commands/track.rb +60 -38
- data/lib/abt/providers/harvest/configuration.rb +28 -37
- data/lib/abt/providers/harvest/path.rb +36 -0
- data/lib/abt/version.rb +1 -1
- metadata +18 -6
- data/lib/abt/cli/base_command.rb +0 -61
@@ -8,32 +8,18 @@ module Abt
|
|
8
8
|
|
9
9
|
def initialize(cli:)
|
10
10
|
@cli = cli
|
11
|
-
@git = GitConfig.new(namespace: 'abt.harvest')
|
12
11
|
end
|
13
12
|
|
14
13
|
def local_available?
|
15
|
-
|
14
|
+
git.available?
|
16
15
|
end
|
17
16
|
|
18
|
-
def
|
19
|
-
local_available?
|
17
|
+
def path
|
18
|
+
Path.new(local_available? && git["path"] || "")
|
20
19
|
end
|
21
20
|
|
22
|
-
def
|
23
|
-
|
24
|
-
end
|
25
|
-
|
26
|
-
def project_id=(value)
|
27
|
-
value = value.to_s unless value.nil?
|
28
|
-
return if project_id == value
|
29
|
-
|
30
|
-
clear_local(verbose: false)
|
31
|
-
git['projectId'] = value
|
32
|
-
end
|
33
|
-
|
34
|
-
def task_id=(value)
|
35
|
-
value = value.to_s unless value.nil?
|
36
|
-
git['taskId'] = value
|
21
|
+
def path=(new_path)
|
22
|
+
git["path"] = new_path
|
37
23
|
end
|
38
24
|
|
39
25
|
def clear_local(verbose: true)
|
@@ -41,44 +27,49 @@ module Abt
|
|
41
27
|
end
|
42
28
|
|
43
29
|
def clear_global(verbose: true)
|
44
|
-
|
30
|
+
git_global.clear(output: verbose ? cli.err_output : nil)
|
45
31
|
end
|
46
32
|
|
47
33
|
def access_token
|
48
|
-
return
|
34
|
+
return git_global["accessToken"] unless git_global["accessToken"].nil?
|
49
35
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
36
|
+
git_global["accessToken"] = cli.prompt.text([
|
37
|
+
"Please provide your personal access token for Harvest.",
|
38
|
+
"If you don't have one, create one here: https://id.getharvest.com/developers",
|
39
|
+
"",
|
40
|
+
"Enter access token"
|
55
41
|
].join("\n"))
|
56
42
|
end
|
57
43
|
|
58
44
|
def account_id
|
59
|
-
return
|
45
|
+
return git_global["accountId"] unless git_global["accountId"].nil?
|
60
46
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
47
|
+
git_global["accountId"] = cli.prompt.text([
|
48
|
+
"Please provide harvest account id.",
|
49
|
+
"This information is shown next to your generated access token",
|
50
|
+
"",
|
51
|
+
"Enter account id"
|
66
52
|
].join("\n"))
|
67
53
|
end
|
68
54
|
|
69
55
|
def user_id
|
70
|
-
return
|
56
|
+
return git_global["userId"] unless git_global["userId"].nil?
|
71
57
|
|
72
|
-
|
58
|
+
git_global["userId"] = api.get("users/me")["id"].to_s
|
73
59
|
end
|
74
60
|
|
75
61
|
private
|
76
62
|
|
77
|
-
|
63
|
+
def git
|
64
|
+
@git ||= GitConfig.new("local", "abt.harvest")
|
65
|
+
end
|
66
|
+
|
67
|
+
def git_global
|
68
|
+
@git_global ||= GitConfig.new("global", "abt.harvest")
|
69
|
+
end
|
78
70
|
|
79
71
|
def api
|
80
|
-
@api ||=
|
81
|
-
Abt::Providers::Harvest::Api.new(access_token: access_token, account_id: account_id)
|
72
|
+
@api ||= Api.new(access_token: access_token, account_id: account_id)
|
82
73
|
end
|
83
74
|
end
|
84
75
|
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Abt
|
4
|
+
module Providers
|
5
|
+
module Harvest
|
6
|
+
class Path < String
|
7
|
+
PATH_REGEX = %r{^(?<project_id>\d+)?/?(?<task_id>\d+)?$}.freeze
|
8
|
+
|
9
|
+
def self.from_ids(project_id: nil, task_id: nil)
|
10
|
+
path = project_id ? [project_id, *task_id].join("/") : ""
|
11
|
+
new(path)
|
12
|
+
end
|
13
|
+
|
14
|
+
def initialize(path = "")
|
15
|
+
raise Abt::Cli::Abort, "Invalid path: #{path}" unless PATH_REGEX.match?(path)
|
16
|
+
|
17
|
+
super
|
18
|
+
end
|
19
|
+
|
20
|
+
def project_id
|
21
|
+
match[:project_id]
|
22
|
+
end
|
23
|
+
|
24
|
+
def task_id
|
25
|
+
match[:task_id]
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def match
|
31
|
+
@match ||= PATH_REGEX.match(self)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
data/lib/abt/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: abt-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.23
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jesper Sørensen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-03-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dry-inflector
|
@@ -75,9 +75,18 @@ extensions: []
|
|
75
75
|
extra_rdoc_files: []
|
76
76
|
files:
|
77
77
|
- "./lib/abt.rb"
|
78
|
+
- "./lib/abt/ari.rb"
|
79
|
+
- "./lib/abt/ari_list.rb"
|
80
|
+
- "./lib/abt/base_command.rb"
|
78
81
|
- "./lib/abt/cli.rb"
|
79
82
|
- "./lib/abt/cli/arguments_parser.rb"
|
80
|
-
- "./lib/abt/cli/
|
83
|
+
- "./lib/abt/cli/global_commands.rb"
|
84
|
+
- "./lib/abt/cli/global_commands/commands.rb"
|
85
|
+
- "./lib/abt/cli/global_commands/examples.rb"
|
86
|
+
- "./lib/abt/cli/global_commands/help.rb"
|
87
|
+
- "./lib/abt/cli/global_commands/readme.rb"
|
88
|
+
- "./lib/abt/cli/global_commands/share.rb"
|
89
|
+
- "./lib/abt/cli/global_commands/version.rb"
|
81
90
|
- "./lib/abt/cli/prompt.rb"
|
82
91
|
- "./lib/abt/docs.rb"
|
83
92
|
- "./lib/abt/docs/cli.rb"
|
@@ -102,6 +111,7 @@ files:
|
|
102
111
|
- "./lib/abt/providers/asana/commands/start.rb"
|
103
112
|
- "./lib/abt/providers/asana/commands/tasks.rb"
|
104
113
|
- "./lib/abt/providers/asana/configuration.rb"
|
114
|
+
- "./lib/abt/providers/asana/path.rb"
|
105
115
|
- "./lib/abt/providers/devops.rb"
|
106
116
|
- "./lib/abt/providers/devops/api.rb"
|
107
117
|
- "./lib/abt/providers/devops/base_command.rb"
|
@@ -113,8 +123,9 @@ files:
|
|
113
123
|
- "./lib/abt/providers/devops/commands/init.rb"
|
114
124
|
- "./lib/abt/providers/devops/commands/pick.rb"
|
115
125
|
- "./lib/abt/providers/devops/commands/share.rb"
|
116
|
-
- "./lib/abt/providers/devops/commands/
|
126
|
+
- "./lib/abt/providers/devops/commands/work_items.rb"
|
117
127
|
- "./lib/abt/providers/devops/configuration.rb"
|
128
|
+
- "./lib/abt/providers/devops/path.rb"
|
118
129
|
- "./lib/abt/providers/git.rb"
|
119
130
|
- "./lib/abt/providers/git/commands/branch.rb"
|
120
131
|
- "./lib/abt/providers/harvest.rb"
|
@@ -131,6 +142,7 @@ files:
|
|
131
142
|
- "./lib/abt/providers/harvest/commands/tasks.rb"
|
132
143
|
- "./lib/abt/providers/harvest/commands/track.rb"
|
133
144
|
- "./lib/abt/providers/harvest/configuration.rb"
|
145
|
+
- "./lib/abt/providers/harvest/path.rb"
|
134
146
|
- "./lib/abt/version.rb"
|
135
147
|
- bin/abt
|
136
148
|
homepage: https://github.com/abtion/abt
|
@@ -147,14 +159,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
147
159
|
requirements:
|
148
160
|
- - ">="
|
149
161
|
- !ruby/object:Gem::Version
|
150
|
-
version:
|
162
|
+
version: 2.5.0
|
151
163
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
152
164
|
requirements:
|
153
165
|
- - ">="
|
154
166
|
- !ruby/object:Gem::Version
|
155
167
|
version: '0'
|
156
168
|
requirements: []
|
157
|
-
rubygems_version: 3.
|
169
|
+
rubygems_version: 3.1.4
|
158
170
|
signing_key:
|
159
171
|
specification_version: 4
|
160
172
|
summary: Versatile scripts
|
data/lib/abt/cli/base_command.rb
DELETED
@@ -1,61 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Abt
|
4
|
-
class Cli
|
5
|
-
class BaseCommand
|
6
|
-
def self.usage
|
7
|
-
raise NotImplementedError, 'Command classes must implement .command'
|
8
|
-
end
|
9
|
-
|
10
|
-
def self.description
|
11
|
-
raise NotImplementedError, 'Command classes must implement .description'
|
12
|
-
end
|
13
|
-
|
14
|
-
def self.flags
|
15
|
-
[]
|
16
|
-
end
|
17
|
-
|
18
|
-
attr_reader :path, :flags, :cli
|
19
|
-
|
20
|
-
def initialize(path:, flags:, cli:)
|
21
|
-
@cli = cli
|
22
|
-
@path = path
|
23
|
-
@flags = parse_flags(flags)
|
24
|
-
end
|
25
|
-
|
26
|
-
def perform
|
27
|
-
raise NotImplementedError, 'Command classes must implement #perform'
|
28
|
-
end
|
29
|
-
|
30
|
-
private
|
31
|
-
|
32
|
-
def parse_flags(flags)
|
33
|
-
result = {}
|
34
|
-
|
35
|
-
flag_parser.parse!(flags.dup, into: result)
|
36
|
-
|
37
|
-
cli.exit_with_message(flag_parser.help) if result[:help]
|
38
|
-
|
39
|
-
result
|
40
|
-
rescue OptionParser::InvalidOption => e
|
41
|
-
cli.abort e.message
|
42
|
-
end
|
43
|
-
|
44
|
-
def flag_parser
|
45
|
-
@flag_parser ||= OptionParser.new do |opts|
|
46
|
-
opts.banner = <<~TXT
|
47
|
-
#{self.class.description}
|
48
|
-
|
49
|
-
Usage: #{self.class.usage}
|
50
|
-
TXT
|
51
|
-
|
52
|
-
opts.on('-h', '--help')
|
53
|
-
|
54
|
-
self.class.flags.each do |(*flag)|
|
55
|
-
opts.on(*flag)
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|