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 parent
87d7c721b1
commit
ba6e4220a1
1436 files changed
+12
-110987
No files matched your search
@@ -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
|
||||
-67
@@ -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
|
||||
-17
@@ -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'
|
||||
-25
@@ -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
|
||||
-22
@@ -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'
|
||||
-64
@@ -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
|
||||
-88
@@ -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
|
||||
-59
@@ -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
|
||||
-63
@@ -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
|
||||
-45
@@ -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
|
||||
-78
@@ -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
|
||||
-57
@@ -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
|
||||
-19
@@ -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"
|
||||
@@ -1 +0,0 @@
|
||||
{"name":"application_javascript","version":"1.0.0","description":"A Chef cookbook for deploying server-side JavaScript application code.","long_description":"# Application_Javascript Cookbook\n\n[](https://travis-ci.org/poise/application_javascript)\n[](https://rubygems.org/gems/poise-application-javascript)\n[](https://supermarket.chef.io/cookbooks/application_javascript)\n[](https://codecov.io/github/poise/application_javascript)\n[](https://gemnasium.com/poise/application_javascript)\n[](https://www.apache.org/licenses/LICENSE-2.0)\n\nA [Chef](https://www.chef.io/) cookbook to deploy server-side JavaScript\napplications using Node.js or io.js.\n\n## Quick Start\n\nTo deploy an Express application from git:\n\n```ruby\napplication '/srv/myapp' do\n git 'https://github.com/example/myapp.git'\n npm_install\n npm_start\nend\n```\n\n## Requirements\n\nChef 12 or newer is required.\n\n## Resources\n\n### `application_javascript`\n\nThe `application_javascript` resource installs a JavaScript runtime for the\ndeployment.\n\n```ruby\napplication '/srv/myapp' do\n javascript '3'\nend\n```\n\nAll actions and properties are the same as the [`javascript_runtime` resource](https://github.com/poise/poise-javascript#javascript_runtime).\n\n### `application_javascript_service`\n\nThe `application_javascript_javascript_service` resource creates a service for a\nJavaScript command.\n\n```ruby\napplication '/srv/myapp' do\n javascript_service 'main.js'\nend\n```\n\n#### Actions\n\n* `:enable` – Create, enable and start the service. *(default)*\n* `:disable` – Stop, disable, and destroy the service.\n* `:start` – Start the service.\n* `:stop` – Stop the service.\n* `:restart` – Stop and then start the service.\n* `:reload` – Send the configured reload signal to the service.\n\n#### Properties\n\n* `command` – Command to run. *(name attribute)*\n* `path` – Base path for the application. *(default: application path)*\n* `service_name` – Name of the service to create. *(default: auto-detect)*\n# `user` – User to run the service as. *(default: application owner)*\n\n### `application_node_package`\n\nThe `application_node_package` resource installs NPM packages for the deployment.\n\n```ruby\napplication '/srv/myapp' do\n node_package 'grunt-cli'\nend\n```\n\nAll actions and properties are the same as the [`node_package` resource](https://github.com/poise/poise-javascript#node_package),\nexcept that the `group` and `user` properties default to the application-level\ndata if not specified.\n\n### `application_npm_start`\n\nThe `application_npm_start` resource creates a service for a JavaScript\napplication using `npm start`.\n\n```ruby\napplication '/srv/myapp' do\n npm_start\nend\n```\n\n#### Actions\n\n* `:enable` – Create, enable and start the service. *(default)*\n* `:disable` – Stop, disable, and destroy the service.\n* `:start` – Start the service.\n* `:stop` – Stop the service.\n* `:restart` – Stop and then start the service.\n* `:reload` – Send the configured reload signal to the service.\n\n#### Properties\n\n* `path` – Base path for the application. *(default: name attribute)*\n* `command` – NPM subcommand to run. *(default: start)*\n* `service_name` – Name of the service to create. *(default: auto-detect)*\n# `user` – User to run the service as. *(default: application owner)*\n\n## Sponsors\n\nDevelopment sponsored by [Chef Software](https://www.chef.io/), [Symonds & Son](http://symondsandson.com/), and [Orion](https://www.orionlabs.co/).\n\nThe Poise test server infrastructure is sponsored by [Rackspace](https://rackspace.com/).\n\n## License\n\nCopyright 2015, Noah Kantrowitz\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n","maintainer":"YOUR_COMPANY_NAME","maintainer_email":"YOUR_EMAIL","license":"none","platforms":{},"dependencies":{"poise":"~> 2.0","application":"~> 5.0","poise-javascript":"~> 1.0","poise-service":"~> 1.0"},"recommendations":{},"suggestions":{},"conflicting":{},"providing":{},"replacing":{},"attributes":{},"grouLine truncated
|
||||
Reference in new issue
Block a user