summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJay Mundrawala <jdmundrawala@gmail.com>2014-10-21 13:59:14 -0700
committerJay Mundrawala <jdmundrawala@gmail.com>2014-10-21 13:59:14 -0700
commit969b6a9f0325a47d16b689049f0507516e97b4e3 (patch)
tree5cadff6036b11e764d07f610a794393c321745f6
parentd77a51f05082a41a92ffa21a474ac174454a0ed9 (diff)
parent983499e2408ef80761cf0b69c95508a388c6b1f3 (diff)
downloadchef-969b6a9f0325a47d16b689049f0507516e97b4e3.tar.gz
Merge pull request #2248 from opscode/jdmundrawala/windows-service
Adding a bin for windows service so that we can appbundle
-rwxr-xr-xbin/chef-service-manager2
-rw-r--r--bin/chef-windows-service35
-rw-r--r--chef.gemspec2
3 files changed, 37 insertions, 2 deletions
diff --git a/bin/chef-service-manager b/bin/chef-service-manager
index aaf91c7568..7cef10f506 100755
--- a/bin/chef-service-manager
+++ b/bin/chef-service-manager
@@ -28,7 +28,7 @@ if Chef::Platform.windows?
:service_name => "chef-client",
:service_display_name => "Chef Client Service",
:service_description => "Runs Chef Client on regular, configurable intervals.",
- :service_file_path => File.expand_path(File.join(File.dirname(__FILE__), '../lib/chef/application/windows_service.rb'))
+ :service_file_path => File.expand_path(File.join(File.dirname(__FILE__), '../../../../bin/chef-windows-service'))
}
Chef::Application::WindowsServiceManager.new(chef_client_service).run
else
diff --git a/bin/chef-windows-service b/bin/chef-windows-service
new file mode 100644
index 0000000000..292d5651fc
--- /dev/null
+++ b/bin/chef-windows-service
@@ -0,0 +1,35 @@
+#!/usr/bin/env ruby
+#
+# Author:: Jay Mundrawala (<jdm@getchef.com>)
+#
+# Copyright:: 2014, Chef Software, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# Note:
+# The file is used by appbundler to generate a ruby file that
+# we can execute using the correct gems. The batch file we
+# generate will call that file, and will be registered as
+# a windows service.
+
+require 'rubygems'
+$:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
+require 'chef'
+require 'chef/application/windows_service'
+
+if Chef::Platform.windows?
+ Chef::Application::WindowsService.mainloop
+else
+ puts "chef-windows-service is only available on Windows platforms."
+end
diff --git a/chef.gemspec b/chef.gemspec
index 075d1fc5d6..427657f678 100644
--- a/chef.gemspec
+++ b/chef.gemspec
@@ -49,7 +49,7 @@ Gem::Specification.new do |s|
# chef-service-manager is a windows only executable.
# However gemspec doesn't give us a way to have this executable only
# on windows. So we're including this in all platforms.
- s.executables = %w( chef-client chef-solo knife chef-shell shef chef-apply chef-service-manager )
+ s.executables = %w( chef-client chef-solo knife chef-shell shef chef-apply chef-service-manager chef-windows-service )
s.require_path = 'lib'
s.files = %w(Rakefile LICENSE README.md CONTRIBUTING.md) + Dir.glob("{distro,lib,tasks,spec}/**/*", File::FNM_DOTMATCH).reject {|f| File.directory?(f) }