Class: Lexicon::Cli::Command::ProductionCommand

Inherits:
ContainerAwareCommand show all
Includes:
Lexicon::Common::Mixin::SchemaNamer
Defined in:
lib/lexicon/cli/command/production_command.rb

Instance Method Summary collapse

Methods inherited from ContainerAwareCommand

#initialize

Constructor Details

This class inherits a constructor from Lexicon::Cli::Command::ContainerAwareCommand

Instance Method Details

#configObject



26
27
28
29
30
31
# File 'lib/lexicon/cli/command/production_command.rb', line 26

def config
  puts "    Version dir: \#{container.parameter('lexicon.common.package_dir')}\n    Prod database URL: \#{container.parameter('lexicon.common.production.database.url')}\n  TEXT\nend\n"

#delete(version) ⇒ Object



112
113
114
115
116
117
118
119
120
121
122
123
# File 'lib/lexicon/cli/command/production_command.rb', line 112

def delete(version)
  semver = Semantic::Version.new(version)

  if loaded_versions.include?(semver)
    production_database
      .query("DROP SCHEMA \"#{version_to_schema(semver)}\" CASCADE")

    puts '[  OK ] '.green + "The version #{semver} has been deleted."
  else
    puts '[ NOK ] '.red + "The version #{semver.to_s.yellow} is not loaded or is enabled."
  end
end

#disableObject



79
80
81
82
83
84
85
86
87
# File 'lib/lexicon/cli/command/production_command.rb', line 79

def disable
  if enabled? && !(version = enabled_version).nil?
    puts "Disabling version #{version.to_s.yellow}"
    do_disable
    puts '[  OK ] Done'.green
  else
    puts 'Lexicon is not enabled'.red
  end
end

#enable(version = nil) ⇒ Object



91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# File 'lib/lexicon/cli/command/production_command.rb', line 91

def enable(version = nil)
  if enabled?
    puts 'Disabling current version'
    do_disable
  end

  semver = if version.nil?
             loaded_versions.max
           else
             Semantic::Version.new(version)
           end

  puts "Enabling version #{semver.to_s.yellow}"

  do_enable(semver)

  puts '[  OK ] Done'.green
end

#load(pkg_name) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/lexicon/cli/command/production_command.rb', line 38

def load(pkg_name)
  # @type [Production::DatasourceLoader] datasource_loader
  datasource_loader = get(Lexicon::Common::Production::DatasourceLoader)
  # @type [Package::PackageIntegrityValidator] integrity_validator
  integrity_validator = get(Lexicon::Common::Package::PackageIntegrityValidator)
  # @type [Package::DirectoryPackageLoader] package_loader
  package_loader = get(Lexicon::Common::Package::DirectoryPackageLoader)

  validate = options.fetch(:validate)
  names = options.fetch(:datasources, [])
  without = options.fetch(:without, [])
  package = package_loader.load_package(pkg_name)

  if package.nil?
    puts '[ NOK ] Did not find any package to load'.red
  elsif package.nil?
    puts "[ NOK ] No Package found for version #{version}".red
  elsif !validate || integrity_validator.valid?(package)
    datasource_loader.load_package(package, only: (names.empty? ? nil : names), without: without)
  else
    puts "[ NOK ] Lexicon package #{package.version} is corrupted".red
  end
end

#loadableObject



13
14
15
16
17
18
19
20
21
22
# File 'lib/lexicon/cli/command/production_command.rb', line 13

def loadable
  available_packages.each do |package|
    puts package.version.to_s.green
    package.file_sets
           .sort_by(&:name)
           .each do |fs|
      puts ' -> ' + fs.name.send(fs.data_path.nil? ? :yellow : :green)
    end
  end
end

#versionsObject



64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/lexicon/cli/command/production_command.rb', line 64

def versions
  puts "Lexicon is #{enabled? ? 'ENABLED'.green + " (#{enabled_version.to_s.yellow})" : 'DISABLED'.red}"

  available = loaded_versions
  if available.empty?
    puts 'No other versions are loaded'
  else
    puts 'Available loaded versions are:'
    loaded_versions
      .each { |e| puts " - #{e}" }
  end
end