├── .ruby-version ├── .gitignore ├── CHANGELOG.md ├── metadata.rb ├── Berksfile ├── recipes └── default.rb ├── attributes └── default.rb ├── Berksfile.lock ├── README.md └── LICENSE /.ruby-version: -------------------------------------------------------------------------------- 1 | 2.0.0-p481 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | .vagrant/ 3 | .kitchen/ 4 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # CHANGELOG for cornerstone-vagrant 2 | 3 | This file is used to list changes made in each version of cornerstone-vagrant 4 | 5 | ## 1.0.0: 6 | 7 | * Initial release of cornerstone-vagrant 8 | -------------------------------------------------------------------------------- /metadata.rb: -------------------------------------------------------------------------------- 1 | name 'cornerstone-vagrant' 2 | maintainer 'Colin Hubert' 3 | maintainer_email 'chubert@turbine.com' 4 | license 'Apache 2' 5 | description 'Installs/Configures a cornerstone based application in a vagrant environment' 6 | long_description IO.read(File.join(File.dirname(__FILE__), 'README.md')) 7 | version '1.0.0' 8 | 9 | depends 'php-webserver' 10 | depends 'platform_packages' 11 | depends 'web-developer-cookbook' -------------------------------------------------------------------------------- /Berksfile: -------------------------------------------------------------------------------- 1 | # vi: set ft=ruby : 2 | source 'https://api.berkshelf.com' 3 | 4 | metadata 5 | 6 | cookbook 'php-webserver', git: 'https://github.com/turbine-web/php-webserver.git' 7 | cookbook 'git', git: 'https://github.com/jssjr/git.git' 8 | cookbook 'nodejs', git: 'https://github.com/redguide/nodejs.git' 9 | cookbook 'grunt_cookbook', git: 'https://github.com/MattSurabian/grunt_cookbook.git' 10 | cookbook 'chef-ruby-ppa', git: 'https://github.com/oakensoul/chef-ruby-ppa.git' 11 | cookbook 'web-developer-cookbook', git: 'https://github.com/turbine-web/web-developer-cookbook.git' 12 | cookbook 'platform_packages' 13 | -------------------------------------------------------------------------------- /recipes/default.rb: -------------------------------------------------------------------------------- 1 | include_recipe 'php-webserver' 2 | include_recipe 'web-developer-cookbook' 3 | include_recipe 'platform_packages' 4 | 5 | # setup known hosts command 6 | known_hosts_cmd = '' 7 | if node['cornerstone-vagrant']['known_host'] != '' 8 | # rubocop:disable LineLength 9 | known_hosts_cmd = 'ssh-keyscan -H ' + node['cornerstone-vagrant']['known_host'] + ' >> ~/.ssh/known_hosts;' 10 | # rubocop:enable LineLength 11 | end 12 | 13 | # download dependencies 14 | execute "#{node['cornerstone-vagrant']['project']}-composer-install" do 15 | # need to run composer as a non-root user 16 | # rubocop:disable LineLength 17 | command "su -c '" + known_hosts_cmd + "cd /vagrant;COMPOSER_PROCESS_TIMEOUT=#{node['cornerstone-vagrant']['composer-timeout']} composer install;' vagrant" 18 | # rubocop:enable LineLength 19 | action :run 20 | notifies :run, "execute[#{node['cornerstone-vagrant']['project']}-initialize]" 21 | end 22 | 23 | # initialize the project and generate the vhost config 24 | execute "#{node['cornerstone-vagrant']['project']}-initialize" do 25 | # rubocop:disable LineLength 26 | command "php /vagrant/cornerstone.php application initialize --env=#{node['cornerstone-vagrant']['environment']}" 27 | # rubocop:enable LineLength 28 | action :run 29 | notifies :run, "execute[#{node['cornerstone-vagrant']['project']}-vhost]" 30 | end 31 | 32 | # add vagrant's vendor/bin to the path variable 33 | # If you compose in phpunit it will be available in your path etc... 34 | execute "#{node['cornerstone-vagrant']['project']}-dev-path-setup" do 35 | command 'echo export PATH=/vagrant/vendor/bin:$PATH >> /etc/profile' 36 | action :run 37 | end 38 | 39 | # Enable the vhost and restart apache 40 | execute "#{node['cornerstone-vagrant']['project']}-vhost" do 41 | command "a2ensite #{node['cornerstone-vagrant']['siteslug']}.com.vhost" 42 | action :nothing # this should only be triggered after composer-install 43 | notifies :restart, 'service[apache2]', :immediately 44 | end 45 | -------------------------------------------------------------------------------- /attributes/default.rb: -------------------------------------------------------------------------------- 1 | # 2 | # Cookbook Name:: cornerstone-vagrant 3 | # Attributes:: cornerstone-vagrant 4 | # 5 | # Copyright 2014, 6 | # 7 | # Licensed under the Apache License, Version 2.0 (the "License"); 8 | # you may not use this file except in compliance with the License. 9 | # You may obtain a copy of the License at 10 | # 11 | # http://www.apache.org/licenses/LICENSE-2.0 12 | # 13 | # Unless required by applicable law or agreed to in writing, software 14 | # distributed under the License is distributed on an "AS IS" BASIS, 15 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | # See the License for the specific language governing permissions and 17 | # limitations under the License. 18 | # 19 | 20 | include_attribute 'php-webserver' 21 | include_attribute 'web-developer-cookbook' 22 | 23 | # make sure we always listen on both 80 and 443 to avoid 24 | # thrashing the port config and restarting apache all the time 25 | node.default['apache']['listen_ports'] = [80, 443] 26 | # turn extended status on 27 | node.default['apache']['ext_status'] = true 28 | # turn keepalive off 29 | node.default['apache']['keepalive'] = 'Off' 30 | 31 | # set apache group 32 | node.default['cornerstone-vagrant']['www-user-group-name'] = 'www-user' 33 | set['apache']['group'] = node['cornerstone-vagrant']['www-user-group-name'] 34 | node.default['apache']['group'] = node['cornerstone-vagrant']['www-user-group-name'] 35 | 36 | # What project are we deploying? 37 | node.default['cornerstone-vagrant']['project'] = '' 38 | 39 | # which configuration should be loaded? 40 | node.default['cornerstone-vagrant']['environment'] = 'vagrant' 41 | 42 | # the slug is used to determine things like vhost name and whatnot 43 | # this is almost always the same as the project name 44 | node.default['cornerstone-vagrant']['siteslug'] = node['cornerstone-vagrant']['project'] 45 | 46 | # give composer 20 minutes to finish in case 47 | # there are any long running pre/post scripts etc.. 48 | node.default['cornerstone-vagrant']['composer-timeout'] = 1200 49 | 50 | # Use this setting to add a custom git domain to your known hosts. 51 | # E.G. 'www.mygitrepo.com' 52 | # This will allow the recipe to compose repos from 53 | # 'www.mygitrepo.com' without composer 54 | # asking for user input to verify the RSA key. 55 | node.default['cornerstone-vagrant']['known_host'] = '' 56 | 57 | # Tools to install for developers 58 | node.default['platform_packages']['pkgs'] = [ 59 | { 60 | 'name' => 'vim', 61 | 'action' => 'install' 62 | }, 63 | { 64 | 'name' => 'dos2unix', 65 | 'action' => 'install' 66 | }, 67 | { 68 | 'name' => 'wireshark', 69 | 'action' => 'install' 70 | }, 71 | { 72 | 'name' => 'tshark', 73 | 'action' => 'install' 74 | }, 75 | { 76 | 'name' => 'python-setuptools', 77 | 'action' => 'install' 78 | }, 79 | { 80 | 'name' => 'python-dev', 81 | 'action' => 'install' 82 | } 83 | ] 84 | -------------------------------------------------------------------------------- /Berksfile.lock: -------------------------------------------------------------------------------- 1 | DEPENDENCIES 2 | chef-ruby-ppa 3 | git: https://github.com/oakensoul/chef-ruby-ppa.git 4 | revision: db7880d19e44353aa0afb7bc964ff4205e16af2c 5 | cornerstone-vagrant 6 | path: . 7 | metadata: true 8 | git 9 | git: https://github.com/jssjr/git.git 10 | revision: b1bca76aaf3a3a2131744f17f6e5087e22fa3c40 11 | grunt_cookbook 12 | git: https://github.com/MattSurabian/grunt_cookbook.git 13 | revision: b3f543346cfbb99d83baff6604dcef595254e777 14 | nodejs 15 | git: https://github.com/redguide/nodejs.git 16 | revision: 91d8d11f189d13815d56af5700168e1cad88ae7f 17 | php-webserver 18 | git: https://github.com/turbine-web/php-webserver.git 19 | revision: 8be1397d1e06e610eb4218c1087feefecf5d9817 20 | platform_packages 21 | web-developer-cookbook 22 | git: https://github.com/turbine-web/web-developer-cookbook.git 23 | revision: f317e48ddec231dbdd8252d41474a927fef0d75d 24 | 25 | GRAPH 26 | 7-zip (1.0.2) 27 | windows (>= 1.2.2) 28 | apache2 (2.0.0) 29 | iptables (>= 0.0.0) 30 | logrotate (>= 0.0.0) 31 | pacman (>= 0.0.0) 32 | apt (2.5.3) 33 | ark (0.9.0) 34 | 7-zip (>= 0.0.0) 35 | windows (>= 0.0.0) 36 | build-essential (2.0.6) 37 | chef-ruby-ppa (1.0.0) 38 | apt (>= 0.0.0) 39 | chef-sugar (2.2.0) 40 | chef_gem (0.1.0) 41 | chef_handler (1.1.6) 42 | composer (1.0.4) 43 | php (>= 0.0.0) 44 | windows (>= 0.0.0) 45 | cornerstone-vagrant (1.0.0) 46 | php-webserver (>= 0.0.0) 47 | platform_packages (>= 0.0.0) 48 | web-developer-cookbook (>= 0.0.0) 49 | dmg (2.2.0) 50 | git (4.0.3) 51 | build-essential (>= 0.0.0) 52 | dmg (>= 0.0.0) 53 | runit (>= 1.0.0) 54 | windows (>= 0.0.0) 55 | yum (~> 3.0) 56 | yum-epel (>= 0.0.0) 57 | grunt_cookbook (1.0.0) 58 | nodejs (>= 0.0.0) 59 | iis (2.1.2) 60 | windows (>= 1.2.6) 61 | iptables (0.13.2) 62 | java (1.27.0) 63 | logrotate (1.6.0) 64 | mysql (5.4.4) 65 | yum-mysql-community (>= 0.0.0) 66 | nodejs (2.1.1) 67 | apt (>= 0.0.0) 68 | ark (>= 0.0.0) 69 | build-essential (>= 0.0.0) 70 | yum-epel (>= 0.0.0) 71 | pacman (1.1.1) 72 | php (1.4.6) 73 | build-essential (>= 0.0.0) 74 | iis (>= 0.0.0) 75 | mysql (>= 0.0.0) 76 | windows (>= 0.0.0) 77 | xml (>= 0.0.0) 78 | yum-epel (>= 0.0.0) 79 | php-webserver (1.0.0) 80 | apache2 (>= 0.0.0) 81 | apt (>= 0.0.0) 82 | build-essential (>= 0.0.0) 83 | composer (>= 0.0.0) 84 | platform_packages (0.4.2) 85 | runit (1.5.10) 86 | build-essential (>= 0.0.0) 87 | yum (~> 3.0) 88 | yum-epel (>= 0.0.0) 89 | rvm (0.9.2) 90 | chef_gem (>= 0.0.0) 91 | java (>= 0.0.0) 92 | web-developer-cookbook (1.0.2) 93 | chef-ruby-ppa (>= 0.0.0) 94 | git (>= 0.0.0) 95 | grunt_cookbook (>= 0.0.0) 96 | nodejs (>= 0.0.0) 97 | rvm (>= 0.0.0) 98 | windows (1.34.2) 99 | chef_handler (>= 0.0.0) 100 | xml (1.2.6) 101 | build-essential (>= 0.0.0) 102 | chef-sugar (>= 0.0.0) 103 | yum (3.2.4) 104 | yum-epel (0.4.0) 105 | yum (~> 3.0) 106 | yum-mysql-community (0.1.10) 107 | yum (>= 3.0) 108 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Cornerstone Vagrant 2 | ============= 3 | 4 | Cookbook for deploying Cornerstone based ZF2 applications to vagrant VMs. This cookbook layers a Cornerstone application and several helpful 5 | developer tools on top of the php-webserver cookbook. 6 | 7 | Cookbooks 8 | --------- 9 | 10 | * [web-developer-cookbook](https://github.com/turbine-web/web-developer-cookbook) 11 | * [php-webserver](https://github.com/turbine-web/php-webserver) 12 | * [platform_packages](https://github.com/fnichol/chef-platform_packages) 13 | 14 | Attributes 15 | ---------- 16 | 17 | * `node['cornerstone-vagrant']['project']` - The project name ex. 'cornerstone' 18 | * `node['cornerstone-vagrant']['environment']` - Application environment, ex. 'vagrant' 19 | * `node['cornerstone-vagrant']['siteslug']` - The hostname that comes before '.com' usually the same as the `project` 20 | * `node['cornerstone-vagrant']['www-user-group-name']` - The apache user group name 21 | * `node['cornerstone-vagrant']['known-host']` - A host that should be added to the known_hosts file before composer is run 22 | 23 | Recipes 24 | ------- 25 | 26 | ## cornerstone-vagrant:default 27 | 28 | The default recipe should be used to setup a Cornerstone based ZF2 application on a vagrant virtual machine. First it creates a 29 | php webserver virtual machine via the [php-webserver](https://github.com/turbine-web/php-webserver) cookbook and then it 30 | adds a variety of helpful tools to the server. 31 | 32 | The first set of tools is installed by the [web-developer-cookbook](https://github.com/turbine-web/web-developer-cookbook) 33 | which installs the following by default: 34 | 35 | * `git` 36 | * `nodejs` 37 | * `grunt` 38 | * `ruby` 39 | * `casperjs` 40 | 41 | The second set of tools is installed by the [platform_packages](https://github.com/fnichol/chef-platform_packages) cookbook. 42 | which installs the following tools by default: 43 | 44 | * `vim` 45 | * `dos2unix` 46 | * `wireshark` 47 | * `tshark` 48 | 49 | Finally the recipe assumes the application code is available at /vagrant it will `cd` there and execute the following tasks: 50 | 51 | * Add a configurable git server to the ssh known hosts (optional) 52 | * `composer install` - downloads application's dependencies 53 | * `application initialize` - generates the vhost 54 | * `a2ensite` - enables the vhost 55 | * `apache2 restart` - restarts apache. 56 | 57 | Usage 58 | ----- 59 | 60 | This cookbook will composer install, initialize the application, create the vhost, enable the site, and restart apache. 61 | To use it simply add `cornerstone-vagrant` to your vagrant file's run list and your Berksfile. 62 | 63 | License 64 | ------------------ 65 | 66 | Copyright:: 2014 web-masons Contributors 67 | 68 | Licensed under the Apache License, Version 2.0 (the 'License'); 69 | you may not use this file except in compliance with the License. 70 | You may obtain a copy of the License at 71 | 72 | http://www.apache.org/licenses/LICENSE-2.0 73 | 74 | Unless required by applicable law or agreed to in writing, software 75 | distributed under the License is distributed on an 'AS IS' BASIS, 76 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 77 | See the License for the specific language governing permissions and 78 | limitations under the License. 79 | 80 | Contributing 81 | ------------ 82 | 83 | 1. Fork it 84 | 2. Create your feature branch (`git checkout -b my-new-feature`) 85 | 3. Commit your changes (`git commit -am 'Add some feature'`) 86 | 4. Push to the branch (`git push origin my-new-feature`) 87 | 5. Create new Pull Request -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (C) 2014 web-masons Contributors 2 | 3 | Apache License 4 | Version 2.0, January 2004 5 | http://www.apache.org/licenses/ 6 | 7 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 8 | 9 | 1. Definitions. 10 | 11 | "License" shall mean the terms and conditions for use, reproduction, 12 | and distribution as defined by Sections 1 through 9 of this document. 13 | 14 | "Licensor" shall mean the copyright owner or entity authorized by 15 | the copyright owner that is granting the License. 16 | 17 | "Legal Entity" shall mean the union of the acting entity and all 18 | other entities that control, are controlled by, or are under common 19 | control with that entity. For the purposes of this definition, 20 | "control" means (i) the power, direct or indirect, to cause the 21 | direction or management of such entity, whether by contract or 22 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 23 | outstanding shares, or (iii) beneficial ownership of such entity. 24 | 25 | "You" (or "Your") shall mean an individual or Legal Entity 26 | exercising permissions granted by this License. 27 | 28 | "Source" form shall mean the preferred form for making modifications, 29 | including but not limited to software source code, documentation 30 | source, and configuration files. 31 | 32 | "Object" form shall mean any form resulting from mechanical 33 | transformation or translation of a Source form, including but 34 | not limited to compiled object code, generated documentation, 35 | and conversions to other media types. 36 | 37 | "Work" shall mean the work of authorship, whether in Source or 38 | Object form, made available under the License, as indicated by a 39 | copyright notice that is included in or attached to the work 40 | (an example is provided in the Appendix below). 41 | 42 | "Derivative Works" shall mean any work, whether in Source or Object 43 | form, that is based on (or derived from) the Work and for which the 44 | editorial revisions, annotations, elaborations, or other modifications 45 | represent, as a whole, an original work of authorship. For the purposes 46 | of this License, Derivative Works shall not include works that remain 47 | separable from, or merely link (or bind by name) to the interfaces of, 48 | the Work and Derivative Works thereof. 49 | 50 | "Contribution" shall mean any work of authorship, including 51 | the original version of the Work and any modifications or additions 52 | to that Work or Derivative Works thereof, that is intentionally 53 | submitted to Licensor for inclusion in the Work by the copyright owner 54 | or by an individual or Legal Entity authorized to submit on behalf of 55 | the copyright owner. For the purposes of this definition, "submitted" 56 | means any form of electronic, verbal, or written communication sent 57 | to the Licensor or its representatives, including but not limited to 58 | communication on electronic mailing lists, source code control systems, 59 | and issue tracking systems that are managed by, or on behalf of, the 60 | Licensor for the purpose of discussing and improving the Work, but 61 | excluding communication that is conspicuously marked or otherwise 62 | designated in writing by the copyright owner as "Not a Contribution." 63 | 64 | "Contributor" shall mean Licensor and any individual or Legal Entity 65 | on behalf of whom a Contribution has been received by Licensor and 66 | subsequently incorporated within the Work. 67 | 68 | 2. Grant of Copyright License. Subject to the terms and conditions of 69 | this License, each Contributor hereby grants to You a perpetual, 70 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 71 | copyright license to reproduce, prepare Derivative Works of, 72 | publicly display, publicly perform, sublicense, and distribute the 73 | Work and such Derivative Works in Source or Object form. 74 | 75 | 3. Grant of Patent License. Subject to the terms and conditions of 76 | this License, each Contributor hereby grants to You a perpetual, 77 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 78 | (except as stated in this section) patent license to make, have made, 79 | use, offer to sell, sell, import, and otherwise transfer the Work, 80 | where such license applies only to those patent claims licensable 81 | by such Contributor that are necessarily infringed by their 82 | Contribution(s) alone or by combination of their Contribution(s) 83 | with the Work to which such Contribution(s) was submitted. If You 84 | institute patent litigation against any entity (including a 85 | cross-claim or counterclaim in a lawsuit) alleging that the Work 86 | or a Contribution incorporated within the Work constitutes direct 87 | or contributory patent infringement, then any patent licenses 88 | granted to You under this License for that Work shall terminate 89 | as of the date such litigation is filed. 90 | 91 | 4. Redistribution. You may reproduce and distribute copies of the 92 | Work or Derivative Works thereof in any medium, with or without 93 | modifications, and in Source or Object form, provided that You 94 | meet the following conditions: 95 | 96 | (a) You must give any other recipients of the Work or 97 | Derivative Works a copy of this License; and 98 | 99 | (b) You must cause any modified files to carry prominent notices 100 | stating that You changed the files; and 101 | 102 | (c) You must retain, in the Source form of any Derivative Works 103 | that You distribute, all copyright, patent, trademark, and 104 | attribution notices from the Source form of the Work, 105 | excluding those notices that do not pertain to any part of 106 | the Derivative Works; and 107 | 108 | (d) If the Work includes a "NOTICE" text file as part of its 109 | distribution, then any Derivative Works that You distribute must 110 | include a readable copy of the attribution notices contained 111 | within such NOTICE file, excluding those notices that do not 112 | pertain to any part of the Derivative Works, in at least one 113 | of the following places: within a NOTICE text file distributed 114 | as part of the Derivative Works; within the Source form or 115 | documentation, if provided along with the Derivative Works; or, 116 | within a display generated by the Derivative Works, if and 117 | wherever such third-party notices normally appear. The contents 118 | of the NOTICE file are for informational purposes only and 119 | do not modify the License. You may add Your own attribution 120 | notices within Derivative Works that You distribute, alongside 121 | or as an addendum to the NOTICE text from the Work, provided 122 | that such additional attribution notices cannot be construed 123 | as modifying the License. 124 | 125 | You may add Your own copyright statement to Your modifications and 126 | may provide additional or different license terms and conditions 127 | for use, reproduction, or distribution of Your modifications, or 128 | for any such Derivative Works as a whole, provided Your use, 129 | reproduction, and distribution of the Work otherwise complies with 130 | the conditions stated in this License. 131 | 132 | 5. Submission of Contributions. Unless You explicitly state otherwise, 133 | any Contribution intentionally submitted for inclusion in the Work 134 | by You to the Licensor shall be under the terms and conditions of 135 | this License, without any additional terms or conditions. 136 | Notwithstanding the above, nothing herein shall supersede or modify 137 | the terms of any separate license agreement you may have executed 138 | with Licensor regarding such Contributions. 139 | 140 | 6. Trademarks. This License does not grant permission to use the trade 141 | names, trademarks, service marks, or product names of the Licensor, 142 | except as required for reasonable and customary use in describing the 143 | origin of the Work and reproducing the content of the NOTICE file. 144 | 145 | 7. Disclaimer of Warranty. Unless required by applicable law or 146 | agreed to in writing, Licensor provides the Work (and each 147 | Contributor provides its Contributions) on an "AS IS" BASIS, 148 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 149 | implied, including, without limitation, any warranties or conditions 150 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 151 | PARTICULAR PURPOSE. You are solely responsible for determining the 152 | appropriateness of using or redistributing the Work and assume any 153 | risks associated with Your exercise of permissions under this License. 154 | 155 | 8. Limitation of Liability. In no event and under no legal theory, 156 | whether in tort (including negligence), contract, or otherwise, 157 | unless required by applicable law (such as deliberate and grossly 158 | negligent acts) or agreed to in writing, shall any Contributor be 159 | liable to You for damages, including any direct, indirect, special, 160 | incidental, or consequential damages of any character arising as a 161 | result of this License or out of the use or inability to use the 162 | Work (including but not limited to damages for loss of goodwill, 163 | work stoppage, computer failure or malfunction, or any and all 164 | other commercial damages or losses), even if such Contributor 165 | has been advised of the possibility of such damages. 166 | 167 | 9. Accepting Warranty or Additional Liability. While redistributing 168 | the Work or Derivative Works thereof, You may choose to offer, 169 | and charge a fee for, acceptance of support, warranty, indemnity, 170 | or other liability obligations and/or rights consistent with this 171 | License. However, in accepting such obligations, You may act only 172 | on Your own behalf and on Your sole responsibility, not on behalf 173 | of any other Contributor, and only if You agree to indemnify, 174 | defend, and hold each Contributor harmless for any liability 175 | incurred by, or claims asserted against, such Contributor by reason 176 | of your accepting any such warranty or additional liability. 177 | 178 | END OF TERMS AND CONDITIONS 179 | 180 | APPENDIX: How to apply the Apache License to your work. 181 | 182 | To apply the Apache License to your work, attach the following 183 | boilerplate notice, with the fields enclosed by brackets "[]" 184 | replaced with your own identifying information. (Don't include 185 | the brackets!) The text should be enclosed in the appropriate 186 | comment syntax for the file format. We also recommend that a 187 | file or class name and description of purpose be included on the 188 | same "printed page" as the copyright notice for easier 189 | identification within third-party archives. 190 | 191 | Copyright [yyyy] [name of copyright owner] 192 | 193 | Licensed under the Apache License, Version 2.0 (the "License"); 194 | you may not use this file except in compliance with the License. 195 | You may obtain a copy of the License at 196 | 197 | http://www.apache.org/licenses/LICENSE-2.0 198 | 199 | Unless required by applicable law or agreed to in writing, software 200 | distributed under the License is distributed on an "AS IS" BASIS, 201 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 202 | See the License for the specific language governing permissions and 203 | limitations under the License. --------------------------------------------------------------------------------