websolr-rails 2.1.3 → 2.2.0

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/VERSION CHANGED
@@ -1 +1 @@
1
- 2.1.3
1
+ 2.2.0
data/bin/websolr ADDED
@@ -0,0 +1,40 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + "/../lib/plain_option_parser"
3
+ require "rubygems"
4
+ require "restclient"
5
+
6
+ HOST = "www.websolr.com"
7
+
8
+ PWD = File.expand_path(".")
9
+ controller = PlainOptionParser.new(ARGV) do
10
+ def die(s)
11
+ STDERR.puts(s.strip)
12
+ exit(1)
13
+ end
14
+
15
+ def init_heroku
16
+ puts "Getting username and password from Heroku config ... "
17
+ cfg = `heroku config`
18
+ @user = cfg[/WEBSOLR_USER\s*=>\s*(\S+)/, 1]
19
+ @pass = cfg[/WEBSOLR_PWD\s*=>\s*(\S+)/, 1]
20
+ unless @user && @pass
21
+ die <<-STR
22
+ Cannot retrieve username and password. Are you inside a Heroku app folder
23
+ with the Websolr addon enabled?
24
+ STR
25
+ end
26
+ @url = "http://#{@user}:#{@pass}@#{HOST}/users/default_slice_client"
27
+ end
28
+
29
+ desc "shows your heroku-created index"
30
+ cmd "heroku show client" do
31
+ init_heroku
32
+ puts RestClient.get(@url)
33
+ end
34
+
35
+ desc "sets the client to use"
36
+ cmd "heroku set client", "[sunspot|acts_as_solr]" do |client|
37
+ init_heroku
38
+ puts RestClient.post(@url, :client => client)
39
+ end
40
+ end.start
@@ -0,0 +1,80 @@
1
+ class PlainOptionParser
2
+ def initialize(args, &block)
3
+ @commands = []
4
+ desc "Prints help text for your command"
5
+ cmd "help" do
6
+ viable, remaining = commands_for_args(args[1, args.length])
7
+ if viable.length == 0
8
+ no_match
9
+ else
10
+ pretty_print viable
11
+ end
12
+ end
13
+ @args = args
14
+ instance_eval(&block)
15
+ end
16
+
17
+ def start
18
+ viable, remaining = commands_for_args(@args)
19
+ if viable.length == 1
20
+ viable[0].last.call(*remaining)
21
+ exit 0
22
+ elsif viable.length == 0
23
+ no_match
24
+ else
25
+ usage
26
+ pretty_print viable
27
+ end
28
+ end
29
+
30
+ def desc(string)
31
+ @desc = string
32
+ end
33
+
34
+ def cmd(name, additional = "", &block)
35
+ @commands << [name.split(/\s+/), @desc, additional, block]
36
+ @desc = nil
37
+ end
38
+
39
+ def pretty_print(cmds)
40
+ mapped = cmds.map do |cmd|
41
+ name, desc, additional, block = cmd
42
+ [" #{File.basename($0)} " + name.join(" ") + " #{additional}", " -- #{desc}"]
43
+ end
44
+ max = mapped.inject(0) do |memo, entry|
45
+ memo > entry.first.length ? memo : entry.first.length
46
+ end
47
+ mapped.each do |entry|
48
+ puts entry.first + (" " * (max - entry.first.length)) + entry.last
49
+ end
50
+ end
51
+
52
+ private
53
+
54
+ def usage
55
+ puts "Usage: #{$0} COMMANDS"
56
+ puts
57
+ puts "COMMANDS: "
58
+ end
59
+
60
+ def commands_for_args(args)
61
+ viable = @commands.dup
62
+ args.each_with_index do |arg, i|
63
+ @commands.each do |cmd|
64
+ name, desc, additional, block = cmd
65
+ viable.delete(cmd) if name[i] != arg
66
+ end
67
+ if viable.length == 1
68
+ return [viable, args[viable[0][0].length, @args.length]]
69
+ end
70
+ end
71
+ return [viable, []]
72
+ end
73
+
74
+ def no_match
75
+ puts "No matching command found."
76
+ puts
77
+ usage
78
+ pretty_print @commands
79
+ end
80
+ end
@@ -5,13 +5,15 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{websolr-rails}
8
- s.version = "2.1.3"
8
+ s.version = "2.2.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Kyle Maxwell"]
12
- s.date = %q{2009-10-17}
12
+ s.date = %q{2009-10-20}
13
+ s.default_executable = %q{websolr}
13
14
  s.description = %q{Makes Sunspot and acts_as_solr play with WebSolr}
14
15
  s.email = %q{kyle@kylemaxwell.com}
16
+ s.executables = ["websolr"]
15
17
  s.extra_rdoc_files = [
16
18
  "LICENSE",
17
19
  "README.rdoc"
@@ -23,6 +25,8 @@ Gem::Specification.new do |s|
23
25
  "README.rdoc",
24
26
  "Rakefile",
25
27
  "VERSION",
28
+ "bin/websolr",
29
+ "lib/plain_option_parser.rb",
26
30
  "lib/websolr-rails.rb",
27
31
  "lib/websolr.rb",
28
32
  "websolr-rails.gemspec"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: websolr-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.3
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kyle Maxwell
@@ -9,14 +9,14 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-10-17 00:00:00 -07:00
13
- default_executable:
12
+ date: 2009-10-20 00:00:00 -07:00
13
+ default_executable: websolr
14
14
  dependencies: []
15
15
 
16
16
  description: Makes Sunspot and acts_as_solr play with WebSolr
17
17
  email: kyle@kylemaxwell.com
18
- executables: []
19
-
18
+ executables:
19
+ - websolr
20
20
  extensions: []
21
21
 
22
22
  extra_rdoc_files:
@@ -29,6 +29,8 @@ files:
29
29
  - README.rdoc
30
30
  - Rakefile
31
31
  - VERSION
32
+ - bin/websolr
33
+ - lib/plain_option_parser.rb
32
34
  - lib/websolr-rails.rb
33
35
  - lib/websolr.rb
34
36
  - websolr-rails.gemspec