starscope 1.0.3 → 1.0.4
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 +7 -1
- data/Gemfile.lock +1 -1
- data/lib/starscope/db.rb +41 -19
- data/lib/starscope/version.rb +1 -1
- data/test/lib/test_db.rb +32 -11
- metadata +32 -13
- checksums.yaml +0 -7
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
data/lib/starscope/db.rb
CHANGED
@@ -76,14 +76,14 @@ class StarScope::DB
|
|
76
76
|
paths = paths.map {|p| normalize_fnmatch(p)}
|
77
77
|
@meta[:excludes] += paths
|
78
78
|
@meta[:excludes].uniq!
|
79
|
+
|
80
|
+
deleted = []
|
79
81
|
@meta[:files].delete_if do |name, record|
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
else
|
84
|
-
false
|
85
|
-
end
|
82
|
+
ret = matches_exclude(paths, name)
|
83
|
+
deleted << name if ret
|
84
|
+
ret
|
86
85
|
end
|
86
|
+
remove_files(deleted)
|
87
87
|
end
|
88
88
|
|
89
89
|
def add_paths(paths)
|
@@ -102,15 +102,30 @@ class StarScope::DB
|
|
102
102
|
def update
|
103
103
|
new_files = (Dir.glob(@meta[:paths]).select {|f| File.file? f}) - @meta[:files].keys
|
104
104
|
new_files.delete_if {|f| matches_exclude(@meta[:excludes], f)}
|
105
|
+
|
105
106
|
@output.new_pbar("Updating", new_files.length + @meta[:files].length)
|
106
107
|
changed = false
|
108
|
+
@tables, tmp_tbls = {}, @tables
|
109
|
+
to_prune = []
|
110
|
+
|
107
111
|
@meta[:files].delete_if do |name, record|
|
108
112
|
@output.log("Updating `#{name}`")
|
109
|
-
|
113
|
+
|
114
|
+
event = file_event(name, record)
|
115
|
+
if event != :unchanged
|
116
|
+
to_prune << name
|
117
|
+
changed = true
|
118
|
+
parse_file(name) if event == :modified
|
119
|
+
end
|
120
|
+
|
110
121
|
@output.inc_pbar
|
111
|
-
|
112
|
-
ret == :delete
|
122
|
+
event == :deleted
|
113
123
|
end
|
124
|
+
|
125
|
+
@tables, tmp_tbls = tmp_tbls, @tables
|
126
|
+
remove_files(to_prune)
|
127
|
+
merge_db(tmp_tbls)
|
128
|
+
|
114
129
|
add_new_files(new_files)
|
115
130
|
@output.finish_pbar
|
116
131
|
changed || !new_files.empty?
|
@@ -309,20 +324,27 @@ END
|
|
309
324
|
end
|
310
325
|
end
|
311
326
|
|
312
|
-
def
|
327
|
+
def merge_db(new_tbls)
|
328
|
+
new_tbls.each do |name, tbl|
|
329
|
+
@tables[name] ||= []
|
330
|
+
@tables[name].concat(tbl)
|
331
|
+
end
|
332
|
+
end
|
333
|
+
|
334
|
+
def remove_files(files)
|
335
|
+
check = Hash[files.map {|f| [f, true]}]
|
313
336
|
@tables.each do |name, tbl|
|
314
|
-
tbl.delete_if {|val| val[:file]
|
337
|
+
tbl.delete_if {|val| check[val[:file]]}
|
315
338
|
end
|
316
339
|
end
|
317
340
|
|
318
|
-
def
|
319
|
-
if not File.exists?(
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
:update
|
341
|
+
def file_event(name, record)
|
342
|
+
if not File.exists?(name) or not File.file?(name)
|
343
|
+
:deleted
|
344
|
+
elsif record[:last_updated] < File.mtime(name).to_i
|
345
|
+
:modified
|
346
|
+
else
|
347
|
+
:unchanged
|
326
348
|
end
|
327
349
|
end
|
328
350
|
|
data/lib/starscope/version.rb
CHANGED
data/test/lib/test_db.rb
CHANGED
@@ -17,6 +17,8 @@ describe StarScope::DB do
|
|
17
17
|
assert defs.include? :load
|
18
18
|
assert defs.include? :update
|
19
19
|
assert defs.include? :files_from_path
|
20
|
+
assert defs.include? :single_var
|
21
|
+
assert defs.include? :single_const
|
20
22
|
end
|
21
23
|
|
22
24
|
before do
|
@@ -27,34 +29,53 @@ describe StarScope::DB do
|
|
27
29
|
proc {@db.dump_table(:foo)}.must_raise StarScope::DB::NoTableError
|
28
30
|
end
|
29
31
|
|
30
|
-
it "must
|
32
|
+
it "must add paths" do
|
31
33
|
paths = [GOLANG_SAMPLE, 'test/files/**/*']
|
32
34
|
@db.add_paths(paths)
|
33
35
|
@db.instance_eval('@meta[:paths]').must_equal paths
|
34
36
|
validate(@db)
|
35
37
|
end
|
36
38
|
|
37
|
-
it "must
|
39
|
+
it "must add excludes" do
|
40
|
+
paths = [GOLANG_SAMPLE, 'test/files/**/*']
|
41
|
+
@db.add_paths(paths)
|
42
|
+
@db.add_excludes(['test/files/**'])
|
43
|
+
files = @db.instance_eval('@meta[:files]').keys
|
44
|
+
files.wont_include RUBY_SAMPLE
|
45
|
+
files.wont_include GOLANG_SAMPLE
|
46
|
+
tbls = @db.instance_eval('@tables')
|
47
|
+
tbls[:defs].must_be_empty
|
48
|
+
tbls[:end].must_be_empty
|
49
|
+
end
|
50
|
+
|
51
|
+
it "must pick up new files in old paths" do
|
38
52
|
@db.instance_eval('@meta[:paths] = ["test/files/**/*"]')
|
39
53
|
@db.update
|
40
54
|
validate(@db)
|
41
55
|
end
|
42
56
|
|
43
|
-
it "must
|
44
|
-
@db.instance_eval('@meta[:paths] = ["test/files"]')
|
45
|
-
@db.instance_eval('@meta[:files] = {"test/files/foo" => {:
|
46
|
-
@db.instance_eval('@meta[:files]').keys.must_include 'test/files/foo'
|
57
|
+
it "must remove old files in existing paths" do
|
58
|
+
@db.instance_eval('@meta[:paths] = ["test/files/**/*"]')
|
59
|
+
@db.instance_eval('@meta[:files] = {"test/files/foo" => {:last_updated=>1}}')
|
47
60
|
@db.update
|
48
61
|
@db.instance_eval('@meta[:files]').keys.wont_include 'test/files/foo'
|
49
62
|
end
|
50
63
|
|
51
|
-
it "must
|
64
|
+
it "must update stale existing files" do
|
65
|
+
@db.instance_eval('@meta[:paths] = ["test/files/**/*"]')
|
66
|
+
@db.instance_eval("@meta[:files] = {\"#{GOLANG_SAMPLE}\" => {:last_updated=>1}}")
|
67
|
+
@db.instance_eval("@tables[:defs] = [{:file => \"#{GOLANG_SAMPLE}\"}]")
|
68
|
+
@db.update
|
69
|
+
validate(@db)
|
70
|
+
end
|
71
|
+
|
72
|
+
it "must load an old DB file" do
|
52
73
|
@db.load('test/files/db_old.json.gz')
|
53
74
|
@db.instance_eval('@meta[:paths]').must_equal ['test/files/**/*']
|
54
75
|
validate(@db)
|
55
76
|
end
|
56
77
|
|
57
|
-
it "must
|
78
|
+
it "must round-trip a database" do
|
58
79
|
file = Tempfile.new('starscope_test')
|
59
80
|
begin
|
60
81
|
@db.add_paths(['test/files'])
|
@@ -68,7 +89,7 @@ describe StarScope::DB do
|
|
68
89
|
end
|
69
90
|
end
|
70
91
|
|
71
|
-
it "must
|
92
|
+
it "must export to ctags" do
|
72
93
|
file = Tempfile.new('starscope_test')
|
73
94
|
begin
|
74
95
|
@db.add_paths(['test/files'])
|
@@ -82,7 +103,7 @@ describe StarScope::DB do
|
|
82
103
|
end
|
83
104
|
end
|
84
105
|
|
85
|
-
it "must
|
106
|
+
it "must export to cscope" do
|
86
107
|
file = Tempfile.new('starscope_test')
|
87
108
|
begin
|
88
109
|
@db.add_paths(['test/files'])
|
@@ -98,7 +119,7 @@ describe StarScope::DB do
|
|
98
119
|
end
|
99
120
|
end
|
100
121
|
|
101
|
-
it "must
|
122
|
+
it "must run queries" do
|
102
123
|
@db.add_paths(['test/files'])
|
103
124
|
@db.query(:calls, "abc").must_equal []
|
104
125
|
@db.query(:defs, "xyz").must_equal []
|
metadata
CHANGED
@@ -1,18 +1,20 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: starscope
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.4
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Evan Huus
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date: 2014-06-
|
12
|
+
date: 2014-06-11 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: oj
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
16
18
|
requirements:
|
17
19
|
- - ~>
|
18
20
|
- !ruby/object:Gem::Version
|
@@ -20,6 +22,7 @@ dependencies:
|
|
20
22
|
type: :runtime
|
21
23
|
prerelease: false
|
22
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
23
26
|
requirements:
|
24
27
|
- - ~>
|
25
28
|
- !ruby/object:Gem::Version
|
@@ -27,6 +30,7 @@ dependencies:
|
|
27
30
|
- !ruby/object:Gem::Dependency
|
28
31
|
name: parser
|
29
32
|
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
30
34
|
requirements:
|
31
35
|
- - ~>
|
32
36
|
- !ruby/object:Gem::Version
|
@@ -34,6 +38,7 @@ dependencies:
|
|
34
38
|
type: :runtime
|
35
39
|
prerelease: false
|
36
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
37
42
|
requirements:
|
38
43
|
- - ~>
|
39
44
|
- !ruby/object:Gem::Version
|
@@ -41,6 +46,7 @@ dependencies:
|
|
41
46
|
- !ruby/object:Gem::Dependency
|
42
47
|
name: ruby-progressbar
|
43
48
|
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
44
50
|
requirements:
|
45
51
|
- - ~>
|
46
52
|
- !ruby/object:Gem::Version
|
@@ -48,6 +54,7 @@ dependencies:
|
|
48
54
|
type: :runtime
|
49
55
|
prerelease: false
|
50
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
51
58
|
requirements:
|
52
59
|
- - ~>
|
53
60
|
- !ruby/object:Gem::Version
|
@@ -55,6 +62,7 @@ dependencies:
|
|
55
62
|
- !ruby/object:Gem::Dependency
|
56
63
|
name: bundler
|
57
64
|
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
58
66
|
requirements:
|
59
67
|
- - ~>
|
60
68
|
- !ruby/object:Gem::Version
|
@@ -62,6 +70,7 @@ dependencies:
|
|
62
70
|
type: :development
|
63
71
|
prerelease: false
|
64
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
65
74
|
requirements:
|
66
75
|
- - ~>
|
67
76
|
- !ruby/object:Gem::Version
|
@@ -69,43 +78,49 @@ dependencies:
|
|
69
78
|
- !ruby/object:Gem::Dependency
|
70
79
|
name: rake
|
71
80
|
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
72
82
|
requirements:
|
73
|
-
- - '>='
|
83
|
+
- - ! '>='
|
74
84
|
- !ruby/object:Gem::Version
|
75
85
|
version: '0'
|
76
86
|
type: :development
|
77
87
|
prerelease: false
|
78
88
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
79
90
|
requirements:
|
80
|
-
- - '>='
|
91
|
+
- - ! '>='
|
81
92
|
- !ruby/object:Gem::Version
|
82
93
|
version: '0'
|
83
94
|
- !ruby/object:Gem::Dependency
|
84
95
|
name: pry
|
85
96
|
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
86
98
|
requirements:
|
87
|
-
- - '>='
|
99
|
+
- - ! '>='
|
88
100
|
- !ruby/object:Gem::Version
|
89
101
|
version: '0'
|
90
102
|
type: :development
|
91
103
|
prerelease: false
|
92
104
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
93
106
|
requirements:
|
94
|
-
- - '>='
|
107
|
+
- - ! '>='
|
95
108
|
- !ruby/object:Gem::Version
|
96
109
|
version: '0'
|
97
110
|
- !ruby/object:Gem::Dependency
|
98
111
|
name: minitest
|
99
112
|
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
100
114
|
requirements:
|
101
|
-
- - '>='
|
115
|
+
- - ! '>='
|
102
116
|
- !ruby/object:Gem::Version
|
103
117
|
version: '0'
|
104
118
|
type: :development
|
105
119
|
prerelease: false
|
106
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
107
122
|
requirements:
|
108
|
-
- - '>='
|
123
|
+
- - ! '>='
|
109
124
|
- !ruby/object:Gem::Version
|
110
125
|
version: '0'
|
111
126
|
description: A tool like the venerable cscope, but for ruby, golang and other languages
|
@@ -148,26 +163,30 @@ files:
|
|
148
163
|
homepage: https://github.com/eapache/starscope
|
149
164
|
licenses:
|
150
165
|
- MIT
|
151
|
-
metadata: {}
|
152
166
|
post_install_message:
|
153
167
|
rdoc_options: []
|
154
168
|
require_paths:
|
155
169
|
- lib
|
156
170
|
required_ruby_version: !ruby/object:Gem::Requirement
|
171
|
+
none: false
|
157
172
|
requirements:
|
158
|
-
- - '>='
|
173
|
+
- - ! '>='
|
159
174
|
- !ruby/object:Gem::Version
|
160
175
|
version: 1.8.7
|
161
176
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
177
|
+
none: false
|
162
178
|
requirements:
|
163
|
-
- - '>='
|
179
|
+
- - ! '>='
|
164
180
|
- !ruby/object:Gem::Version
|
165
181
|
version: '0'
|
182
|
+
segments:
|
183
|
+
- 0
|
184
|
+
hash: -1535830419513548498
|
166
185
|
requirements: []
|
167
186
|
rubyforge_project:
|
168
|
-
rubygems_version:
|
187
|
+
rubygems_version: 1.8.23
|
169
188
|
signing_key:
|
170
|
-
specification_version:
|
189
|
+
specification_version: 3
|
171
190
|
summary: A code indexer and analyzer
|
172
191
|
test_files:
|
173
192
|
- test/files/db_old.json.gz
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: 38376cc70ae8d935176b3b428d6b82acb2e9ed28
|
4
|
-
data.tar.gz: eb7761acf9adc1aef79eaf1e2e74b04d7be51ca2
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: b2df9c55e2e0ca2ab3c0aeb825f7a9e9f3dec274216256a9e712eb60ea3176c4851925799b5621220fa59eca32ff67ba5813699eec056aa285840397f91775db
|
7
|
-
data.tar.gz: c5159b4997e35cd23f29ffee1a17da99e298dcdb7a02789a5b64435cd645e1af56788c5666c1ef5ac3dccfd5fdc250e48c62e7c170a8aaf71009e62138590d19
|