summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Rakefile4
-rw-r--r--lib/leap_cli.rb6
-rw-r--r--lib/leap_cli/bootstrap.rb15
-rw-r--r--lib/leap_cli/commands/common.rb61
-rw-r--r--lib/leap_cli/commands/new.rb2
-rw-r--r--lib/leap_cli/config/environment.rb4
-rw-r--r--lib/leap_cli/config/manager.rb5
-rw-r--r--lib/leap_cli/leapfile.rb12
-rw-r--r--lib/leap_cli/log.rb81
-rw-r--r--lib/leap_cli/path.rb8
-rw-r--r--lib/leap_cli/remote/leap_plugin.rb2
-rw-r--r--lib/leap_cli/ssh_key.rb4
-rw-r--r--lib/leap_cli/util.rb20
-rw-r--r--lib/leap_cli/util/remote_command.rb6
-rw-r--r--test/unit/command_line_test.rb2
-rw-r--r--test/unit/config_object_list_test.rb1
16 files changed, 78 insertions, 155 deletions
diff --git a/Rakefile b/Rakefile
index a51f813..72ae223 100644
--- a/Rakefile
+++ b/Rakefile
@@ -37,7 +37,7 @@ end
desc "Build #{$spec.name}-#{$spec.version}.gem into the pkg directory"
task 'build' do
FileUtils.mkdir_p(File.join($base_dir, 'pkg'))
- FileUtils.rm($gem_path) if File.exists?($gem_path)
+ FileUtils.rm($gem_path) if File.exist?($gem_path)
run "gem build -V '#{$spec_path}'"
file_name = File.basename(built_gem_path)
FileUtils.mv(built_gem_path, 'pkg')
@@ -46,7 +46,7 @@ end
desc "Install #{$spec.name}-#{$spec.version}.gem into either system-wide or user gems"
task 'install' do
- if !File.exists?($gem_path)
+ if !File.exist?($gem_path)
puts("Could not file #{$gem_path}. Try running 'rake build'")
else
options = '--verbose --conservative --no-rdoc --no-ri'
diff --git a/lib/leap_cli.rb b/lib/leap_cli.rb
index 0563327..fc8ab2b 100644
--- a/lib/leap_cli.rb
+++ b/lib/leap_cli.rb
@@ -55,7 +55,7 @@ require 'leap_cli/markdown_document_listener'
# allow everyone easy access to log() command.
#
module LeapCli
- Util.send(:extend, LeapCli::Log)
- Config::Manager.send(:include, LeapCli::Log)
- extend LeapCli::Log
+ Util.send(:extend, LeapCli::LogCommand)
+ Config::Manager.send(:include, LeapCli::LogCommand)
+ extend LeapCli::LogCommand
end
diff --git a/lib/leap_cli/bootstrap.rb b/lib/leap_cli/bootstrap.rb
index b7bc8e9..a6b1759 100644
--- a/lib/leap_cli/bootstrap.rb
+++ b/lib/leap_cli/bootstrap.rb
@@ -5,7 +5,6 @@
module LeapCli
module Bootstrap
- extend LeapCli::Log
extend self
#
@@ -36,7 +35,7 @@ module LeapCli
# called from leap executable.
#
def load_libraries(app)
- if LeapCli.log_level >= 2
+ if LeapCli.logger.log_level >= 2
log_version
end
load_commands(app)
@@ -72,14 +71,14 @@ module LeapCli
options = parse_logging_options(argv)
verbose = (options[:verbose] || 1).to_i
if verbose
- LeapCli.set_log_level(verbose)
+ LeapCli.logger.log_level = verbose
end
if options[:log]
- LeapCli.log_file = options[:log]
- LeapCli::Util.log_raw(:log) { $0 + ' ' + argv.join(' ')}
+ LeapCli.logger.log_file = options[:log]
+ LeapCli.logger.log_raw(:log) { $0 + ' ' + argv.join(' ')}
end
unless options[:color].nil?
- LeapCli.log_in_color = options[:color]
+ LeapCli.logger.log_in_color = options[:color]
end
end
@@ -97,8 +96,8 @@ module LeapCli
if !Path.platform || !File.directory?(Path.platform)
bail! { log :missing, "platform directory '#{Path.platform}'" }
end
- if LeapCli.log_file.nil? && LeapCli.leapfile.log
- LeapCli.log_file = LeapCli.leapfile.log
+ if LeapCli.logger.log_file.nil? && LeapCli.leapfile.log
+ LeapCli.logger.log_file = LeapCli.leapfile.log
end
elsif !leapfile_optional?(argv)
puts
diff --git a/lib/leap_cli/commands/common.rb b/lib/leap_cli/commands/common.rb
deleted file mode 100644
index 7bf49db..0000000
--- a/lib/leap_cli/commands/common.rb
+++ /dev/null
@@ -1,61 +0,0 @@
-#
-# Some common helpers available to all LeapCli::Commands
-#
-# This also includes utility methods, and makes all instance
-# methods available as class methods.
-#
-
-module LeapCli
- module Commands
-
- extend self
- extend LeapCli::Log
- extend LeapCli::Util
- extend LeapCli::Util::RemoteCommand
-
- protected
-
- def path(name)
- Path.named_path(name)
- end
-
- #
- # keeps prompting the user for a numbered choice, until they pick a good one or bail out.
- #
- # block is yielded and is responsible for rendering the choices.
- #
- def numbered_choice_menu(msg, items, &block)
- while true
- say("\n" + msg + ':')
- items.each_with_index &block
- say("q. quit")
- index = ask("number 1-#{items.length}> ")
- if index.empty?
- next
- elsif index =~ /q/
- bail!
- else
- i = index.to_i - 1
- if i < 0 || i >= items.length
- bail!
- else
- return i
- end
- end
- end
- end
-
- def parse_node_list(nodes)
- if nodes.is_a? Config::Object
- Config::ObjectList.new(nodes)
- elsif nodes.is_a? Config::ObjectList
- nodes
- elsif nodes.is_a? String
- manager.filter!(nodes)
- else
- bail! "argument error"
- end
- end
-
- end
-end \ No newline at end of file
diff --git a/lib/leap_cli/commands/new.rb b/lib/leap_cli/commands/new.rb
index 838b80e..5c9fd74 100644
--- a/lib/leap_cli/commands/new.rb
+++ b/lib/leap_cli/commands/new.rb
@@ -54,7 +54,7 @@ module LeapCli; module Commands
unless directory && directory.any?
help! "Directory name is required."
end
- unless File.exists?(directory)
+ unless File.exist?(directory)
if global[:yes] || agree("Create directory #{directory}? ")
ensure_dir directory
else
diff --git a/lib/leap_cli/config/environment.rb b/lib/leap_cli/config/environment.rb
index df4b56c..398fd02 100644
--- a/lib/leap_cli/config/environment.rb
+++ b/lib/leap_cli/config/environment.rb
@@ -106,7 +106,7 @@ module LeapCli; module Config
#
def template(template)
path = Path.named_path([:template_config, template], Path.provider_base)
- if File.exists?(path)
+ if File.exist?(path)
return load_json(path, Config::Object)
else
return nil
@@ -133,7 +133,7 @@ module LeapCli; module Config
end
def load_json(filename, object_class, options={})
- if !File.exists?(filename)
+ if !File.exist?(filename)
return object_class.new(self)
end
diff --git a/lib/leap_cli/config/manager.rb b/lib/leap_cli/config/manager.rb
index 5af046f..80ccbad 100644
--- a/lib/leap_cli/config/manager.rb
+++ b/lib/leap_cli/config/manager.rb
@@ -258,7 +258,7 @@ module LeapCli
# yields each node, in sorted order
#
def each_node(&block)
- env.nodes.each_node &block
+ env.nodes.each_node(&block)
end
def reload_node!(node)
@@ -294,7 +294,6 @@ module LeapCli
#
def apply_inheritance(node, throw_exceptions=false)
new_node = Config::Node.new(nil)
- name = node.name
node_env = guess_node_env(node)
new_node.set_environment(node_env, new_node)
@@ -409,7 +408,7 @@ module LeapCli
[['services', :service_config], ['tags', :tag_config]].each do |attribute, path_sym|
node[attribute].each do |attr_value|
path = Path.named_path([path_sym, "#{attr_value}.rb"], provider_dir).sub(/\.json$/,'')
- if File.exists?(path)
+ if File.exist?(path)
files << path
end
end
diff --git a/lib/leap_cli/leapfile.rb b/lib/leap_cli/leapfile.rb
index 9164d0a..ac40237 100644
--- a/lib/leap_cli/leapfile.rb
+++ b/lib/leap_cli/leapfile.rb
@@ -62,7 +62,7 @@ module LeapCli
# load the platform
#
platform_file = "#{@platform_directory_path}/platform.rb"
- unless File.exists?(platform_file)
+ unless File.exist?(platform_file)
Util.bail! "ERROR: The file `#{platform_file}` does not exist. Please check the value of `@platform_directory_path` in `Leapfile` or `~/.leaprc`."
end
require "#{@platform_directory_path}/platform.rb"
@@ -73,12 +73,6 @@ module LeapCli
"You need either leap command #{Leap::Platform.compatible_cli.first} to #{Leap::Platform.compatible_cli.last} or " +
"platform version #{LeapCli::COMPATIBLE_PLATFORM_VERSION.first} to #{LeapCli::COMPATIBLE_PLATFORM_VERSION.last}"
end
- unless @allow_production_deploy.nil?
- Util::log 0, :warning, "in Leapfile: @allow_production_deploy is no longer supported."
- end
- unless @platform_branch.nil?
- Util::log 0, :warning, "in Leapfile: @platform_branch is no longer supported."
- end
@valid = true
return @valid
end
@@ -105,7 +99,7 @@ module LeapCli
def edit_leaprc(property, value=nil)
file_path = leaprc_path
lines = []
- if File.exists?(file_path)
+ if File.exist?(file_path)
regexp = /self\.#{Regexp.escape(property)} = .*? if @provider_directory_path == '#{Regexp.escape(@provider_directory_path)}'/
File.readlines(file_path).each do |line|
unless line =~ regexp
@@ -128,7 +122,7 @@ module LeapCli
end
def read_settings(file)
- if File.exists? file
+ if File.exist? file
Util::log 2, :read, file
instance_eval(File.read(file), file)
validate(file)
diff --git a/lib/leap_cli/log.rb b/lib/leap_cli/log.rb
index 6589ad4..0497275 100644
--- a/lib/leap_cli/log.rb
+++ b/lib/leap_cli/log.rb
@@ -3,56 +3,50 @@ require 'paint'
##
## LOGGING
##
-## Ugh. This class does not work well with multiple threads!
-##
module LeapCli
- extend self
-
- attr_accessor :log_in_color
-
- # logging options
- def log_level
- @log_level ||= 1
- end
- def set_log_level(value)
- @log_level = value
- end
-
- def indent_level
- @indent_level ||= 0
- end
- def indent_level=(value)
- @indent_level = value
- end
+ module LogCommand
+ def log(*args)
+ logger.log(*args)
+ end
- def log_file
- @log_file
- end
- def log_file=(value)
- @log_file = value
- if @log_file
- if !File.directory?(File.dirname(@log_file))
- Util.bail!('Invalid log file "%s", directory "%s" does not exist' % [@log_file, File.dirname(@log_file)])
- end
- @log_output_stream = File.open(@log_file, 'a')
+ def log_raw(*args)
+ logger.log(*args)
end
- end
- def log_output_stream
- @log_output_stream
+ def logger
+ @logger ||= LeapCli::LeapLogger.new
+ end
end
-
end
module LeapCli
- module Log
+ class LeapLogger
#
# these are log titles typically associated with files
#
FILE_TITLES = [:updated, :created, :removed, :missing, :nochange, :loading]
+ attr_reader :log_output_stream, :log_file
+ attr_accessor :indent_level, :log_level, :log_in_color
+
+ def initialize()
+ @log_level = 1
+ @indent_level = 0
+ @log_file = nil
+ @log_output_stream = nil
+ end
+
+ def log_file=(value)
+ @log_file = value
+ if @log_file
+ if !File.directory?(File.dirname(@log_file))
+ Util.bail!('Invalid log file "%s", directory "%s" does not exist' % [@log_file, File.dirname(@log_file)])
+ end
+ @log_output_stream = File.open(@log_file, 'a')
+ end
+ end
#
# master logging function.
@@ -65,13 +59,12 @@ module LeapCli
# [:error, :warning, :info, :updated, :created, :removed, :no_change, :missing]
# * Hash: a hash of options. so far, only :indent is supported.
#
-
def log(*args)
level = args.grep(Integer).first || 1
title = args.grep(Symbol).first
message = args.grep(String).first
options = args.grep(Hash).first || {}
- unless message && LeapCli.log_level >= level
+ unless message && @log_level >= level
return
end
@@ -117,7 +110,7 @@ module LeapCli
end
log_raw(:log, nil) { [clear_prefix, message].join }
- if LeapCli.log_in_color
+ if @log_in_color
log_raw(:stdout, options[:indent]) { [colored_prefix, message].join }
else
log_raw(:stdout, options[:indent]) { [clear_prefix, message].join }
@@ -125,9 +118,9 @@ module LeapCli
# run block, if given
if block_given?
- LeapCli.indent_level += 1
+ @indent_level += 1
yield
- LeapCli.indent_level -= 1
+ @indent_level -= 1
end
end
@@ -142,20 +135,20 @@ module LeapCli
def log_raw(mode, indent=nil, &block)
# NOTE: print message (using 'print' produces better results than 'puts' when multiple threads are logging)
if mode == :log
- if LeapCli.log_output_stream
+ if @log_output_stream
messages = [yield].compact.flatten
if messages.any?
timestamp = Time.now.strftime("%b %d %H:%M:%S")
messages.each do |message|
- LeapCli.log_output_stream.print("#{timestamp} #{message}\n")
+ @log_output_stream.print("#{timestamp} #{message}\n")
end
- LeapCli.log_output_stream.flush
+ @log_output_stream.flush
end
end
elsif mode == :stdout
messages = [yield].compact.flatten
if messages.any?
- indent ||= LeapCli.indent_level
+ indent ||= @indent_level
indent_str = ""
indent_str += " " * indent.to_i
if indent.to_i > 0
diff --git a/lib/leap_cli/path.rb b/lib/leap_cli/path.rb
index fd2e3fc..11fc0f1 100644
--- a/lib/leap_cli/path.rb
+++ b/lib/leap_cli/path.rb
@@ -40,14 +40,14 @@ module LeapCli; module Path
[Path.provider, Path.provider_base].each do |base|
if arg.is_a?(Symbol) || arg.is_a?(Array)
named_path(arg, base).tap {|path|
- return path if File.exists?(path)
+ return path if File.exist?(path)
}
else
File.join(base, arg).tap {|path|
- return path if File.exists?(path)
+ return path if File.exist?(path)
}
File.join(base, 'files', arg).tap {|path|
- return path if File.exists?(path)
+ return path if File.exist?(path)
}
end
end
@@ -83,7 +83,7 @@ module LeapCli; module Path
end
def self.exists?(name, provider_dir=nil)
- File.exists?(named_path(name, provider_dir))
+ File.exist?(named_path(name, provider_dir))
end
def self.defined?(name)
diff --git a/lib/leap_cli/remote/leap_plugin.rb b/lib/leap_cli/remote/leap_plugin.rb
index b48f433..ee33cea 100644
--- a/lib/leap_cli/remote/leap_plugin.rb
+++ b/lib/leap_cli/remote/leap_plugin.rb
@@ -148,7 +148,7 @@ module LeapCli; module Remote; module LeapPlugin
ssh_failures = []
exitcode_failures = []
succeeded = []
- task = LeapCli.log_level > 1 ? :standard_task : :skip_errors_task
+ task = LeapCli.logger.log_level > 1 ? :standard_task : :skip_errors_task
with_task(task) do
log :querying, 'facts' do
progress " "
diff --git a/lib/leap_cli/ssh_key.rb b/lib/leap_cli/ssh_key.rb
index 138f444..2570557 100644
--- a/lib/leap_cli/ssh_key.rb
+++ b/lib/leap_cli/ssh_key.rb
@@ -30,7 +30,7 @@ module LeapCli
if arg1 =~ /^ssh-/
type, data = arg1.split(' ')
key = SshKey.new load_from_data(data, type)
- elsif File.exists? arg1
+ elsif File.exist? arg1
key = SshKey.new load_from_file(arg1)
key.filename = arg1
else
@@ -38,7 +38,7 @@ module LeapCli
end
end
return key
- rescue StandardError => exc
+ rescue StandardError
end
def self.load_from_file(filename)
diff --git a/lib/leap_cli/util.rb b/lib/leap_cli/util.rb
index 5014238..248a59c 100644
--- a/lib/leap_cli/util.rb
+++ b/lib/leap_cli/util.rb
@@ -38,7 +38,7 @@ module LeapCli
#
def bail!(*message)
if block_given?
- LeapCli.set_log_level(3)
+ LeapCli.logger.log_level = 3
yield
elsif message
log 0, *message
@@ -119,7 +119,7 @@ module LeapCli
base = options[:base] || Path.provider
file_list = files.collect { |file_path|
file_path = Path.named_path(file_path, base)
- File.exists?(file_path) ? Path.relative_path(file_path, base) : nil
+ File.exist?(file_path) ? Path.relative_path(file_path, base) : nil
}.compact
if file_list.length > 1
bail! do
@@ -138,7 +138,7 @@ module LeapCli
options = files.last.is_a?(Hash) ? files.pop : {}
file_list = files.collect { |file_path|
file_path = Path.named_path(file_path)
- !File.exists?(file_path) ? Path.relative_path(file_path) : nil
+ !File.exist?(file_path) ? Path.relative_path(file_path) : nil
}.compact
if file_list.length > 1
bail! do
@@ -157,7 +157,7 @@ module LeapCli
def file_exists?(*files)
files.each do |file_path|
file_path = Path.named_path(file_path)
- if !File.exists?(file_path)
+ if !File.exist?(file_path)
return false
end
end
@@ -233,7 +233,7 @@ module LeapCli
#
def replace_file!(filepath, &block)
filepath = Path.named_path(filepath)
- if !File.exists?(filepath)
+ if !File.exist?(filepath)
content = yield(nil)
unless content.nil?
write_file!(filepath, content)
@@ -258,7 +258,7 @@ module LeapCli
def remove_file!(filepath)
filepath = Path.named_path(filepath)
- if File.exists?(filepath)
+ if File.exist?(filepath)
if File.directory?(filepath)
remove_directory!(filepath)
else
@@ -298,7 +298,7 @@ module LeapCli
def write_file!(filepath, contents)
filepath = Path.named_path(filepath)
ensure_dir File.dirname(filepath)
- existed = File.exists?(filepath)
+ existed = File.exist?(filepath)
if existed
if file_content_equals?(filepath, contents)
log :nochange, filepath, 2
@@ -320,11 +320,11 @@ module LeapCli
def rename_file!(oldpath, newpath)
oldpath = Path.named_path(oldpath)
newpath = Path.named_path(newpath)
- if File.exists? newpath
+ if File.exist? newpath
log :skipping, "#{Path.relative_path(newpath)}, file already exists"
return
end
- if !File.exists? oldpath
+ if !File.exist? oldpath
log :skipping, "#{Path.relative_path(oldpath)}, file is missing"
return
end
@@ -429,7 +429,7 @@ module LeapCli
Dir.chdir(dir) do
branch = `git symbolic-ref HEAD 2>/dev/null`.strip
if branch.chars.any?
- branch.sub /^refs\/heads\//, ''
+ branch.sub(/^refs\/heads\//, '')
else
nil
end
diff --git a/lib/leap_cli/util/remote_command.rb b/lib/leap_cli/util/remote_command.rb
index 10a5ca8..c2f1ace 100644
--- a/lib/leap_cli/util/remote_command.rb
+++ b/lib/leap_cli/util/remote_command.rb
@@ -13,7 +13,7 @@ module LeapCli; module Util; module RemoteCommand
node_list = parse_node_list(nodes)
cap = new_capistrano
- cap.logger = LeapCli::Logger.new(:level => [LeapCli.log_level,3].min)
+ cap.logger = LeapCli::Logger.new(:level => [LeapCli.logger.log_level,3].min)
user = options[:user] || 'root'
cap.set :user, user
cap.set :ssh_options, ssh_options # ssh options common to all nodes
@@ -85,7 +85,7 @@ module LeapCli; module Util; module RemoteCommand
def net_ssh_log_level
if DEBUG
- case LeapCli.log_level
+ case LeapCli.logger.log_level
when 1 then 3
when 2 then 2
when 3 then 1
@@ -145,7 +145,7 @@ module LeapCli; module Util; module RemoteCommand
opts[:keys] = [vagrant_ssh_key_file]
opts[:keys_only] = true # only use the keys specified above, and ignore whatever keys the ssh-agent is aware of.
opts[:paranoid] = false # we skip host checking for vagrant nodes, because fingerprint is different for everyone.
- if LeapCli::log_level <= 1
+ if LeapCli.logger.log_level <= 1
opts[:verbose] = :error # suppress all the warnings about adding host keys to known_hosts, since it is not actually doing that.
end
end
diff --git a/test/unit/command_line_test.rb b/test/unit/command_line_test.rb
index 0b57ed0..ea0d1cc 100644
--- a/test/unit/command_line_test.rb
+++ b/test/unit/command_line_test.rb
@@ -21,7 +21,7 @@ class CommandLineTest < Minitest::Test
cleanup_files('nodes/banana.json', 'files/nodes/banana')
output = leap_bin("node add banana tags:production "+
"services:openvpn ip_address:1.1.1.1 openvpn.gateway_address:2.2.2.2")
- assert_match /created nodes\/banana\.json/, output
+ assert_match(/created nodes\/banana\.json/, output)
end
end
diff --git a/test/unit/config_object_list_test.rb b/test/unit/config_object_list_test.rb
index 9b6e09f..c4f37d8 100644
--- a/test/unit/config_object_list_test.rb
+++ b/test/unit/config_object_list_test.rb
@@ -9,7 +9,6 @@ class ConfigObjectListTest < Minitest::Test
end
def test_complex_node_search
- domain = provider.domain
nodes = manager.nodes['location.country_code' => 'US']
assert nodes.size != manager.nodes.size, 'should not return all nodes'
assert_equal 2, nodes.size, 'should be some nodes'