bee 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
data/README CHANGED
@@ -25,4 +25,4 @@ or go to URL http://www.apache.org/licenses/LICENSE-2.0).
25
25
 
26
26
  = Copyright
27
27
 
28
- bee version 0.4.0 (C) Michel Casabianca & Contributors - 2006-2007
28
+ bee version 0.5.0 (C) Michel Casabianca & Contributors - 2006-2008
data/bin/bee CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- # Copyright 2006-2007 Michel Casabianca <michel.casabianca@gmail.com>
3
+ # Copyright 2006-2008 Michel Casabianca <michel.casabianca@gmail.com>
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
6
6
  # you may not use this file except in compliance with the License.
data/bin/bee.bat CHANGED
@@ -7,7 +7,7 @@ goto endofruby
7
7
  goto endofruby
8
8
  #!/usr/bin/env ruby
9
9
 
10
- # Copyright 2006-2007 Michel Casabianca <michel.casabianca@gmail.com>
10
+ # Copyright 2006-2008 Michel Casabianca <michel.casabianca@gmail.com>
11
11
  #
12
12
  # Licensed under the Apache License, Version 2.0 (the "License");
13
13
  # you may not use this file except in compliance with the License.
data/egg/package.yml ADDED
@@ -0,0 +1,100 @@
1
+ - build: package
2
+ default: all
3
+ description: "Generate a bee package project"
4
+
5
+ - properties:
6
+ - project_name: bee_hello
7
+ - description: |
8
+ This script will create a project for a bee package with sample task (in
9
+ 'lib' directory) and template (in 'egg' directory). A unit test for the
10
+ task is generated in 'test' directory. Generated build file has a target
11
+ 'test' to run unit tests, a target 'gem' to generate a gem archive, a
12
+ 'clean' target to clean generated files and a 'install' target to build
13
+ and install gem.
14
+
15
+ - target: welcome
16
+ description: "Print information message"
17
+ script:
18
+ - print: :description
19
+
20
+ - target: prompt
21
+ depends: welcome
22
+ description: "Prompt for project information"
23
+ script:
24
+ - print: "Please answer following questions to generate the project:"
25
+ - prompt:
26
+ message: "What is the project's name?"
27
+ default: :project_name
28
+ property: project_name
29
+
30
+ - target: generate
31
+ depends: prompt
32
+ description: "Generate project"
33
+ script:
34
+ - print: "Generating project..."
35
+ - rb: |
36
+ project_name = "bee_#{project_name}" if not project_name =~ /^bee_/
37
+ error "A directory named '#{project_name}' already exists, aborting" if
38
+ File.exists?("#{here}/#{project_name}")
39
+ project_short_name = project_name[4 .. -1]
40
+ - mkdir: "#{here}/#{project_name}"
41
+ - erb:
42
+ src: "#{base}/package/build.erb"
43
+ dest: "#{here}/#{project_name}/build.yml"
44
+ - cp:
45
+ src: "#{base}/package/gem_spec.erb"
46
+ dest: "#{here}/#{project_name}/gem.spec.erb"
47
+ - cp:
48
+ src: "#{base}/package/readme.erb"
49
+ dest: "#{here}/#{project_name}/readme.erb"
50
+ - cp:
51
+ src: "#{base}/package/license"
52
+ dest: "#{here}/#{project_name}/LICENSE"
53
+ - mkdir: "#{here}/#{project_name}/lib"
54
+ - erb:
55
+ src: "#{base}/package/bee_task.erb"
56
+ dest: "#{here}/#{project_name}/lib/bee_task_#{project_short_name}.rb"
57
+ - mkdir: "#{here}/#{project_name}/test"
58
+ - erb:
59
+ src: "#{base}/package/test.erb"
60
+ dest: "#{here}/#{project_name}/test/tc_bee_task_#{project_short_name}.rb"
61
+ - cp:
62
+ src: "#{base}/package/test_suite.rb"
63
+ dest: "#{here}/#{project_name}/test/ts_#{project_name}.rb"
64
+ - cp:
65
+ src: "#{base}/package/test_build.rb"
66
+ dest: "#{here}/#{project_name}/test/test_build.rb"
67
+ - cp:
68
+ src: "#{base}/package/test_build_listener.rb"
69
+ dest: "#{here}/#{project_name}/test/test_build_listener.rb"
70
+ - erb:
71
+ src: "#{base}/package/test_build.erb"
72
+ dest: "#{here}/#{project_name}/test/build.yml"
73
+ - mkdir: "#{here}/#{project_name}/egg"
74
+ - cp:
75
+ src: "#{base}/package/egg.yml"
76
+ dest: "#{here}/#{project_name}/egg/#{project_short_name}.yml"
77
+ - mkdir: "#{here}/#{project_name}/egg/#{project_short_name}"
78
+ - cp:
79
+ src: "#{base}/package/egg_build.erb"
80
+ dest: "#{here}/#{project_name}/egg/#{project_short_name}/build.erb"
81
+ - cp:
82
+ src: "#{base}/package/egg_launcher.erb"
83
+ dest: "#{here}/#{project_name}/egg/#{project_short_name}/launcher.erb"
84
+ - cp:
85
+ src: "#{base}/package/egg_script.rb"
86
+ dest: "#{here}/#{project_name}/egg/#{project_short_name}/script.rb"
87
+
88
+ - target: customization
89
+ depends: generate
90
+ description: "Print information about project customization"
91
+ script:
92
+ - print: |
93
+ Project has been generated in directory '#{project_name}'. Please edit
94
+ build file '#{project_name}/build.yml' and customize properties that are
95
+ not set (with a value '~'). Type 'bee -b' to print information about
96
+ generated build file.
97
+ Enjoy!
98
+
99
+ - target: all
100
+ depends: [welcome, prompt, generate, customization]
@@ -0,0 +1,25 @@
1
+ require 'bee_task'
2
+
3
+ module Bee
4
+
5
+ module Task
6
+
7
+ # Package for <%= project_short_name.capitalize %> tasks.
8
+ class <%= project_short_name.capitalize %> < Package
9
+
10
+ # Sample hello task that prints greeting message on console.
11
+ #
12
+ # - who: who to greet.
13
+ #
14
+ # Example
15
+ #
16
+ # - <%= project_short_name %>.hello: "World"
17
+ def hello(who)
18
+ puts "Hello #{who}!"
19
+ end
20
+
21
+ end
22
+
23
+ end
24
+
25
+ end
@@ -0,0 +1,70 @@
1
+ # Build info
2
+ - build: <%= project_name %>
3
+ default: all
4
+ description: |
5
+ Project for bee package <%= project_name %>
6
+
7
+ # Build properties
8
+ - properties:
9
+ - name: <%= project_name %>
10
+ - version: 0.0.1
11
+ - author: ~
12
+ - years: ~
13
+ - platform: "Gem::Platform::RUBY"
14
+ - summary: ~
15
+ - email: ~
16
+ - homepage: "http://<%= project_name %>.rubyforge.org"
17
+ - rubyforge: ~
18
+ - dependencies:
19
+ "bee": [">= 0.5.0"]
20
+ - lib_dir: "lib"
21
+ - test_dir: "test"
22
+ - build_dir: "build"
23
+ - readme_erb: "readme.erb"
24
+ - readme_file: "#{build_dir}/README"
25
+ - license_file: "LICENSE"
26
+ - gem_spec_erb: "gem.spec.erb"
27
+ - gem_spec: "#{build_dir}/gem.spec"
28
+ - gem_package: "#{name}-#{version}.gem"
29
+ - clean_dirs: :build_dir
30
+ - clean_files: ""
31
+
32
+ # Build targets
33
+ - target: test
34
+ description: Run unit tests
35
+ script:
36
+ - mkdir: :build_dir
37
+ - test:
38
+ includes: "#{test_dir}/**/tc_*.rb"
39
+ dir: :test_dir
40
+
41
+ - target: gem
42
+ depends: [clean, test]
43
+ description: Generate Gem package
44
+ script:
45
+ - mkdir: :build_dir
46
+ - erb: { src: :readme_erb, dest: :readme_file }
47
+ - erb: { src: :gem_spec_erb, dest: :gem_spec }
48
+ - gem: :gem_spec
49
+ - mv: { src: :gem_package, dest: :build_dir }
50
+
51
+ - target: install
52
+ depends: gem
53
+ description: Install generated gem
54
+ script:
55
+ - "sudo gem install -l #{build_dir}/#{gem_package}"
56
+
57
+ - target: uninstall
58
+ description: Uninstall gem
59
+ script:
60
+ - "sudo gem uninstall -x #{name}"
61
+
62
+ - target: clean
63
+ description: Clean generated files
64
+ script:
65
+ - rmdir: :clean_dirs
66
+ - rm: :clean_files
67
+
68
+ - target: all
69
+ depends: [clean, gem]
70
+ description: Generate the whole project
@@ -0,0 +1,58 @@
1
+ - build: hello
2
+ default: all
3
+ description: "Generate a project for a Ruby script"
4
+
5
+ - properties:
6
+ - project_name: hello
7
+ - description: |
8
+ This script will create a project for a Ruby script that might be
9
+ distributed as a gem. Generated build file has a single target gem
10
+ to generate the distribution gem.
11
+
12
+ - target: welcome
13
+ description: "Print information message"
14
+ script:
15
+ - print: :description
16
+
17
+ - target: prompt
18
+ depends: welcome
19
+ description: "Prompt for project information"
20
+ script:
21
+ - print: "Please answer following questions to generate the project:"
22
+ - prompt:
23
+ message: "What is the project's name?"
24
+ default: :project_name
25
+ property: project_name
26
+
27
+ - target: generate
28
+ depends: prompt
29
+ description: "Generate project"
30
+ script:
31
+ - print: "Generating project..."
32
+ - rb: |
33
+ error "A directory named '#{project_name}' already exists, aborting" if
34
+ File.exists?("#{here}/#{project_name}")
35
+ name = "<%= name %>"
36
+ - mkdir: "#{here}/#{project_name}"
37
+ - mkdir: "#{here}/#{project_name}/bin"
38
+ - mkdir: "#{here}/#{project_name}/lib"
39
+ - erb:
40
+ src: "#{base}/hello/build.erb"
41
+ dest: "#{here}/#{project_name}/build.yml"
42
+ - cp:
43
+ includes: "#{base}/hello/script.rb"
44
+ dest: "#{here}/#{project_name}/lib/#{project_name}.rb"
45
+ - erb:
46
+ src: "#{base}/hello/launcher.erb"
47
+ dest: "#{here}/#{project_name}/bin/#{project_name}"
48
+
49
+ - target: customization
50
+ depends: generate
51
+ description: "Print information about project customization"
52
+ script:
53
+ - print: |
54
+ Project has been generated in directory '#{project_name}'. Type 'bee -b'
55
+ to print information about generated build file. Enjoy!
56
+
57
+ - target: all
58
+ depends: [welcome, prompt, generate, customization]
@@ -0,0 +1,57 @@
1
+ - build: <%= project_name %>
2
+ description: "Project to generate a gem for a Ruby script"
3
+ default: all
4
+
5
+ - properties:
6
+ - name: <%= project_name %>
7
+ - version: 0.0.1
8
+ - build: build
9
+ - gem_spec: "#{build}/gem_spec"
10
+ - gem_erb: |
11
+ require 'rubygems'
12
+ SPEC = Gem::Specification.new do |spec|
13
+ spec.name = '<%= name %>'
14
+ spec.version = '0.0.1'
15
+ spec.platform = 'ruby'
16
+ spec.summary = 'summary'
17
+ spec.author = 'author'
18
+ spec.email = 'email'
19
+ spec.homepage = 'homepage'
20
+ spec.rubyforge_project = 'rubyforge project'
21
+ spec.require_path = 'lib'
22
+ spec.files = Dir.glob('{bin,lib}/*')
23
+ spec.has_rdoc = true
24
+ spec.executables = ['<%= name %>']
25
+ end
26
+
27
+ - target: gem
28
+ description: "Generate gem archive"
29
+ script:
30
+ - mkdir: :build
31
+ - erb:
32
+ source: :gem_erb
33
+ dest: :gem_spec
34
+ - gem: :gem_spec
35
+ - mv:
36
+ src: "*.gem"
37
+ dest: :build
38
+
39
+ - target: install
40
+ depends: gem
41
+ description: Install generated gem
42
+ script:
43
+ - "sudo gem install #{build}/#{name}-#{version}.gem"
44
+
45
+ - target: uninstall
46
+ description: Uninstall gem
47
+ script:
48
+ - "sudo gem uninstall -x #{name}"
49
+
50
+ - target: clean
51
+ description: Clean generated files
52
+ script:
53
+ - rmdir: :build
54
+
55
+ - target: all
56
+ depends: [clean, gem, install]
57
+ description: Generate and install the gem
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # Launching script.
3
+
4
+ $:.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
5
+
6
+ load '<%= project_name %>.rb'
@@ -0,0 +1,31 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # Greet a given person.
4
+ # - who: the person to greey.
5
+ def hello(who)
6
+ return "Hello #{who}!"
7
+ end
8
+
9
+ # command line help
10
+ HELP = 'hello [-h] who ...
11
+ -h To print this help screen
12
+ who The person(s) to greet'
13
+
14
+ # parse command line arguments
15
+ require 'getoptlong'
16
+ opts = GetoptLong.new(['--help', '-h', GetoptLong::NO_ARGUMENT])
17
+ begin
18
+ opts.each do |opt, arg|
19
+ case opt
20
+ when '--help'
21
+ puts HELP
22
+ exit
23
+ end
24
+ end
25
+ rescue
26
+ puts HELP
27
+ exit
28
+ end
29
+ for who in ARGV
30
+ puts hello(who)
31
+ end
@@ -0,0 +1,23 @@
1
+ require 'rubygems'
2
+
3
+ SPEC = Gem::Specification.new do |spec|
4
+ spec.name = '<%= name %>'
5
+ spec.version = '<%= version %>'
6
+ spec.author = '<%= author %>'
7
+ spec.email = '<%= email %>'
8
+ spec.homepage = '<%= homepage %>'
9
+ spec.rubyforge_project = '<%= rubyforge %>'
10
+ spec.platform = <%= platform %>
11
+ spec.summary = '<%= summary %>'
12
+ spec.files = Dir.glob('{lib,test,egg}/**/*').delete_if do |file|
13
+ file =~ /CVS/
14
+ end
15
+ spec.require_path = '<%= lib_dir %>'
16
+ spec.test_file = 'test/ts_<%= name %>.rb'
17
+ spec.has_rdoc = true
18
+ spec.extra_rdoc_files = ['<%= readme_file %>', '<%= license_file %>']
19
+ <% for key in dependencies.keys.sort %>
20
+ spec.add_dependency("<%= key %>", <%= dependencies[key].inspect %>)
21
+ <% end %>
22
+ spec.post_install_message = 'Enjoy bee!'
23
+ end
@@ -0,0 +1,202 @@
1
+
2
+ Apache License
3
+ Version 2.0, January 2004
4
+ http://www.apache.org/licenses/
5
+
6
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
7
+
8
+ 1. Definitions.
9
+
10
+ "License" shall mean the terms and conditions for use, reproduction,
11
+ and distribution as defined by Sections 1 through 9 of this document.
12
+
13
+ "Licensor" shall mean the copyright owner or entity authorized by
14
+ the copyright owner that is granting the License.
15
+
16
+ "Legal Entity" shall mean the union of the acting entity and all
17
+ other entities that control, are controlled by, or are under common
18
+ control with that entity. For the purposes of this definition,
19
+ "control" means (i) the power, direct or indirect, to cause the
20
+ direction or management of such entity, whether by contract or
21
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
22
+ outstanding shares, or (iii) beneficial ownership of such entity.
23
+
24
+ "You" (or "Your") shall mean an individual or Legal Entity
25
+ exercising permissions granted by this License.
26
+
27
+ "Source" form shall mean the preferred form for making modifications,
28
+ including but not limited to software source code, documentation
29
+ source, and configuration files.
30
+
31
+ "Object" form shall mean any form resulting from mechanical
32
+ transformation or translation of a Source form, including but
33
+ not limited to compiled object code, generated documentation,
34
+ and conversions to other media types.
35
+
36
+ "Work" shall mean the work of authorship, whether in Source or
37
+ Object form, made available under the License, as indicated by a
38
+ copyright notice that is included in or attached to the work
39
+ (an example is provided in the Appendix below).
40
+
41
+ "Derivative Works" shall mean any work, whether in Source or Object
42
+ form, that is based on (or derived from) the Work and for which the
43
+ editorial revisions, annotations, elaborations, or other modifications
44
+ represent, as a whole, an original work of authorship. For the purposes
45
+ of this License, Derivative Works shall not include works that remain
46
+ separable from, or merely link (or bind by name) to the interfaces of,
47
+ the Work and Derivative Works thereof.
48
+
49
+ "Contribution" shall mean any work of authorship, including
50
+ the original version of the Work and any modifications or additions
51
+ to that Work or Derivative Works thereof, that is intentionally
52
+ submitted to Licensor for inclusion in the Work by the copyright owner
53
+ or by an individual or Legal Entity authorized to submit on behalf of
54
+ the copyright owner. For the purposes of this definition, "submitted"
55
+ means any form of electronic, verbal, or written communication sent
56
+ to the Licensor or its representatives, including but not limited to
57
+ communication on electronic mailing lists, source code control systems,
58
+ and issue tracking systems that are managed by, or on behalf of, the
59
+ Licensor for the purpose of discussing and improving the Work, but
60
+ excluding communication that is conspicuously marked or otherwise
61
+ designated in writing by the copyright owner as "Not a Contribution."
62
+
63
+ "Contributor" shall mean Licensor and any individual or Legal Entity
64
+ on behalf of whom a Contribution has been received by Licensor and
65
+ subsequently incorporated within the Work.
66
+
67
+ 2. Grant of Copyright License. Subject to the terms and conditions of
68
+ this License, each Contributor hereby grants to You a perpetual,
69
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
70
+ copyright license to reproduce, prepare Derivative Works of,
71
+ publicly display, publicly perform, sublicense, and distribute the
72
+ Work and such Derivative Works in Source or Object form.
73
+
74
+ 3. Grant of Patent License. Subject to the terms and conditions of
75
+ this License, each Contributor hereby grants to You a perpetual,
76
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
77
+ (except as stated in this section) patent license to make, have made,
78
+ use, offer to sell, sell, import, and otherwise transfer the Work,
79
+ where such license applies only to those patent claims licensable
80
+ by such Contributor that are necessarily infringed by their
81
+ Contribution(s) alone or by combination of their Contribution(s)
82
+ with the Work to which such Contribution(s) was submitted. If You
83
+ institute patent litigation against any entity (including a
84
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
85
+ or a Contribution incorporated within the Work constitutes direct
86
+ or contributory patent infringement, then any patent licenses
87
+ granted to You under this License for that Work shall terminate
88
+ as of the date such litigation is filed.
89
+
90
+ 4. Redistribution. You may reproduce and distribute copies of the
91
+ Work or Derivative Works thereof in any medium, with or without
92
+ modifications, and in Source or Object form, provided that You
93
+ meet the following conditions:
94
+
95
+ (a) You must give any other recipients of the Work or
96
+ Derivative Works a copy of this License; and
97
+
98
+ (b) You must cause any modified files to carry prominent notices
99
+ stating that You changed the files; and
100
+
101
+ (c) You must retain, in the Source form of any Derivative Works
102
+ that You distribute, all copyright, patent, trademark, and
103
+ attribution notices from the Source form of the Work,
104
+ excluding those notices that do not pertain to any part of
105
+ the Derivative Works; and
106
+
107
+ (d) If the Work includes a "NOTICE" text file as part of its
108
+ distribution, then any Derivative Works that You distribute must
109
+ include a readable copy of the attribution notices contained
110
+ within such NOTICE file, excluding those notices that do not
111
+ pertain to any part of the Derivative Works, in at least one
112
+ of the following places: within a NOTICE text file distributed
113
+ as part of the Derivative Works; within the Source form or
114
+ documentation, if provided along with the Derivative Works; or,
115
+ within a display generated by the Derivative Works, if and
116
+ wherever such third-party notices normally appear. The contents
117
+ of the NOTICE file are for informational purposes only and
118
+ do not modify the License. You may add Your own attribution
119
+ notices within Derivative Works that You distribute, alongside
120
+ or as an addendum to the NOTICE text from the Work, provided
121
+ that such additional attribution notices cannot be construed
122
+ as modifying the License.
123
+
124
+ You may add Your own copyright statement to Your modifications and
125
+ may provide additional or different license terms and conditions
126
+ for use, reproduction, or distribution of Your modifications, or
127
+ for any such Derivative Works as a whole, provided Your use,
128
+ reproduction, and distribution of the Work otherwise complies with
129
+ the conditions stated in this License.
130
+
131
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
132
+ any Contribution intentionally submitted for inclusion in the Work
133
+ by You to the Licensor shall be under the terms and conditions of
134
+ this License, without any additional terms or conditions.
135
+ Notwithstanding the above, nothing herein shall supersede or modify
136
+ the terms of any separate license agreement you may have executed
137
+ with Licensor regarding such Contributions.
138
+
139
+ 6. Trademarks. This License does not grant permission to use the trade
140
+ names, trademarks, service marks, or product names of the Licensor,
141
+ except as required for reasonable and customary use in describing the
142
+ origin of the Work and reproducing the content of the NOTICE file.
143
+
144
+ 7. Disclaimer of Warranty. Unless required by applicable law or
145
+ agreed to in writing, Licensor provides the Work (and each
146
+ Contributor provides its Contributions) on an "AS IS" BASIS,
147
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
148
+ implied, including, without limitation, any warranties or conditions
149
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
150
+ PARTICULAR PURPOSE. You are solely responsible for determining the
151
+ appropriateness of using or redistributing the Work and assume any
152
+ risks associated with Your exercise of permissions under this License.
153
+
154
+ 8. Limitation of Liability. In no event and under no legal theory,
155
+ whether in tort (including negligence), contract, or otherwise,
156
+ unless required by applicable law (such as deliberate and grossly
157
+ negligent acts) or agreed to in writing, shall any Contributor be
158
+ liable to You for damages, including any direct, indirect, special,
159
+ incidental, or consequential damages of any character arising as a
160
+ result of this License or out of the use or inability to use the
161
+ Work (including but not limited to damages for loss of goodwill,
162
+ work stoppage, computer failure or malfunction, or any and all
163
+ other commercial damages or losses), even if such Contributor
164
+ has been advised of the possibility of such damages.
165
+
166
+ 9. Accepting Warranty or Additional Liability. While redistributing
167
+ the Work or Derivative Works thereof, You may choose to offer,
168
+ and charge a fee for, acceptance of support, warranty, indemnity,
169
+ or other liability obligations and/or rights consistent with this
170
+ License. However, in accepting such obligations, You may act only
171
+ on Your own behalf and on Your sole responsibility, not on behalf
172
+ of any other Contributor, and only if You agree to indemnify,
173
+ defend, and hold each Contributor harmless for any liability
174
+ incurred by, or claims asserted against, such Contributor by reason
175
+ of your accepting any such warranty or additional liability.
176
+
177
+ END OF TERMS AND CONDITIONS
178
+
179
+ APPENDIX: How to apply the Apache License to your work.
180
+
181
+ To apply the Apache License to your work, attach the following
182
+ boilerplate notice, with the fields enclosed by brackets "[]"
183
+ replaced with your own identifying information. (Don't include
184
+ the brackets!) The text should be enclosed in the appropriate
185
+ comment syntax for the file format. We also recommend that a
186
+ file or class name and description of purpose be included on the
187
+ same "printed page" as the copyright notice for easier
188
+ identification within third-party archives.
189
+
190
+ Copyright [yyyy] [name of copyright owner]
191
+
192
+ Licensed under the Apache License, Version 2.0 (the "License");
193
+ you may not use this file except in compliance with the License.
194
+ You may obtain a copy of the License at
195
+
196
+ http://www.apache.org/licenses/LICENSE-2.0
197
+
198
+ Unless required by applicable law or agreed to in writing, software
199
+ distributed under the License is distributed on an "AS IS" BASIS,
200
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
201
+ See the License for the specific language governing permissions and
202
+ limitations under the License.