Sha256: 117f0d5bd21c0c57f13d067da4b1a787b7d5fb83f0cee01cb6218372d67ace7a

Contents?: true

Size: 1.54 KB

Versions: 1

Compression:

Stored size: 1.54 KB

Contents

require 'albacore/albacoremodel'
require 'albacore/config/sqlcmdconfig'

class SQLCmd
  include AlbacoreModel
  include RunCommand
  include Configuration::SQLCmd
  
  attr_accessor :server, :database, :username, :password
  attr_array :scripts
  attr_hash :variables
  
  def initialize
    @require_valid_command = false
    @scripts=[]
    @variables={}
    super()
    update_attributes sqlcmd.to_hash
  end
  
  def run
    return unless check_command
    
    cmd_params=[]
    cmd_params << build_parameter("S", @server) unless @server.nil?
    cmd_params << build_parameter("d", @database) unless @database.nil?
    cmd_params << build_parameter("U", @username) unless @username.nil?
    cmd_params << build_parameter("P", @password) unless @password.nil?
    cmd_params << build_variable_list if @variables.length > 0
    cmd_params << build_script_list if @scripts.length > 0
    
    result = run_command "SQLCmd", cmd_params.join(" ")
    
    failure_msg = 'SQLCmd Failed. See Build Log For Detail.'
    fail_with_message failure_msg if !result
  end
  
  def check_command
    return true if (!@command.nil?)
    fail_with_message 'SQLCmd.command cannot be nil.'
    return false
  end
  
  def build_script_list
    @scripts.map{|s| "-i \"#{s}\""}.join(" ")
  end
  
  def build_parameter(param_name, param_value)
    "-#{param_name} \"#{param_value}\""
  end
  
  def build_variable_list
    vars = []
    @variables.each do |k,v| 
      vars << "-v #{k}=#{v}"
    end
    vars.join(" ")
  end
  
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
albacore-0.2.0.preview1 lib/albacore/sqlcmd.rb