Module: Jarl

Defined in:
lib/jarl/cli.rb,
lib/jarl/base.rb,
lib/jarl/config.rb,
lib/jarl/docker.rb,
lib/jarl/version.rb,
lib/jarl/jarl_file.rb,
lib/jarl/application.rb

Defined Under Namespace

Modules: Docker Classes: Application, CLI, Config, JarlFile

Constant Summary collapse

DEFAULT_JARL_CONFIG_PATH =
'~/.jarl'
VERSION =
'0.9.0'

Class Method Summary collapse

Class Method Details

.application_instancesObject

Returns list of running application instances



47
48
49
# File 'lib/jarl/base.rb', line 47

def self.application_instances
  @application_instances ||= applications.map(&:instances).flatten
end

.applicationsObject

Returns list of registered applications



35
36
37
38
39
40
41
42
43
# File 'lib/jarl/base.rb', line 35

def self.applications
  @applications ||= jarl_files.map do |jf|
    begin
      jf.applications
    rescue StandardError => e
      abort "Failed to parse application definition in file '#{jf.path}': #{e}"
    end
  end.flatten
end

.configObject

Returns current config



22
23
24
# File 'lib/jarl/base.rb', line 22

def self.config
  @config
end

.find_application_instances_by(patterns) ⇒ Object

Returns list of running application instances matching the pattern(s)

Parameters:

  • patterns (nil)

    Match all application instances

  • patterns (String)

    Match application instances by single pattern

  • patterns (Arary<String>)

    Match application instances by all patterns



67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/jarl/base.rb', line 67

def self.find_application_instances_by(patterns)
  patterns = nil if patterns && patterns.empty?
  case patterns
  when nil
    application_instances
  when String
    application_instances.select { |i| i.full_name.index(patterns) }
  when Array
    application_instances.select { |i| patterns.any? { |p| i.full_name.index(p) } }
  else
    fail "Unexpected #{patterns.class} passed as argument to .find_application_instances_by"
  end
end

.find_applications_by(patterns) ⇒ Object

Returns list of applications matching the pattern

Parameters:

  • patterns (nil)

    Match all application instances

  • patterns (String)

    Match application instances by single pattern

  • patterns (Arary<String>)

    Match application instances by all patterns



57
58
59
# File 'lib/jarl/base.rb', line 57

def self.find_applications_by(patterns)
  find_application_instances_by(patterns).map(&:application).uniq
end

.jarl_filesObject

Returns list of found *.jarl files



29
30
31
# File 'lib/jarl/base.rb', line 29

def self.jarl_files
  @jarl_files ||= load_jarl_files
end

.load(options) ⇒ Object

Load config and application definitions



7
8
9
10
11
12
13
14
15
16
17
# File 'lib/jarl/base.rb', line 7

def self.load(options)
  load_config(options['config'] || DEFAULT_JARL_CONFIG_PATH)
  # puts "Jarl::CLI.options: #{options}"
  abort 'Docker is not installed' unless Docker.installed?
  if Jarl.jarl_files.empty?
    abort 'No *.jarl files found'
  elsif Jarl.applications.empty?
    abort 'No application definitions found'
  end
  true
end

.reload!Object



83
84
85
86
87
88
# File 'lib/jarl/base.rb', line 83

def self.reload!
  @jarl_files = nil
  @applications = nil
  @application_instances = nil
  Docker.reload!
end