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

#initializeConfiguration

Create a new singleton instance of Configuration.



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

def initialize
  @options = defaults
end

Instance Attribute Details

#optionsObject (readonly)

Configuration eigenclass



217
218
219
# File 'lib/vedeu/configuration/configuration.rb', line 217

def options
  @options
end

Class Method Details

.colour_modeFixnum

Returns the chosen colour mode.

Returns:



69
70
71
# File 'lib/vedeu/configuration/configuration.rb', line 69

def colour_mode
  instance.options[:colour_mode]
end

.configurationVedeu::Configuration

Returns the configuration singleton.



62
63
64
# File 'lib/vedeu/configuration/configuration.rb', line 62

def configuration
  instance
end

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

Configure Vedeu with sensible defaults. If the client application sets options, override the defaults with those, and if command-line arguments are provided at application invocation, override any options with the arguments provided.

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:

  • (InvalidSyntax)

    When the required block is not given.



55
56
57
# File 'lib/vedeu/configuration/configuration.rb', line 55

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)


77
78
79
# File 'lib/vedeu/configuration/configuration.rb', line 77

def debug?
  instance.options[:debug]
end

.default_system_keysHash

Vedeu’s default system keys. Use system_keys.

Returns:

  • (Hash)


193
194
195
196
197
198
199
200
# File 'lib/vedeu/configuration/configuration.rb', line 193

def default_system_keys
  {
    exit:        'q',
    focus_next:  :tab,
    focus_prev:  :shift_tab,
    mode_switch: :escape,
  }
end

.drb?Boolean Also known as: drb

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

Returns:

  • (Boolean)


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

def drb?
  instance.options[:drb]
end

.drb_heightFixnum

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

Returns:



107
108
109
# File 'lib/vedeu/configuration/configuration.rb', line 107

def drb_height
  instance.options[:drb_height]
end

.drb_hostString

Returns the hostname for the DRb server.

Returns:

  • (String)


93
94
95
# File 'lib/vedeu/configuration/configuration.rb', line 93

def drb_host
  instance.options[:drb_host]
end

.drb_portString

Returns the port for the DRb server.

Returns:

  • (String)


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

def drb_port
  instance.options[:drb_port]
end

.drb_widthFixnum

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

Returns:



114
115
116
# File 'lib/vedeu/configuration/configuration.rb', line 114

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)


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

def interactive?
  instance.options[:interactive]
end

.logString

Returns the path to the log file.

Returns:

  • (String)


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

def log
  instance.options[:log]
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)


140
141
142
# File 'lib/vedeu/configuration/configuration.rb', line 140

def once?
  instance.options[:once]
end

.options=(value) ⇒ void

This method returns an undefined value.

Parameters:

  • value (void)


204
205
206
# File 'lib/vedeu/configuration/configuration.rb', line 204

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

.reset!Hash

Reset the configuration to the default values.

Returns:

  • (Hash)


211
212
213
# File 'lib/vedeu/configuration/configuration.rb', line 211

def reset!
  instance.reset!
end

.stderrFile|IO

Returns the redefined setting for STDERR.

Returns:

  • (File|IO)


162
163
164
# File 'lib/vedeu/configuration/configuration.rb', line 162

def stderr
  instance.options[:stderr]
end

.stdinFile|IO

Returns the redefined setting for STDIN.

Returns:

  • (File|IO)


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

def stdin
  instance.options[:stdin]
end

.stdoutFile|IO

Returns the redefined setting for STDOUT.

Returns:

  • (File|IO)


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

def stdout
  instance.options[:stdout]
end

.system_keysHash

Returns the redefined system keys for vital Vedeu functions.

Returns:

  • (Hash)


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

def system_keys
  instance.options[:system_keys]
end

.terminal_modeSymbol

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

Returns:

  • (Symbol)


176
177
178
# File 'lib/vedeu/configuration/configuration.rb', line 176

def terminal_mode
  instance.options[:terminal_mode]
end

.trace?Boolean Also known as: trace

Returns whether tracing is enabled or disabled. Tracing is very noisy in the log file (logging method calls and events trigger). Default is false; meaning tracing is disabled.

Returns:

  • (Boolean)


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

def trace?
  instance.options[:trace]
end

Instance Method Details

#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)


233
234
235
236
237
238
239
240
241
# File 'lib/vedeu/configuration/configuration.rb', line 233

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?

  Configuration
end

#defaultsHash (private)

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

Returns:

  • (Hash)


256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
# File 'lib/vedeu/configuration/configuration.rb', line 256

def defaults
  {
    colour_mode:   detect_colour_mode,
    debug:         false,
    drb:           false,
    drb_host:      nil,
    drb_port:      nil,
    drb_height:    25,
    drb_width:     80,
    interactive:   true,
    log:           '/tmp/vedeu.log',
    once:          false,
    stdin:         nil,
    stdout:        nil,
    stderr:        nil,
    system_keys:   Configuration.default_system_keys,
    terminal_mode: :raw,
    trace:         false,
  }
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:



281
282
283
284
285
286
287
288
# File 'lib/vedeu/configuration/configuration.rb', line 281

def detect_colour_mode
  case ENV['TERM']
  when /-truecolor$/         then 16777216
  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)


246
247
248
# File 'lib/vedeu/configuration/configuration.rb', line 246

def reset!
  @options = defaults
end