Permalink
Browse files

Initial import of released version 0.7.1

  • Loading branch information...
Kenneth Schmidt
Kenneth Schmidt committed Nov 30, 2009
0 parents commit f12b16ec405712592e512cefe3fba08dde370190
Showing with 34,974 additions and 0 deletions.
  1. +243 −0 CHANGES.txt
  2. +20 −0 MIT-LICENSE
  3. +61 −0 README.txt
  4. +13 −0 bin/kwalify
  5. +153 −0 contrib/inline-require
  6. +4,159 −0 contrib/kwalify
  7. +184 −0 doc-api/classes/CommandOptionError.html
  8. +325 −0 doc-api/classes/CommandOptionParser.html
  9. +292 −0 doc-api/classes/Kwalify.html
  10. +148 −0 doc-api/classes/Kwalify/AssertionError.html
  11. +297 −0 doc-api/classes/Kwalify/BaseError.html
  12. +461 −0 doc-api/classes/Kwalify/BaseParser.html
  13. +168 −0 doc-api/classes/Kwalify/CommandOptionError.html
  14. +223 −0 doc-api/classes/Kwalify/ErrorHelper.html
  15. +118 −0 doc-api/classes/Kwalify/HashInterface.html
  16. +105 −0 doc-api/classes/Kwalify/Json.html
  17. +111 −0 doc-api/classes/Kwalify/KwalifyError.html
  18. +339 −0 doc-api/classes/Kwalify/Main.html
  19. +448 −0 doc-api/classes/Kwalify/MetaValidator.html
  20. +155 −0 doc-api/classes/Kwalify/Parser.html
  21. +523 −0 doc-api/classes/Kwalify/PlainYamlParser.html
  22. +165 −0 doc-api/classes/Kwalify/PlainYamlParser/Alias.html
  23. +433 −0 doc-api/classes/Kwalify/Rule.html
  24. +148 −0 doc-api/classes/Kwalify/SchemaError.html
  25. +185 −0 doc-api/classes/Kwalify/SyntaxError.html
  26. +302 −0 doc-api/classes/Kwalify/Types.html
  27. +389 −0 doc-api/classes/Kwalify/Util.html
  28. +246 −0 doc-api/classes/Kwalify/Util/HashLike.html
  29. +330 −0 doc-api/classes/Kwalify/Util/OrderedHash.html
  30. +148 −0 doc-api/classes/Kwalify/ValidationError.html
  31. +381 −0 doc-api/classes/Kwalify/Validator.html
  32. +194 −0 doc-api/classes/Kwalify/Yaml.html
  33. +1,538 −0 doc-api/classes/Kwalify/Yaml/Parser.html
  34. +542 −0 doc-api/classes/Kwalify/YamlParser.html
  35. +119 −0 doc-api/classes/Kwalify/YamlSyntaxError.html
  36. +107 −0 doc-api/classes/Test.html
  37. +101 −0 doc-api/classes/Test/Unit.html
  38. +1 −0 doc-api/created.rid
  39. +172 −0 doc-api/files/__/README_txt.html
  40. +114 −0 doc-api/files/kwalify/errors_rb.html
  41. +118 −0 doc-api/files/kwalify/main_rb.html
  42. +107 −0 doc-api/files/kwalify/messages_rb.html
  43. +117 −0 doc-api/files/kwalify/meta-validator_rb.html
  44. +116 −0 doc-api/files/kwalify/parser/base_rb.html
  45. +117 −0 doc-api/files/kwalify/parser/yaml_rb.html
  46. +116 −0 doc-api/files/kwalify/rule_rb.html
  47. +114 −0 doc-api/files/kwalify/types_rb.html
  48. +115 −0 doc-api/files/kwalify/util/assert-text-equal_rb.html
  49. +114 −0 doc-api/files/kwalify/util/hash-interface_rb.html
  50. +107 −0 doc-api/files/kwalify/util/hashlike_rb.html
  51. +107 −0 doc-api/files/kwalify/util/option-parser_rb.html
  52. +107 −0 doc-api/files/kwalify/util/ordered-hash_rb.html
  53. +115 −0 doc-api/files/kwalify/util/testcase-helper_rb.html
  54. +107 −0 doc-api/files/kwalify/util_rb.html
  55. +117 −0 doc-api/files/kwalify/validator_rb.html
  56. +117 −0 doc-api/files/kwalify/yaml-parser_rb.html
  57. +121 −0 doc-api/files/kwalify_rb.html
  58. +57 −0 doc-api/fr_class_index.html
  59. +45 −0 doc-api/fr_file_index.html
  60. +168 −0 doc-api/fr_method_index.html
  61. +24 −0 doc-api/index.html
  62. +208 −0 doc-api/rdoc-style.css
  63. +188 −0 doc/docstyle.css
  64. BIN doc/img/fig01.png
  65. +2,050 −0 doc/users-guide.html
  66. +10 −0 examples/address-book/Makefile
  67. +45 −0 examples/address-book/address-book.schema.yaml
  68. +36 −0 examples/address-book/address-book.yaml
  69. +63 −0 examples/data-binding/BABEL.data.yaml
  70. +31 −0 examples/data-binding/BABEL.schema.yaml
  71. +8 −0 examples/data-binding/Makefile
  72. +13 −0 examples/data-binding/Rakefile
  73. +27 −0 examples/data-binding/main.rb
  74. +9 −0 examples/invoice/Makefile
  75. +43 −0 examples/invoice/invoice.schema.yaml
  76. +32 −0 examples/invoice/invoice.yaml
  77. +10 −0 examples/tapkit/Makefile
  78. +7 −0 examples/tapkit/main.rb
  79. +146 −0 examples/tapkit/tapkit.schema.yaml
  80. +85 −0 examples/tapkit/tapkit.yaml
  81. +53 −0 kwalify.gemspec
  82. +67 −0 lib/kwalify.rb
  83. +127 −0 lib/kwalify/errors.rb
  84. +58 −0 lib/kwalify/kwalify.schema.yaml
  85. +442 −0 lib/kwalify/main.rb
  86. +173 −0 lib/kwalify/messages.rb
  87. +275 −0 lib/kwalify/meta-validator.rb
  88. +127 −0 lib/kwalify/parser/base.rb
  89. +841 −0 lib/kwalify/parser/yaml.rb
  90. +559 −0 lib/kwalify/rule.rb
  91. +222 −0 lib/kwalify/templates/genclass-java.eruby
  92. +104 −0 lib/kwalify/templates/genclass-php.eruby
  93. +113 −0 lib/kwalify/templates/genclass-ruby.eruby
  94. +156 −0 lib/kwalify/types.rb
  95. +157 −0 lib/kwalify/util.rb
  96. +46 −0 lib/kwalify/util/assert-text-equal.rb
  97. +18 −0 lib/kwalify/util/hash-interface.rb
  98. +51 −0 lib/kwalify/util/hashlike.rb
  99. +220 −0 lib/kwalify/util/option-parser.rb
  100. +57 −0 lib/kwalify/util/ordered-hash.rb
  101. +112 −0 lib/kwalify/util/testcase-helper.rb
  102. +282 −0 lib/kwalify/validator.rb
  103. +870 −0 lib/kwalify/yaml-parser.rb
  104. +1,585 −0 setup.rb
  105. +10 −0 test/Rookbook.yaml
  106. +40 −0 test/data/users-guide/AddressBook.java.expected
  107. +24 −0 test/data/users-guide/BABEL.data.yaml
  108. +30 −0 test/data/users-guide/BABEL.schema.yaml
  109. +47 −0 test/data/users-guide/ExampleAddressBook.java
  110. +24 −0 test/data/users-guide/Group.java.expected
  111. +44 −0 test/data/users-guide/Person.java.expected
  112. +52 −0 test/data/users-guide/address_book.rb
  113. +28 −0 test/data/users-guide/address_book.schema.yaml
  114. +27 −0 test/data/users-guide/address_book.yaml
  115. +12 −0 test/data/users-guide/answers-schema.yaml
  116. +52 −0 test/data/users-guide/answers-validator.rb
  117. +26 −0 test/data/users-guide/babel_genclass.result
  118. +7 −0 test/data/users-guide/config.schema.yaml
  119. +4 −0 test/data/users-guide/config.yaml
  120. +3 −0 test/data/users-guide/document01a.yaml
  121. +3 −0 test/data/users-guide/document01b.yaml
  122. +4 −0 test/data/users-guide/document02a.yaml
  123. +4 −0 test/data/users-guide/document02b.yaml
  124. +6 −0 test/data/users-guide/document03a.yaml
  125. +6 −0 test/data/users-guide/document03b.yaml
  126. +9 −0 test/data/users-guide/document04a.yaml
  127. +9 −0 test/data/users-guide/document04b.yaml
  128. +11 −0 test/data/users-guide/document05a.yaml
  129. +12 −0 test/data/users-guide/document05b.yaml
  130. +15 −0 test/data/users-guide/document06a.yaml
  131. +16 −0 test/data/users-guide/document06b.yaml
  132. +9 −0 test/data/users-guide/document07a.yaml
  133. +7 −0 test/data/users-guide/document07b.yaml
  134. +10 −0 test/data/users-guide/document12a.json
  135. +6 −0 test/data/users-guide/document12b.json
  136. +17 −0 test/data/users-guide/document13a.yaml
  137. +3 −0 test/data/users-guide/document14a.yaml
  138. +3 −0 test/data/users-guide/document14b.yaml
  139. +6 −0 test/data/users-guide/document15a.yaml
  140. +5 −0 test/data/users-guide/document15b.yaml
  141. +10 −0 test/data/users-guide/example_address_book.rb
  142. +32 −0 test/data/users-guide/example_address_book_java.result
  143. +31 −0 test/data/users-guide/example_address_book_ruby.result
  144. +4 −0 test/data/users-guide/genclass_java.result
  145. +28 −0 test/data/users-guide/howto-validation-with-parsing.rb
  146. +25 −0 test/data/users-guide/howto-validation.rb
  147. +6 −0 test/data/users-guide/howto3.rb
  148. +5 −0 test/data/users-guide/howto3.result
  149. +8 −0 test/data/users-guide/howto3.yaml
  150. +111 −0 test/data/users-guide/howto5_databinding.result
  151. +3 −0 test/data/users-guide/invalid01.result
  152. +5 −0 test/data/users-guide/invalid02.result
  153. +5 −0 test/data/users-guide/invalid03.result
  154. +4 −0 test/data/users-guide/invalid04.result
  155. +11 −0 test/data/users-guide/invalid05.result
  156. +4 −0 test/data/users-guide/invalid06.result
  157. +3 −0 test/data/users-guide/invalid07.result
  158. +3 −0 test/data/users-guide/invalid08.result
  159. +8 −0 test/data/users-guide/invalid12.json
  160. +4 −0 test/data/users-guide/invalid14.result
  161. +4 −0 test/data/users-guide/invalid15.result
  162. +27 −0 test/data/users-guide/loadbabel.rb
  163. +16 −0 test/data/users-guide/loadconfig.rb
  164. +6 −0 test/data/users-guide/loadconfig.result
  165. +22 −0 test/data/users-guide/models.rb
  166. +6 −0 test/data/users-guide/option_ha.result
  167. +7 −0 test/data/users-guide/option_ha_genclass_java.result
  168. +3 −0 test/data/users-guide/schema01.yaml
  169. +12 −0 test/data/users-guide/schema02.yaml
  170. +9 −0 test/data/users-guide/schema03.yaml
  171. +20 −0 test/data/users-guide/schema04.yaml
  172. +29 −0 test/data/users-guide/schema05.yaml
  173. +11 −0 test/data/users-guide/schema06.yaml
  174. +12 −0 test/data/users-guide/schema12.json
  175. +13 −0 test/data/users-guide/schema13.yaml
  176. +5 −0 test/data/users-guide/schema14.yaml
  177. +21 −0 test/data/users-guide/schema15.yaml
  178. +2 −0 test/data/users-guide/valid01.result
  179. +2 −0 test/data/users-guide/valid02.result
  180. +2 −0 test/data/users-guide/valid03.result
  181. +2 −0 test/data/users-guide/valid04.result
  182. +2 −0 test/data/users-guide/valid05.result
  183. +2 −0 test/data/users-guide/valid06.result
  184. +2 −0 test/data/users-guide/valid07.result
  185. +2 −0 test/data/users-guide/valid08.result
  186. +2 −0 test/data/users-guide/valid12.result
  187. +2 −0 test/data/users-guide/valid13.result
  188. +2 −0 test/data/users-guide/valid14.result
  189. +2 −0 test/data/users-guide/valid15.result
  190. +37 −0 test/data/users-guide/validate08.rb
  191. +78 −0 test/test-action.rb
  192. +738 −0 test/test-action.yaml
  193. +83 −0 test/test-databinding.rb
  194. +339 −0 test/test-databinding.yaml
  195. +157 −0 test/test-main.rb
  196. +384 −0 test/test-main.yaml
  197. +80 −0 test/test-metavalidator.rb
  198. +1,179 −0 test/test-metavalidator.yaml
  199. +57 −0 test/test-parser-yaml.rb
  200. +1,749 −0 test/test-parser-yaml.yaml
  201. +26 −0 test/test-rule.rb
  202. +317 −0 test/test-rule.yaml
  203. +75 −0 test/test-users-guide.rb
  204. +95 −0 test/test-validator.rb
  205. +986 −0 test/test-validator.yaml
  206. +47 −0 test/test-yaml-parser.rb
  207. +1,226 −0 test/test-yaml-parser.yaml
  208. +60 −0 test/test.rb
@@ -0,0 +1,243 @@
+.=title: ChangeLog
+.?release: $Release: 0.7.1 $
+.?lastupdate: $Date: 2008-01-28 15:27:12 +0900 (Mon, 28 Jan 2008) $
+.?version: $Rev: 99 $
+
+
+.: Release 0.7.1 (2008-01-28)
+
+ .* bugfix:
+
+ .- 'Duplicated key' error is now not raised if corresponding rule
+ has 'default:' constraint.
+
+ .- Path is now copied in Kwalify::ValidationError#initialize()
+
+
+.: Release 0.7.0 (2008-01-27)
+
+ .* enhancements:
+
+ .- YAML parser is rewrited from scratch.
+ The new parser class Kwalify::Yaml::Parser is available.
+ The old parser class Kwalify::YamlParser is stil available,
+ but it is not recommended to use.
+
+ .- Validator is integrated with yaml parser.
+ It is able to parse and validate at once.
+ .--------------------
+ ## create validator
+ require 'kwalify'
+ schema = Kwalify::Yaml.load_file('schema.yaml')
+ validator = Kwalify::Validator.new(schema)
+ ## parse with validation
+ parser = Kwalify::Yaml::Parser.new(validator)
+ ydoc = parser.parse(File.read('data.yaml'))
+ ## show validation errors if exist
+ errors = parser.errors()
+ if errors && !errors.empty?
+ for e in errors
+ puts "** %d:%d [%s] %s" % [e.linenum, e.column, e.path, e.message]
+ end
+ end
+ .--------------------
+
+ .- Data binding is integrated into Kwalify::Yaml::Parser.
+ If you set Kwalify::Yaml::Parser#data_binding to true
+ and you specified class names in schema file,
+ parser creates instance objects instead of Hash objects.
+ It means that you don't need to add '!ruby/Classname'
+ for each data.
+ .? schema file (config.schema.yaml)
+ .--------------------
+ type: map
+ class: Config
+ mapping:
+ "host": { type: str, required: true }
+ "port": { type: int }
+ "user": { type: str, required: true }
+ "pass": { type: str, required: true }
+ .--------------------
+ .? configuration file (config.yaml)
+ .--------------------
+ host: localhost
+ port: 8080
+ user: user1
+ pass: password1
+ .--------------------
+ .? ruby program (ex1.rb)
+ .--------------------
+ ## class definition
+ require 'kwalify/util/hashlike'
+ class Config
+ include Kwalify::Util::HashLike # defines [], []=, ...
+ attr_accessor :host, :posrt, :user, :pass
+ end
+ ## create validator object
+ require 'kwalify'
+ schema = Kwalify::Yaml.load_file('config.schema.yaml')
+ validator = Kwalify::Validator.new(schema)
+ ## parse configuration file with data binding
+ parser = Kwalify::Yaml::Parser.new(validator)
+ parser.data_binding = true # enable data binding
+ config = parser.parse_file('config.yaml')
+ p config #=> #<Config:0x542590 @user="user1", @port=8080,
+ # @pass="password1", @host="localhost">
+ .--------------------
+
+ .- Preceding alias supported.
+ If you set Kwalify::Yaml::Parser#preceding_alias to true,
+ parser allows aliases to apprear before corresponding anchor
+ appears.
+ This is very useful when node graph is complex.
+ .--------------------
+ - name: Foo
+ parent: *bar # preceding alias
+ - &bar
+ name: Bar
+ parent: *baz # preceding alias
+ - &baz
+ name: Baz
+ .--------------------
+
+ .- New command-line option '-P' enables preceding alias.
+
+ .- Kwalify::Yaml.load() and Kwalify::Yaml.load_file() are added.
+ They are similar to YAML.load() and YAML.load_file() but they
+ use Kwalify::Yaml::Parser object.
+
+ .- New utilify method Kwalify::Util.traverse_schema() provided.
+ .--------------------
+ require 'kwalify'
+ require 'kwalify/util'
+ schema = Kwalify::Yaml.load('schema.yaml')
+ Kwalify::Util.traverse_schema(schema) do |rulehash|
+ if classname = rulehash['class']
+ ## add namespace to class name
+ rulehash['class'] = "Foo::Bar::#{classname}"
+ end
+ end
+ .--------------------
+
+ .- Add 'kwalify/util/hashlike.rb' which contains definition of
+ Kwalify::Util::HashLike module.
+ This module defines [], []=, keys(), key?(), and each() methods,
+ and these are required for data-binding.
+
+ .- Action 'genclass-ruby' supports '--hashlike' property.
+
+ .- Action 'genclass-ruby' supports '--initialize=false' property.
+
+ .- Add action 'geclass-php'
+
+ .- '\xXX' and '\uXXXX' are supported in Kwalify::Yaml::Parser.
+
+ .- New constrant 'default:' is added to kwalify.schema.yaml.
+ This constrant have no effect to validation and parsing,
+ and it is used only in 'genclass-xxx' action.
+
+
+ .* changes:
+
+ .- Action 'genclass-ruby' and 'genclass-java' are changed to
+ generate boolean accessors.
+ For example, attribute 'active' is specified as 'type: bool'
+ in schema file, action 'genclass-ruby' generates
+ "def active? ; @active; end"
+ and action 'genclass-java' generates
+ "public boolean isActive() { return _active; }".
+
+ .- Command-line option '-s' (silent) is obsolete and replaced with
+ '-q' (quiet). Option '-s' is still available but it is recommended
+ to use '-q'.
+
+ .- License is changed from LGPL to MIT-LICENSE.
+
+
+.: Release 0.6.0 (2006-05-30)
+
+ .* enhancements:
+
+ .- Class definition generation support.
+ New command-line option '-a genclass-ruby' or '-a genclass-java' generates
+ class definitions in Ruby or Java from schema file.
+
+
+.: Release 0.5.1 (2005-12-20)
+
+ .* enhances:
+
+ .- add new command-line option '-E' which show errors in emacs-compatible style.
+
+
+.: Release 0.5.0 (2005-12-17)
+
+ .* enhancements:
+
+ .- Meta-validation check for 'max < min', 'max-ex <= min-ex', and so on.
+ .- Many test-cases are added
+
+ .* changes:
+
+ .- 'Parser' class is renamed to 'YamlParser'
+ .- 'PlainParser' class is renamed to 'PlainYamlParser'
+ .- YamlParser#set_error_linenums() is renamed to set_errors_linenum()
+ .- ValidatorError#<=> added
+ .- ParseError class is renamed to YamlSyntaxError
+
+
+.: Release 0.4.1 (2005-10-26)
+
+ .* bugfix:
+
+ .- Support Ruby 1.8.3 (around YAML::Syck::DomainType)
+ .- Show correct error line number when key is undefined or unknown.
+
+
+.: Release 0.4.0 (2005-10-25)
+
+ .* enhancements:
+
+ .- New command-line option '-l' prints error line numbers.
+ .- Supports default rule of mapping.
+
+
+.: Release 0.3.0 (2005-09-30)
+
+ .* enhancements:
+
+ .- Support 'max-ex' and 'min-ex' (max/min exclusive) support with 'range:'
+ .- Support 'max-ex' and 'min-ex' (max/min exclusive) support with 'length:'
+ .- Support 'unique' constraint
+
+
+.: Release 0.2.0 (2005-09-25)
+
+ .* enhancements:
+
+ .- New type 'scalar' and 'timestamp' added
+ .- Add new rule 'range:' which validates value range.
+ See users' guide for details.
+ .- Add new rule 'length:' which validate length of string value.
+ See users' guide for details.
+ .- Add experimental rule 'assert:' which validates value with an
+ expression. See users' guide for details.
+ .- New method 'Kwalify::Validator#validate_hook()' is added.
+ This method is called by Kwalify::Validator#validate().
+ See users' guide for details.
+ .- New class 'MetaValidator' added.
+ .- New test script 'test/test-metavalidator.rb' added.
+
+ .* changes:
+
+ .- Type name changed to suite YAML data type:
+ .= string -> str
+ .= integer -> int
+ .= boolean -> bool
+ .- Error index starts with 0 (before starts with 1).
+ .- Class 'Schema' is renamed to 'Rule'.
+
+
+.: Release 0.1.0 (2005-08-01)
+
+ .- beta release
@@ -0,0 +1,20 @@
+copyright(c) 2005-2008 kuwata-lab all rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,61 @@
+= README
+
+release:: 0.7.1
+lastupdate:: $Date: 2008-01-28 15:27:12 +0900 (Mon, 28 Jan 2008) $
+copyright:: copyright(c) 2005-2008 kuwata-lab all rights reserved.
+
+
+
+== Introduction
+
+Kwalify is a parser, schema validator, and data binding tool for
+YAML and JSON.
+
+See doc/users-guide.html for details.
+
+
+
+== Installation
+
+If you have installed RubyGems, just type 'gem install kwalify'
+
+ $ sudo gem install kwalify
+
+Else if you can be root user, use 'setup.rb' as following:
+
+ $ tar xjf kwalify-0.7.1.tar.bz2
+ $ cd kwalify-0.7.1/
+ $ sudo ruby setup.rb install
+
+Else copy script and libraries to proper directory.
+
+ $ tar xjf kwalify-0.7.1.tar.bz2
+ $ cd kwalify-0.7.1/
+ $ mkdir -p $HOME/bin
+ $ cp -a bin/* $HOME/bin
+ $ export PATH=$PATH:$HOME/bin
+ $ mkdir -p $HOME/lib/ruby
+ $ cp -a lib/* $HOME/lib/ruby
+ $ export RUBYLIB=$HOME/lib/ruby
+
+(Optional) 'contrib/inline-require' script to concatenate all script
+and libraries into a file.
+
+ $ tar xjf kwalify-0.7.1.tar.bz2
+ $ cd kwalify-0.7.1/
+ $ unset RUBYLIB
+ $ ruby contrib/inline-require -I ./lib bin/kwalify > contrib/kwalify
+ $ chmod a+x contrib/kwalify
+ $ mv contrib/kwalify $HOME/bin
+
+
+
+== License
+
+ MIT License
+
+
+
+== Copyright
+
+ copyright(c) 2005-2008 kuwata-lab all rights reserved.
@@ -0,0 +1,13 @@
+#!/usr/bin/env ruby
+
+###
+### $Rev: 83 $
+### $Release: 0.7.1 $
+### copyright(c) 2005-2008 kuwata-lab all rights reserved.
+###
+
+require 'kwalify'
+require 'kwalify/main'
+
+command = File.basename($0)
+Kwalify::Main.main(command, ARGV)
Oops, something went wrong.

0 comments on commit f12b16e

Please sign in to comment.