summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bin/chef-windows-service35
-rw-r--r--chef.gemspec2
2 files changed, 36 insertions, 1 deletions
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) }