abt-cli 0.0.17 → 0.0.22

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.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/bin/abt +3 -3
  3. data/lib/abt.rb +6 -6
  4. data/lib/abt/ari.rb +20 -0
  5. data/lib/abt/ari_list.rb +13 -0
  6. data/lib/abt/base_command.rb +63 -0
  7. data/lib/abt/cli.rb +58 -59
  8. data/lib/abt/cli/arguments_parser.rb +8 -27
  9. data/lib/abt/cli/global_commands.rb +23 -0
  10. data/lib/abt/cli/global_commands/commands.rb +23 -0
  11. data/lib/abt/cli/global_commands/examples.rb +23 -0
  12. data/lib/abt/cli/global_commands/help.rb +23 -0
  13. data/lib/abt/cli/global_commands/readme.rb +23 -0
  14. data/lib/abt/cli/global_commands/share.rb +36 -0
  15. data/lib/abt/cli/global_commands/version.rb +23 -0
  16. data/lib/abt/cli/prompt.rb +52 -20
  17. data/lib/abt/docs.rb +48 -25
  18. data/lib/abt/docs/cli.rb +7 -7
  19. data/lib/abt/docs/markdown.rb +13 -12
  20. data/lib/abt/git_config.rb +21 -39
  21. data/lib/abt/providers/asana/api.rb +9 -9
  22. data/lib/abt/providers/asana/base_command.rb +16 -38
  23. data/lib/abt/providers/asana/commands/add.rb +18 -15
  24. data/lib/abt/providers/asana/commands/branch_name.rb +13 -8
  25. data/lib/abt/providers/asana/commands/clear.rb +8 -7
  26. data/lib/abt/providers/asana/commands/current.rb +23 -38
  27. data/lib/abt/providers/asana/commands/finalize.rb +11 -16
  28. data/lib/abt/providers/asana/commands/harvest_time_entry_data.rb +14 -9
  29. data/lib/abt/providers/asana/commands/init.rb +8 -41
  30. data/lib/abt/providers/asana/commands/pick.rb +22 -17
  31. data/lib/abt/providers/asana/commands/projects.rb +5 -5
  32. data/lib/abt/providers/asana/commands/share.rb +6 -8
  33. data/lib/abt/providers/asana/commands/start.rb +26 -23
  34. data/lib/abt/providers/asana/commands/tasks.rb +6 -5
  35. data/lib/abt/providers/asana/configuration.rb +34 -40
  36. data/lib/abt/providers/asana/path.rb +36 -0
  37. data/lib/abt/providers/devops/api.rb +23 -11
  38. data/lib/abt/providers/devops/base_command.rb +18 -43
  39. data/lib/abt/providers/devops/commands/boards.rb +5 -7
  40. data/lib/abt/providers/devops/commands/branch_name.rb +14 -10
  41. data/lib/abt/providers/devops/commands/clear.rb +8 -7
  42. data/lib/abt/providers/devops/commands/current.rb +25 -49
  43. data/lib/abt/providers/devops/commands/harvest_time_entry_data.rb +20 -12
  44. data/lib/abt/providers/devops/commands/init.rb +29 -25
  45. data/lib/abt/providers/devops/commands/pick.rb +11 -18
  46. data/lib/abt/providers/devops/commands/share.rb +7 -6
  47. data/lib/abt/providers/devops/commands/{work-items.rb → work_items.rb} +3 -3
  48. data/lib/abt/providers/devops/configuration.rb +31 -56
  49. data/lib/abt/providers/devops/path.rb +51 -0
  50. data/lib/abt/providers/git/commands/branch.rb +29 -25
  51. data/lib/abt/providers/harvest/api.rb +8 -8
  52. data/lib/abt/providers/harvest/base_command.rb +18 -38
  53. data/lib/abt/providers/harvest/commands/clear.rb +8 -7
  54. data/lib/abt/providers/harvest/commands/current.rb +28 -35
  55. data/lib/abt/providers/harvest/commands/init.rb +10 -39
  56. data/lib/abt/providers/harvest/commands/pick.rb +11 -12
  57. data/lib/abt/providers/harvest/commands/projects.rb +5 -5
  58. data/lib/abt/providers/harvest/commands/share.rb +6 -8
  59. data/lib/abt/providers/harvest/commands/start.rb +5 -3
  60. data/lib/abt/providers/harvest/commands/stop.rb +13 -13
  61. data/lib/abt/providers/harvest/commands/tasks.rb +9 -6
  62. data/lib/abt/providers/harvest/commands/track.rb +40 -32
  63. data/lib/abt/providers/harvest/configuration.rb +28 -37
  64. data/lib/abt/providers/harvest/path.rb +36 -0
  65. data/lib/abt/version.rb +1 -1
  66. metadata +18 -6
  67. data/lib/abt/cli/base_command.rb +0 -61
@@ -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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Abt
4
- VERSION = '0.0.17'
4
+ VERSION = "0.0.22"
5
5
  end
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.17
4
+ version: 0.0.22
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-02-11 00:00:00.000000000 Z
11
+ date: 2021-03-11 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/base_command.rb"
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/work-items.rb"
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: '0'
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.0.3
169
+ rubygems_version: 3.1.4
158
170
  signing_key:
159
171
  specification_version: 4
160
172
  summary: Versatile scripts
@@ -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