starscope 0.1.4 → 0.1.5
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.
- data/CHANGELOG.md +12 -1
- data/Gemfile.lock +1 -1
- data/README.md +7 -8
- data/TODO.md +0 -1
- data/bin/starscope +19 -12
- data/lib/starscope/db.rb +11 -6
- data/lib/starscope/langs/ruby.rb +4 -1
- data/lib/starscope/version.rb +1 -1
- data/starscope.gemspec +1 -1
- metadata +2 -3
- data/lib/starscope/value.rb +0 -7
data/CHANGELOG.md
CHANGED
@@ -1,7 +1,18 @@
|
|
1
1
|
Changelog
|
2
2
|
=========
|
3
3
|
|
4
|
-
v0.1.
|
4
|
+
v0.1.5 (trunk)
|
5
|
+
-------------------
|
6
|
+
|
7
|
+
New Features:
|
8
|
+
* Add --no-progress option to hide progress-bar.
|
9
|
+
|
10
|
+
Misc:
|
11
|
+
* Explicitly print "No results found" to avoid mysterious empty output.
|
12
|
+
* Recognize ruby files with a #!ruby line but no .rb suffix.
|
13
|
+
* Help output now fits in 80-column terminal.
|
14
|
+
|
15
|
+
v0.1.4 (2014-01-05)
|
5
16
|
-------------------
|
6
17
|
|
7
18
|
New Features:
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -1,15 +1,16 @@
|
|
1
1
|
StarScope
|
2
2
|
=========
|
3
3
|
|
4
|
-
https://
|
4
|
+
[](http://badge.fury.io/rb/starscope)
|
5
5
|
|
6
6
|
Anyone who has done much programming in C (or C++) on a unix-based OS has come
|
7
|
-
across the fantastic Cscope tool
|
8
|
-
works for C++).
|
7
|
+
across the fantastic [Cscope](http://cscope.sourceforge.net/) tool. Sadly, it
|
8
|
+
only works for C (and sort of works for C++).
|
9
9
|
|
10
|
-
StarScope is a similar tool for Ruby and
|
11
|
-
|
12
|
-
|
10
|
+
StarScope is a similar tool for [Ruby](https://www.ruby-lang.org/) and
|
11
|
+
[Golang](http://golang.org/), with a design intended to make it easy to add
|
12
|
+
support for other languages at some point within the same framework (thus the
|
13
|
+
name StarScope, ie \*scope).
|
13
14
|
|
14
15
|
Install it as a gem:
|
15
16
|
```
|
@@ -35,5 +36,3 @@ or
|
|
35
36
|
```
|
36
37
|
$ starscope -e cscope
|
37
38
|
```
|
38
|
-
|
39
|
-
[1] http://cscope.sourceforge.net/
|
data/TODO.md
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
TODO
|
2
2
|
=========
|
3
3
|
|
4
|
-
* Add --quiet to hide progress bar and --verbose to print each file
|
5
4
|
* Parallelization, perhaps via https://github.com/grosser/parallel
|
6
5
|
* Fuzzy matching, perhaps via https://github.com/seamusabshere/fuzzy_match
|
7
6
|
* Export advanced ctags annotations
|
data/bin/starscope
CHANGED
@@ -7,15 +7,15 @@ require 'optparse'
|
|
7
7
|
require 'readline'
|
8
8
|
require 'starscope'
|
9
9
|
|
10
|
-
options = {auto: true}
|
10
|
+
options = {auto: true, progress: true}
|
11
11
|
DEFAULT_DB=".starscope.db"
|
12
12
|
|
13
13
|
# Options Parsing
|
14
14
|
OptionParser.new do |opts|
|
15
15
|
opts.banner = <<END
|
16
|
-
Usage: starscope
|
16
|
+
Usage: starscope [options] [PATHS]
|
17
17
|
|
18
|
-
If you don't pass any of -n, -r, -w or PATHS
|
18
|
+
If you don't pass any of -n, -r, -w or PATHS, default behaviour is to recurse
|
19
19
|
in the current directory and build or update the database `#{DEFAULT_DB}`.
|
20
20
|
|
21
21
|
Query scopes must be specified with `::`, for example -q calls,File::mtime.
|
@@ -36,16 +36,16 @@ END
|
|
36
36
|
end
|
37
37
|
|
38
38
|
opts.separator "\nDatabase Management"
|
39
|
-
opts.on("-e", "--export FORMAT[,PATH]", "Export in FORMAT to PATH, see EXPORTING
|
39
|
+
opts.on("-e", "--export FORMAT[,PATH]", "Export in FORMAT to PATH, (see EXPORTING)") do |export|
|
40
40
|
options[:export] = export
|
41
41
|
end
|
42
|
-
opts.on("-n", "--no-auto", "Don't automatically update/create the
|
42
|
+
opts.on("-n", "--no-auto", "Don't automatically update/create the DB") do
|
43
43
|
options[:auto] = false
|
44
44
|
end
|
45
|
-
opts.on("-r", "--read-db PATH", "Reads the DB from PATH instead of
|
45
|
+
opts.on("-r", "--read-db PATH", "Reads the DB from PATH instead of default") do |path|
|
46
46
|
options[:read] = path
|
47
47
|
end
|
48
|
-
opts.on("-w", "--write-db PATH", "Writes the DB to PATH instead of
|
48
|
+
opts.on("-w", "--write-db PATH", "Writes the DB to PATH instead of default") do |path|
|
49
49
|
options[:write] = path
|
50
50
|
end
|
51
51
|
|
@@ -54,12 +54,15 @@ END
|
|
54
54
|
puts StarScope::VERSION
|
55
55
|
exit
|
56
56
|
end
|
57
|
+
opts.on("--no-progress", "Don't show progress-bar when updating DB") do
|
58
|
+
options[:progress] = false
|
59
|
+
end
|
57
60
|
|
58
61
|
opts.separator <<END
|
59
62
|
\nEXPORTING
|
60
|
-
At the moment two export formats are supported: 'ctags' and 'cscope'. If
|
61
|
-
don't specify a path, the output is written to the files 'tags' (for
|
62
|
-
or 'cscope.out' (for cscope) in the current directory.
|
63
|
+
At the moment two export formats are supported: 'ctags' and 'cscope'. If
|
64
|
+
you don't specify a path, the output is written to the files 'tags' (for
|
65
|
+
ctags) or 'cscope.out' (for cscope) in the current directory.
|
63
66
|
END
|
64
67
|
|
65
68
|
end.parse!
|
@@ -76,7 +79,11 @@ def run_query(db, table, value)
|
|
76
79
|
return false
|
77
80
|
end
|
78
81
|
key, results = db.query(table.to_sym, value)
|
79
|
-
|
82
|
+
if results
|
83
|
+
puts results.map {|val| StarScope::Datum.to_s(val)}
|
84
|
+
else
|
85
|
+
puts "No results found."
|
86
|
+
end
|
80
87
|
return true
|
81
88
|
rescue StarScope::DB::NoTableError
|
82
89
|
$stderr.puts "Table '#{table}' doesn't exist."
|
@@ -104,7 +111,7 @@ if File.exists?(DEFAULT_DB) and not options[:read]
|
|
104
111
|
options[:read] = DEFAULT_DB
|
105
112
|
end
|
106
113
|
|
107
|
-
db = StarScope::DB.new
|
114
|
+
db = StarScope::DB.new(options[:progress])
|
108
115
|
|
109
116
|
if options[:read]
|
110
117
|
db.load(options[:read])
|
data/lib/starscope/db.rb
CHANGED
@@ -19,7 +19,8 @@ class StarScope::DB
|
|
19
19
|
class NoTableError < StandardError; end
|
20
20
|
class UnknownDBFormatError < StandardError; end
|
21
21
|
|
22
|
-
def initialize
|
22
|
+
def initialize(progress)
|
23
|
+
@progress = progress
|
23
24
|
@paths = []
|
24
25
|
@files = {}
|
25
26
|
@tables = {}
|
@@ -64,24 +65,28 @@ class StarScope::DB
|
|
64
65
|
@paths += paths
|
65
66
|
files = paths.map {|p| self.class.files_from_path(p)}.flatten
|
66
67
|
return if files.empty?
|
67
|
-
|
68
|
+
if @progress
|
69
|
+
pbar = ProgressBar.create(title: "Building", total: files.length, format: PBAR_FORMAT, length: 80)
|
70
|
+
end
|
68
71
|
files.each do |f|
|
69
72
|
add_file(f)
|
70
|
-
pbar.increment
|
73
|
+
pbar.increment if @progress
|
71
74
|
end
|
72
75
|
end
|
73
76
|
|
74
77
|
def update
|
75
78
|
new_files = (@paths.map {|p| self.class.files_from_path(p)}.flatten) - @files.keys
|
76
|
-
|
79
|
+
if @progress
|
80
|
+
pbar = ProgressBar.create(title: "Updating", total: new_files.length + @files.length, format: PBAR_FORMAT, length: 80)
|
81
|
+
end
|
77
82
|
changed = @files.keys.map do |f|
|
78
83
|
changed = update_file(f)
|
79
|
-
pbar.increment
|
84
|
+
pbar.increment if @progress
|
80
85
|
changed
|
81
86
|
end
|
82
87
|
new_files.each do |f|
|
83
88
|
add_file(f)
|
84
|
-
pbar.increment
|
89
|
+
pbar.increment if @progress
|
85
90
|
end
|
86
91
|
changed.any? || !new_files.empty?
|
87
92
|
end
|
data/lib/starscope/langs/ruby.rb
CHANGED
@@ -3,7 +3,10 @@ require "parser/current"
|
|
3
3
|
module StarScope::Lang
|
4
4
|
module Ruby
|
5
5
|
def self.match_file(name)
|
6
|
-
name =~ /.*\.rb$/
|
6
|
+
return true if name =~ /.*\.rb$/
|
7
|
+
return File.open(name) {|f| f.readline} =~ /^#!.*ruby/
|
8
|
+
rescue ArgumentError # may occur if file is binary (invalid UTF)
|
9
|
+
false
|
7
10
|
end
|
8
11
|
|
9
12
|
def self.extract(file, &block)
|
data/lib/starscope/version.rb
CHANGED
data/starscope.gemspec
CHANGED
@@ -4,7 +4,7 @@ Gem::Specification.new do |gem|
|
|
4
4
|
gem.name = 'starscope'
|
5
5
|
gem.version = StarScope::VERSION
|
6
6
|
gem.summary = "A code indexer and analyzer"
|
7
|
-
gem.description = "A tool like the venerable cscope, but for ruby,
|
7
|
+
gem.description = "A tool like the venerable cscope, but for ruby, golang and other languages"
|
8
8
|
gem.authors = ["Evan Huus"]
|
9
9
|
gem.homepage = 'https://github.com/eapache/starscope'
|
10
10
|
gem.email = 'eapache@gmail.com'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: starscope
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -123,7 +123,7 @@ dependencies:
|
|
123
123
|
- - ! '>='
|
124
124
|
- !ruby/object:Gem::Version
|
125
125
|
version: '0'
|
126
|
-
description: A tool like the venerable cscope, but for ruby,
|
126
|
+
description: A tool like the venerable cscope, but for ruby, golang and other languages
|
127
127
|
email: eapache@gmail.com
|
128
128
|
executables:
|
129
129
|
- starscope
|
@@ -144,7 +144,6 @@ files:
|
|
144
144
|
- lib/starscope/db.rb
|
145
145
|
- lib/starscope/langs/go.rb
|
146
146
|
- lib/starscope/langs/ruby.rb
|
147
|
-
- lib/starscope/value.rb
|
148
147
|
- lib/starscope/version.rb
|
149
148
|
- starscope.gemspec
|
150
149
|
homepage: https://github.com/eapache/starscope
|