diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/leap_cli/commands/pre.rb | 153 | ||||
| -rw-r--r-- | lib/leap_cli/util.rb | 6 | 
2 files changed, 93 insertions, 66 deletions
| diff --git a/lib/leap_cli/commands/pre.rb b/lib/leap_cli/commands/pre.rb index 291ad2a..cedce7f 100644 --- a/lib/leap_cli/commands/pre.rb +++ b/lib/leap_cli/commands/pre.rb @@ -2,77 +2,98 @@  #  # check to make sure we can find the root directory of the platform  # -module LeapCli -  module Commands - -    desc 'Verbosity level 0..5' -    arg_name 'LEVEL' -    default_value '1' -    flag [:v, :verbose] - -    desc 'Override default log file' -    arg_name 'FILE' -    default_value nil -    flag :log - -    desc 'Display version number and exit' -    switch :version, :negatable => false - -    desc 'Skip prompts and assume "yes"' -    switch :yes, :negatable => false - -    pre do |global,command,options,args| -      # -      # set verbosity -      # -      LeapCli.log_level = global[:verbose].to_i -      if LeapCli.log_level > 1 -        ENV['GLI_DEBUG'] = "true" -      else -        ENV['GLI_DEBUG'] = "false" -      end +module LeapCli; module Commands -      # -      # load Leapfile -      # -      unless LeapCli.leapfile.load -        bail! { log :missing, 'Leapfile in directory tree' } -      end -      Path.set_platform_path(LeapCli.leapfile.platform_directory_path) -      Path.set_provider_path(LeapCli.leapfile.provider_directory_path) -      if !Path.provider || !File.directory?(Path.provider) -        bail! { log :missing, "provider directory '#{Path.provider}'" } -      end -      if !Path.platform || !File.directory?(Path.platform) -        bail! { log :missing, "platform directory '#{Path.platform}'" } -      end +  desc 'Verbosity level 0..5' +  arg_name 'LEVEL' +  default_value '1' +  flag [:v, :verbose] -      if LeapCli.leapfile.platform_branch && LeapCli::Util.is_git_directory?(Path.platform) -        branch = LeapCli::Util.current_git_branch(Path.platform) -        if branch != LeapCli.leapfile.platform_branch -          bail! "Wrong branch for #{Path.platform}. Was '#{branch}', should be '#{LeapCli.leapfile.platform_branch}'. Edit Leapfile to disable this check." -        end -      end +  desc 'Override default log file' +  arg_name 'FILE' +  default_value nil +  flag :log + +  desc 'Display version number and exit' +  switch :version, :negatable => false + +  desc 'Skip prompts and assume "yes"' +  switch :yes, :negatable => false + +  pre do |global,command,options,args| +    # +    # set verbosity +    # +    LeapCli.log_level = global[:verbose].to_i +    if LeapCli.log_level > 1 +      ENV['GLI_DEBUG'] = "true" +    else +      ENV['GLI_DEBUG'] = "false" +    end + +    # +    # load Leapfile +    # +    unless LeapCli.leapfile.load +      bail! { log :missing, 'Leapfile in directory tree' } +    end +    Path.set_platform_path(LeapCli.leapfile.platform_directory_path) +    Path.set_provider_path(LeapCli.leapfile.provider_directory_path) +    if !Path.provider || !File.directory?(Path.provider) +      bail! { log :missing, "provider directory '#{Path.provider}'" } +    end +    if !Path.platform || !File.directory?(Path.platform) +      bail! { log :missing, "platform directory '#{Path.platform}'" } +    end -      # -      # set log file -      # -      LeapCli.log_file = global[:log] || LeapCli.leapfile.log -      LeapCli::Util.log_raw(:log) { $0 + ' ' + ORIGINAL_ARGV.join(' ')} - -      # -      # load all the nodes everything -      # -      manager - -      # -      # check requirements -      # -      REQUIREMENTS.each do |key| -        assert_config! key +    if LeapCli.leapfile.platform_branch && LeapCli::Util.is_git_directory?(Path.platform) +      branch = LeapCli::Util.current_git_branch(Path.platform) +      if branch != LeapCli.leapfile.platform_branch +        bail! "Wrong branch for #{Path.platform}. Was '#{branch}', should be '#{LeapCli.leapfile.platform_branch}'. Edit Leapfile to disable this check."        end +    end + +    # +    # set log file +    # +    LeapCli.log_file = global[:log] || LeapCli.leapfile.log +    LeapCli::Util.log_raw(:log) { $0 + ' ' + ORIGINAL_ARGV.join(' ')} +    log_version +    # +    # load all the nodes everything +    # +    manager + +    # +    # check requirements +    # +    REQUIREMENTS.each do |key| +      assert_config! key      end    end -end + +  private + +  # +  # add a log entry for the leap command and leap platform versions +  # +  def log_version +    if LeapCli.log_level >= 2 +      str = "leap command v#{LeapCli::VERSION}" +      cli_dir = File.dirname(__FILE__) +      if Util.is_git_directory?(cli_dir) +        str << " (%s %s)" % [Util.current_git_branch(cli_dir), Util.current_git_commit(cli_dir)] +      end +      log 2, str +      str = "leap platform v#{Leap::Platform.version}" +      if Util.is_git_directory?(Path.platform) +        str << " (%s %s)" % [Util.current_git_branch(Path.platform), Util.current_git_commit(Path.platform)] +      end +      log 2, str +    end +  end + + +end; end diff --git a/lib/leap_cli/util.rb b/lib/leap_cli/util.rb index f602d89..e52c8a1 100644 --- a/lib/leap_cli/util.rb +++ b/lib/leap_cli/util.rb @@ -420,6 +420,12 @@ module LeapCli        end      end +    def current_git_commit(dir) +      Dir.chdir(dir) do +        `git rev-parse HEAD 2>/dev/null`.strip +      end +    end +    end  end | 
