abt-cli 0.0.25 → 0.0.26

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3af480b982ad0feef367f157d2658f5dd7a3059de13f7098ff267fd06b53fd47
4
- data.tar.gz: 15b6177165d60fa0bc76c0ac201755d9fb987c62b98e97784ebd2eb5748f12bf
3
+ metadata.gz: ed527a89749355f223b94daa60d63b91c78ae98ab6976c3470ec6ca42cbcff27
4
+ data.tar.gz: aed24bd58e30bfbbdc574532eb97044cd8e108851c2586ac407c0eb42a2deb28
5
5
  SHA512:
6
- metadata.gz: 9eb5c49b996574004c1abffffad6aef76e3bc8ad7ea3fcbf0e05e2b0b33788d01cd041e031f5e98c85b86b7aee442ce8b2ac11995944a1e8d8674053736a6f9b
7
- data.tar.gz: 16278e95b9d5e25a7b2fb7dc931e140b732638ce767e99b20a9b7b442a560b6e56abf982f42a65b7dd97973d58332854915421d26cac686a8af8965a0dcaa148
6
+ metadata.gz: 6d615f241ac406df5f89cc79ad36f19b0554602f6eb3e20e2f01ba0143595ea6e748c727ccedfeecd1a826c46e031acc7160a3b0ee7462027157a357d730de35
7
+ data.tar.gz: 2b9e500f77e181f4198ac17939fc1753f9a7105682783b005d780ec4da61c8af43aa3e986bba34e1df4f5173bde47bd0e97e042f293edb713a364d2a9c1c71b6
data/bin/abt CHANGED
@@ -8,5 +8,5 @@ begin
8
8
  rescue Abt::Cli::Abort => e
9
9
  abort(e.message.strip)
10
10
  rescue Interrupt
11
- abort("Aborted")
11
+ exit 130
12
12
  end
data/lib/abt.rb CHANGED
@@ -6,6 +6,7 @@ require "oj"
6
6
  require "open3"
7
7
  require "stringio"
8
8
  require "optparse"
9
+ require "yaml"
9
10
 
10
11
  Dir.glob("#{File.dirname(File.absolute_path(__FILE__))}/abt/*.rb").sort.each do |file|
11
12
  require file
@@ -22,4 +23,8 @@ module Abt
22
23
  const_name = Helpers.command_to_const(scheme)
23
24
  Providers.const_get(const_name) if Providers.const_defined?(const_name)
24
25
  end
26
+
27
+ def self.directory_config
28
+ @directory_config ||= Abt::DirectoryConfig.new
29
+ end
25
30
  end
data/lib/abt/cli.rb CHANGED
@@ -5,20 +5,19 @@ Dir.glob("#{File.expand_path(__dir__)}/cli/*.rb").sort.each do |file|
5
5
  end
6
6
 
7
7
  module Abt
8
- class Cli
8
+ class Cli # rubocop:disable Metrics/ClassLength
9
9
  class Abort < StandardError; end
10
10
 
11
11
  class Exit < StandardError; end
12
12
 
13
- attr_reader :command, :aris, :input, :output, :err_output, :prompt
13
+ attr_reader :command, :remaining_args, :input, :output, :err_output, :prompt
14
14
 
15
15
  def initialize(argv: ARGV, input: $stdin, output: $stdout, err_output: $stderr)
16
- (@command, *remaining_args) = argv
16
+ (@command, *@remaining_args) = argv
17
17
  @input = input
18
18
  @output = output
19
19
  @err_output = err_output
20
20
  @prompt = Abt::Cli::Prompt.new(output: err_output)
21
- @aris = ArgumentsParser.new(sanitized_piped_args + remaining_args).parse
22
21
  end
23
22
 
24
23
  def perform
@@ -27,11 +26,10 @@ module Abt
27
26
  @command = "help"
28
27
  end
29
28
 
30
- if global_command?
31
- process_global_command
32
- else
33
- process_aris
34
- end
29
+ return process_alias if alias?
30
+ return process_global_command if global_command?
31
+
32
+ process_aris
35
33
  end
36
34
 
37
35
  def print_ari(scheme, path, description = nil)
@@ -60,8 +58,29 @@ module Abt
60
58
  raise Exit, message
61
59
  end
62
60
 
61
+ def aris
62
+ @aris ||= ArgumentsParser.new(sanitized_piped_args + remaining_args).parse
63
+ end
64
+
63
65
  private
64
66
 
67
+ def alias?
68
+ command[0] == "@"
69
+ end
70
+
71
+ def process_alias
72
+ matching_alias = Abt.directory_config.dig("aliases", command[1..-1])
73
+
74
+ abort("No such alias #{command}") if matching_alias.nil?
75
+
76
+ with_args = matching_alias.sub("$@", remaining_args.join(" "))
77
+ with_program_name = with_args.gsub("$0", $PROGRAM_NAME).strip
78
+ humanized = with_args.gsub("$0", "abt").strip
79
+
80
+ warn(humanized)
81
+ system(with_program_name)
82
+ end
83
+
65
84
  def global_command?
66
85
  return true if aris.empty?
67
86
  return true if aris.first.scheme.nil?
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Abt
4
+ class DirectoryConfig < Hash
5
+ def initialize
6
+ super
7
+ merge!(YAML.load_file(config_file_path)) if config_file_path
8
+ end
9
+
10
+ private
11
+
12
+ def config_file_path
13
+ dir = Dir.pwd
14
+
15
+ until File.exist?(File.join(dir, ".abt.yml"))
16
+ next_dir = File.expand_path("..", dir)
17
+ return if next_dir == dir
18
+
19
+ dir = next_dir
20
+ end
21
+
22
+ File.join(dir, ".abt.yml")
23
+ end
24
+ end
25
+ end
@@ -15,7 +15,7 @@ module Abt
15
15
  end
16
16
 
17
17
  def path
18
- Path.new(local_available? && git["path"] || "")
18
+ Path.new(local_available? && git["path"] || directory_config["path"] || "")
19
19
  end
20
20
 
21
21
  def path=(new_path)
@@ -36,13 +36,17 @@ module Abt
36
36
  def wip_section_gid
37
37
  return nil unless local_available?
38
38
 
39
- @wip_section_gid ||= git["wipSectionGid"] || prompt_wip_section["gid"]
39
+ @wip_section_gid ||= git["wipSectionGid"] ||
40
+ directory_config["wip_section_gid"] ||
41
+ prompt_wip_section["gid"]
40
42
  end
41
43
 
42
44
  def finalized_section_gid
43
45
  return nil unless local_available?
44
46
 
45
- @finalized_section_gid ||= git["finalizedSectionGid"] || prompt_finalized_section["gid"]
47
+ @finalized_section_gid ||= git["finalizedSectionGid"] ||
48
+ directory_config["finalized_section_gid"] ||
49
+ prompt_finalized_section["gid"]
46
50
  end
47
51
 
48
52
  def clear_local(verbose: true)
@@ -66,6 +70,10 @@ module Abt
66
70
 
67
71
  private
68
72
 
73
+ def directory_config
74
+ Abt.directory_config.fetch("asana", {})
75
+ end
76
+
69
77
  def git
70
78
  @git ||= GitConfig.new("local", "abt.asana")
71
79
  end
@@ -15,7 +15,7 @@ module Abt
15
15
  end
16
16
 
17
17
  def path
18
- Path.new(local_available? && git["path"] || "")
18
+ Path.new(local_available? && git["path"] || Abt.directory_config.dig("devops", "path") || "")
19
19
  end
20
20
 
21
21
  def path=(new_path)
@@ -15,7 +15,7 @@ module Abt
15
15
  end
16
16
 
17
17
  def path
18
- Path.new(local_available? && git["path"] || "")
18
+ Path.new(local_available? && git["path"] || Abt.directory_config.dig("harvest", "path") || "")
19
19
  end
20
20
 
21
21
  def path=(new_path)
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.25"
4
+ VERSION = "0.0.26"
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.25
4
+ version: 0.0.26
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-03-18 00:00:00.000000000 Z
11
+ date: 2021-03-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dry-inflector
@@ -88,6 +88,7 @@ files:
88
88
  - "./lib/abt/cli/global_commands/share.rb"
89
89
  - "./lib/abt/cli/global_commands/version.rb"
90
90
  - "./lib/abt/cli/prompt.rb"
91
+ - "./lib/abt/directory_config.rb"
91
92
  - "./lib/abt/docs.rb"
92
93
  - "./lib/abt/docs/cli.rb"
93
94
  - "./lib/abt/docs/markdown.rb"