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 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
@@ -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 || DEFAULT_DIR))
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
@@ -1,3 +1,3 @@
1
1
  module Desi
2
- VERSION = "0.2.9"
2
+ VERSION = "0.3.0"
3
3
  end
data/lib/desi.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require "desi/version"
2
2
 
3
3
  module Desi
4
+ require 'desi/configuration'
4
5
  require 'desi/downloader'
5
6
  require 'desi/http_client'
6
7
  require 'desi/local_install'
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.2.9
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-01-04 00:00:00.000000000 Z
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