desi 0.2.9 → 0.3.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/README.md +20 -1
- data/lib/desi/configuration.rb +87 -0
- data/lib/desi/local_install.rb +1 -2
- data/lib/desi/runner.rb +1 -1
- data/lib/desi/version.rb +1 -1
- data/lib/desi.rb +1 -0
- metadata +3 -8
data/README.md
CHANGED
@@ -55,7 +55,7 @@ will be spun up by (`desi start`)
|
|
55
55
|
|
56
56
|
```shell
|
57
57
|
$ desi list
|
58
|
-
Local ES installs (current one is tagged with '*'):
|
58
|
+
Local ES installs in /home/me/elasticsearch (current one is tagged with '*'):
|
59
59
|
* elasticsearch-0.19.9 (/home/me/elasticsearch/elasticsearch-0.19.9)
|
60
60
|
- elasticsearch-0.19.8 (/home/me/elasticsearch/elasticsearch-0.19.8)
|
61
61
|
```
|
@@ -135,6 +135,25 @@ will be spun up by (`desi start`)
|
|
135
135
|
```
|
136
136
|
|
137
137
|
|
138
|
+
## Change setting(s)
|
139
|
+
|
140
|
+
Right now, there's actually only one setting to change: the installation
|
141
|
+
directory. Desi will look for files `/etc/desi.yml` or `~/.desi.yml` and use
|
142
|
+
the *directory* entry specified. The default directory is `~/elasticsearch`.
|
143
|
+
|
144
|
+
* command-line
|
145
|
+
|
146
|
+
`echo -e "---\n directory: ~/foobar" > ~/.desi.yml` for instance
|
147
|
+
|
148
|
+
* library
|
149
|
+
|
150
|
+
```ruby
|
151
|
+
Desi.configure do |c|
|
152
|
+
c.directory = "~/local/foo"
|
153
|
+
end
|
154
|
+
```
|
155
|
+
|
156
|
+
|
138
157
|
|
139
158
|
## Installation
|
140
159
|
|
@@ -0,0 +1,87 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require "singleton"
|
4
|
+
require "yaml"
|
5
|
+
require "pathname"
|
6
|
+
|
7
|
+
module Desi
|
8
|
+
|
9
|
+
class Configuration
|
10
|
+
include Singleton
|
11
|
+
|
12
|
+
attr_reader :directory
|
13
|
+
|
14
|
+
def directory=(dir)
|
15
|
+
@directory = Pathname(File.expand_path(dir))
|
16
|
+
end
|
17
|
+
|
18
|
+
def load_configuration!
|
19
|
+
config = config_files_data
|
20
|
+
config = defaults if config.empty?
|
21
|
+
|
22
|
+
public_methods(false).select {|m| m.to_s =~ /=$/ }.each do |setter|
|
23
|
+
attr_name = setter.to_s.tr('=', '')
|
24
|
+
|
25
|
+
if config.has_key?(attr_name)
|
26
|
+
send(setter, config[attr_name])
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
self
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
def config_files
|
36
|
+
%w[/etc/desi.yml ~/.desi.yml]
|
37
|
+
end
|
38
|
+
|
39
|
+
def config_files_data
|
40
|
+
config_files.each_with_object({}) do |filename, hash|
|
41
|
+
hash.merge! config_file_data(filename)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def config_file_data(filename)
|
46
|
+
file = File.expand_path(filename)
|
47
|
+
return {} unless File.exists?(file)
|
48
|
+
|
49
|
+
data = YAML.load_file(file)
|
50
|
+
|
51
|
+
if data.is_a? Hash
|
52
|
+
data
|
53
|
+
else
|
54
|
+
warn "Configuration file #{filename} contains malformed data and will be ignored"
|
55
|
+
{}
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def defaults
|
60
|
+
{'directory' => "~/elasticsearch"}
|
61
|
+
end
|
62
|
+
|
63
|
+
instance.load_configuration!
|
64
|
+
end # Configuration
|
65
|
+
|
66
|
+
module_function
|
67
|
+
|
68
|
+
|
69
|
+
# Change configuration settings
|
70
|
+
#
|
71
|
+
# @example
|
72
|
+
#
|
73
|
+
# Desi.configure do |c|
|
74
|
+
# c.directory = "~/es"
|
75
|
+
# end
|
76
|
+
#
|
77
|
+
# @return [Desi::Configuration] the configuration
|
78
|
+
def configure(&block)
|
79
|
+
yield configuration
|
80
|
+
configuration
|
81
|
+
end
|
82
|
+
|
83
|
+
def configuration
|
84
|
+
Configuration.instance
|
85
|
+
end
|
86
|
+
|
87
|
+
end
|
data/lib/desi/local_install.rb
CHANGED
@@ -4,7 +4,6 @@ require "pathname"
|
|
4
4
|
|
5
5
|
module Desi
|
6
6
|
class LocalInstall
|
7
|
-
DEFAULT_DIR = '~/elasticsearch'
|
8
7
|
|
9
8
|
class Release
|
10
9
|
def self.all_in(workdir)
|
@@ -53,7 +52,7 @@ module Desi
|
|
53
52
|
|
54
53
|
def initialize(workdir = nil, opts = {})
|
55
54
|
@verbose = opts[:verbose]
|
56
|
-
@workdir = Pathname(File.expand_path(workdir ||
|
55
|
+
@workdir = Pathname(File.expand_path(workdir || Desi.configuration.directory))
|
57
56
|
create!
|
58
57
|
end
|
59
58
|
|
data/lib/desi/runner.rb
CHANGED
@@ -13,7 +13,7 @@ module Desi
|
|
13
13
|
desc "List locally installed Elastic Search releases"
|
14
14
|
verbosity_option
|
15
15
|
def list(options = {})
|
16
|
-
puts "Local ES installs (current one is tagged with '*'):" unless quiet?(options)
|
16
|
+
puts "Local ES installs in #{Desi.configuration.directory} (current one is tagged with '*'):" unless quiet?(options)
|
17
17
|
Desi::LocalInstall.new.releases.sort.reverse.each do |v|
|
18
18
|
puts v
|
19
19
|
end
|
data/lib/desi/version.rb
CHANGED
data/lib/desi.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: desi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-02-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: boson
|
@@ -180,6 +180,7 @@ files:
|
|
180
180
|
- desi.gemspec
|
181
181
|
- lib/desi.rb
|
182
182
|
- lib/desi/cocaine.rb
|
183
|
+
- lib/desi/configuration.rb
|
183
184
|
- lib/desi/downloader.rb
|
184
185
|
- lib/desi/http_client.rb
|
185
186
|
- lib/desi/index_manager.rb
|
@@ -205,18 +206,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
205
206
|
- - ! '>='
|
206
207
|
- !ruby/object:Gem::Version
|
207
208
|
version: '0'
|
208
|
-
segments:
|
209
|
-
- 0
|
210
|
-
hash: -3536869085604684472
|
211
209
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
212
210
|
none: false
|
213
211
|
requirements:
|
214
212
|
- - ! '>='
|
215
213
|
- !ruby/object:Gem::Version
|
216
214
|
version: '0'
|
217
|
-
segments:
|
218
|
-
- 0
|
219
|
-
hash: -3536869085604684472
|
220
215
|
requirements: []
|
221
216
|
rubyforge_project:
|
222
217
|
rubygems_version: 1.8.23
|