Class: Vedeu::Configuration

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/vedeu/configuration/configuration.rb

Overview

Allows the customisation of Vedeu’s behaviour through the configuration API or command-line arguments.

Provides access to Vedeu’s configuration, which was set with sensible defaults (influenced by environment variables), overridden by client application settings (via the configuration API), or any command-line arguments provided.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeVedeu::Configuration

Create a new singleton instance of Vedeu::Configuration.



249
250
251
# File 'lib/vedeu/configuration/configuration.rb', line 249

def initialize
  @options = defaults
end

Instance Attribute Details

#optionsHash (readonly)

Returns:

  • (Hash)


244
245
246
# File 'lib/vedeu/configuration/configuration.rb', line 244

def options
  @options
end

Class Method Details

.base_pathString

Returns the base_path value.

Returns:

  • (String)


41
42
43
# File 'lib/vedeu/configuration/configuration.rb', line 41

def base_path
  instance.options[:base_path]
end

.colour_modeFixnum

Returns the chosen colour mode.

Returns:

  • (Fixnum)


91
92
93
# File 'lib/vedeu/configuration/configuration.rb', line 91

def colour_mode
  instance.options[:colour_mode]
end

.compressionBoolean Also known as: compression?

Returns the compression value.

Returns:

  • (Boolean)


48
49
50
# File 'lib/vedeu/configuration/configuration.rb', line 48

def compression
  instance.options[:compression]
end

.configurationVedeu::Configuration

Returns the configuration singleton. Append configuration methods to access the configuration variable.



84
85
86
# File 'lib/vedeu/configuration/configuration.rb', line 84

def configuration
  instance
end

.configure(args = [], opts = {}, &block) ⇒ Hash

Provides the mechanism to configure Vedeu. If the client application sets options, override the defaults with those, and when command-line arguments are provided at application invocation, override any options with the arguments provided.

Examples:

Vedeu.configure do
  # ...
end

Parameters:

  • args (Array) (defaults to: [])
  • opts (Hash) (defaults to: {})
  • block (Proc)

Options Hash (opts):

  • stdin (File|IO)
  • stdout (File|IO)
  • stderr (File|IO)

Returns:

  • (Hash)

Raises:



72
73
74
# File 'lib/vedeu/configuration/configuration.rb', line 72

def configure(args = [], opts = {}, &block)
  instance.configure(args, opts, &block)
end

.debug?Boolean Also known as: debug

Returns whether debugging is enabled or disabled. Default is false; meaning nothing apart from warnings are written to the log file.

Returns:

  • (Boolean)


100
101
102
# File 'lib/vedeu/configuration/configuration.rb', line 100

def debug?
  instance.options[:debug]
end

.drb?Boolean Also known as: drb

Returns whether the DRb server is enabled or disabled. Default is false.

Returns:

  • (Boolean)


109
110
111
# File 'lib/vedeu/configuration/configuration.rb', line 109

def drb?
  instance.options[:drb]
end

.drb_heightFixnum

Returns the height for the fake terminal in the DRb server.

Returns:

  • (Fixnum)


131
132
133
# File 'lib/vedeu/configuration/configuration.rb', line 131

def drb_height
  instance.options[:drb_height]
end

.drb_hostString

Returns the hostname for the DRb server.

Returns:

  • (String)


117
118
119
# File 'lib/vedeu/configuration/configuration.rb', line 117

def drb_host
  instance.options[:drb_host]
end

.drb_portString

Returns the port for the DRb server.

Returns:

  • (String)


124
125
126
# File 'lib/vedeu/configuration/configuration.rb', line 124

def drb_port
  instance.options[:drb_port]
end

.drb_widthFixnum

Returns the width for the fake terminal in the DRb server.

Returns:

  • (Fixnum)


138
139
140
# File 'lib/vedeu/configuration/configuration.rb', line 138

def drb_width
  instance.options[:drb_width]
end

.interactive?Boolean Also known as: interactive

Returns whether the application is interactive (required user input) or standalone (will run until terminates of natural causes.) Default is true; meaning the application will require user input.

Returns:

  • (Boolean)


148
149
150
# File 'lib/vedeu/configuration/configuration.rb', line 148

def interactive?
  instance.options[:interactive]
end

.logString

Returns the path to the log file.

Returns:

  • (String)


156
157
158
# File 'lib/vedeu/configuration/configuration.rb', line 156

def log
  instance.options[:log]
end

.log?Boolean

Returns a boolean indicating whether the log has been configured.

Returns:

  • (Boolean)


164
165
166
# File 'lib/vedeu/configuration/configuration.rb', line 164

def log?
  log != nil
end

.log_onlyArray<Symbol>

Returns:

  • (Array<Symbol>)


169
170
171
# File 'lib/vedeu/configuration/configuration.rb', line 169

def log_only
  instance.options[:log_only] || []
end

.once?Boolean Also known as: once

Returns whether the application will run through its main loop once or not. Default is false; meaning the application will loop forever or until terminated by the user.

Returns:

  • (Boolean)


178
179
180
# File 'lib/vedeu/configuration/configuration.rb', line 178

def once?
  instance.options[:once]
end

.options=(value) ⇒ void

This method returns an undefined value.

Parameters:

  • value (void)


229
230
231
# File 'lib/vedeu/configuration/configuration.rb', line 229

def options=(value)
  instance.options = value
end

.renderersArray<Class>

Returns the renderers which should receive output.

Returns:

  • (Array<Class>)


186
187
188
# File 'lib/vedeu/configuration/configuration.rb', line 186

def renderers
  instance.options[:renderers]
end

.reset!Hash

Reset the configuration to the default values.

Returns:

  • (Hash)


236
237
238
# File 'lib/vedeu/configuration/configuration.rb', line 236

def reset!
  instance.reset!
end

.rootClass

Returns the root of the client application. Vedeu will execute this controller first.

Returns:

  • (Class)


194
195
196
# File 'lib/vedeu/configuration/configuration.rb', line 194

def root
  instance.options[:root]
end

.stderrFile|IO

Returns the redefined setting for STDERR.

Returns:

  • (File|IO)


215
216
217
# File 'lib/vedeu/configuration/configuration.rb', line 215

def stderr
  instance.options[:stderr]
end

.stdinFile|IO

Returns the redefined setting for STDIN.

Returns:

  • (File|IO)


201
202
203
# File 'lib/vedeu/configuration/configuration.rb', line 201

def stdin
  instance.options[:stdin]
end

.stdoutFile|IO

Returns the redefined setting for STDOUT.

Returns:

  • (File|IO)


208
209
210
# File 'lib/vedeu/configuration/configuration.rb', line 208

def stdout
  instance.options[:stdout]
end

.terminal_modeSymbol

Returns the terminal mode for the application. Default is ‘:raw`.

Returns:

  • (Symbol)


223
224
225
# File 'lib/vedeu/configuration/configuration.rb', line 223

def terminal_mode
  instance.options[:terminal_mode]
end

Instance Method Details

#base_pathString (private)

Returns:

  • (String)


324
325
326
# File 'lib/vedeu/configuration/configuration.rb', line 324

def base_path
  File.expand_path('.')
end

#configure(args = [], opts = {}, &block) ⇒ Hash

Set up default configuration and then allow the client application to modify it via the configuration API. After this, process any command line arguments as potential configuration and apply that.

Parameters:

  • args (Array) (defaults to: [])
  • block (Proc)

Returns:

  • (Hash)


261
262
263
264
265
266
267
268
269
270
# File 'lib/vedeu/configuration/configuration.rb', line 261

def configure(args = [], opts = {}, &block)
  @options.merge!(opts)

  @options.merge!(Config::API.configure(&block)) if block_given?
  @options.merge!(Config::CLI.configure(args)) if args.any?

  Vedeu::Renderers.renderer(*@options[:renderers])

  Vedeu::Configuration
end

#defaultsHash<Symbol => void> (private)

The Vedeu default options, which of course are influenced by environment variables also.

Returns:

  • (Hash<Symbol => void>)


285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
# File 'lib/vedeu/configuration/configuration.rb', line 285

def defaults
  {
    base_path:     base_path,
    colour_mode:   detect_colour_mode,
    compression:   true,
    debug:         false,
    drb:           false,
    drb_host:      nil,
    drb_port:      nil,
    drb_height:    25,
    drb_width:     80,
    interactive:   true,
    log:           nil,
    log_only:      [],
    once:          false,
    renderers:     [Vedeu::Renderers::Terminal.new],
    root:          nil,
    stdin:         nil,
    stdout:        nil,
    stderr:        nil,
    terminal_mode: :raw,
  }
end

#detect_colour_modeFixnum (private)

Attempt to determine the terminal colour mode via $TERM environment variable, or be optimistic and settle for 256 colours.

Returns:

  • (Fixnum)


314
315
316
317
318
319
320
321
# File 'lib/vedeu/configuration/configuration.rb', line 314

def detect_colour_mode
  case ENV['TERM']
  when /-truecolor$/         then 16_777_216
  when /-256color$/, 'xterm' then 256
  when /-color$/, 'rxvt'     then 16
  else 256
  end
end

#reset!Hash

Reset the configuration to the default values.

Returns:

  • (Hash)


275
276
277
# File 'lib/vedeu/configuration/configuration.rb', line 275

def reset!
  @options = defaults
end