Do not vendor cookbooks using Berkshelf anymore
Instead, use the Berkshelf support in knife-solo and the vagrant-berkshelf plugin on Vagrant
This commit is contained in:
@@ -1,5 +0,0 @@
|
||||
# Application_Javascript Changelog
|
||||
|
||||
## v1.0.0
|
||||
|
||||
Initial release!
|
||||
@@ -1,132 +0,0 @@
|
||||
# Application_Javascript Cookbook
|
||||
|
||||
[](https://travis-ci.org/poise/application_javascript)
|
||||
[](https://rubygems.org/gems/poise-application-javascript)
|
||||
[](https://supermarket.chef.io/cookbooks/application_javascript)
|
||||
[](https://codecov.io/github/poise/application_javascript)
|
||||
[](https://gemnasium.com/poise/application_javascript)
|
||||
[](https://www.apache.org/licenses/LICENSE-2.0)
|
||||
|
||||
A [Chef](https://www.chef.io/) cookbook to deploy server-side JavaScript
|
||||
applications using Node.js or io.js.
|
||||
|
||||
## Quick Start
|
||||
|
||||
To deploy an Express application from git:
|
||||
|
||||
```ruby
|
||||
application '/srv/myapp' do
|
||||
git 'https://github.com/example/myapp.git'
|
||||
npm_install
|
||||
npm_start
|
||||
end
|
||||
```
|
||||
|
||||
## Requirements
|
||||
|
||||
Chef 12 or newer is required.
|
||||
|
||||
## Resources
|
||||
|
||||
### `application_javascript`
|
||||
|
||||
The `application_javascript` resource installs a JavaScript runtime for the
|
||||
deployment.
|
||||
|
||||
```ruby
|
||||
application '/srv/myapp' do
|
||||
javascript '3'
|
||||
end
|
||||
```
|
||||
|
||||
All actions and properties are the same as the [`javascript_runtime` resource](https://github.com/poise/poise-javascript#javascript_runtime).
|
||||
|
||||
### `application_javascript_service`
|
||||
|
||||
The `application_javascript_javascript_service` resource creates a service for a
|
||||
JavaScript command.
|
||||
|
||||
```ruby
|
||||
application '/srv/myapp' do
|
||||
javascript_service 'main.js'
|
||||
end
|
||||
```
|
||||
|
||||
#### Actions
|
||||
|
||||
* `:enable` – Create, enable and start the service. *(default)*
|
||||
* `:disable` – Stop, disable, and destroy the service.
|
||||
* `:start` – Start the service.
|
||||
* `:stop` – Stop the service.
|
||||
* `:restart` – Stop and then start the service.
|
||||
* `:reload` – Send the configured reload signal to the service.
|
||||
|
||||
#### Properties
|
||||
|
||||
* `command` – Command to run. *(name attribute)*
|
||||
* `path` – Base path for the application. *(default: application path)*
|
||||
* `service_name` – Name of the service to create. *(default: auto-detect)*
|
||||
# `user` – User to run the service as. *(default: application owner)*
|
||||
|
||||
### `application_node_package`
|
||||
|
||||
The `application_node_package` resource installs NPM packages for the deployment.
|
||||
|
||||
```ruby
|
||||
application '/srv/myapp' do
|
||||
node_package 'grunt-cli'
|
||||
end
|
||||
```
|
||||
|
||||
All actions and properties are the same as the [`node_package` resource](https://github.com/poise/poise-javascript#node_package),
|
||||
except that the `group` and `user` properties default to the application-level
|
||||
data if not specified.
|
||||
|
||||
### `application_npm_start`
|
||||
|
||||
The `application_npm_start` resource creates a service for a JavaScript
|
||||
application using `npm start`.
|
||||
|
||||
```ruby
|
||||
application '/srv/myapp' do
|
||||
npm_start
|
||||
end
|
||||
```
|
||||
|
||||
#### Actions
|
||||
|
||||
* `:enable` – Create, enable and start the service. *(default)*
|
||||
* `:disable` – Stop, disable, and destroy the service.
|
||||
* `:start` – Start the service.
|
||||
* `:stop` – Stop the service.
|
||||
* `:restart` – Stop and then start the service.
|
||||
* `:reload` – Send the configured reload signal to the service.
|
||||
|
||||
#### Properties
|
||||
|
||||
* `path` – Base path for the application. *(default: name attribute)*
|
||||
* `command` – NPM subcommand to run. *(default: start)*
|
||||
* `service_name` – Name of the service to create. *(default: auto-detect)*
|
||||
# `user` – User to run the service as. *(default: application owner)*
|
||||
|
||||
## Sponsors
|
||||
|
||||
Development sponsored by [Chef Software](https://www.chef.io/), [Symonds & Son](http://symondsandson.com/), and [Orion](https://www.orionlabs.co/).
|
||||
|
||||
The Poise test server infrastructure is sponsored by [Rackspace](https://rackspace.com/).
|
||||
|
||||
## License
|
||||
|
||||
Copyright 2015, Noah Kantrowitz
|
||||
|
||||
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.
|
||||
@@ -1,23 +0,0 @@
|
||||
#
|
||||
# Copyright 2015, Noah Kantrowitz
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
|
||||
|
||||
module PoiseApplicationJavascript
|
||||
autoload :AppMixin, 'poise_application_javascript/app_mixin'
|
||||
autoload :Error, 'poise_application_javascript/error'
|
||||
autoload :Resources, 'poise_application_javascript/resources'
|
||||
autoload :VERSION, 'poise_application_javascript/version'
|
||||
end
|
||||
@@ -1,67 +0,0 @@
|
||||
#
|
||||
# Copyright 2015, Noah Kantrowitz
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
|
||||
require 'poise/backports'
|
||||
require 'poise/utils'
|
||||
require 'poise_application/app_mixin'
|
||||
require 'poise_javascript/javascript_command_mixin'
|
||||
|
||||
|
||||
module PoiseApplicationJavascript
|
||||
# A helper mixin for Javascript application resources and providers.
|
||||
#
|
||||
# @since 4.0.0
|
||||
module AppMixin
|
||||
include Poise::Utils::ResourceProviderMixin
|
||||
|
||||
# A helper mixin for Javascript application resources.
|
||||
module Resource
|
||||
include PoiseApplication::AppMixin::Resource
|
||||
include PoiseJavascript::JavascriptCommandMixin::Resource
|
||||
|
||||
# @!attribute parent_javascript
|
||||
# Override the #parent_javascript from JavascriptCommandMixin to grok the
|
||||
# application level parent as a default value.
|
||||
# @return [PoiseJavascript::Resources::JavascriptRuntime::Resource, nil]
|
||||
parent_attribute(:javascript, type: :javascript_runtime, optional: true, default: lazy { app_state_javascript.equal?(self) ? nil : app_state_javascript })
|
||||
|
||||
# @attribute app_state_javascript
|
||||
# The application-level Javascript parent.
|
||||
# @return [PoiseJavascript::Resources::JavascriptRuntime::Resource, nil]
|
||||
def app_state_javascript(javascript=Poise::NOT_PASSED)
|
||||
unless javascript == Poise::NOT_PASSED
|
||||
app_state[:javascript] = javascript
|
||||
end
|
||||
app_state[:javascript]
|
||||
end
|
||||
|
||||
# A merged hash of environment variables for both the application state
|
||||
# and parent javascript.
|
||||
#
|
||||
# @return [Hash<String, String>]
|
||||
def app_state_environment_javascript
|
||||
env = app_state_environment
|
||||
env = env.merge(parent_javascript.javascript_environment) if parent_javascript
|
||||
env
|
||||
end
|
||||
end
|
||||
|
||||
# A helper mixin for Javascript application providers.
|
||||
module Provider
|
||||
include PoiseApplication::AppMixin::Provider
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,17 +0,0 @@
|
||||
#
|
||||
# Copyright 2015, Noah Kantrowitz
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
|
||||
require 'poise_application_javascript/resources'
|
||||
@@ -1,25 +0,0 @@
|
||||
#
|
||||
# Copyright 2015, Noah Kantrowitz
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
|
||||
require 'poise_application/error'
|
||||
|
||||
module PoiseApplicationJavascript
|
||||
# Base exception class for poise-application-javascript errors.
|
||||
#
|
||||
# @since 1.0.0
|
||||
class Error < PoiseApplication::Error
|
||||
end
|
||||
end
|
||||
@@ -1,22 +0,0 @@
|
||||
#
|
||||
# Copyright 2015, Noah Kantrowitz
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
|
||||
require 'poise_application_javascript/resources/javascript'
|
||||
require 'poise_application_javascript/resources/javascript_execute'
|
||||
require 'poise_application_javascript/resources/javascript_service'
|
||||
require 'poise_application_javascript/resources/node_package'
|
||||
require 'poise_application_javascript/resources/npm_install'
|
||||
require 'poise_application_javascript/resources/npm_start'
|
||||
@@ -1,64 +0,0 @@
|
||||
#
|
||||
# Copyright 2015, Noah Kantrowitz
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
|
||||
require 'poise_javascript/resources/javascript_runtime'
|
||||
|
||||
require 'poise_application_javascript/app_mixin'
|
||||
|
||||
|
||||
module PoiseApplicationJavascript
|
||||
module Resources
|
||||
# (see Javascript::Resource)
|
||||
# @since 1.0.0
|
||||
module Javascript
|
||||
# An `application_javascript` resource to manage Javascript runtimes
|
||||
# inside an Application cookbook deployment.
|
||||
#
|
||||
# @provides application_javascript
|
||||
# @provides application_javascript_runtime
|
||||
# @action install
|
||||
# @action uninstall
|
||||
# @example
|
||||
# application '/app' do
|
||||
# javascript '3'
|
||||
# end
|
||||
class Resource < PoiseJavascript::Resources::JavascriptRuntime::Resource
|
||||
include PoiseApplicationJavascript::AppMixin
|
||||
provides(:application_javascript)
|
||||
# Need the double javascript for application resource rewriting.
|
||||
provides(:application_javascript_runtime)
|
||||
container_default(false)
|
||||
subclass_providers!
|
||||
|
||||
# We want to run the base class version of this, not the one from the
|
||||
# mixin. HULK SMASH.
|
||||
def npm_binary
|
||||
self.class.superclass.instance_method(:npm_binary).bind(self).call
|
||||
end
|
||||
|
||||
# Set this resource as the app_state's parent javascript.
|
||||
#
|
||||
# @api private
|
||||
def after_created
|
||||
super.tap do |val|
|
||||
app_state_javascript(self)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,88 +0,0 @@
|
||||
#
|
||||
# Copyright 2015, Noah Kantrowitz
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
|
||||
require 'poise_javascript/resources/javascript_execute'
|
||||
|
||||
require 'poise_application_javascript/app_mixin'
|
||||
|
||||
|
||||
module PoiseApplicationJavascript
|
||||
module Resources
|
||||
# (see JavascriptExecute::Resource)
|
||||
# @since 1.0.0
|
||||
module JavascriptExecute
|
||||
# An `application_javascript_execute` resource to run Javascript commands inside an
|
||||
# Application cookbook deployment.
|
||||
#
|
||||
# @provides application_javascript_execute
|
||||
# @action run
|
||||
# @example
|
||||
# application '/srv/myapp' do
|
||||
# javascript_execute 'setup.py install'
|
||||
# end
|
||||
class Resource < PoiseJavascript::Resources::JavascriptExecute::Resource
|
||||
include PoiseApplicationJavascript::AppMixin
|
||||
provides(:application_javascript_execute)
|
||||
def initialize(*args)
|
||||
super
|
||||
# Clear some instance variables so my defaults work.
|
||||
remove_instance_variable(:@cwd)
|
||||
remove_instance_variable(:@group)
|
||||
remove_instance_variable(:@user)
|
||||
end
|
||||
|
||||
# #!attribute cwd
|
||||
# Override the default directory to be the app path if unspecified.
|
||||
# @return [String]
|
||||
attribute(:cwd, kind_of: [String, NilClass, FalseClass], default: lazy { parent && parent.path })
|
||||
|
||||
# #!attribute group
|
||||
# Override the default group to be the app group if unspecified.
|
||||
# @return [String, Integer]
|
||||
attribute(:group, kind_of: [String, Integer, NilClass, FalseClass], default: lazy { parent && parent.group })
|
||||
|
||||
# #!attribute user
|
||||
# Override the default user to be the app owner if unspecified.
|
||||
# @return [String, Integer]
|
||||
attribute(:user, kind_of: [String, Integer, NilClass, FalseClass], default: lazy { parent && parent.owner })
|
||||
end
|
||||
|
||||
# The default provider for `application_javascript_execute`.
|
||||
#
|
||||
# @see Resource
|
||||
# @provides application_javascript_execute
|
||||
class Provider < PoiseJavascript::Resources::JavascriptExecute::Provider
|
||||
provides(:application_javascript_execute)
|
||||
|
||||
private
|
||||
|
||||
# Override environment to add the application envivonrment instead.
|
||||
#
|
||||
# @return [Hash]
|
||||
def environment
|
||||
super.tap do |environment|
|
||||
# Don't use the app_state_environment_javascript because we already have
|
||||
# those values in place.
|
||||
environment.update(new_resource.app_state_environment)
|
||||
# Re-apply the resource environment for correct ordering.
|
||||
environment.update(new_resource.environment) if new_resource.environment
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,59 +0,0 @@
|
||||
#
|
||||
# Copyright 2015, Noah Kantrowitz
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
|
||||
require 'chef/provider'
|
||||
require 'chef/resource'
|
||||
require 'poise'
|
||||
|
||||
require 'poise_application_javascript/service_mixin'
|
||||
|
||||
|
||||
module PoiseApplicationJavascript
|
||||
module Resources
|
||||
# (see JavascriptService::Resource)
|
||||
# @since 1.0.0
|
||||
module JavascriptService
|
||||
class Resource < Chef::Resource
|
||||
include PoiseApplicationJavascript::ServiceMixin
|
||||
provides(:application_javascript_service)
|
||||
|
||||
# @!attribute command
|
||||
# Command to run.
|
||||
# @return [String]
|
||||
attribute(:command, kind_of: String, name_attribute: true)
|
||||
# @!attribute path
|
||||
# Override {PoiseApplicationJavascript::ServiceMixin#path} to make it
|
||||
# not the name_attribute.
|
||||
# @return [String]
|
||||
attribute(:path, kind_of: String, default: lazy { parent && parent.path })
|
||||
end
|
||||
|
||||
class Provider < Chef::Provider
|
||||
include PoiseApplicationJavascript::ServiceMixin
|
||||
provides(:application_javascript_service)
|
||||
|
||||
private
|
||||
|
||||
# (see PoiseApplication::ServiceMixin#service_options)
|
||||
def service_options(resource)
|
||||
super
|
||||
resource.javascript_command(new_resource.command)
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,63 +0,0 @@
|
||||
#
|
||||
# Copyright 2015, Noah Kantrowitz
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
|
||||
require 'poise_javascript/resources/node_package'
|
||||
|
||||
require 'poise_application_javascript/app_mixin'
|
||||
|
||||
|
||||
module PoiseApplicationJavascript
|
||||
module Resources
|
||||
# (see NodePackage::Resource)
|
||||
# @since 1.0.0
|
||||
module NodePackage
|
||||
# An `application_node_package` resource to install NPM packages inside
|
||||
# an Application cookbook deployment.
|
||||
#
|
||||
# @provides application_node_package
|
||||
# @action install
|
||||
# @action upgrade
|
||||
# @action remove
|
||||
# @example
|
||||
# application '/app' do
|
||||
# node_package %w{grunt-cli gulp}
|
||||
# end
|
||||
class Resource < PoiseJavascript::Resources::NodePackage::Resource
|
||||
include PoiseApplicationJavascript::AppMixin
|
||||
provides(:application_node_package)
|
||||
subclass_providers!
|
||||
|
||||
def initialize(*args)
|
||||
super
|
||||
# For older Chef.
|
||||
@resource_name = :application_node_package
|
||||
end
|
||||
|
||||
# #!attribute group
|
||||
# Override the default group to be the app group if unspecified.
|
||||
# @return [String, Integer]
|
||||
attribute(:group, kind_of: [String, Integer, NilClass], default: lazy { parent && parent.group })
|
||||
|
||||
# #!attribute user
|
||||
# Override the default user to be the app owner if unspecified.
|
||||
# @return [String, Integer]
|
||||
attribute(:user, kind_of: [String, Integer, NilClass], default: lazy { parent && parent.owner })
|
||||
|
||||
# @todo This should handle relative paths against parent.path.
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,45 +0,0 @@
|
||||
#
|
||||
# Copyright 2015, Noah Kantrowitz
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
|
||||
require 'poise_javascript/resources/npm_install'
|
||||
|
||||
require 'poise_application_javascript/app_mixin'
|
||||
|
||||
|
||||
module PoiseApplicationJavascript
|
||||
module Resources
|
||||
# (see NpmInstall::Resource)
|
||||
# @since 1.0.0
|
||||
module NpmInstall
|
||||
# An `application_npm_install` resource to install package
|
||||
# dependencies inside an Application cookbook deployment.
|
||||
#
|
||||
# @provides application_npm_install
|
||||
# @action install
|
||||
# @example
|
||||
# application '/app' do
|
||||
# npm_install
|
||||
# end
|
||||
class Resource < PoiseJavascript::Resources::NpmInstall::Resource
|
||||
include PoiseApplicationJavascript::AppMixin
|
||||
provides(:application_npm_install)
|
||||
subclass_providers!
|
||||
|
||||
# @todo This should handle relative paths against parent.path.
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,78 +0,0 @@
|
||||
#
|
||||
# Copyright 2015, Noah Kantrowitz
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
|
||||
require 'shellwords'
|
||||
|
||||
require 'chef/provider'
|
||||
require 'chef/resource'
|
||||
require 'poise'
|
||||
|
||||
require 'poise_application_javascript/service_mixin'
|
||||
|
||||
|
||||
module PoiseApplicationJavascript
|
||||
module Resources
|
||||
# (see NpmStart::Resource)
|
||||
# @since 1.0.0
|
||||
module NpmStart
|
||||
# An `application_npm_start` resource to create a service for a Javascript
|
||||
# application using `npm start`.
|
||||
#
|
||||
# @provides application_npm_start
|
||||
# @action enable
|
||||
# @action disable
|
||||
# @action start
|
||||
# @action stop
|
||||
# @action restart
|
||||
# @action reload
|
||||
# @example
|
||||
# application '/app' do
|
||||
# npm_start
|
||||
# end
|
||||
class Resource < Chef::Resource
|
||||
include PoiseApplicationJavascript::ServiceMixin
|
||||
provides(:application_npm_start)
|
||||
|
||||
# @!attribute command
|
||||
# NPM sub-command to run. Defaults to `start`.
|
||||
# @return [String, Array<String>]
|
||||
attribute(:command, kind_of: [String, Array], default: 'start')
|
||||
end
|
||||
|
||||
# The default provider for `application_npm_start`.
|
||||
#
|
||||
# @see Resource
|
||||
# @provides application_npm_start
|
||||
class Provider < Chef::Provider
|
||||
include PoiseApplicationJavascript::ServiceMixin
|
||||
provides(:application_npm_start)
|
||||
|
||||
private
|
||||
|
||||
# (see PoiseApplication::ServiceMixin#service_options)
|
||||
def service_options(resource)
|
||||
super
|
||||
npm_cmd = [new_resource.npm_binary] + Array(new_resource.command)
|
||||
resource.javascript_command(Shellwords.join(npm_cmd))
|
||||
# Make sure node is on $PATH because grrr.
|
||||
new_path = [::File.dirname(new_resource.javascript), (new_resource.app_state_environment_javascript['PATH'] || ENV['PATH']).to_s].join(::File::PATH_SEPARATOR)
|
||||
resource.environment['PATH'] = new_path
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,57 +0,0 @@
|
||||
#
|
||||
# Copyright 2015, Noah Kantrowitz
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
|
||||
require 'poise/utils'
|
||||
require 'poise_application/service_mixin'
|
||||
require 'poise_languages/utils'
|
||||
|
||||
require 'poise_application_javascript/app_mixin'
|
||||
|
||||
|
||||
module PoiseApplicationJavascript
|
||||
# A helper mixin for Javascript service resources and providers.
|
||||
#
|
||||
# @since 1.0.0
|
||||
module ServiceMixin
|
||||
include Poise::Utils::ResourceProviderMixin
|
||||
|
||||
# A helper mixin for Javascript service resources.
|
||||
module Resource
|
||||
include PoiseApplication::ServiceMixin::Resource
|
||||
include PoiseApplicationJavascript::AppMixin::Resource
|
||||
end
|
||||
|
||||
# A helper mixin for Javascript service providers.
|
||||
module Provider
|
||||
include PoiseApplication::ServiceMixin::Provider
|
||||
include PoiseApplicationJavascript::AppMixin::Provider
|
||||
|
||||
# Set up the service for running Javascript stuff.
|
||||
def service_options(resource)
|
||||
super
|
||||
# Closure scoping for #javascript_command below.
|
||||
self_ = self
|
||||
# Create a new singleton method that fills in `node` for you.
|
||||
resource.define_singleton_method(:javascript_command) do |val|
|
||||
resource.command("#{self_.new_resource.javascript} #{PoiseLanguages::Utils.absolute_command(val, path: self_.new_resource.app_state_environment_javascript['PATH'])}")
|
||||
end
|
||||
# Include env vars as needed.
|
||||
resource.environment.update(new_resource.parent_javascript.javascript_environment) if new_resource.parent_javascript
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,19 +0,0 @@
|
||||
#
|
||||
# Copyright 2015, Noah Kantrowitz
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
|
||||
module PoiseApplicationJavascript
|
||||
VERSION = '1.0.0'
|
||||
end
|
||||
@@ -1,19 +0,0 @@
|
||||
#
|
||||
# Copyright 2015, Noah Kantrowitz
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
|
||||
raise 'Halite is not compatible with no_lazy_load false, please set no_lazy_load true in your Chef configuration file.' unless Chef::Config[:no_lazy_load]
|
||||
$LOAD_PATH << File.expand_path('../../files/halite_gem', __FILE__)
|
||||
require "poise_application_javascript/cheftie"
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user