task-list 0.6 → 0.7

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
  SHA1:
3
- metadata.gz: 4102edc9d6d267fbd9cc4b45c3d4b43e80f19f17
4
- data.tar.gz: 97afb0fff6c3284a34564039bf24a1b19d487b54
3
+ metadata.gz: 16e0448f4451b1050ffa6e3a842f9d0f92fd3ef0
4
+ data.tar.gz: 1306f7bb84ca55b8e31596d696f6c66778efb608
5
5
  SHA512:
6
- metadata.gz: 5d24d19e004a27362bb978669ffec9918bc37a69132f135a4a0135e7503e96502201555c82be2f38a4b133310d8325b2cc4b4e72b7b8641a5492847ca2cc4ece
7
- data.tar.gz: ccd322bdaf65cda52c2ae0659c6c8dff27da8b86346ebf3319ae16b9f545bd2c078ca6ae9abeb378a8b0d2ecc8c3518a607ad66be4bb16e3a6be85927a5f4251
6
+ metadata.gz: e6231f7fe1cdc292113c649ae3dd06936c0d1e5043900fa59a13b0a6dd1c6b61e7f2c076db503d8f0e5a1cf1ebc883ff3e629d8a50a8be6bad0c3fd38809ec70
7
+ data.tar.gz: 5a0cce6a1bb9955ccea2ffaff0bc9eaf9ba94cba28f28964a0d39385eccac380cff66059e8822b8b20f5c287beb541fea8117ac595c93679d4d74b97b9037157
data/bin/tl CHANGED
@@ -8,6 +8,10 @@ options = {}
8
8
  OptionParser.new do |opts|
9
9
  opts.banner = "Usage: tl [<query>] [<option> ...]"
10
10
 
11
+ opts.on("-g", "--github", "Format for Github (plain option is inferred)") do
12
+ options[:github] = true
13
+ end
14
+
11
15
  opts.on("-p", "--plain", "No colours in the output") do
12
16
  options[:plain] = true
13
17
  end
@@ -1,11 +1,13 @@
1
1
  require "find"
2
+ require "pathname"
2
3
 
3
4
  module TaskList
4
5
  class Parser
5
- attr_reader :files, :tasks, :search_path
6
+ attr_reader :files, :tasks, :search_path, :github
6
7
 
7
8
  def initialize(arguments: [], options: {})
8
9
  self.search_path = options[:search_path]
10
+ @github = options[:github] if options[:github]
9
11
  @plain = options[:plain] if options[:plain]
10
12
  @type = options[:type].upcase if options[:type]
11
13
  @files = fuzzy_find_files queries: arguments
@@ -36,13 +38,31 @@ module TaskList
36
38
  unless tasks.empty?
37
39
  puts "#{type}:\n#{'-' * (type.length + 1)}\n"
38
40
 
41
+ if self.github? || self.plain?
42
+ puts
43
+ end
44
+
39
45
  tasks.each do |task|
40
- puts task[:task]
46
+ if self.github?
47
+ if Pathname.new(self.search_path).absolute?
48
+ reference = "#{task[:file].sub(/#{Regexp.escape(self.git_repo_root)}\//, "")}#L#{task[:line_number]}"
49
+ else
50
+ search_path_components = File.expand_path(self.search_path).split(File::SEPARATOR)
51
+ search_path_components.pop
52
+ parent = File.join(*search_path_components)
53
+ file = task[:file].sub(/#{Regexp.escape(parent)}\//, "")
54
+ reference = "#{file}#L#{task[:line_number]}"
55
+ end
41
56
 
42
- if self.plain?
43
- puts " line #{task[:line_number]} in #{task[:file]}"
57
+ puts "- #{task[:task]} &mdash; [#{reference}](#{reference})"
44
58
  else
45
- puts " \e[30m\e[1mline #{task[:line_number]} in #{task[:file]}\e[0m"
59
+ puts task[:task]
60
+
61
+ if self.plain?
62
+ puts " line #{task[:line_number]} in #{task[:file]}"
63
+ else
64
+ puts " \e[30m\e[1mline #{task[:line_number]} in #{task[:file]}\e[0m"
65
+ end
46
66
  end
47
67
  end
48
68
 
@@ -51,6 +71,34 @@ module TaskList
51
71
  end
52
72
  end
53
73
 
74
+ def git_repo_root
75
+ full_search_path = File.expand_path(self.search_path)
76
+ root_path = full_search_path.dup
77
+ repo_found = false
78
+
79
+ begin
80
+ if File.directory?(File.join(root_path, ".git"))
81
+ repo_found = true
82
+ break
83
+ end
84
+
85
+ directories = root_path.split(File::SEPARATOR)
86
+ directories.pop
87
+ root_path = File.join(*directories)
88
+ end until repo_found
89
+
90
+ unless repo_found
91
+ # FIXME: Show an error message instead of raising an exception
92
+ raise "No git repo found."
93
+ end
94
+
95
+ root_path
96
+ end
97
+
98
+ def github?
99
+ !!@github
100
+ end
101
+
54
102
  def plain?
55
103
  !!@plain
56
104
  end
@@ -1,3 +1,3 @@
1
1
  module TaskList
2
- VERSION = "0.6"
2
+ VERSION = "0.7"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: task-list
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.6'
4
+ version: '0.7'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aziz Light