Vendor the external cookbooks

Knife-Zero doesn't include Berkshelf support, so vendoring everything in
the repo is convenient again
This commit is contained in:
Greg Karékinian
2019-10-13 19:17:42 +02:00
parent f4bfe31ac1
commit a32f34b408
1245 changed files with 100630 additions and 0 deletions

View File

@@ -0,0 +1,23 @@
#
# 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

View File

@@ -0,0 +1,67 @@
#
# 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

View File

@@ -0,0 +1,17 @@
#
# 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'

View File

@@ -0,0 +1,25 @@
#
# 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

View File

@@ -0,0 +1,22 @@
#
# 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'

View File

@@ -0,0 +1,64 @@
#
# 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

View File

@@ -0,0 +1,88 @@
#
# 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

View File

@@ -0,0 +1,59 @@
#
# 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

View File

@@ -0,0 +1,63 @@
#
# 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

View File

@@ -0,0 +1,45 @@
#
# 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

View File

@@ -0,0 +1,78 @@
#
# 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

View File

@@ -0,0 +1,57 @@
#
# 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

View File

@@ -0,0 +1,19 @@
#
# 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