Sha256: 147d4211ee0570d6901562eafa46f9e88718ba4d438cfbd4832eb25995aa92ad

Contents?: true

Size: 1.55 KB

Versions: 59

Compression:

Stored size: 1.55 KB

Contents

require "rubygems"
require "rake"
require "mkmf"
require "erb"
require "chef-utils/dist"

desc "Building event log dll"

def ensure_present(commands)
  commands.each do |c|
    unless find_executable c
      warn "Could not find #{c}. Windows Event Logging will not correctly function."
    end
  end
end

# Templating the windows event log messages
# So we can inject distro constants in there
template = ERB.new(IO.read("chef-log.man.erb"))
chef_log_man = template.result
File.open("chef-log.man", "w") { |f| f.write(chef_log_man) }

EVT_MC_FILE = "chef-log.man".freeze
EVT_RC_FILE = "chef-log.rc".freeze
EVT_RESOURCE_OBJECT = "resource.o".freeze
EVT_SHARED_OBJECT = "chef-log.dll".freeze
MC = "windmc".freeze
RC = "windres".freeze
CC = "gcc".freeze

ensure_present [MC, RC, CC]

task build: [EVT_RESOURCE_OBJECT, EVT_SHARED_OBJECT]
task default: %i{build register}

file EVT_RC_FILE => EVT_MC_FILE do
  sh "#{MC} #{EVT_MC_FILE}"
end

file EVT_RESOURCE_OBJECT => EVT_RC_FILE do
  sh "#{RC} -i #{EVT_RC_FILE} -o #{EVT_RESOURCE_OBJECT}"
end

file EVT_SHARED_OBJECT => EVT_RESOURCE_OBJECT do
  sh "#{CC} -o #{EVT_SHARED_OBJECT} -shared #{EVT_RESOURCE_OBJECT}"
end

task register: EVT_SHARED_OBJECT do
  require "win32/eventlog"
  dll_file = File.expand_path(EVT_SHARED_OBJECT)
  begin
    Win32::EventLog.add_event_source(
      source: "Application",
      key_name: ChefUtils::Dist::Infra::SHORT,
      event_message_file: dll_file,
      category_message_file: dll_file
    )
  rescue Errno::EIO => e
    puts "Skipping event log registration due to missing privileges: #{e}"
  end
end

Version data entries

59 entries across 59 versions & 1 rubygems

Version Path
chef-18.6.2-universal-mingw-ucrt ext/win32-eventlog/Rakefile
chef-17.10.163-universal-mingw32 ext/win32-eventlog/Rakefile
chef-18.5.0-x64-mingw-ucrt ext/win32-eventlog/Rakefile
chef-18.4.12-x64-mingw-ucrt ext/win32-eventlog/Rakefile
chef-17.10.122-universal-mingw32 ext/win32-eventlog/Rakefile
chef-17.10.114-universal-mingw32 ext/win32-eventlog/Rakefile
chef-18.4.2-x64-mingw-ucrt ext/win32-eventlog/Rakefile
chef-17.10.95-universal-mingw32 ext/win32-eventlog/Rakefile
chef-18.3.0-x64-mingw-ucrt ext/win32-eventlog/Rakefile
chef-17.10.68-universal-mingw32 ext/win32-eventlog/Rakefile
chef-18.2.7-x64-mingw-ucrt ext/win32-eventlog/Rakefile
chef-18.1.29-x64-mingw-ucrt ext/win32-eventlog/Rakefile
chef-16.18.30-universal-mingw32 ext/win32-eventlog/Rakefile
chef-18.1.0-x64-mingw-ucrt ext/win32-eventlog/Rakefile
chef-18.0.185-x64-mingw-ucrt ext/win32-eventlog/Rakefile
chef-18.0.169-x64-mingw-ucrt ext/win32-eventlog/Rakefile
chef-16.18.0-universal-mingw32 ext/win32-eventlog/Rakefile
chef-17.10.0-universal-mingw32 ext/win32-eventlog/Rakefile
chef-17.9.52-universal-mingw32 ext/win32-eventlog/Rakefile
chef-16.17.51-universal-mingw32 ext/win32-eventlog/Rakefile