embulk 0.8.35-java → 0.10.24-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (595) hide show
  1. checksums.yaml +5 -5
  2. data/Gemfile +1 -1
  3. data/LICENSE +202 -0
  4. data/embulk.gemspec +34 -33
  5. data/lib/embulk.rb +5 -61
  6. data/lib/embulk/buffer.rb +1 -2
  7. data/lib/embulk/guess/charset.rb +2 -11
  8. data/lib/embulk/guess/schema_guess.rb +1 -1
  9. data/lib/embulk/input_plugin.rb +8 -1
  10. data/lib/embulk/java/bootstrap.rb +1 -2
  11. data/lib/embulk/java_plugin.rb +9 -1
  12. data/lib/embulk/page_builder.rb +38 -5
  13. data/lib/embulk/plugin.rb +2 -2
  14. data/lib/embulk/schema.rb +5 -7
  15. data/lib/embulk/version.rb +3 -22
  16. metadata +23 -752
  17. data/.gitignore +0 -15
  18. data/.ruby-version +0 -1
  19. data/.travis.yml +0 -28
  20. data/COPYING +0 -14
  21. data/Gemfile.lock +0 -30
  22. data/README.md +0 -225
  23. data/Rakefile +0 -26
  24. data/appveyor.yml +0 -28
  25. data/bin/embulk +0 -139
  26. data/build.gradle +0 -415
  27. data/embulk-cli/build.gradle +0 -9
  28. data/embulk-cli/src/main/bat/selfrun.bat +0 -107
  29. data/embulk-cli/src/main/java/org/embulk/cli/EmbulkArguments.java +0 -54
  30. data/embulk-cli/src/main/java/org/embulk/cli/EmbulkCommandLine.java +0 -227
  31. data/embulk-cli/src/main/java/org/embulk/cli/EmbulkCommandLineException.java +0 -25
  32. data/embulk-cli/src/main/java/org/embulk/cli/EmbulkExample.java +0 -82
  33. data/embulk-cli/src/main/java/org/embulk/cli/EmbulkMigrate.java +0 -480
  34. data/embulk-cli/src/main/java/org/embulk/cli/EmbulkNew.java +0 -419
  35. data/embulk-cli/src/main/java/org/embulk/cli/EmbulkRun.java +0 -774
  36. data/embulk-cli/src/main/java/org/embulk/cli/EmbulkSelfUpdate.java +0 -235
  37. data/embulk-cli/src/main/java/org/embulk/cli/EmbulkSubcommand.java +0 -47
  38. data/embulk-cli/src/main/java/org/embulk/cli/Main.java +0 -31
  39. data/embulk-cli/src/main/java/org/embulk/cli/parse/AbstractHelpLineDefinition.java +0 -15
  40. data/embulk-cli/src/main/java/org/embulk/cli/parse/CliHelpFormatterWithHelpMessages.java +0 -141
  41. data/embulk-cli/src/main/java/org/embulk/cli/parse/CliOptionsWithHelpMessages.java +0 -45
  42. data/embulk-cli/src/main/java/org/embulk/cli/parse/EmbulkCommandLineHelpRequired.java +0 -10
  43. data/embulk-cli/src/main/java/org/embulk/cli/parse/EmbulkCommandLineParseException.java +0 -25
  44. data/embulk-cli/src/main/java/org/embulk/cli/parse/EmbulkCommandLineParser.java +0 -187
  45. data/embulk-cli/src/main/java/org/embulk/cli/parse/HelpMessageAsCliOption.java +0 -36
  46. data/embulk-cli/src/main/java/org/embulk/cli/parse/HelpMessageLineDefinition.java +0 -20
  47. data/embulk-cli/src/main/java/org/embulk/cli/parse/OptionBehavior.java +0 -39
  48. data/embulk-cli/src/main/java/org/embulk/cli/parse/OptionDefinition.java +0 -120
  49. data/embulk-cli/src/main/sh/selfrun.sh +0 -60
  50. data/embulk-cli/src/test/java/org/embulk/cli/DummyMain.java +0 -23
  51. data/embulk-cli/src/test/java/org/embulk/cli/SelfrunTest.java +0 -296
  52. data/embulk-core/build.gradle +0 -83
  53. data/embulk-core/src/main/java/org/embulk/EmbulkEmbed.java +0 -321
  54. data/embulk-core/src/main/java/org/embulk/EmbulkRunner.java +0 -582
  55. data/embulk-core/src/main/java/org/embulk/EmbulkService.java +0 -78
  56. data/embulk-core/src/main/java/org/embulk/EmbulkSetup.java +0 -49
  57. data/embulk-core/src/main/java/org/embulk/EmbulkVersion.java +0 -109
  58. data/embulk-core/src/main/java/org/embulk/command/PreviewPrinter.java +0 -87
  59. data/embulk-core/src/main/java/org/embulk/command/TablePreviewPrinter.java +0 -107
  60. data/embulk-core/src/main/java/org/embulk/command/VerticalPreviewPrinter.java +0 -47
  61. data/embulk-core/src/main/java/org/embulk/config/CommitReport.java +0 -36
  62. data/embulk-core/src/main/java/org/embulk/config/Config.java +0 -15
  63. data/embulk-core/src/main/java/org/embulk/config/ConfigDefault.java +0 -15
  64. data/embulk-core/src/main/java/org/embulk/config/ConfigDiff.java +0 -32
  65. data/embulk-core/src/main/java/org/embulk/config/ConfigException.java +0 -26
  66. data/embulk-core/src/main/java/org/embulk/config/ConfigInject.java +0 -14
  67. data/embulk-core/src/main/java/org/embulk/config/ConfigLoader.java +0 -149
  68. data/embulk-core/src/main/java/org/embulk/config/ConfigSource.java +0 -34
  69. data/embulk-core/src/main/java/org/embulk/config/DataSource.java +0 -41
  70. data/embulk-core/src/main/java/org/embulk/config/DataSourceImpl.java +0 -243
  71. data/embulk-core/src/main/java/org/embulk/config/DataSourceSerDe.java +0 -84
  72. data/embulk-core/src/main/java/org/embulk/config/GenericTypeReference.java +0 -20
  73. data/embulk-core/src/main/java/org/embulk/config/ModelManager.java +0 -123
  74. data/embulk-core/src/main/java/org/embulk/config/Task.java +0 -10
  75. data/embulk-core/src/main/java/org/embulk/config/TaskInvocationHandler.java +0 -180
  76. data/embulk-core/src/main/java/org/embulk/config/TaskReport.java +0 -32
  77. data/embulk-core/src/main/java/org/embulk/config/TaskSerDe.java +0 -349
  78. data/embulk-core/src/main/java/org/embulk/config/TaskSource.java +0 -34
  79. data/embulk-core/src/main/java/org/embulk/config/TaskValidationException.java +0 -38
  80. data/embulk-core/src/main/java/org/embulk/config/TaskValidator.java +0 -24
  81. data/embulk-core/src/main/java/org/embulk/config/UserDataException.java +0 -4
  82. data/embulk-core/src/main/java/org/embulk/config/UserDataExceptions.java +0 -17
  83. data/embulk-core/src/main/java/org/embulk/config/YamlTagResolver.java +0 -53
  84. data/embulk-core/src/main/java/org/embulk/exec/BufferFileInputPlugin.java +0 -88
  85. data/embulk-core/src/main/java/org/embulk/exec/BulkLoader.java +0 -754
  86. data/embulk-core/src/main/java/org/embulk/exec/ConfigurableGuessInputPlugin.java +0 -9
  87. data/embulk-core/src/main/java/org/embulk/exec/ExecModule.java +0 -53
  88. data/embulk-core/src/main/java/org/embulk/exec/ExecutionInterruptedException.java +0 -10
  89. data/embulk-core/src/main/java/org/embulk/exec/ExecutionResult.java +0 -33
  90. data/embulk-core/src/main/java/org/embulk/exec/ExtensionServiceLoaderModule.java +0 -43
  91. data/embulk-core/src/main/java/org/embulk/exec/ForGuess.java +0 -16
  92. data/embulk-core/src/main/java/org/embulk/exec/ForSystemConfig.java +0 -16
  93. data/embulk-core/src/main/java/org/embulk/exec/GuessExecutor.java +0 -309
  94. data/embulk-core/src/main/java/org/embulk/exec/LocalExecutorPlugin.java +0 -563
  95. data/embulk-core/src/main/java/org/embulk/exec/LoggerProvider.java +0 -68
  96. data/embulk-core/src/main/java/org/embulk/exec/NoSampleException.java +0 -10
  97. data/embulk-core/src/main/java/org/embulk/exec/PartialExecutionException.java +0 -26
  98. data/embulk-core/src/main/java/org/embulk/exec/PooledBufferAllocator.java +0 -77
  99. data/embulk-core/src/main/java/org/embulk/exec/PreviewExecutor.java +0 -222
  100. data/embulk-core/src/main/java/org/embulk/exec/PreviewResult.java +0 -27
  101. data/embulk-core/src/main/java/org/embulk/exec/PreviewedNoticeError.java +0 -17
  102. data/embulk-core/src/main/java/org/embulk/exec/ResumeState.java +0 -100
  103. data/embulk-core/src/main/java/org/embulk/exec/SamplingParserPlugin.java +0 -215
  104. data/embulk-core/src/main/java/org/embulk/exec/SetCurrentThreadName.java +0 -22
  105. data/embulk-core/src/main/java/org/embulk/exec/SkipTransactionException.java +0 -23
  106. data/embulk-core/src/main/java/org/embulk/exec/SystemConfigModule.java +0 -24
  107. data/embulk-core/src/main/java/org/embulk/exec/TempFileAllocator.java +0 -35
  108. data/embulk-core/src/main/java/org/embulk/exec/TransactionStage.java +0 -27
  109. data/embulk-core/src/main/java/org/embulk/jruby/JRubyPluginSource.java +0 -76
  110. data/embulk-core/src/main/java/org/embulk/jruby/JRubyScriptingModule.java +0 -395
  111. data/embulk-core/src/main/java/org/embulk/plugin/BuiltinPluginSourceModule.java +0 -17
  112. data/embulk-core/src/main/java/org/embulk/plugin/DefaultPluginType.java +0 -50
  113. data/embulk-core/src/main/java/org/embulk/plugin/InjectedPluginSource.java +0 -100
  114. data/embulk-core/src/main/java/org/embulk/plugin/MavenPluginType.java +0 -112
  115. data/embulk-core/src/main/java/org/embulk/plugin/PluginClassLoader.java +0 -208
  116. data/embulk-core/src/main/java/org/embulk/plugin/PluginClassLoaderFactory.java +0 -9
  117. data/embulk-core/src/main/java/org/embulk/plugin/PluginClassLoaderModule.java +0 -71
  118. data/embulk-core/src/main/java/org/embulk/plugin/PluginManager.java +0 -78
  119. data/embulk-core/src/main/java/org/embulk/plugin/PluginSource.java +0 -49
  120. data/embulk-core/src/main/java/org/embulk/plugin/PluginSourceNotMatchException.java +0 -25
  121. data/embulk-core/src/main/java/org/embulk/plugin/PluginType.java +0 -122
  122. data/embulk-core/src/main/java/org/embulk/plugin/compat/InputPluginWrapper.java +0 -102
  123. data/embulk-core/src/main/java/org/embulk/plugin/compat/PluginWrappers.java +0 -30
  124. data/embulk-core/src/main/java/org/embulk/plugin/compat/TransactionalFileInputWrapper.java +0 -96
  125. data/embulk-core/src/main/java/org/embulk/plugin/compat/TransactionalFileOutputWrapper.java +0 -102
  126. data/embulk-core/src/main/java/org/embulk/plugin/compat/TransactionalPageOutputWrapper.java +0 -95
  127. data/embulk-core/src/main/java/org/embulk/plugin/jar/InvalidJarPluginException.java +0 -14
  128. data/embulk-core/src/main/java/org/embulk/plugin/jar/JarPluginLoader.java +0 -205
  129. data/embulk-core/src/main/java/org/embulk/plugin/maven/MavenArtifactFinder.java +0 -134
  130. data/embulk-core/src/main/java/org/embulk/plugin/maven/MavenArtifactNotFoundException.java +0 -20
  131. data/embulk-core/src/main/java/org/embulk/plugin/maven/MavenPluginSource.java +0 -187
  132. data/embulk-core/src/main/java/org/embulk/plugin/maven/MavenPluginSourceModule.java +0 -22
  133. data/embulk-core/src/main/java/org/embulk/plugin/maven/MavenRepositoryNotFoundException.java +0 -31
  134. data/embulk-core/src/main/java/org/embulk/spi/AbortTransactionResource.java +0 -36
  135. data/embulk-core/src/main/java/org/embulk/spi/Buffer.java +0 -148
  136. data/embulk-core/src/main/java/org/embulk/spi/BufferAllocator.java +0 -8
  137. data/embulk-core/src/main/java/org/embulk/spi/CloseResource.java +0 -42
  138. data/embulk-core/src/main/java/org/embulk/spi/Column.java +0 -95
  139. data/embulk-core/src/main/java/org/embulk/spi/ColumnConfig.java +0 -112
  140. data/embulk-core/src/main/java/org/embulk/spi/ColumnVisitor.java +0 -16
  141. data/embulk-core/src/main/java/org/embulk/spi/DataException.java +0 -23
  142. data/embulk-core/src/main/java/org/embulk/spi/DecoderPlugin.java +0 -16
  143. data/embulk-core/src/main/java/org/embulk/spi/EncoderPlugin.java +0 -16
  144. data/embulk-core/src/main/java/org/embulk/spi/Exec.java +0 -113
  145. data/embulk-core/src/main/java/org/embulk/spi/ExecAction.java +0 -6
  146. data/embulk-core/src/main/java/org/embulk/spi/ExecSession.java +0 -225
  147. data/embulk-core/src/main/java/org/embulk/spi/ExecutorPlugin.java +0 -19
  148. data/embulk-core/src/main/java/org/embulk/spi/Extension.java +0 -44
  149. data/embulk-core/src/main/java/org/embulk/spi/FileInput.java +0 -11
  150. data/embulk-core/src/main/java/org/embulk/spi/FileInputPlugin.java +0 -30
  151. data/embulk-core/src/main/java/org/embulk/spi/FileInputRunner.java +0 -169
  152. data/embulk-core/src/main/java/org/embulk/spi/FileOutput.java +0 -13
  153. data/embulk-core/src/main/java/org/embulk/spi/FileOutputPlugin.java +0 -28
  154. data/embulk-core/src/main/java/org/embulk/spi/FileOutputRunner.java +0 -199
  155. data/embulk-core/src/main/java/org/embulk/spi/FilterPlugin.java +0 -18
  156. data/embulk-core/src/main/java/org/embulk/spi/FormatterPlugin.java +0 -18
  157. data/embulk-core/src/main/java/org/embulk/spi/GuessPlugin.java +0 -9
  158. data/embulk-core/src/main/java/org/embulk/spi/InputPlugin.java +0 -33
  159. data/embulk-core/src/main/java/org/embulk/spi/OutputPlugin.java +0 -29
  160. data/embulk-core/src/main/java/org/embulk/spi/Page.java +0 -86
  161. data/embulk-core/src/main/java/org/embulk/spi/PageBuilder.java +0 -696
  162. data/embulk-core/src/main/java/org/embulk/spi/PageFormat.java +0 -47
  163. data/embulk-core/src/main/java/org/embulk/spi/PageOutput.java +0 -11
  164. data/embulk-core/src/main/java/org/embulk/spi/PageReader.java +0 -248
  165. data/embulk-core/src/main/java/org/embulk/spi/ParserPlugin.java +0 -17
  166. data/embulk-core/src/main/java/org/embulk/spi/ProcessState.java +0 -10
  167. data/embulk-core/src/main/java/org/embulk/spi/ProcessTask.java +0 -117
  168. data/embulk-core/src/main/java/org/embulk/spi/Schema.java +0 -139
  169. data/embulk-core/src/main/java/org/embulk/spi/SchemaConfig.java +0 -93
  170. data/embulk-core/src/main/java/org/embulk/spi/SchemaConfigException.java +0 -22
  171. data/embulk-core/src/main/java/org/embulk/spi/TaskState.java +0 -81
  172. data/embulk-core/src/main/java/org/embulk/spi/TempFileException.java +0 -19
  173. data/embulk-core/src/main/java/org/embulk/spi/TempFileSpace.java +0 -88
  174. data/embulk-core/src/main/java/org/embulk/spi/Transactional.java +0 -10
  175. data/embulk-core/src/main/java/org/embulk/spi/TransactionalFileInput.java +0 -17
  176. data/embulk-core/src/main/java/org/embulk/spi/TransactionalFileOutput.java +0 -19
  177. data/embulk-core/src/main/java/org/embulk/spi/TransactionalPageOutput.java +0 -17
  178. data/embulk-core/src/main/java/org/embulk/spi/json/JsonParseException.java +0 -17
  179. data/embulk-core/src/main/java/org/embulk/spi/json/JsonParser.java +0 -233
  180. data/embulk-core/src/main/java/org/embulk/spi/json/RubyValueApi.java +0 -62
  181. data/embulk-core/src/main/java/org/embulk/spi/time/DateTimeZoneSerDe.java +0 -55
  182. data/embulk-core/src/main/java/org/embulk/spi/time/JRubyTimeParserHelper.java +0 -8
  183. data/embulk-core/src/main/java/org/embulk/spi/time/JRubyTimeParserHelperFactory.java +0 -6
  184. data/embulk-core/src/main/java/org/embulk/spi/time/Timestamp.java +0 -159
  185. data/embulk-core/src/main/java/org/embulk/spi/time/TimestampFormat.java +0 -100
  186. data/embulk-core/src/main/java/org/embulk/spi/time/TimestampFormatter.java +0 -125
  187. data/embulk-core/src/main/java/org/embulk/spi/time/TimestampParseException.java +0 -12
  188. data/embulk-core/src/main/java/org/embulk/spi/time/TimestampParser.java +0 -283
  189. data/embulk-core/src/main/java/org/embulk/spi/time/TimestampSerDe.java +0 -49
  190. data/embulk-core/src/main/java/org/embulk/spi/type/AbstractType.java +0 -58
  191. data/embulk-core/src/main/java/org/embulk/spi/type/BooleanType.java +0 -12
  192. data/embulk-core/src/main/java/org/embulk/spi/type/DoubleType.java +0 -12
  193. data/embulk-core/src/main/java/org/embulk/spi/type/JsonType.java +0 -14
  194. data/embulk-core/src/main/java/org/embulk/spi/type/LongType.java +0 -12
  195. data/embulk-core/src/main/java/org/embulk/spi/type/StringType.java +0 -12
  196. data/embulk-core/src/main/java/org/embulk/spi/type/TimestampType.java +0 -41
  197. data/embulk-core/src/main/java/org/embulk/spi/type/Type.java +0 -15
  198. data/embulk-core/src/main/java/org/embulk/spi/type/TypeDeserializer.java +0 -45
  199. data/embulk-core/src/main/java/org/embulk/spi/type/Types.java +0 -16
  200. data/embulk-core/src/main/java/org/embulk/spi/unit/ByteSize.java +0 -156
  201. data/embulk-core/src/main/java/org/embulk/spi/unit/LocalFile.java +0 -106
  202. data/embulk-core/src/main/java/org/embulk/spi/unit/LocalFileSerDe.java +0 -113
  203. data/embulk-core/src/main/java/org/embulk/spi/unit/ToString.java +0 -54
  204. data/embulk-core/src/main/java/org/embulk/spi/unit/ToStringMap.java +0 -34
  205. data/embulk-core/src/main/java/org/embulk/spi/util/CharsetSerDe.java +0 -55
  206. data/embulk-core/src/main/java/org/embulk/spi/util/Decoders.java +0 -81
  207. data/embulk-core/src/main/java/org/embulk/spi/util/DynamicColumnNotFoundException.java +0 -10
  208. data/embulk-core/src/main/java/org/embulk/spi/util/DynamicColumnSetter.java +0 -21
  209. data/embulk-core/src/main/java/org/embulk/spi/util/DynamicColumnSetterFactory.java +0 -100
  210. data/embulk-core/src/main/java/org/embulk/spi/util/DynamicPageBuilder.java +0 -162
  211. data/embulk-core/src/main/java/org/embulk/spi/util/Encoders.java +0 -81
  212. data/embulk-core/src/main/java/org/embulk/spi/util/Executors.java +0 -93
  213. data/embulk-core/src/main/java/org/embulk/spi/util/FileInputInputStream.java +0 -111
  214. data/embulk-core/src/main/java/org/embulk/spi/util/FileOutputOutputStream.java +0 -119
  215. data/embulk-core/src/main/java/org/embulk/spi/util/Filters.java +0 -100
  216. data/embulk-core/src/main/java/org/embulk/spi/util/InputStreamFileInput.java +0 -189
  217. data/embulk-core/src/main/java/org/embulk/spi/util/InputStreamTransactionalFileInput.java +0 -25
  218. data/embulk-core/src/main/java/org/embulk/spi/util/Inputs.java +0 -65
  219. data/embulk-core/src/main/java/org/embulk/spi/util/LineDecoder.java +0 -157
  220. data/embulk-core/src/main/java/org/embulk/spi/util/LineEncoder.java +0 -123
  221. data/embulk-core/src/main/java/org/embulk/spi/util/ListFileInput.java +0 -52
  222. data/embulk-core/src/main/java/org/embulk/spi/util/Newline.java +0 -38
  223. data/embulk-core/src/main/java/org/embulk/spi/util/OutputStreamFileOutput.java +0 -88
  224. data/embulk-core/src/main/java/org/embulk/spi/util/PagePrinter.java +0 -108
  225. data/embulk-core/src/main/java/org/embulk/spi/util/Pages.java +0 -149
  226. data/embulk-core/src/main/java/org/embulk/spi/util/ResumableInputStream.java +0 -168
  227. data/embulk-core/src/main/java/org/embulk/spi/util/RetryExecutor.java +0 -130
  228. data/embulk-core/src/main/java/org/embulk/spi/util/Timestamps.java +0 -53
  229. data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/AbstractDynamicColumnSetter.java +0 -83
  230. data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/BooleanColumnSetter.java +0 -71
  231. data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/DefaultValueSetter.java +0 -20
  232. data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/DoubleColumnSetter.java +0 -68
  233. data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/JsonColumnSetter.java +0 -64
  234. data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/LongColumnSetter.java +0 -78
  235. data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/NullDefaultValueSetter.java +0 -39
  236. data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/SkipColumnSetter.java +0 -57
  237. data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/StringColumnSetter.java +0 -63
  238. data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/TimestampColumnSetter.java +0 -72
  239. data/embulk-core/src/main/resources/embulk/logback-color.xml +0 -72
  240. data/embulk-core/src/main/resources/embulk/logback-console.xml +0 -14
  241. data/embulk-core/src/main/resources/embulk/logback-file.xml +0 -23
  242. data/embulk-core/src/main/resources/embulk/parent_first_packages.properties +0 -72
  243. data/embulk-core/src/main/resources/embulk/parent_first_resources.properties +0 -29
  244. data/embulk-core/src/test/java/org/embulk/EmbulkTestRuntime.java +0 -122
  245. data/embulk-core/src/test/java/org/embulk/GuiceBinder.java +0 -72
  246. data/embulk-core/src/test/java/org/embulk/RandomManager.java +0 -53
  247. data/embulk-core/src/test/java/org/embulk/TestPluginSourceModule.java +0 -23
  248. data/embulk-core/src/test/java/org/embulk/TestUtilityModule.java +0 -17
  249. data/embulk-core/src/test/java/org/embulk/config/TestConfigLoader.java +0 -66
  250. data/embulk-core/src/test/java/org/embulk/config/TestConfigSource.java +0 -114
  251. data/embulk-core/src/test/java/org/embulk/config/TestTaskSource.java +0 -70
  252. data/embulk-core/src/test/java/org/embulk/plugin/MockPluginSource.java +0 -58
  253. data/embulk-core/src/test/java/org/embulk/plugin/TestPluginType.java +0 -83
  254. data/embulk-core/src/test/java/org/embulk/plugin/TestPluginTypeSerDe.java +0 -67
  255. data/embulk-core/src/test/java/org/embulk/plugin/jar/ExampleJarSpiV0.java +0 -9
  256. data/embulk-core/src/test/java/org/embulk/plugin/jar/JarBuilder.java +0 -101
  257. data/embulk-core/src/test/java/org/embulk/plugin/jar/TestJarPluginLoader.java +0 -60
  258. data/embulk-core/src/test/java/org/embulk/plugin/maven/TestMavenArtifactFinder.java +0 -41
  259. data/embulk-core/src/test/java/org/embulk/spi/MockFileOutput.java +0 -63
  260. data/embulk-core/src/test/java/org/embulk/spi/MockFormatterPlugin.java +0 -108
  261. data/embulk-core/src/test/java/org/embulk/spi/MockParserPlugin.java +0 -80
  262. data/embulk-core/src/test/java/org/embulk/spi/PageTestUtils.java +0 -59
  263. data/embulk-core/src/test/java/org/embulk/spi/TestBuffer.java +0 -24
  264. data/embulk-core/src/test/java/org/embulk/spi/TestFileInputInputStream.java +0 -89
  265. data/embulk-core/src/test/java/org/embulk/spi/TestFileInputRunner.java +0 -199
  266. data/embulk-core/src/test/java/org/embulk/spi/TestFileOutputRunner.java +0 -221
  267. data/embulk-core/src/test/java/org/embulk/spi/TestInputStreamFileInput.java +0 -188
  268. data/embulk-core/src/test/java/org/embulk/spi/TestPageBuilderReader.java +0 -411
  269. data/embulk-core/src/test/java/org/embulk/spi/json/TestJsonParser.java +0 -102
  270. data/embulk-core/src/test/java/org/embulk/spi/time/TestTimestamp.java +0 -116
  271. data/embulk-core/src/test/java/org/embulk/spi/time/TestTimestampFormatterParser.java +0 -75
  272. data/embulk-core/src/test/java/org/embulk/spi/time/TestTimestampFormatterParserDeprecated.java +0 -67
  273. data/embulk-core/src/test/java/org/embulk/spi/type/TestTypeSerDe.java +0 -45
  274. data/embulk-core/src/test/java/org/embulk/spi/unit/TestByteSize.java +0 -79
  275. data/embulk-core/src/test/java/org/embulk/spi/util/TestLineDecoder.java +0 -237
  276. data/embulk-core/src/test/java/org/embulk/spi/util/TestLineEncoder.java +0 -123
  277. data/embulk-core/src/test/resources/m2.test/.gitignore +0 -1
  278. data/embulk-core/src/test/resources/m2.test/org/embulk/example/embulk-example-maven-artifact/0.1.2/embulk-example-maven-artifact-0.1.2.jar +0 -0
  279. data/embulk-core/src/test/resources/m2.test/org/embulk/example/embulk-example-maven-artifact/0.1.2/embulk-example-maven-artifact-0.1.2.jar.sha1 +0 -1
  280. data/embulk-core/src/test/resources/m2.test/org/embulk/example/embulk-example-maven-artifact/0.1.2/embulk-example-maven-artifact-0.1.2.pom +0 -9
  281. data/embulk-core/src/test/resources/m2.test/org/embulk/example/embulk-example-maven-artifact/0.1.2/embulk-example-maven-artifact-0.1.2.pom.sha1 +0 -1
  282. data/embulk-docs/Makefile +0 -178
  283. data/embulk-docs/build.gradle +0 -33
  284. data/embulk-docs/make.bat +0 -243
  285. data/embulk-docs/push-gh-pages.sh +0 -49
  286. data/embulk-docs/src/_static/embulk-architecture.png +0 -0
  287. data/embulk-docs/src/_static/embulk-logo-v2/embulk-logo-v2-oneline-tr.png +0 -0
  288. data/embulk-docs/src/_static/embulk-logo-v2/embulk-logo-v2-oneline-wt.png +0 -0
  289. data/embulk-docs/src/_static/embulk-logo-v2/embulk-logo-v2-oneline.ai +0 -396
  290. data/embulk-docs/src/_static/embulk-logo-v2/embulk-logo-v2-sq-tr-small.png +0 -0
  291. data/embulk-docs/src/_static/embulk-logo-v2/embulk-logo-v2-sq-tr.png +0 -0
  292. data/embulk-docs/src/_static/embulk-logo-v2/embulk-logo-v2-sq-wt.png +0 -0
  293. data/embulk-docs/src/_static/embulk-logo-v2/embulk-logo-v2-sq.ai +0 -417
  294. data/embulk-docs/src/_static/embulk-logo-v2/embulk-logo-v2-sq.svg +0 -1
  295. data/embulk-docs/src/_static/embulk-logo-v2/embulk-logo-v2-symbol-tr.png +0 -0
  296. data/embulk-docs/src/_static/embulk-logo-v2/embulk-logo-v2-symbol-wt.png +0 -0
  297. data/embulk-docs/src/_static/embulk-logo-v2/embulk-logo-v2-symbol.ai +1 -394
  298. data/embulk-docs/src/_static/embulk-logo.svg +0 -133
  299. data/embulk-docs/src/built-in.rst +0 -1005
  300. data/embulk-docs/src/conf.py +0 -260
  301. data/embulk-docs/src/customization.rst +0 -184
  302. data/embulk-docs/src/developers/index.rst +0 -45
  303. data/embulk-docs/src/index.rst +0 -94
  304. data/embulk-docs/src/logo.rst +0 -27
  305. data/embulk-docs/src/recipe.rst +0 -8
  306. data/embulk-docs/src/recipe/scheduled-csv-load-to-elasticsearch-kibana5.rst +0 -163
  307. data/embulk-docs/src/release.rst +0 -105
  308. data/embulk-docs/src/release/release-0.1.0.rst +0 -8
  309. data/embulk-docs/src/release/release-0.2.0.rst +0 -16
  310. data/embulk-docs/src/release/release-0.2.1.rst +0 -19
  311. data/embulk-docs/src/release/release-0.3.0.rst +0 -34
  312. data/embulk-docs/src/release/release-0.3.1.rst +0 -11
  313. data/embulk-docs/src/release/release-0.3.2.rst +0 -15
  314. data/embulk-docs/src/release/release-0.4.0.rst +0 -74
  315. data/embulk-docs/src/release/release-0.4.1.rst +0 -18
  316. data/embulk-docs/src/release/release-0.4.10.rst +0 -17
  317. data/embulk-docs/src/release/release-0.4.2.rst +0 -18
  318. data/embulk-docs/src/release/release-0.4.3.rst +0 -34
  319. data/embulk-docs/src/release/release-0.4.4.rst +0 -39
  320. data/embulk-docs/src/release/release-0.4.5.rst +0 -24
  321. data/embulk-docs/src/release/release-0.4.6.rst +0 -30
  322. data/embulk-docs/src/release/release-0.4.7.rst +0 -16
  323. data/embulk-docs/src/release/release-0.4.8.rst +0 -15
  324. data/embulk-docs/src/release/release-0.4.9.rst +0 -23
  325. data/embulk-docs/src/release/release-0.5.0.rst +0 -89
  326. data/embulk-docs/src/release/release-0.5.1.rst +0 -13
  327. data/embulk-docs/src/release/release-0.5.2.rst +0 -30
  328. data/embulk-docs/src/release/release-0.5.3.rst +0 -22
  329. data/embulk-docs/src/release/release-0.5.4.rst +0 -24
  330. data/embulk-docs/src/release/release-0.5.5.rst +0 -18
  331. data/embulk-docs/src/release/release-0.6.0.rst +0 -34
  332. data/embulk-docs/src/release/release-0.6.1.rst +0 -11
  333. data/embulk-docs/src/release/release-0.6.10.rst +0 -15
  334. data/embulk-docs/src/release/release-0.6.11.rst +0 -19
  335. data/embulk-docs/src/release/release-0.6.12.rst +0 -31
  336. data/embulk-docs/src/release/release-0.6.13.rst +0 -23
  337. data/embulk-docs/src/release/release-0.6.14.rst +0 -47
  338. data/embulk-docs/src/release/release-0.6.15.rst +0 -26
  339. data/embulk-docs/src/release/release-0.6.16.rst +0 -26
  340. data/embulk-docs/src/release/release-0.6.17.rst +0 -39
  341. data/embulk-docs/src/release/release-0.6.18.rst +0 -14
  342. data/embulk-docs/src/release/release-0.6.19.rst +0 -18
  343. data/embulk-docs/src/release/release-0.6.2.rst +0 -17
  344. data/embulk-docs/src/release/release-0.6.20.rst +0 -19
  345. data/embulk-docs/src/release/release-0.6.21.rst +0 -20
  346. data/embulk-docs/src/release/release-0.6.22.rst +0 -26
  347. data/embulk-docs/src/release/release-0.6.23.rst +0 -17
  348. data/embulk-docs/src/release/release-0.6.24.rst +0 -13
  349. data/embulk-docs/src/release/release-0.6.25.rst +0 -12
  350. data/embulk-docs/src/release/release-0.6.26.rst +0 -17
  351. data/embulk-docs/src/release/release-0.6.27.rst +0 -11
  352. data/embulk-docs/src/release/release-0.6.3.rst +0 -23
  353. data/embulk-docs/src/release/release-0.6.4.rst +0 -13
  354. data/embulk-docs/src/release/release-0.6.5.rst +0 -17
  355. data/embulk-docs/src/release/release-0.6.6.rst +0 -17
  356. data/embulk-docs/src/release/release-0.6.7.rst +0 -17
  357. data/embulk-docs/src/release/release-0.6.8.rst +0 -24
  358. data/embulk-docs/src/release/release-0.6.9.rst +0 -24
  359. data/embulk-docs/src/release/release-0.7.0.rst +0 -96
  360. data/embulk-docs/src/release/release-0.7.1.rst +0 -22
  361. data/embulk-docs/src/release/release-0.7.10.rst +0 -13
  362. data/embulk-docs/src/release/release-0.7.11.rst +0 -12
  363. data/embulk-docs/src/release/release-0.7.2.rst +0 -25
  364. data/embulk-docs/src/release/release-0.7.3.rst +0 -21
  365. data/embulk-docs/src/release/release-0.7.4.rst +0 -14
  366. data/embulk-docs/src/release/release-0.7.5.rst +0 -22
  367. data/embulk-docs/src/release/release-0.7.6.rst +0 -18
  368. data/embulk-docs/src/release/release-0.7.7.rst +0 -13
  369. data/embulk-docs/src/release/release-0.7.8.rst +0 -14
  370. data/embulk-docs/src/release/release-0.7.9.rst +0 -14
  371. data/embulk-docs/src/release/release-0.8.0.rst +0 -74
  372. data/embulk-docs/src/release/release-0.8.1.rst +0 -18
  373. data/embulk-docs/src/release/release-0.8.10.rst +0 -35
  374. data/embulk-docs/src/release/release-0.8.11.rst +0 -12
  375. data/embulk-docs/src/release/release-0.8.12.rst +0 -12
  376. data/embulk-docs/src/release/release-0.8.13.rst +0 -12
  377. data/embulk-docs/src/release/release-0.8.14.rst +0 -31
  378. data/embulk-docs/src/release/release-0.8.15.rst +0 -17
  379. data/embulk-docs/src/release/release-0.8.16.rst +0 -43
  380. data/embulk-docs/src/release/release-0.8.17.rst +0 -11
  381. data/embulk-docs/src/release/release-0.8.18.rst +0 -27
  382. data/embulk-docs/src/release/release-0.8.19.rst +0 -43
  383. data/embulk-docs/src/release/release-0.8.2.rst +0 -19
  384. data/embulk-docs/src/release/release-0.8.20.rst +0 -11
  385. data/embulk-docs/src/release/release-0.8.21.rst +0 -17
  386. data/embulk-docs/src/release/release-0.8.22.rst +0 -15
  387. data/embulk-docs/src/release/release-0.8.23.rst +0 -14
  388. data/embulk-docs/src/release/release-0.8.24.rst +0 -15
  389. data/embulk-docs/src/release/release-0.8.25.rst +0 -14
  390. data/embulk-docs/src/release/release-0.8.26.rst +0 -16
  391. data/embulk-docs/src/release/release-0.8.27.rst +0 -15
  392. data/embulk-docs/src/release/release-0.8.28.rst +0 -14
  393. data/embulk-docs/src/release/release-0.8.29.rst +0 -14
  394. data/embulk-docs/src/release/release-0.8.3.rst +0 -15
  395. data/embulk-docs/src/release/release-0.8.30.rst +0 -14
  396. data/embulk-docs/src/release/release-0.8.31.rst +0 -12
  397. data/embulk-docs/src/release/release-0.8.32.rst +0 -14
  398. data/embulk-docs/src/release/release-0.8.33.rst +0 -13
  399. data/embulk-docs/src/release/release-0.8.34.rst +0 -12
  400. data/embulk-docs/src/release/release-0.8.35.rst +0 -12
  401. data/embulk-docs/src/release/release-0.8.4.rst +0 -18
  402. data/embulk-docs/src/release/release-0.8.5.rst +0 -11
  403. data/embulk-docs/src/release/release-0.8.6.rst +0 -14
  404. data/embulk-docs/src/release/release-0.8.7.rst +0 -18
  405. data/embulk-docs/src/release/release-0.8.8.rst +0 -18
  406. data/embulk-docs/src/release/release-0.8.9.rst +0 -14
  407. data/embulk-jruby-strptime/build.gradle +0 -3
  408. data/embulk-jruby-strptime/src/main/java/org/embulk/spi/time/RubyDateParser.java +0 -121
  409. data/embulk-jruby-strptime/src/main/java/org/embulk/spi/time/StrptimeFormat.java +0 -53
  410. data/embulk-jruby-strptime/src/main/java/org/embulk/spi/time/StrptimeParser.java +0 -884
  411. data/embulk-jruby-strptime/src/main/java/org/embulk/spi/time/StrptimeToken.java +0 -111
  412. data/embulk-jruby-strptime/src/main/java/org/embulk/spi/time/TimeZoneConverter.java +0 -466
  413. data/embulk-jruby-strptime/src/main/java/org/embulk/spi/time/lexer/StrptimeLexer.flex +0 -62
  414. data/embulk-jruby-strptime/src/main/java/org/embulk/spi/time/lexer/StrptimeLexer.java +0 -577
  415. data/embulk-standards/build.gradle +0 -7
  416. data/embulk-standards/src/main/java/org/embulk/standards/Bzip2FileDecoderPlugin.java +0 -55
  417. data/embulk-standards/src/main/java/org/embulk/standards/Bzip2FileEncoderPlugin.java +0 -67
  418. data/embulk-standards/src/main/java/org/embulk/standards/ConfigInputPlugin.java +0 -170
  419. data/embulk-standards/src/main/java/org/embulk/standards/CsvFormatterPlugin.java +0 -295
  420. data/embulk-standards/src/main/java/org/embulk/standards/CsvParserPlugin.java +0 -394
  421. data/embulk-standards/src/main/java/org/embulk/standards/CsvTokenizer.java +0 -512
  422. data/embulk-standards/src/main/java/org/embulk/standards/GzipFileDecoderPlugin.java +0 -55
  423. data/embulk-standards/src/main/java/org/embulk/standards/GzipFileEncoderPlugin.java +0 -71
  424. data/embulk-standards/src/main/java/org/embulk/standards/JsonParserPlugin.java +0 -235
  425. data/embulk-standards/src/main/java/org/embulk/standards/LocalFileInputPlugin.java +0 -232
  426. data/embulk-standards/src/main/java/org/embulk/standards/LocalFileOutputPlugin.java +0 -148
  427. data/embulk-standards/src/main/java/org/embulk/standards/NullOutputPlugin.java +0 -59
  428. data/embulk-standards/src/main/java/org/embulk/standards/RemoveColumnsFilterPlugin.java +0 -268
  429. data/embulk-standards/src/main/java/org/embulk/standards/RenameFilterPlugin.java +0 -479
  430. data/embulk-standards/src/main/java/org/embulk/standards/StandardPluginExtension.java +0 -16
  431. data/embulk-standards/src/main/java/org/embulk/standards/StandardPluginModule.java +0 -60
  432. data/embulk-standards/src/main/java/org/embulk/standards/StdoutOutputPlugin.java +0 -85
  433. data/embulk-standards/src/main/resources/META-INF/services/org.embulk.spi.Extension +0 -1
  434. data/embulk-standards/src/test/java/org/embulk/standards/TestCsvFormatterPlugin.java +0 -312
  435. data/embulk-standards/src/test/java/org/embulk/standards/TestCsvParserPlugin.java +0 -75
  436. data/embulk-standards/src/test/java/org/embulk/standards/TestCsvTokenizer.java +0 -381
  437. data/embulk-standards/src/test/java/org/embulk/standards/TestJsonParserPlugin.java +0 -351
  438. data/embulk-standards/src/test/java/org/embulk/standards/TestRemoveColumnsFilterPlugin.java +0 -121
  439. data/embulk-standards/src/test/java/org/embulk/standards/TestRenameFilterPlugin.java +0 -1020
  440. data/embulk-standards/src/test/java/org/embulk/standards/guess/TestCsvAllStringsGuessPlugin.java +0 -38
  441. data/embulk-standards/src/test/java/org/embulk/standards/guess/TestCsvGuessPlugin.java +0 -248
  442. data/embulk-standards/src/test/java/org/embulk/standards/preview/TestFilePreview.java +0 -73
  443. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_int_single_column_row.csv +0 -1
  444. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_int_single_column_row_and_header.csv +0 -2
  445. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_int_single_column_row_and_header_guessed.yml +0 -12
  446. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_int_single_column_row_and_header_seed.yml +0 -1
  447. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_int_single_column_row_guessed.yml +0 -12
  448. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_int_single_column_row_seed.yml +0 -1
  449. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_rows.csv +0 -1
  450. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_rows_and_header.csv +0 -2
  451. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_rows_and_header_guessed.yml +0 -16
  452. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_rows_and_header_seed.yml +0 -1
  453. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_rows_and_header_with_trim_needed.csv +0 -2
  454. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_rows_and_header_with_trim_needed_guessed.yml +0 -16
  455. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_rows_and_header_with_trim_needed_seed.yml +0 -1
  456. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_rows_guessed.yml +0 -16
  457. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_rows_seed.yml +0 -1
  458. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_rows_with_trim_needed.csv +0 -1
  459. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_rows_with_trim_needed_guessed.yml +0 -16
  460. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_rows_with_trim_needed_seed.yml +0 -1
  461. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_string_single_column_row.csv +0 -1
  462. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_string_single_column_row_and_header.csv +0 -2
  463. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_string_single_column_row_and_header_guessed.yml +0 -12
  464. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_string_single_column_row_and_header_seed.yml +0 -1
  465. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_string_single_column_row_guessed.yml +0 -12
  466. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_string_single_column_row_seed.yml +0 -1
  467. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_2_int_single_column_rows.csv +0 -2
  468. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_2_int_single_column_rows_guessed.yml +0 -12
  469. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_2_int_single_column_rows_seed.yml +0 -1
  470. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_2_rows.csv +0 -2
  471. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_2_rows_and_header.csv +0 -3
  472. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_2_rows_and_header_guessed.yml +0 -16
  473. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_2_rows_and_header_seed.yml +0 -1
  474. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_2_rows_guessed.yml +0 -16
  475. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_2_rows_seed.yml +0 -1
  476. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_2_string_single_column_rows.csv +0 -2
  477. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_2_string_single_column_rows_guessed.yml +0 -12
  478. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_2_string_single_column_rows_seed.yml +0 -1
  479. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_backslash_escape.csv +0 -5
  480. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_backslash_escape_guessed.yml +0 -17
  481. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_backslash_escape_seed.yml +0 -1
  482. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_double_single_column.csv +0 -12
  483. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_double_single_column_guessed.yml +0 -12
  484. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_double_single_column_seed.yml +0 -1
  485. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_int_single_column.csv +0 -4
  486. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_int_single_column_guessed.yml +0 -12
  487. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_int_single_column_seed.yml +0 -1
  488. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_int_single_column_with_header.csv +0 -5
  489. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_int_single_column_with_header_guessed.yml +0 -12
  490. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_int_single_column_with_header_seed.yml +0 -1
  491. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_semicolon_delimiter.csv +0 -5
  492. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_semicolon_delimiter_guessed.yml +0 -17
  493. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_semicolon_delimiter_seed.yml +0 -1
  494. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_simple.csv +0 -5
  495. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_simple_guessed.yml +0 -17
  496. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_simple_seed.yml +0 -1
  497. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_single_quote.csv +0 -5
  498. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_single_quote_guessed.yml +0 -17
  499. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_single_quote_seed.yml +0 -1
  500. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_skip_suggest_if_empty_sample_records.csv +0 -5
  501. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_skip_suggest_if_empty_sample_records_guessed.yml +0 -2
  502. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_skip_suggest_if_empty_sample_records_seed.yml +0 -1
  503. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_string_single_column.csv +0 -4
  504. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_string_single_column_guessed.yml +0 -12
  505. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_string_single_column_seed.yml +0 -1
  506. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_string_single_column_with_header.csv +0 -5
  507. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_string_single_column_with_header_guessed.yml +0 -12
  508. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_string_single_column_with_header_seed.yml +0 -1
  509. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_tab_delimiter.csv +0 -4
  510. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_tab_delimiter_guessed.yml +0 -16
  511. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_tab_delimiter_seed.yml +0 -1
  512. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv_all_strings/test/test_simple.csv +0 -5
  513. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv_all_strings/test/test_simple_guessed.yml +0 -17
  514. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv_all_strings/test/test_simple_seed.yml +0 -1
  515. data/embulk-standards/src/test/resources/org/embulk/standards/preview/file/test/test_sample_buffer_bytes.csv +0 -5
  516. data/embulk-standards/src/test/resources/org/embulk/standards/preview/file/test/test_sample_buffer_bytes_exec.yml +0 -1
  517. data/embulk-standards/src/test/resources/org/embulk/standards/preview/file/test/test_sample_buffer_bytes_load.yml +0 -19
  518. data/embulk-standards/src/test/resources/org/embulk/standards/preview/file/test/test_sample_buffer_bytes_previewed.csv +0 -1
  519. data/embulk-standards/src/test/resources/org/embulk/standards/preview/file/test/test_simple.csv +0 -5
  520. data/embulk-standards/src/test/resources/org/embulk/standards/preview/file/test/test_simple_load.yml +0 -19
  521. data/embulk-standards/src/test/resources/org/embulk/standards/preview/file/test/test_simple_previewed.csv +0 -4
  522. data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_keep.csv +0 -5
  523. data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_keep_expected.csv +0 -4
  524. data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_keep_filter.yml +0 -2
  525. data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_keep_in.yml +0 -18
  526. data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_keep_with_duplicated_column_names.csv +0 -5
  527. data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_keep_with_duplicated_column_names.yml +0 -2
  528. data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_keep_with_duplicated_column_names_expected.csv +0 -4
  529. data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_keep_with_duplicated_column_names_in.yml +0 -17
  530. data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_keep_with_unmatched_filter.yml +0 -3
  531. data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_keep_without_unmatched_filter.yml +0 -2
  532. data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_remove.csv +0 -5
  533. data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_remove_expected.csv +0 -4
  534. data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_remove_filter.yml +0 -2
  535. data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_remove_in.yml +0 -18
  536. data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_remove_with_unmatched_filter.yml +0 -3
  537. data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_remove_without_unmatched_filter.yml +0 -2
  538. data/embulk-test/build.gradle +0 -6
  539. data/embulk-test/src/main/java/org/embulk/test/EmbulkTests.java +0 -75
  540. data/embulk-test/src/main/java/org/embulk/test/PreviewResultInputPlugin.java +0 -65
  541. data/embulk-test/src/main/java/org/embulk/test/TestingBulkLoader.java +0 -129
  542. data/embulk-test/src/main/java/org/embulk/test/TestingEmbulk.java +0 -710
  543. data/gradle/wrapper/gradle-wrapper.jar +0 -0
  544. data/gradle/wrapper/gradle-wrapper.properties +0 -5
  545. data/gradlew +0 -172
  546. data/gradlew.bat +0 -84
  547. data/lib/embulk/data/bundle/.bundle/config +0 -3
  548. data/lib/embulk/data/bundle/.ruby-version +0 -1
  549. data/lib/embulk/data/bundle/Gemfile +0 -31
  550. data/lib/embulk/data/bundle/embulk/filter/example.rb +0 -42
  551. data/lib/embulk/data/bundle/embulk/input/example.rb +0 -54
  552. data/lib/embulk/data/bundle/embulk/output/example.rb +0 -58
  553. data/lib/embulk/data/new/LICENSE.txt +0 -21
  554. data/lib/embulk/data/new/README.md.vm +0 -106
  555. data/lib/embulk/data/new/gitignore.vm +0 -17
  556. data/lib/embulk/data/new/java/build.gradle.vm +0 -96
  557. data/lib/embulk/data/new/java/config/checkstyle/checkstyle.xml +0 -128
  558. data/lib/embulk/data/new/java/config/checkstyle/default.xml +0 -108
  559. data/lib/embulk/data/new/java/decoder.java.vm +0 -86
  560. data/lib/embulk/data/new/java/encoder.java.vm +0 -88
  561. data/lib/embulk/data/new/java/file_input.java.vm +0 -145
  562. data/lib/embulk/data/new/java/file_output.java.vm +0 -95
  563. data/lib/embulk/data/new/java/filter.java.vm +0 -57
  564. data/lib/embulk/data/new/java/formatter.java.vm +0 -55
  565. data/lib/embulk/data/new/java/gradle/wrapper/gradle-wrapper.jar +0 -0
  566. data/lib/embulk/data/new/java/gradle/wrapper/gradle-wrapper.properties +0 -5
  567. data/lib/embulk/data/new/java/gradlew +0 -172
  568. data/lib/embulk/data/new/java/gradlew.bat +0 -84
  569. data/lib/embulk/data/new/java/input.java.vm +0 -89
  570. data/lib/embulk/data/new/java/output.java.vm +0 -79
  571. data/lib/embulk/data/new/java/parser.java.vm +0 -61
  572. data/lib/embulk/data/new/java/plugin_loader.rb.vm +0 -3
  573. data/lib/embulk/data/new/java/test.java.vm +0 -5
  574. data/lib/embulk/data/new/ruby/.ruby-version +0 -1
  575. data/lib/embulk/data/new/ruby/Gemfile +0 -2
  576. data/lib/embulk/data/new/ruby/Rakefile +0 -3
  577. data/lib/embulk/data/new/ruby/decoder_guess.rb.vm +0 -25
  578. data/lib/embulk/data/new/ruby/filter.rb.vm +0 -50
  579. data/lib/embulk/data/new/ruby/formatter.rb.vm +0 -49
  580. data/lib/embulk/data/new/ruby/gemspec.vm +0 -20
  581. data/lib/embulk/data/new/ruby/input.rb.vm +0 -59
  582. data/lib/embulk/data/new/ruby/output.rb.vm +0 -61
  583. data/lib/embulk/data/new/ruby/parser.rb.vm +0 -44
  584. data/lib/embulk/data/new/ruby/parser_guess.rb.vm +0 -65
  585. data/lib/embulk/data/package_data.rb +0 -59
  586. data/lib/embulk/java/time_helper.rb +0 -79
  587. data/lib/embulk/runner.rb +0 -53
  588. data/settings.gradle +0 -8
  589. data/test/guess/test_csv_all_strings.rb +0 -43
  590. data/test/guess/test_csv_guess.rb +0 -170
  591. data/test/guess/test_schema_guess.rb +0 -29
  592. data/test/guess/test_time_format_guess.rb +0 -135
  593. data/test/helper.rb +0 -23
  594. data/test/mri/date/test_date_strptime.rb +0 -515
  595. data/test/run-test.rb +0 -28
@@ -1,419 +0,0 @@
1
- package org.embulk.cli;
2
-
3
- import java.io.BufferedWriter;
4
- import java.io.IOException;
5
- import java.io.InputStreamReader;
6
- import java.nio.charset.StandardCharsets;
7
- import java.nio.file.Files;
8
- import java.nio.file.FileVisitResult;
9
- import java.nio.file.Path;
10
- import java.nio.file.Paths;
11
- import java.nio.file.SimpleFileVisitor;
12
- import java.nio.file.attribute.BasicFileAttributes;
13
- import java.nio.file.attribute.PosixFilePermission;
14
- import java.util.ArrayList;
15
- import java.util.HashMap;
16
- import java.util.HashSet;
17
- import java.util.Map;
18
- import java.util.Set;
19
-
20
- import com.google.common.base.CaseFormat;
21
- import com.google.common.base.Joiner;
22
- import com.google.common.io.CharStreams;
23
-
24
- import org.apache.velocity.VelocityContext;
25
- import org.apache.velocity.app.VelocityEngine;
26
-
27
- public class EmbulkNew
28
- {
29
- public EmbulkNew(final String categoryWithLanguage, final String nameGiven, final String embulkVersion)
30
- throws IOException
31
- {
32
- this.basePath = Paths.get(".").toAbsolutePath();
33
-
34
- final LanguageAndCategory languageAndCategory = LanguageAndCategory.of(categoryWithLanguage);
35
- this.language = languageAndCategory.getLanguage();
36
- this.category = languageAndCategory.getCategory();
37
- this.nameGiven = nameGiven;
38
- this.embulkVersion = embulkVersion;
39
-
40
- if (category.equals("file_input")) {
41
- this.embulkCategory = "input";
42
- }
43
- else if (category.equals("file_output")) {
44
- this.embulkCategory = "output";
45
- }
46
- else {
47
- this.embulkCategory = category;
48
- }
49
-
50
- this.name = nameGiven.replaceAll("[^a-zA-Z0-9_]+", "_");
51
-
52
- this.fullProjectName = "embulk-" + embulkCategory + "-" + name;
53
- this.pluginDirectory = "lib/embulk";
54
- this.pluginPath = pluginDirectory + "/" + embulkCategory + "/" + name + ".rb";
55
-
56
- this.pluginBasePath = this.basePath.resolve(fullProjectName);
57
-
58
- this.velocityEngine = new VelocityEngine();
59
- this.velocityEngine.init();
60
- this.velocityEngine.setProperty(VelocityEngine.RUNTIME_LOG_LOGSYSTEM_CLASS,
61
- "org.apache.velocity.runtime.log.NullLogSystem");
62
- }
63
-
64
- public boolean newPlugin()
65
- throws IOException
66
- {
67
- if (Files.exists(this.pluginBasePath)) {
68
- throw new IOException("./" + this.fullProjectName + " already exists. Please delete it first.");
69
- }
70
-
71
- Files.createDirectories(this.pluginBasePath);
72
-
73
- System.out.println("Creating " + this.fullProjectName + "/");
74
-
75
- boolean success = false;
76
- try {
77
- //
78
- // Generate gemspec
79
- //
80
- final String author = getGitConfig("user.name", "YOUR_NAME");
81
- final String email = getGitConfig("user.email", "YOUR_NAME");
82
- final String expectedGitHubAccount = email.split("@")[0];
83
-
84
- // variables used in Velocity templates
85
- final String rubyClassName = CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, name);
86
- final String javaClassName =
87
- CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, name) +
88
- CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, category) +
89
- "Plugin";
90
- final String javaPackageName = "org.embulk." + embulkCategory + "." + name;
91
- final String displayName = getDisplayName(name);
92
- final String displayCategory = category.replace("_", " ");
93
-
94
- final HashMap<String, String> extraGuesses = new HashMap<String, String>();
95
-
96
- final String description;
97
- switch (category) {
98
- case "input":
99
- description = String.format("Loads records from %s.", displayName);
100
- break;
101
- case "file_input":
102
- description = String.format("Reads files stored on %s.", displayName);
103
- break;
104
- case "parser":
105
- description = String.format("Parses %s files read by other file input plugins.", displayName);
106
- extraGuesses.put("embulk/data/new/ruby/parser_guess.rb.vm",
107
- String.format("%s/guess/%s.rb", pluginDirectory, name));
108
- break;
109
- case "decoder":
110
- description = String.format("Decodes %s-encoded files read by other file input plugins.", displayName);
111
- extraGuesses.put("embulk/data/new/ruby/decoder_guess.rb.vm",
112
- String.format("%s/guess/%s.rb", pluginDirectory, name));
113
- break;
114
- case "output":
115
- description = String.format("Dumps records to %s.", displayName);
116
- break;
117
- case "file_output":
118
- description = String.format("Stores files on %s.", displayName);
119
- break;
120
- case "formatter":
121
- description = String.format("Formats %s files for other file output plugins.", displayName);
122
- break;
123
- case "encoder":
124
- description = String.format("Encodes files using %s for other file output plugins.", displayName);
125
- break;
126
- case "filter":
127
- description = String.format("%s", displayName);
128
- break;
129
- default:
130
- throw new RuntimeException("FATAL: Invalid plugin category.");
131
- }
132
-
133
- //
134
- // Generate project repository
135
- //
136
- final VelocityContext velocityContext = createVelocityContext(
137
- author,
138
- category,
139
- description,
140
- displayName,
141
- displayCategory,
142
- email,
143
- embulkCategory,
144
- this.embulkVersion,
145
- expectedGitHubAccount,
146
- fullProjectName,
147
- javaClassName,
148
- javaPackageName,
149
- language,
150
- name,
151
- rubyClassName);
152
- copyTemplated("embulk/data/new/README.md.vm", "README.md", velocityContext);
153
- copy("embulk/data/new/LICENSE.txt", "LICENSE.txt");
154
- copyTemplated("embulk/data/new/gitignore.vm", ".gitignore", velocityContext);
155
-
156
- switch (language) {
157
- case "ruby":
158
- copy("embulk/data/new/ruby/Rakefile", "Rakefile");
159
- copy("embulk/data/new/ruby/Gemfile", "Gemfile");
160
- copy("embulk/data/new/ruby/.ruby-version", ".ruby-version");
161
- copyTemplated("embulk/data/new/ruby/gemspec.vm",
162
- fullProjectName + ".gemspec",
163
- velocityContext);
164
- copyTemplated(String.format("embulk/data/new/ruby/%s.rb.vm", category),
165
- this.pluginPath,
166
- velocityContext);
167
- break;
168
- case "java":
169
- copy("embulk/data/new/java/gradle/wrapper/gradle-wrapper.jar",
170
- "gradle/wrapper/gradle-wrapper.jar");
171
- copy("embulk/data/new/java/gradle/wrapper/gradle-wrapper.properties",
172
- "gradle/wrapper/gradle-wrapper.properties");
173
- copy("embulk/data/new/java/gradlew.bat", "gradlew.bat");
174
- copy("embulk/data/new/java/gradlew", "gradlew");
175
- setExecutable("gradlew");
176
- copy("embulk/data/new/java/config/checkstyle/checkstyle.xml", "config/checkstyle/checkstyle.xml");
177
- copy("embulk/data/new/java/config/checkstyle/default.xml", "config/checkstyle/default.xml");
178
- copyTemplated("embulk/data/new/java/build.gradle.vm", "build.gradle", velocityContext);
179
- copyTemplated("embulk/data/new/java/plugin_loader.rb.vm", this.pluginPath, velocityContext);
180
- copyTemplated(String.format("embulk/data/new/java/%s.java.vm", category),
181
- String.format("src/main/java/%s/%s.java",
182
- javaPackageName.replaceAll("\\.", "/"),
183
- javaClassName),
184
- velocityContext);
185
- copyTemplated("embulk/data/new/java/test.java.vm",
186
- String.format("src/test/java/%s/Test%s.java",
187
- javaPackageName.replaceAll("\\.", "/"),
188
- javaClassName),
189
- velocityContext);
190
- break;
191
- }
192
-
193
- for (Map.Entry<String, String> entry : extraGuesses.entrySet()) {
194
- copyTemplated(entry.getKey(), entry.getValue(), velocityContext);
195
- }
196
-
197
- System.out.println("");
198
- System.out.println("Plugin template is successfully generated.");
199
-
200
- switch (language) {
201
- case "ruby":
202
- System.out.println("Next steps:");
203
- System.out.println("");
204
- System.out.printf(" $ cd %s\n", fullProjectName);
205
- System.out.println(" $ bundle install # install one using rbenv & rbenv-build");
206
- System.out.println(" $ bundle exec rake # build gem to be released");
207
- System.out.println(" $ bundle exec embulk run config.yml # you can run plugin using this command");
208
- break;
209
- case "java":
210
- System.out.println("Next steps:");
211
- System.out.println("");
212
- System.out.printf(" $ cd %s\n", fullProjectName);
213
- System.out.println(" $ ./gradlew package");
214
- }
215
-
216
- success = true;
217
- System.out.println("");
218
- }
219
- catch (Exception ex) {
220
- ex.printStackTrace();
221
- }
222
- finally {
223
- if (!success) {
224
- System.out.println("Failed. Removing the directory created.");
225
- deleteDirectoryTree(Paths.get(fullProjectName));
226
- }
227
- }
228
- return success;
229
- }
230
-
231
- private static class LanguageAndCategory
232
- {
233
- private LanguageAndCategory(final String language, final String category)
234
- {
235
- this.language = language;
236
- this.category = category;
237
- }
238
-
239
- public static LanguageAndCategory of(final String categoryWithLanguage)
240
- {
241
- switch (categoryWithLanguage) {
242
- case "java-input": return new LanguageAndCategory("java", "input");
243
- case "java-output": return new LanguageAndCategory("java", "output");
244
- case "java-filter": return new LanguageAndCategory("java", "filter");
245
- case "java-file-input": return new LanguageAndCategory("java", "file_input");
246
- case "java-file-output": return new LanguageAndCategory("java", "file_output");
247
- case "java-parser": return new LanguageAndCategory("java", "parser");
248
- case "java-formatter": return new LanguageAndCategory("java", "formatter");
249
- case "java-decoder": return new LanguageAndCategory("java", "decoder");
250
- case "java-encoder": return new LanguageAndCategory("java", "encoder");
251
- case "ruby-input": return new LanguageAndCategory("ruby", "input");
252
- case "ruby-output": return new LanguageAndCategory("ruby", "output");
253
- case "ruby-filter": return new LanguageAndCategory("ruby", "filter");
254
- case "ruby-file-input":
255
- throw new RuntimeException("ruby-file-input is not implemented yet. See #21 on github.");
256
- case "ruby-file-output":
257
- throw new RuntimeException("ruby-file-output is not implemented yet. See #22 on github.");
258
- case "ruby-parser": return new LanguageAndCategory("ruby", "parser");
259
- case "ruby-formatter": return new LanguageAndCategory("ruby", "formatter");
260
- case "ruby-decoder":
261
- throw new RuntimeException("ruby-decoder is not implemented yet. See #31 on github.");
262
- case "ruby-encoder":
263
- throw new RuntimeException("ruby-decoder is not implemented yet. See #32 on github.");
264
- default:
265
- throw new RuntimeException(String.format("Unknown category '%s'", categoryWithLanguage));
266
- }
267
- }
268
-
269
- public String getLanguage()
270
- {
271
- return this.language;
272
- }
273
-
274
- public String getCategory()
275
- {
276
- return this.category;
277
- }
278
-
279
- private final String language;
280
- private final String category;
281
- }
282
-
283
- private String getGitConfig(final String configName, final String defaultValue)
284
- {
285
- try {
286
- final Process process = new ProcessBuilder("git", "config", configName).redirectErrorStream(true).start();
287
- return CharStreams.toString(new InputStreamReader(process.getInputStream(), StandardCharsets.UTF_8)).trim();
288
- }
289
- catch (Throwable ex) {
290
- return "YOUR_NAME";
291
- }
292
- }
293
-
294
- private Path deleteDirectoryTree(final Path path)
295
- throws IOException
296
- {
297
- return Files.walkFileTree(path, new SimpleFileVisitor<Path>() {
298
- @Override
299
- public FileVisitResult visitFile(Path file, BasicFileAttributes attributes)
300
- throws IOException
301
- {
302
- Files.delete(file);
303
- return FileVisitResult.CONTINUE;
304
- }
305
-
306
- @Override
307
- public FileVisitResult postVisitDirectory(Path directory, IOException exception)
308
- throws IOException
309
- {
310
- Files.delete(directory);
311
- return FileVisitResult.CONTINUE;
312
- }
313
- });
314
- }
315
-
316
- private String getDisplayName(final String name)
317
- {
318
- final String[] nameSplit = name.split("_");
319
- final ArrayList<String> nameComposition = new ArrayList<String>();
320
- for (String namePart : nameSplit) {
321
- nameComposition.add(CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, namePart));
322
- }
323
- return Joiner.on(" ").join(nameComposition);
324
- }
325
-
326
- private VelocityContext createVelocityContext(final String author,
327
- final String category,
328
- final String description,
329
- final String displayName,
330
- final String displayCategory,
331
- final String email,
332
- final String embulkCategory,
333
- final String embulkVersion,
334
- final String expectedGitHubAccount,
335
- final String fullProjectName,
336
- final String javaClassName,
337
- final String javaPackageName,
338
- final String language,
339
- final String name,
340
- final String rubyClassName)
341
- {
342
- final VelocityContext velocityContext = new VelocityContext();
343
- // TODO(dmikurube): Revisit this |argumentToRunEmbulkJava|.
344
- // This is in the Velocity context because the value could not be in Velocity templates.
345
- velocityContext.put("argumentToRunEmbulkJava", "\'-L ${file(\".\").absolutePath}\'");
346
- velocityContext.put("author", author);
347
- velocityContext.put("category", category);
348
- velocityContext.put("description", description);
349
- velocityContext.put("displayName", displayName);
350
- velocityContext.put("displayCategory", displayCategory);
351
- velocityContext.put("email", email);
352
- velocityContext.put("embulkCategory", embulkCategory);
353
- velocityContext.put("embulkVersion", embulkVersion);
354
- velocityContext.put("expectedGitHubAccount", expectedGitHubAccount);
355
- velocityContext.put("fullProjectName", fullProjectName);
356
- velocityContext.put("javaClassName", javaClassName);
357
- velocityContext.put("javaGuessClassName", javaClassName.replace("Plugin", "GuessPlugin"));
358
- velocityContext.put("javaPackageName", javaPackageName);
359
- velocityContext.put("language", language);
360
- velocityContext.put("name", name);
361
- velocityContext.put("rubyClassName", rubyClassName);
362
- velocityContext.put("rubyGuessClassName", rubyClassName.replace("Plugin", "GuessPlugin"));
363
- return velocityContext;
364
- }
365
-
366
- private void copy(String sourceResourcePath, String destinationFileName)
367
- throws IOException
368
- {
369
- final Path destinationPath = this.pluginBasePath.resolve(destinationFileName);
370
- Files.createDirectories(destinationPath.getParent());
371
- Files.copy(EmbulkNew.class.getClassLoader().getResourceAsStream(sourceResourcePath), destinationPath);
372
- }
373
-
374
- private void copyTemplated(String sourceResourcePath, String destinationFileName, VelocityContext velocityContext)
375
- throws IOException
376
- {
377
- try (InputStreamReader reader = new InputStreamReader(
378
- EmbulkNew.class.getClassLoader().getResourceAsStream(sourceResourcePath))) {
379
- final Path destinationPath = this.pluginBasePath.resolve(destinationFileName);
380
- Files.createDirectories(destinationPath.getParent());
381
- try (BufferedWriter writer = Files.newBufferedWriter(destinationPath, StandardCharsets.UTF_8)) {
382
- this.velocityEngine.evaluate(velocityContext,
383
- writer,
384
- "embulk-new",
385
- reader);
386
- }
387
- }
388
- }
389
-
390
- private void setExecutable(String targetFileName)
391
- throws IOException
392
- {
393
- final Path targetPath = this.pluginBasePath.resolve(targetFileName);
394
- final Set<PosixFilePermission> permissions =
395
- new HashSet<PosixFilePermission>(Files.getPosixFilePermissions(targetPath));
396
- permissions.add(PosixFilePermission.OWNER_EXECUTE);
397
- permissions.add(PosixFilePermission.GROUP_EXECUTE);
398
- permissions.add(PosixFilePermission.OTHERS_EXECUTE);
399
- Files.setPosixFilePermissions(targetPath, permissions);
400
- }
401
-
402
- private final Path basePath;
403
-
404
- private final String nameGiven;
405
- private final String language;
406
- private final String category;
407
- private final String embulkVersion;
408
-
409
- private final String embulkCategory;
410
- private final String name;
411
-
412
- private final String fullProjectName;
413
- private final String pluginDirectory;
414
- private final String pluginPath;
415
-
416
- private final Path pluginBasePath;
417
-
418
- private final VelocityEngine velocityEngine;
419
- }
@@ -1,774 +0,0 @@
1
- package org.embulk.cli;
2
-
3
- import java.io.IOException;
4
- import java.io.PrintStream;
5
- import java.io.PrintWriter;
6
- import java.net.URISyntaxException;
7
- import java.nio.file.Files;
8
- import java.nio.file.FileVisitResult;
9
- import java.nio.file.Path;
10
- import java.nio.file.Paths;
11
- import java.nio.file.SimpleFileVisitor;
12
- import java.nio.file.attribute.BasicFileAttributes;
13
- import java.util.ArrayList;
14
- import java.util.Arrays;
15
- import java.util.List;
16
- import org.embulk.EmbulkRunner;
17
- import org.embulk.EmbulkSetup;
18
- import org.embulk.cli.parse.EmbulkCommandLineHelpRequired;
19
- import org.embulk.cli.parse.EmbulkCommandLineParseException;
20
- import org.embulk.cli.parse.EmbulkCommandLineParser;
21
- import org.embulk.cli.parse.OptionBehavior;
22
- import org.embulk.cli.parse.OptionDefinition;
23
- // TODO: Replace org.joda.time with java.time when Embulk goes to Java 8.
24
- import org.joda.time.DateTime;
25
- import org.joda.time.format.DateTimeFormat;
26
- import org.joda.time.format.DateTimeFormatter;
27
- import org.jruby.embed.LocalContextScope;
28
- import org.jruby.embed.LocalVariableBehavior;
29
- import org.jruby.embed.ScriptingContainer;
30
-
31
- public class EmbulkRun
32
- {
33
- public EmbulkRun(final String embulkVersion)
34
- {
35
- this.embulkVersion = embulkVersion;
36
- }
37
-
38
- public int run(final List<String> argsEmbulk, final List<String> jrubyOptions)
39
- {
40
- final EmbulkArguments arguments;
41
- try {
42
- arguments = EmbulkArguments.extract(argsEmbulk);
43
- }
44
- catch (EmbulkCommandLineException ex) {
45
- printGeneralUsage(System.err);
46
- System.err.println("");
47
- System.err.println("error: " + ex.getMessage());
48
- return 1;
49
- }
50
-
51
- final EmbulkSubcommand subcommand = arguments.getSubcommand();
52
- if (subcommand == null) {
53
- printGeneralUsage(System.err);
54
- System.err.println("");
55
- System.err.println("Use `<command> --help` to see description of the commands.");
56
- return 1;
57
- }
58
-
59
- final List<String> subcommandArguments = arguments.getSubcommandArguments();
60
-
61
- switch (subcommand) {
62
- case VERSION_OUT:
63
- // TODO(v2)[#723]: Consider capitalizing this "embulk".
64
- // https://github.com/embulk/embulk/issues/723
65
- System.out.println("embulk " + this.embulkVersion);
66
- return 0;
67
- case VERSION_ERR:
68
- // TODO(v2)[#723]: Consider capitalizing this "embulk".
69
- // https://github.com/embulk/embulk/issues/723
70
- System.err.println("embulk " + this.embulkVersion);
71
- return 0;
72
- }
73
-
74
- printEmbulkVersionHeader(System.out);
75
-
76
- switch (subcommand) {
77
- case BUNDLE:
78
- case EXEC:
79
- case GEM:
80
- case IRB:
81
- return runSubcommand(subcommand, subcommandArguments, null, jrubyOptions);
82
- default:
83
- final EmbulkCommandLineParser parser = buildCommandLineParser(subcommand);
84
- final EmbulkCommandLine commandLine;
85
- try {
86
- commandLine = parser.parse(
87
- subcommandArguments, jrubyOptions, new PrintWriter(System.out), new PrintWriter(System.err));
88
- }
89
- catch (EmbulkCommandLineParseException ex) {
90
- parser.printHelp(System.err);
91
- System.err.println("");
92
- System.err.println(ex.getMessage());
93
- return 1;
94
- }
95
- catch (EmbulkCommandLineHelpRequired ex) {
96
- parser.printHelp(System.err);
97
- return 1;
98
- }
99
- return runSubcommand(subcommand, subcommandArguments, commandLine, jrubyOptions);
100
- }
101
- }
102
-
103
- private EmbulkCommandLineParser buildCommandLineParser(final EmbulkSubcommand subcommand)
104
- {
105
- final EmbulkCommandLineParser.Builder parserBuilder = EmbulkCommandLineParser.builder();
106
-
107
- // TODO: Revisit the width. JLine may help. https://github.com/jline
108
- parserBuilder
109
- .setWidth(160)
110
- .addHelpMessageLine(" Help:")
111
- .addOptionDefinition(OptionDefinition.defineHelpOption("h", "help", "Print help."))
112
- .addHelpMessageLine("");
113
-
114
- switch (subcommand) {
115
- case RUN:
116
- parserBuilder
117
- .setMainUsage("embulk run <config.yml>")
118
- .addHelpMessageLine(" Options:")
119
- // op.on('-r', '--resume-state PATH', 'Path to a file to write or read resume state') do |path|
120
- // options[:resume_state_path] = path
121
- // end
122
- .addOptionDefinition(OptionDefinition.defineOptionWithArgument(
123
- "r", "resume-state", "PATH", "Path to a file to write or read resume state",
124
- new OptionBehavior()
125
- {
126
- public void behave(final EmbulkCommandLine.Builder commandLineBuilder,
127
- final String argument)
128
- {
129
- commandLineBuilder.setResumeState(argument);
130
- }
131
- }))
132
- // op.on('-o', '--output PATH', '(deprecated)') do |path|
133
- // STDERR.puts "#{Time.now.strftime("%Y-%m-%d %H:%M:%S.%3N %z")}: Run with -o option is deprecated. Please use -c option instead. For example,"
134
- // STDERR.puts "#{Time.now.strftime("%Y-%m-%d %H:%M:%S.%3N %z")}: "
135
- // STDERR.puts "#{Time.now.strftime("%Y-%m-%d %H:%M:%S.%3N %z")}: $ embulk run config.yml -c diff.yml"
136
- // STDERR.puts "#{Time.now.strftime("%Y-%m-%d %H:%M:%S.%3N %z")}: "
137
- // STDERR.puts "#{Time.now.strftime("%Y-%m-%d %H:%M:%S.%3N %z")}: This -c option stores only diff of the next configuration."
138
- // STDERR.puts "#{Time.now.strftime("%Y-%m-%d %H:%M:%S.%3N %z")}: The diff will be merged to the original config.yml file."
139
- // STDERR.puts "#{Time.now.strftime("%Y-%m-%d %H:%M:%S.%3N %z")}: "
140
- // options[:next_config_output_path] = path
141
- // end
142
- .addOptionDefinition(OptionDefinition.defineOptionWithArgument(
143
- "o", "output", "PATH", "(deprecated)",
144
- new OptionBehavior()
145
- {
146
- public void behave(final EmbulkCommandLine.Builder commandLineBuilder, final String argument)
147
- {
148
- final DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss.SSS Z");
149
- final String now = DateTime.now().toString(formatter);
150
- errorWriter().println(now + ": Run with -o option is deprecated. Please use -c option instead. For example,");
151
- errorWriter().println(now + ": ");
152
- errorWriter().println(now + ": $ embulk run config.yml -c diff.yml");
153
- errorWriter().println(now + ": ");
154
- errorWriter().println(now + ": This -c option stores only diff of the next configuration.");
155
- errorWriter().println(now + ": The diff will be merged to the original config.yml file.");
156
- errorWriter().println(now + ": ");
157
- commandLineBuilder.setOutput(argument);
158
- }
159
- }))
160
- // op.on('-c', '--config-diff PATH', 'Path to a file to read & write the next configuration diff') do |path|
161
- // options[:next_config_diff_path] = path
162
- // end
163
- .addOptionDefinition(OptionDefinition.defineOptionWithArgument(
164
- "c", "config-diff", "PATH", "Path to a file to read & write the next configuration diff",
165
- new OptionBehavior()
166
- {
167
- public void behave(final EmbulkCommandLine.Builder commandLineBuilder, final String argument)
168
- {
169
- commandLineBuilder.setConfigDiff(argument);
170
- }
171
- }))
172
- .setArgumentsRange(1, 1);
173
- addPluginLoadOptionDefinitions(parserBuilder);
174
- addOtherOptionDefinitions(parserBuilder);
175
- break;
176
- case CLEANUP:
177
- parserBuilder
178
- .setMainUsage("embulk cleanup <config.yml>")
179
- .addHelpMessageLine(" Options:")
180
- // op.on('-r', '--resume-state PATH', 'Path to a file to cleanup resume state') do |path|
181
- // options[:resume_state_path] = path
182
- // end
183
- .addOptionDefinition(OptionDefinition.defineOptionWithArgument(
184
- "r", "resume-state", "PATH", "Path to a file to cleanup resume state",
185
- new OptionBehavior()
186
- {
187
- public void behave(final EmbulkCommandLine.Builder commandLineBuilder, final String argument)
188
- {
189
- commandLineBuilder.setResumeState(argument);
190
- }
191
- }))
192
- .setArgumentsRange(1, 1);
193
- addPluginLoadOptionDefinitions(parserBuilder);
194
- addOtherOptionDefinitions(parserBuilder);
195
- break;
196
- case PREVIEW:
197
- parserBuilder
198
- .setMainUsage("embulk preview <config.yml>")
199
- .addHelpMessageLine(" Options:")
200
- // op.on('-G', '--vertical', "Use vertical output format", TrueClass) do |b|
201
- // options[:format] = "vertical"
202
- // end
203
- .addOptionDefinition(OptionDefinition.defineOptionWithoutArgument(
204
- "G", "vertical", "Use vertical output format",
205
- new OptionBehavior()
206
- {
207
- public void behave(final EmbulkCommandLine.Builder commandLineBuilder, final String argument)
208
- {
209
- commandLineBuilder.setFormat("vertical");
210
- }
211
- }))
212
- .setArgumentsRange(1, 1);
213
- addPluginLoadOptionDefinitions(parserBuilder);
214
- addOtherOptionDefinitions(parserBuilder);
215
- break;
216
- case GUESS:
217
- parserBuilder
218
- .setMainUsage("embulk guess <partial-config.yml>")
219
- .addHelpMessageLine(" Options:")
220
- // op.on('-o', '--output PATH', 'Path to a file to write the guessed configuration') do |path|
221
- // options[:next_config_output_path] = path
222
- // end
223
- .addOptionDefinition(OptionDefinition.defineOptionWithArgument(
224
- "o", "output", "PATH", "Path to a file to write the guessed configuration",
225
- new OptionBehavior()
226
- {
227
- public void behave(final EmbulkCommandLine.Builder commandLineBuilder, final String argument)
228
- {
229
- commandLineBuilder.setOutput(argument);
230
- }
231
- }))
232
- // op.on('-g', '--guess NAMES', "Comma-separated list of guess plugin names") do |names|
233
- // (options[:system_config][:guess_plugins] ||= []).concat names.split(",") # TODO
234
- // end
235
- .addOptionDefinition(OptionDefinition.defineOptionWithArgument(
236
- "g", "guess", "NAMES", "Comma-separated list of guess plugin names",
237
- new OptionBehavior()
238
- {
239
- public void behave(final EmbulkCommandLine.Builder commandLineBuilder, final String argument)
240
- {
241
- for (final String guess : argument.split(",")) {
242
- commandLineBuilder.addSystemConfig("guess_plugins", guess);
243
- }
244
- }
245
- }))
246
- .setArgumentsRange(1, 1);
247
- addPluginLoadOptionDefinitions(parserBuilder);
248
- addOtherOptionDefinitions(parserBuilder);
249
- break;
250
- case MKBUNDLE:
251
- parserBuilder
252
- .setMainUsage("embulk mkbundle <directory> [--path PATH]")
253
- .addHelpMessageLine(" Options:")
254
- // op.on('--path PATH', 'Relative path from <directory> for the location to install gems to (e.g. --path shared/bundle).') do |path|
255
- // options[:bundle_path] = path
256
- // end
257
- .addOptionDefinition(OptionDefinition.defineOnlyLongOptionWithArgument(
258
- "path", "PATH",
259
- "Relative path from <directory> for the location to install gems to (e.g. --path shared/bundle).",
260
- new OptionBehavior()
261
- {
262
- public void behave(final EmbulkCommandLine.Builder commandLineBuilder, final String argument)
263
- {
264
- commandLineBuilder.setBundlePath(argument);
265
- }
266
- }))
267
- .addHelpMessageLine("")
268
- .addHelpMessageLine(" \"mkbundle\" creates a new a plugin bundle directory. You can install")
269
- .addHelpMessageLine(" plugins (gems) to the directory instead of ~/.embulk.")
270
- .addHelpMessageLine("")
271
- .addHelpMessageLine(" See generated <directory>/Gemfile to install plugins to the directory.")
272
- .addHelpMessageLine(" Use -b, --bundle BUNDLE_DIR option to use it:")
273
- .addHelpMessageLine("")
274
- .addHelpMessageLine(" $ embulk mkbundle ./dir # create bundle directory")
275
- .addHelpMessageLine(" $ (cd dir && vi Gemfile && embulk bundle) # update plugin list")
276
- .addHelpMessageLine(" $ embulk guess -b ./dir ... # guess using bundled plugins")
277
- .addHelpMessageLine(" $ embulk run -b ./dir ... # run using bundled plugins")
278
- .setArgumentsRange(1, 1);
279
- break;
280
- case NEW:
281
- parserBuilder
282
- .setMainUsage("embulk new <category> <name>")
283
- .addUsage("")
284
- .addUsage("categories:")
285
- .addUsage("")
286
- .addUsage(" ruby-input Ruby record input plugin (like \"mysql\")")
287
- .addUsage(" ruby-output Ruby record output plugin (like \"mysql\")")
288
- .addUsage(" ruby-filter Ruby record filter plugin (like \"add-hostname\")")
289
- .addUsage(" #ruby-file-input Ruby file input plugin (like \"ftp\") # not implemented yet [#21]")
290
- .addUsage(" #ruby-file-output Ruby file output plugin (like \"ftp\") # not implemented yet [#22]")
291
- .addUsage(" ruby-parser Ruby file parser plugin (like \"csv\")")
292
- .addUsage(" ruby-formatter Ruby file formatter plugin (like \"csv\")")
293
- .addUsage(" #ruby-decoder Ruby file decoder plugin (like \"gzip\") # not implemented yet [#31]")
294
- .addUsage(" #ruby-encoder Ruby file encoder plugin (like \"gzip\") # not implemented yet [#32]")
295
- .addUsage(" java-input Java record input plugin (like \"mysql\")")
296
- .addUsage(" java-output Java record output plugin (like \"mysql\")")
297
- .addUsage(" java-filter Java record filter plugin (like \"add-hostname\")")
298
- .addUsage(" java-file-input Java file input plugin (like \"ftp\")")
299
- .addUsage(" java-file-output Java file output plugin (like \"ftp\")")
300
- .addUsage(" java-parser Java file parser plugin (like \"csv\")")
301
- .addUsage(" java-formatter Java file formatter plugin (like \"csv\")")
302
- .addUsage(" java-decoder Java file decoder plugin (like \"gzip\")")
303
- .addUsage(" java-encoder Java file encoder plugin (like \"gzip\")")
304
- .addUsage("")
305
- .addUsage("examples:")
306
- .addUsage(" new ruby-output hbase")
307
- .addUsage(" new ruby-filter int-to-string")
308
- .setArgumentsRange(2, 2);
309
- break;
310
- case MIGRATE:
311
- parserBuilder
312
- .setMainUsage("embulk migrate <directory>")
313
- .setArgumentsRange(1, 1);
314
- break;
315
- case SELFUPDATE:
316
- parserBuilder
317
- .setMainUsage("embulk selfupdate")
318
- // op.on('-f', "Skip corruption check", TrueClass) do |b|
319
- // options[:force] = true
320
- // end
321
- .addOptionDefinition(OptionDefinition.defineOnlyShortOptionWithoutArgument(
322
- "f", "Skip corruption check",
323
- new OptionBehavior()
324
- {
325
- public void behave(final EmbulkCommandLine.Builder commandLineBuilder, final String argument)
326
- {
327
- commandLineBuilder.setForce(true);
328
- }
329
- }))
330
- .setArgumentsRange(0, 1);
331
- break;
332
- case EXAMPLE:
333
- parserBuilder
334
- .setMainUsage("embulk example [directory]")
335
- .setArgumentsRange(0, 1);
336
- break;
337
- default:
338
- parserBuilder.setMainUsage("[FATAL] Unknown subcommand: " + subcommand);
339
- }
340
-
341
- return parserBuilder.build();
342
- }
343
-
344
- private int runSubcommand(final EmbulkSubcommand subcommand,
345
- final List<String> subcommandArguments,
346
- final EmbulkCommandLine commandLine,
347
- final List<String> jrubyOptions)
348
- {
349
- switch (subcommand) {
350
- case EXAMPLE:
351
- final EmbulkExample embulkExample = new EmbulkExample();
352
- try {
353
- embulkExample.createExample(commandLine.getArguments().isEmpty()
354
- ? "embulk-example"
355
- : commandLine.getArguments().get(0));
356
- }
357
- catch (IOException ex) {
358
- ex.printStackTrace(System.err);
359
- return 1;
360
- }
361
- return 0;
362
- case NEW:
363
- final String categoryWithLanguage = commandLine.getArguments().get(0);
364
- final String nameGiven = commandLine.getArguments().get(1);
365
- try {
366
- final EmbulkNew embulkNew = new EmbulkNew(categoryWithLanguage, nameGiven, this.embulkVersion);
367
- embulkNew.newPlugin();
368
- }
369
- catch (IOException ex) {
370
- ex.printStackTrace();
371
- return 1;
372
- }
373
- return 0;
374
- case MIGRATE:
375
- final String path = commandLine.getArguments().get(0);
376
- final EmbulkMigrate embulkMigrate = new EmbulkMigrate();
377
- try {
378
- embulkMigrate.migratePlugin(path, this.embulkVersion);
379
- }
380
- catch (IOException ex) {
381
- ex.printStackTrace();
382
- return 1;
383
- }
384
- return 0;
385
- case SELFUPDATE:
386
- final String specifiedVersionString;
387
- if (commandLine.getArguments().isEmpty()) {
388
- specifiedVersionString = null;
389
- }
390
- else {
391
- specifiedVersionString = commandLine.getArguments().get(0);
392
- }
393
- final EmbulkSelfUpdate embulkSelfUpdate = new EmbulkSelfUpdate();
394
- try {
395
- embulkSelfUpdate.updateSelf(this.embulkVersion, specifiedVersionString, commandLine.getForce());
396
- }
397
- catch (IOException | URISyntaxException ex) {
398
- ex.printStackTrace();
399
- return 1;
400
- }
401
- return 0;
402
- case BUNDLE:
403
- if (!subcommandArguments.isEmpty() && subcommandArguments.get(0).equals("new")) {
404
- if (subcommandArguments.size() != 2) {
405
- printGeneralUsage(System.err);
406
- System.err.println("");
407
- System.err.println("Use `<command> --help` to see description of the commands.");
408
- return 1;
409
- }
410
- newBundle(subcommandArguments.get(1), null);
411
- System.err.println("'embulk bundle new' is deprecated. This will be removed in future release. Please use 'embulk mkbundle' instead.");
412
- }
413
- else {
414
- runBundler(subcommandArguments, null);
415
- }
416
- return 0;
417
- case GEM:
418
- callJRubyGem(subcommandArguments);
419
- return 0;
420
- case MKBUNDLE:
421
- newBundle(commandLine.getArguments().get(0), commandLine.getBundlePath());
422
- break;
423
- case EXEC:
424
- callJRubyExec(subcommandArguments);
425
- return 127;
426
- case IRB:
427
- callJRubyIRB();
428
- return 0;
429
- case RUN:
430
- case CLEANUP:
431
- case PREVIEW:
432
- case GUESS:
433
- // NOTE: When it was in Ruby "require 'embulk'" was required on top for Ruby |Embulk::setup|.
434
- // Ruby |Embulk::setup| is now replaced with Java |org.embulk.EmbulkSetup.setup|.
435
-
436
- // TODO: Move this to initial JRuby instantiation.
437
- // reset context class loader set by org.jruby.Main.main to nil. embulk manages
438
- // multiple classloaders. default classloader should be Plugin.class.getClassloader().
439
- Thread.currentThread().setContextClassLoader(null);
440
-
441
- // NOTE: When it was in Ruby ""require 'json'" was required.
442
-
443
- // NOTE: $LOAD_PATH and $CLASSPATH are set in |EmbulkSetup|.
444
-
445
- // call |EmbulkSetup.setup| after setup_classpaths to allow users to overwrite
446
- // embulk classes
447
- // NOTE: |EmbulkSetup.setup| returns |EmbulkEmbed| while it stores Ruby |Embulk::EmbulkRunner(EmbulkEmbed)|
448
- // into Ruby |Embulk::Runner|.
449
- final EmbulkRunner runner = EmbulkSetup.setup(commandLine.getSystemConfig());
450
-
451
- final Path configDiffPath =
452
- (commandLine.getConfigDiff() == null ? null : Paths.get(commandLine.getConfigDiff()));
453
- final Path outputPath =
454
- (commandLine.getOutput() == null ? null : Paths.get(commandLine.getOutput()));
455
- final Path resumeStatePath =
456
- (commandLine.getResumeState() == null ? null : Paths.get(commandLine.getResumeState()));
457
-
458
- try {
459
- switch (subcommand) {
460
- case GUESS:
461
- runner.guess(Paths.get(commandLine.getArguments().get(0)), outputPath);
462
- break;
463
- case PREVIEW:
464
- runner.preview(Paths.get(commandLine.getArguments().get(0)), commandLine.getFormat());
465
- break;
466
- case RUN:
467
- runner.run(Paths.get(commandLine.getArguments().get(0)),
468
- configDiffPath,
469
- outputPath,
470
- resumeStatePath);
471
- break;
472
- }
473
- }
474
- catch (Throwable ex) {
475
- ex.printStackTrace(System.err);
476
- System.err.println("");
477
- System.err.println("Error: " + ex.getMessage());
478
- return 1;
479
- }
480
- }
481
- return 0;
482
- }
483
-
484
- private int newBundle(final String pathString, final String bundlePath)
485
- {
486
- final Path path = Paths.get(pathString);
487
- if (Files.exists(path)) {
488
- System.err.println("'" + pathString + "' already exists.");
489
- return 1;
490
- }
491
-
492
- System.out.println("Initializing " + pathString + "...");
493
- try {
494
- Files.createDirectories(path);
495
- }
496
- catch (IOException ex) {
497
- ex.printStackTrace();
498
- return 1;
499
- }
500
- boolean success = false;
501
- try {
502
- // TODO: Rewrite this part in Java.
503
- final ScriptingContainer localJRubyContainer = createLocalJRubyScriptingContainer();
504
- localJRubyContainer.runScriptlet("require 'embulk'");
505
- localJRubyContainer.runScriptlet("require 'fileutils'");
506
- localJRubyContainer.runScriptlet("require 'rubygems/gem_runner'");
507
-
508
- // copy embulk/data/bundle/ contents
509
- localJRubyContainer.runScriptlet("require 'embulk/data/package_data'");
510
- localJRubyContainer.put("__internal_path__", pathString);
511
- localJRubyContainer.runScriptlet("pkg = Embulk::PackageData.new('bundle', __internal_path__)");
512
- localJRubyContainer.remove("__internal_path__");
513
- localJRubyContainer.runScriptlet("%w[Gemfile .ruby-version .bundle/config embulk/input/example.rb embulk/output/example.rb embulk/filter/example.rb].each { |file| pkg.cp(file, file) }");
514
- // run the first bundle-install
515
- runBundler(Arrays.asList("install", "--path", bundlePath != null ? bundlePath : "."), path);
516
- success = true;
517
- }
518
- catch (Exception ex) {
519
- ex.printStackTrace();
520
- throw ex;
521
- // success = true;
522
- }
523
- finally {
524
- if (!success) {
525
- try {
526
- Files.walkFileTree(path, new SimpleFileVisitor<Path>()
527
- {
528
- @Override
529
- public FileVisitResult visitFile(Path file, BasicFileAttributes attributes)
530
- {
531
- try {
532
- Files.deleteIfExists(file);
533
- }
534
- catch (IOException ex) {
535
- // Ignore.
536
- }
537
- return FileVisitResult.CONTINUE;
538
- }
539
-
540
- @Override
541
- public FileVisitResult postVisitDirectory(Path dir, IOException exception)
542
- {
543
- try {
544
- Files.deleteIfExists(dir);
545
- }
546
- catch (IOException ex) {
547
- // Ignore.
548
- }
549
- return FileVisitResult.CONTINUE;
550
- }
551
- });
552
- }
553
- catch (IOException ex) {
554
- ex.printStackTrace();
555
- return 1;
556
- }
557
- }
558
- }
559
- return 0;
560
- }
561
-
562
- private void runBundler(final List<String> arguments, final Path path)
563
- {
564
- final ScriptingContainer localJRubyContainer = createLocalJRubyScriptingContainer();
565
- localJRubyContainer.runScriptlet("require 'bundler'"); // bundler is included in embulk-core.jar
566
-
567
- // this hack is necessary to make --help working
568
- localJRubyContainer.runScriptlet("Bundler.define_singleton_method(:which_orig, Bundler.method(:which))");
569
- localJRubyContainer.runScriptlet("Bundler.define_singleton_method(:which) { |executable| (executable == 'man' ? false : which_orig(executable)) }");
570
-
571
- localJRubyContainer.runScriptlet("require 'bundler/friendly_errors'");
572
- localJRubyContainer.runScriptlet("require 'bundler/cli'");
573
-
574
- localJRubyContainer.put("__internal_argv_java__", arguments);
575
- if (path == null) {
576
- localJRubyContainer.runScriptlet("Bundler.with_friendly_errors { Bundler::CLI.start(Array.new(__internal_argv_java__), debug: true) }");
577
- }
578
- else {
579
- localJRubyContainer.put("__internal_working_dir__", path.toString());
580
- localJRubyContainer.runScriptlet("Dir.chdir(__internal_working_dir__) { Bundler.with_friendly_errors { Bundler::CLI.start(__internal_argv__, debug: true) } }");
581
- localJRubyContainer.remove("__internal_working_dir__");
582
- }
583
- localJRubyContainer.remove("__internal_argv_java__");
584
- }
585
-
586
- private void addPluginLoadOptionDefinitions(final EmbulkCommandLineParser.Builder parserBuilder)
587
- {
588
- parserBuilder.addHelpMessageLine("");
589
- parserBuilder.addHelpMessageLine(" Plugin load options:");
590
- // op.on('-L', '--load PATH', 'Add a local plugin path') do |plugin_path|
591
- // plugin_paths << plugin_path
592
- // end
593
- parserBuilder.addOptionDefinition(OptionDefinition.defineOptionWithArgument(
594
- "L", "load", "PATH", "Add a local plugin path",
595
- new OptionBehavior()
596
- {
597
- public void behave(final EmbulkCommandLine.Builder commandLineBuilder, final String argument)
598
- {
599
- commandLineBuilder.addLoad(argument);
600
- }
601
- }));
602
- // op.on('-I', '--load-path PATH', 'Add ruby script directory path ($LOAD_PATH)') do |load_path|
603
- // load_paths << load_path
604
- // end
605
- parserBuilder.addOptionDefinition(OptionDefinition.defineOptionWithArgument(
606
- "I", "load-path", "PATH", "Add ruby script directory path ($LOAD_PATH)",
607
- new OptionBehavior()
608
- {
609
- public void behave(final EmbulkCommandLine.Builder commandLineBuilder, final String argument)
610
- {
611
- commandLineBuilder.addLoadPath(argument);
612
- }
613
- }));
614
- // op.on('-C', '--classpath PATH', "Add java classpath separated by #{classpath_separator} (CLASSPATH)") do |classpath|
615
- // classpaths.concat classpath.split(classpath_separator)
616
- // end
617
- parserBuilder.addOptionDefinition(OptionDefinition.defineOptionWithArgument(
618
- "C", "classpath", "PATH", "Add java classpath separated by " + java.io.File.pathSeparator + " (CLASSPATH)",
619
- new OptionBehavior()
620
- {
621
- public void behave(final EmbulkCommandLine.Builder commandLineBuilder, final String argument)
622
- {
623
- final String[] classpaths = argument.split("\\" + java.io.File.pathSeparator);
624
- for (final String classpath : classpaths) {
625
- commandLineBuilder.addSystemConfig("jruby_classpath", classpath);
626
- }
627
- }
628
- }));
629
- // op.on('-b', '--bundle BUNDLE_DIR', 'Path to a Gemfile directory (create one using "embulk mkbundle" command)') do |path|
630
- // # only for help message. implemented at lib/embulk/command/embulk_bundle.rb
631
- // end
632
- parserBuilder.addOptionDefinition(OptionDefinition.defineOptionWithArgument(
633
- "b", "bundle", "BUNDLE_DIR", "Path to a Gemfile directory (create one using \"embulk mkbundle\" command)",
634
- new OptionBehavior()
635
- {
636
- public void behave(final EmbulkCommandLine.Builder commandLineBuilder, final String argument)
637
- {
638
- commandLineBuilder.setSystemConfig("jruby_global_bundler_plugin_source_directory", argument);
639
- }
640
- }));
641
- }
642
-
643
- private void addOtherOptionDefinitions(final EmbulkCommandLineParser.Builder parserBuilder)
644
- {
645
- parserBuilder.addHelpMessageLine("");
646
- parserBuilder.addHelpMessageLine(" Other options:");
647
- // op.on('-l', '--log PATH', 'Output log messages to a file (default: -)') do |path|
648
- // options[:system_config][:log_path] = path
649
- // end
650
- parserBuilder.addOptionDefinition(OptionDefinition.defineOnlyLongOptionWithArgument(
651
- "log", "PATH", "Output log messages to a file (default: -)",
652
- new OptionBehavior()
653
- {
654
- public void behave(final EmbulkCommandLine.Builder commandLineBuilder, final String argument)
655
- {
656
- commandLineBuilder.setSystemConfig("log_path", argument);
657
- }
658
- }));
659
- // op.on('-l', '--log-level LEVEL', 'Log level (error, warn, info, debug or trace)') do |level|
660
- // options[:system_config][:log_level] = level
661
- // end
662
- parserBuilder.addOptionDefinition(OptionDefinition.defineOptionWithArgument(
663
- "l", "log-level", "LEVEL", "Log level (error, warn, info, debug or trace)",
664
- new OptionBehavior()
665
- {
666
- public void behave(final EmbulkCommandLine.Builder commandLineBuilder, final String argument)
667
- {
668
- commandLineBuilder.setSystemConfig("log_level", argument);
669
- }
670
- }));
671
- // op.on('-X KEY=VALUE', 'Add a performance system config') do |kv|
672
- // k, v = kv.split('=', 2)
673
- // v ||= "true"
674
- // options[:system_config][k] = v
675
- // end
676
- parserBuilder.addOptionDefinition(OptionDefinition.defineOnlyShortOptionWithArgument(
677
- "X", "KEY=VALUE", "Add a performance system config",
678
- new OptionBehavior()
679
- {
680
- public void behave(final EmbulkCommandLine.Builder commandLineBuilder, final String argument)
681
- throws EmbulkCommandLineParseException
682
- {
683
- try {
684
- final String[] keyValue = argument.split("=", 2);
685
- commandLineBuilder.setSystemConfig(keyValue[0], keyValue[1]);
686
- }
687
- catch (Throwable ex) {
688
- throw new EmbulkCommandLineParseException(ex);
689
- }
690
- }
691
- }));
692
- }
693
-
694
- private void printGeneralUsage(final PrintStream out)
695
- {
696
- out.println("Embulk v" + this.embulkVersion);
697
- out.println("Usage: embulk [-vm-options] <command> [--options]");
698
- out.println("Commands:");
699
- out.println(" mkbundle <directory> # create a new plugin bundle environment.");
700
- out.println(" bundle [directory] # update a plugin bundle environment.");
701
- out.println(" run <config.yml> # run a bulk load transaction.");
702
- out.println(" cleanup <config.yml> # cleanup resume state.");
703
- out.println(" preview <config.yml> # dry-run the bulk load without output and show preview.");
704
- out.println(" guess <partial-config.yml> -o <output.yml> # guess missing parameters to create a complete configuration file.");
705
- out.println(" gem <install | list | help> # install a plugin or show installed plugins.");
706
- out.println(" new <category> <name> # generates new plugin template");
707
- out.println(" migrate <path> # modify plugin code to use the latest Embulk plugin API");
708
- out.println(" example [path] # creates an example config file and csv file to try embulk.");
709
- out.println(" selfupdate [version] # upgrades embulk to the latest released version or to the specified version.");
710
- out.println("");
711
- out.println("VM options:");
712
- out.println(" -E... Run an external script to configure environment variables in JVM");
713
- out.println(" (Operations not just setting envs are not recommended nor guaranteed.");
714
- out.println(" Expect side effects by running your external script at your own risk.)");
715
- out.println(" -J-O Disable JVM optimizations to speed up startup time (enabled by default if command is 'run')");
716
- out.println(" -J+O Enable JVM optimizations to speed up throughput");
717
- out.println(" -J... Set JVM options (use -J-help to see available options)");
718
- out.println(" -R... Set JRuby options (use -R--help to see available options)");
719
- }
720
-
721
- private void printEmbulkVersionHeader(final PrintStream out)
722
- {
723
- final DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss.SSS Z");
724
- final String now = DateTime.now().toString(formatter);
725
- out.println(now + ": Embulk v" + this.embulkVersion);
726
- }
727
-
728
- // TODO: Check if it is required to process JRuby options.
729
- private ScriptingContainer createLocalJRubyScriptingContainer()
730
- {
731
- // Not |LocalContextScope.SINGLETON| to narrow down considerations.
732
- final ScriptingContainer localJRubyContainer =
733
- new ScriptingContainer(LocalContextScope.SINGLETHREAD, LocalVariableBehavior.PERSISTENT);
734
-
735
- // NOTE: Same done in JRubyScriptingModule.
736
- // Remember to update |org.embulk.jruby.JRubyScriptingModule| when these environment variables are changed.
737
- localJRubyContainer.runScriptlet("ENV.delete('BUNDLE_GEMFILE')");
738
- localJRubyContainer.runScriptlet("ENV['GEM_HOME'] = File.expand_path File.join(Java::java.lang.System.properties['user.home'], '.embulk', Gem.ruby_engine, RbConfig::CONFIG['ruby_version'])");
739
- localJRubyContainer.runScriptlet("ENV['GEM_PATH'] = ''");
740
-
741
- return localJRubyContainer;
742
- }
743
-
744
- private void callJRubyGem(final List<String> subcommandArguments)
745
- {
746
- final ScriptingContainer localJRubyContainer = createLocalJRubyScriptingContainer();
747
-
748
- localJRubyContainer.runScriptlet("puts ''");
749
- localJRubyContainer.runScriptlet("puts 'Gem plugin path is: %s' % (ENV.has_key?('GEM_HOME') ? ENV['GEM_HOME'] : '(empty)')");
750
- localJRubyContainer.runScriptlet("puts ''");
751
-
752
- localJRubyContainer.runScriptlet("require 'rubygems/gem_runner'");
753
- localJRubyContainer.put("__internal_argv_java__", subcommandArguments);
754
- localJRubyContainer.runScriptlet("Gem::GemRunner.new.run Array.new(__internal_argv_java__)");
755
- localJRubyContainer.remove("__internal_argv_java__");
756
- }
757
-
758
- private void callJRubyExec(final List<String> subcommandArguments)
759
- {
760
- final ScriptingContainer localJRubyContainer = createLocalJRubyScriptingContainer();
761
- localJRubyContainer.put("__internal_argv_java__", subcommandArguments);
762
- localJRubyContainer.runScriptlet("exec(*Array.new(__internal_argv_java__))");
763
- localJRubyContainer.remove("__internal_argv_java__");
764
- }
765
-
766
- private void callJRubyIRB()
767
- {
768
- final ScriptingContainer localJRubyContainer = createLocalJRubyScriptingContainer();
769
- localJRubyContainer.runScriptlet("require 'irb'");
770
- localJRubyContainer.runScriptlet("IRB.start");
771
- }
772
-
773
- private final String embulkVersion;
774
- }