gem-codesearch 0.1 → 0.2
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 +4 -4
- data/README.md +10 -1
- data/Rakefile +13 -11
- data/gem-codesearch.gemspec +8 -2
- data/test/test_all.rb +70 -0
- data/test/test_bin.rb +18 -0
- metadata +47 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6e8c7bb53fd63dd6e17be73b4539e85b56b375cb
|
4
|
+
data.tar.gz: f13479a2283c8f7d9644cc32da9d94581ba36bd3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a85f76d92147d3071d17e9a48b0f32f54fb7966bbc62d3d9c270367ce573fc821dc0904bbefbb08c1453a134103a60dcfc68614f454d1a975da2a720ef272e22
|
7
|
+
data.tar.gz: e8289838b82d9a148154f77e5ebf74a160f0d0942bdc8f1ee39b745bb7b8cfad02584a72223fe1f52fe0ec4e081eb1230a0d4b82f84fecc2ba6b0c349701a218
|
data/README.md
CHANGED
@@ -3,6 +3,10 @@
|
|
3
3
|
gem-codesearch sets up a full text code search engine on mirror of rubygems.
|
4
4
|
It use rubygems-mirror to mirror rubygems and milkode for search engine.
|
5
5
|
|
6
|
+
300GB of free disk space is required to store the rubygems mirror,
|
7
|
+
unpacked gems and milkode index at 2015-01.
|
8
|
+
It will be larger in future.
|
9
|
+
|
6
10
|
## Usage
|
7
11
|
|
8
12
|
This creates "latest-gem" package in milkode index.
|
@@ -14,7 +18,7 @@ This creates "latest-gem" package in milkode index.
|
|
14
18
|
% gem-codesearch-setup all >& setup.log # It may take several days or more
|
15
19
|
|
16
20
|
If "gem-codesearch-setup all" fails due to network or server errors,
|
17
|
-
try again.
|
21
|
+
try again to continue.
|
18
22
|
|
19
23
|
After the index is created, enjoy code search.
|
20
24
|
|
@@ -29,6 +33,11 @@ After the index is created, enjoy code search.
|
|
29
33
|
% cd gem-codesearch
|
30
34
|
% rake all >& setup.log # It may take several days or more
|
31
35
|
|
36
|
+
## Links
|
37
|
+
|
38
|
+
- https://github.com/akr/gem-codesearch
|
39
|
+
- https://rubygems.org/gems/gem-codesearch
|
40
|
+
|
32
41
|
## Author
|
33
42
|
|
34
43
|
Tanaka Akira
|
data/Rakefile
CHANGED
@@ -18,26 +18,29 @@ end
|
|
18
18
|
|
19
19
|
task :all => [:mirror, :unpack, :index]
|
20
20
|
|
21
|
-
|
22
|
-
|
23
|
-
|
21
|
+
BASE_DIR = ENV['GEM_CODESEARCH_DIR'] || Dir.pwd
|
22
|
+
MIRROR_URL = ENV['GEM_CODESEARCH_URL'] || 'http://rubygems.org/'
|
23
|
+
|
24
|
+
MIRROR_DIR = "#{BASE_DIR}/mirror"
|
25
|
+
LATEST_DIR = "#{BASE_DIR}/latest-gem"
|
26
|
+
LOG_DIR = "#{BASE_DIR}/log"
|
24
27
|
|
25
28
|
GEM_COMMAND = "#{RbConfig::CONFIG["bindir"]}/gem"
|
26
29
|
MILK_COMMAND = "#{RbConfig::CONFIG["bindir"]}/milk"
|
27
30
|
|
28
|
-
file "
|
31
|
+
file "#{BASE_DIR}/.gem/.mirrorrc" do |t|
|
29
32
|
FileUtils.mkpath File.dirname(t.name)
|
30
33
|
File.write(t.name, <<"End")
|
31
34
|
---
|
32
|
-
- from:
|
35
|
+
- from: #{MIRROR_URL}
|
33
36
|
to: #{MIRROR_DIR}
|
34
37
|
End
|
35
38
|
end
|
36
39
|
|
37
|
-
task :mirror => "
|
40
|
+
task :mirror => "#{BASE_DIR}/.gem/.mirrorrc" do
|
38
41
|
FileUtils.mkpath MIRROR_DIR
|
39
42
|
# HOME is set because gem mirror reads $HOME/.gem/.mirrorrc.
|
40
|
-
sh "HOME=#{
|
43
|
+
sh "HOME=#{BASE_DIR} #{GEM_COMMAND} mirror --verbose"
|
41
44
|
end
|
42
45
|
|
43
46
|
task :unpack do
|
@@ -61,18 +64,17 @@ task :unpack do
|
|
61
64
|
#all_specs = all_specs.reject {|name,version,platform| /\Afoo-/ !~ name }
|
62
65
|
|
63
66
|
latest_vnames = []
|
64
|
-
nonlatest_vnames = []
|
65
67
|
h = all_specs.group_by {|name,version| name }
|
66
68
|
h.each {|name, list|
|
67
69
|
list = list.sort_by {|name,version| version }
|
68
70
|
vnames = list.map {|name,version| "#{name}-#{version}" }
|
69
71
|
latest_vnames << vnames.pop
|
70
|
-
nonlatest_vnames.concat list
|
71
72
|
}
|
72
73
|
|
73
74
|
already_unpacked = Dir.entries(LATEST_DIR)
|
74
|
-
|
75
|
-
|
75
|
+
already_unpacked = already_unpacked - %w[. ..]
|
76
|
+
(already_unpacked - latest_vnames).each {|vname|
|
77
|
+
puts "remove: #{vname}"
|
76
78
|
FileUtils.rmtree("#{LATEST_DIR}/#{vname}")
|
77
79
|
}
|
78
80
|
|
data/gem-codesearch.gemspec
CHANGED
@@ -1,13 +1,15 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'gem-codesearch'
|
3
|
-
s.version = '0.
|
4
|
-
s.date = '2015-01-
|
3
|
+
s.version = '0.2'
|
4
|
+
s.date = '2015-01-13'
|
5
5
|
s.author = 'Tanaka Akira'
|
6
6
|
s.email = 'akr@fsij.org'
|
7
7
|
s.required_ruby_version = '>= 2.2.0'
|
8
8
|
s.add_runtime_dependency 'rubygems-mirror', '~> 1.0', '>= 1.0.1'
|
9
9
|
s.add_runtime_dependency 'milkode', '~> 1.8', '>= 1.8.6'
|
10
10
|
s.add_runtime_dependency 'rake', '~> 10.4', '>= 10.4.2'
|
11
|
+
s.add_development_dependency 'builder', '~> 3.2', '>= 3.2.2'
|
12
|
+
s.add_development_dependency 'test-unit', '~> 3.0', '>= 3.0.8'
|
11
13
|
s.executables << 'gem-codesearch-setup'
|
12
14
|
s.files = %w[
|
13
15
|
.gitignore
|
@@ -17,6 +19,10 @@ Gem::Specification.new do |s|
|
|
17
19
|
bin/gem-codesearch-setup
|
18
20
|
gem-codesearch.gemspec
|
19
21
|
]
|
22
|
+
s.test_files = %w[
|
23
|
+
test/test_all.rb
|
24
|
+
test/test_bin.rb
|
25
|
+
]
|
20
26
|
s.homepage = 'https://github.com/akr/gem-codesearch'
|
21
27
|
s.license = 'MIT'
|
22
28
|
s.summary = 'Set up a full text code search engine for rubygems mirror'
|
data/test/test_all.rb
ADDED
@@ -0,0 +1,70 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'tmpdir'
|
3
|
+
require 'fileutils'
|
4
|
+
require 'rbconfig'
|
5
|
+
require 'socket'
|
6
|
+
require 'pty'
|
7
|
+
require 'io/console'
|
8
|
+
|
9
|
+
GEM_COMMAND = "#{RbConfig::CONFIG["bindir"]}/gem"
|
10
|
+
MILK_COMMAND = "#{RbConfig::CONFIG["bindir"]}/milk"
|
11
|
+
RAKE_COMMAND = "#{RbConfig::CONFIG["bindir"]}/rake"
|
12
|
+
|
13
|
+
topdir = File.dirname(File.dirname(File.realpath(__FILE__)))
|
14
|
+
RAKEFILE = topdir + "/Rakefile"
|
15
|
+
|
16
|
+
class TestGemCodesearch < Test::Unit::TestCase
|
17
|
+
def setup
|
18
|
+
@workdir = Dir.mktmpdir('gem-codesearch')
|
19
|
+
ENV['MILKODE_DEFAULT_DIR'] = "#{@workdir}/milkode"
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_milk_init
|
23
|
+
assert(!File.exist?("#{@workdir}/milkode"))
|
24
|
+
system(MILK_COMMAND, 'init', '--default', :out => IO::NULL)
|
25
|
+
assert($?.success?)
|
26
|
+
assert(File.exist?("#{@workdir}/milkode"))
|
27
|
+
end
|
28
|
+
|
29
|
+
def start_gem_server
|
30
|
+
# "gem server" serves gem files already installed.
|
31
|
+
gem_server_command = [GEM_COMMAND, 'server', '-b', '127.0.0.1', '-p', '0']
|
32
|
+
pid = nil
|
33
|
+
PTY.open {|m, s|
|
34
|
+
s.raw!
|
35
|
+
pid = spawn(*gem_server_command, :out => s, :err => IO::NULL)
|
36
|
+
line = m.gets
|
37
|
+
unless %r{Server started at (http:\S+)} =~ line
|
38
|
+
flunk "unexpected 'gem server' message: #{line.inspect}"
|
39
|
+
end
|
40
|
+
url = $1
|
41
|
+
yield [pid, url]
|
42
|
+
}
|
43
|
+
ensure
|
44
|
+
if pid
|
45
|
+
Process.kill :TERM, pid
|
46
|
+
Process.wait pid
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_gem_server
|
51
|
+
start_gem_server {|pid, url| }
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_all
|
55
|
+
start_gem_server {|pid, url|
|
56
|
+
ENV['GEM_CODESEARCH_URL'] = url
|
57
|
+
ENV['GEM_CODESEARCH_DIR'] = @workdir
|
58
|
+
system(MILK_COMMAND, 'init', '--default', :out => IO::NULL)
|
59
|
+
system(RAKE_COMMAND, '-f', RAKEFILE, 'all', [:out, :err] => IO::NULL)
|
60
|
+
system(RAKE_COMMAND, '-f', RAKEFILE, 'all', [:out, :err] => IO::NULL) # update exisiting index.
|
61
|
+
}
|
62
|
+
end
|
63
|
+
|
64
|
+
def teardown
|
65
|
+
FileUtils.rmtree @workdir
|
66
|
+
ENV['MILKODE_DEFAULT_DIR'] = nil
|
67
|
+
ENV['GEM_CODESEARCH_URL'] = nil
|
68
|
+
ENV['GEM_CODESEARCH_DIR'] = nil
|
69
|
+
end
|
70
|
+
end
|
data/test/test_bin.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'rbconfig'
|
3
|
+
|
4
|
+
RUBY_COMMAND = RbConfig.ruby
|
5
|
+
|
6
|
+
topdir = File.dirname(File.dirname(File.realpath(__FILE__)))
|
7
|
+
GEM_CODESEARCH_SETUP_COMMAND = topdir + "/bin/gem-codesearch-setup"
|
8
|
+
|
9
|
+
class TestGemCodesearch < Test::Unit::TestCase
|
10
|
+
def test_setup_help
|
11
|
+
command = [RUBY_COMMAND, GEM_CODESEARCH_SETUP_COMMAND, 'help']
|
12
|
+
message = IO.popen(command) {|io|
|
13
|
+
io.read
|
14
|
+
}
|
15
|
+
assert_match(/rake help/, message)
|
16
|
+
assert_match(/rake all/, message)
|
17
|
+
end
|
18
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gem-codesearch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.2'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tanaka Akira
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-01-
|
11
|
+
date: 2015-01-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rubygems-mirror
|
@@ -70,6 +70,46 @@ dependencies:
|
|
70
70
|
- - ">="
|
71
71
|
- !ruby/object:Gem::Version
|
72
72
|
version: 10.4.2
|
73
|
+
- !ruby/object:Gem::Dependency
|
74
|
+
name: builder
|
75
|
+
requirement: !ruby/object:Gem::Requirement
|
76
|
+
requirements:
|
77
|
+
- - "~>"
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '3.2'
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 3.2.2
|
83
|
+
type: :development
|
84
|
+
prerelease: false
|
85
|
+
version_requirements: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '3.2'
|
90
|
+
- - ">="
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: 3.2.2
|
93
|
+
- !ruby/object:Gem::Dependency
|
94
|
+
name: test-unit
|
95
|
+
requirement: !ruby/object:Gem::Requirement
|
96
|
+
requirements:
|
97
|
+
- - "~>"
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: '3.0'
|
100
|
+
- - ">="
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: 3.0.8
|
103
|
+
type: :development
|
104
|
+
prerelease: false
|
105
|
+
version_requirements: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - "~>"
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '3.0'
|
110
|
+
- - ">="
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: 3.0.8
|
73
113
|
description: |
|
74
114
|
gem-codesearch sets up a full text code search engine for rubygems mirror.
|
75
115
|
It use rubygems-mirror to mirror rubygems and
|
@@ -86,6 +126,8 @@ files:
|
|
86
126
|
- Rakefile
|
87
127
|
- bin/gem-codesearch-setup
|
88
128
|
- gem-codesearch.gemspec
|
129
|
+
- test/test_all.rb
|
130
|
+
- test/test_bin.rb
|
89
131
|
homepage: https://github.com/akr/gem-codesearch
|
90
132
|
licenses:
|
91
133
|
- MIT
|
@@ -110,4 +152,6 @@ rubygems_version: 2.4.5
|
|
110
152
|
signing_key:
|
111
153
|
specification_version: 4
|
112
154
|
summary: Set up a full text code search engine for rubygems mirror
|
113
|
-
test_files:
|
155
|
+
test_files:
|
156
|
+
- test/test_all.rb
|
157
|
+
- test/test_bin.rb
|