embulk 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (204) hide show
  1. checksums.yaml +15 -0
  2. data/.gitignore +13 -0
  3. data/Gemfile +3 -0
  4. data/Gemfile.lock +33 -0
  5. data/README.md +117 -0
  6. data/Rakefile +58 -0
  7. data/bin/embulk +63 -0
  8. data/build.gradle +149 -0
  9. data/embulk-cli/build.gradle +6 -0
  10. data/embulk-cli/pom.xml +94 -0
  11. data/embulk-cli/src/main/java/org/embulk/cli/Main.java +15 -0
  12. data/embulk-core/build.gradle +6 -0
  13. data/embulk-core/pom.xml +143 -0
  14. data/embulk-core/src/main/java/org/embulk/EmbulkService.java +39 -0
  15. data/embulk-core/src/main/java/org/embulk/command/Runner.java +199 -0
  16. data/embulk-core/src/main/java/org/embulk/command/TablePrinter.java +119 -0
  17. data/embulk-core/src/main/java/org/embulk/config/CommitReport.java +26 -0
  18. data/embulk-core/src/main/java/org/embulk/config/Config.java +15 -0
  19. data/embulk-core/src/main/java/org/embulk/config/ConfigDefault.java +15 -0
  20. data/embulk-core/src/main/java/org/embulk/config/ConfigException.java +20 -0
  21. data/embulk-core/src/main/java/org/embulk/config/ConfigLoader.java +83 -0
  22. data/embulk-core/src/main/java/org/embulk/config/ConfigSource.java +28 -0
  23. data/embulk-core/src/main/java/org/embulk/config/DataSource.java +35 -0
  24. data/embulk-core/src/main/java/org/embulk/config/DataSourceImpl.java +208 -0
  25. data/embulk-core/src/main/java/org/embulk/config/DataSourceSerDe.java +80 -0
  26. data/embulk-core/src/main/java/org/embulk/config/GenericTypeReference.java +20 -0
  27. data/embulk-core/src/main/java/org/embulk/config/ModelManager.java +125 -0
  28. data/embulk-core/src/main/java/org/embulk/config/NextConfig.java +26 -0
  29. data/embulk-core/src/main/java/org/embulk/config/Task.java +10 -0
  30. data/embulk-core/src/main/java/org/embulk/config/TaskInvocationHandler.java +180 -0
  31. data/embulk-core/src/main/java/org/embulk/config/TaskSerDe.java +343 -0
  32. data/embulk-core/src/main/java/org/embulk/config/TaskSource.java +28 -0
  33. data/embulk-core/src/main/java/org/embulk/config/TaskValidationException.java +37 -0
  34. data/embulk-core/src/main/java/org/embulk/config/TaskValidator.java +24 -0
  35. data/embulk-core/src/main/java/org/embulk/exec/ExecModule.java +45 -0
  36. data/embulk-core/src/main/java/org/embulk/exec/ExecuteInterruptedException.java +10 -0
  37. data/embulk-core/src/main/java/org/embulk/exec/ExecuteResult.java +19 -0
  38. data/embulk-core/src/main/java/org/embulk/exec/ExtensionServiceLoaderModule.java +43 -0
  39. data/embulk-core/src/main/java/org/embulk/exec/ForSystemConfig.java +16 -0
  40. data/embulk-core/src/main/java/org/embulk/exec/GuessExecutor.java +307 -0
  41. data/embulk-core/src/main/java/org/embulk/exec/LocalExecutor.java +274 -0
  42. data/embulk-core/src/main/java/org/embulk/exec/LoggerProvider.java +30 -0
  43. data/embulk-core/src/main/java/org/embulk/exec/NoSampleException.java +10 -0
  44. data/embulk-core/src/main/java/org/embulk/exec/PooledBufferAllocator.java +58 -0
  45. data/embulk-core/src/main/java/org/embulk/exec/PreviewExecutor.java +138 -0
  46. data/embulk-core/src/main/java/org/embulk/exec/PreviewResult.java +27 -0
  47. data/embulk-core/src/main/java/org/embulk/exec/PreviewedNoticeError.java +17 -0
  48. data/embulk-core/src/main/java/org/embulk/exec/SamplingParserPlugin.java +116 -0
  49. data/embulk-core/src/main/java/org/embulk/exec/SystemConfigModule.java +24 -0
  50. data/embulk-core/src/main/java/org/embulk/jruby/JRubyPluginSource.java +69 -0
  51. data/embulk-core/src/main/java/org/embulk/jruby/JRubyScriptingModule.java +100 -0
  52. data/embulk-core/src/main/java/org/embulk/plugin/BuiltinPluginSourceModule.java +17 -0
  53. data/embulk-core/src/main/java/org/embulk/plugin/InjectedPluginSource.java +92 -0
  54. data/embulk-core/src/main/java/org/embulk/plugin/PluginManager.java +34 -0
  55. data/embulk-core/src/main/java/org/embulk/plugin/PluginSource.java +6 -0
  56. data/embulk-core/src/main/java/org/embulk/plugin/PluginSourceNotMatchException.java +19 -0
  57. data/embulk-core/src/main/java/org/embulk/plugin/PluginType.java +47 -0
  58. data/embulk-core/src/main/java/org/embulk/plugin/SetThreadContextClassLoader.java +19 -0
  59. data/embulk-core/src/main/java/org/embulk/spi/Buffer.java +113 -0
  60. data/embulk-core/src/main/java/org/embulk/spi/BufferAllocator.java +8 -0
  61. data/embulk-core/src/main/java/org/embulk/spi/Column.java +92 -0
  62. data/embulk-core/src/main/java/org/embulk/spi/ColumnConfig.java +79 -0
  63. data/embulk-core/src/main/java/org/embulk/spi/DecoderPlugin.java +16 -0
  64. data/embulk-core/src/main/java/org/embulk/spi/EncoderPlugin.java +16 -0
  65. data/embulk-core/src/main/java/org/embulk/spi/Exec.java +76 -0
  66. data/embulk-core/src/main/java/org/embulk/spi/ExecAction.java +6 -0
  67. data/embulk-core/src/main/java/org/embulk/spi/ExecSession.java +105 -0
  68. data/embulk-core/src/main/java/org/embulk/spi/Extension.java +42 -0
  69. data/embulk-core/src/main/java/org/embulk/spi/FileInput.java +11 -0
  70. data/embulk-core/src/main/java/org/embulk/spi/FileInputPlugin.java +19 -0
  71. data/embulk-core/src/main/java/org/embulk/spi/FileInputRunner.java +113 -0
  72. data/embulk-core/src/main/java/org/embulk/spi/FileOutput.java +13 -0
  73. data/embulk-core/src/main/java/org/embulk/spi/FileOutputPlugin.java +20 -0
  74. data/embulk-core/src/main/java/org/embulk/spi/FileOutputRunner.java +167 -0
  75. data/embulk-core/src/main/java/org/embulk/spi/FormatterPlugin.java +18 -0
  76. data/embulk-core/src/main/java/org/embulk/spi/GuessPlugin.java +9 -0
  77. data/embulk-core/src/main/java/org/embulk/spi/InputPlugin.java +20 -0
  78. data/embulk-core/src/main/java/org/embulk/spi/OutputPlugin.java +21 -0
  79. data/embulk-core/src/main/java/org/embulk/spi/Page.java +45 -0
  80. data/embulk-core/src/main/java/org/embulk/spi/PageBuilder.java +327 -0
  81. data/embulk-core/src/main/java/org/embulk/spi/PageFormat.java +47 -0
  82. data/embulk-core/src/main/java/org/embulk/spi/PageOutput.java +11 -0
  83. data/embulk-core/src/main/java/org/embulk/spi/PageReader.java +227 -0
  84. data/embulk-core/src/main/java/org/embulk/spi/ParserPlugin.java +17 -0
  85. data/embulk-core/src/main/java/org/embulk/spi/Schema.java +101 -0
  86. data/embulk-core/src/main/java/org/embulk/spi/SchemaConfig.java +52 -0
  87. data/embulk-core/src/main/java/org/embulk/spi/SchemaVisitor.java +14 -0
  88. data/embulk-core/src/main/java/org/embulk/spi/Transactional.java +10 -0
  89. data/embulk-core/src/main/java/org/embulk/spi/TransactionalFileInput.java +17 -0
  90. data/embulk-core/src/main/java/org/embulk/spi/TransactionalFileOutput.java +19 -0
  91. data/embulk-core/src/main/java/org/embulk/spi/TransactionalPageOutput.java +17 -0
  92. data/embulk-core/src/main/java/org/embulk/spi/time/DateTimeZoneSerDe.java +57 -0
  93. data/embulk-core/src/main/java/org/embulk/spi/time/JRubyTimeParserHelper.java +8 -0
  94. data/embulk-core/src/main/java/org/embulk/spi/time/JRubyTimeParserHelperFactory.java +6 -0
  95. data/embulk-core/src/main/java/org/embulk/spi/time/Timestamp.java +159 -0
  96. data/embulk-core/src/main/java/org/embulk/spi/time/TimestampFormat.java +98 -0
  97. data/embulk-core/src/main/java/org/embulk/spi/time/TimestampFormatter.java +55 -0
  98. data/embulk-core/src/main/java/org/embulk/spi/time/TimestampParseException.java +6 -0
  99. data/embulk-core/src/main/java/org/embulk/spi/time/TimestampParser.java +60 -0
  100. data/embulk-core/src/main/java/org/embulk/spi/time/TimestampSerDe.java +50 -0
  101. data/embulk-core/src/main/java/org/embulk/spi/type/AbstractType.java +55 -0
  102. data/embulk-core/src/main/java/org/embulk/spi/type/BooleanType.java +12 -0
  103. data/embulk-core/src/main/java/org/embulk/spi/type/DoubleType.java +12 -0
  104. data/embulk-core/src/main/java/org/embulk/spi/type/LongType.java +12 -0
  105. data/embulk-core/src/main/java/org/embulk/spi/type/StringType.java +12 -0
  106. data/embulk-core/src/main/java/org/embulk/spi/type/TimestampType.java +39 -0
  107. data/embulk-core/src/main/java/org/embulk/spi/type/Type.java +15 -0
  108. data/embulk-core/src/main/java/org/embulk/spi/type/TypeDeserializer.java +47 -0
  109. data/embulk-core/src/main/java/org/embulk/spi/type/Types.java +14 -0
  110. data/embulk-core/src/main/java/org/embulk/spi/util/CharsetSerDe.java +55 -0
  111. data/embulk-core/src/main/java/org/embulk/spi/util/Decoders.java +81 -0
  112. data/embulk-core/src/main/java/org/embulk/spi/util/Encoders.java +81 -0
  113. data/embulk-core/src/main/java/org/embulk/spi/util/FileInputInputStream.java +110 -0
  114. data/embulk-core/src/main/java/org/embulk/spi/util/FileOutputOutputStream.java +94 -0
  115. data/embulk-core/src/main/java/org/embulk/spi/util/InputStreamFileInput.java +111 -0
  116. data/embulk-core/src/main/java/org/embulk/spi/util/Inputs.java +74 -0
  117. data/embulk-core/src/main/java/org/embulk/spi/util/LineDecoder.java +118 -0
  118. data/embulk-core/src/main/java/org/embulk/spi/util/LineEncoder.java +109 -0
  119. data/embulk-core/src/main/java/org/embulk/spi/util/ListFileInput.java +52 -0
  120. data/embulk-core/src/main/java/org/embulk/spi/util/Newline.java +38 -0
  121. data/embulk-core/src/main/java/org/embulk/spi/util/PagePrinter.java +102 -0
  122. data/embulk-core/src/main/java/org/embulk/spi/util/Pages.java +139 -0
  123. data/embulk-core/src/test/java/org/embulk/EmbulkTestRuntime.java +110 -0
  124. data/embulk-core/src/test/java/org/embulk/GuiceBinder.java +72 -0
  125. data/embulk-core/src/test/java/org/embulk/RandomManager.java +53 -0
  126. data/embulk-core/src/test/java/org/embulk/TestPluginSourceModule.java +23 -0
  127. data/embulk-core/src/test/java/org/embulk/TestUtilityModule.java +17 -0
  128. data/embulk-core/src/test/java/org/embulk/config/TestConfigSource.java +114 -0
  129. data/embulk-core/src/test/java/org/embulk/config/TestTaskSource.java +70 -0
  130. data/embulk-core/src/test/java/org/embulk/plugin/MockPluginSource.java +57 -0
  131. data/embulk-core/src/test/java/org/embulk/plugin/TestPluginType.java +18 -0
  132. data/embulk-core/src/test/java/org/embulk/spi/MockFileOutput.java +63 -0
  133. data/embulk-core/src/test/java/org/embulk/spi/MockFormatterPlugin.java +101 -0
  134. data/embulk-core/src/test/java/org/embulk/spi/MockParserPlugin.java +73 -0
  135. data/embulk-core/src/test/java/org/embulk/spi/PageTestUtils.java +78 -0
  136. data/embulk-core/src/test/java/org/embulk/spi/TestFileInputInputStream.java +67 -0
  137. data/embulk-core/src/test/java/org/embulk/spi/TestFileInputRunner.java +180 -0
  138. data/embulk-core/src/test/java/org/embulk/spi/TestFileOutputRunner.java +192 -0
  139. data/embulk-core/src/test/java/org/embulk/spi/TestInputStreamFileInput.java +188 -0
  140. data/embulk-core/src/test/java/org/embulk/spi/TestPageBuilderReader.java +301 -0
  141. data/embulk-core/src/test/java/org/embulk/spi/time/TestTimestamp.java +116 -0
  142. data/embulk-core/src/test/java/org/embulk/spi/time/TestTimestampFormatterParser.java +52 -0
  143. data/embulk-core/src/test/java/org/embulk/spi/type/TestTypeSerDe.java +45 -0
  144. data/embulk-core/src/test/java/org/embulk/spi/util/TestLineDecoder.java +132 -0
  145. data/embulk-core/src/test/java/org/embulk/spi/util/TestLineEncoder.java +123 -0
  146. data/embulk-standards/build.gradle +6 -0
  147. data/embulk-standards/pom.xml +68 -0
  148. data/embulk-standards/src/main/java/org/embulk/standards/CsvFormatterPlugin.java +158 -0
  149. data/embulk-standards/src/main/java/org/embulk/standards/CsvParserPlugin.java +233 -0
  150. data/embulk-standards/src/main/java/org/embulk/standards/CsvTokenizer.java +355 -0
  151. data/embulk-standards/src/main/java/org/embulk/standards/GzipFileDecoderPlugin.java +55 -0
  152. data/embulk-standards/src/main/java/org/embulk/standards/GzipFileEncoderPlugin.java +39 -0
  153. data/embulk-standards/src/main/java/org/embulk/standards/LocalFileInputPlugin.java +138 -0
  154. data/embulk-standards/src/main/java/org/embulk/standards/LocalFileOutputPlugin.java +128 -0
  155. data/embulk-standards/src/main/java/org/embulk/standards/NullOutputPlugin.java +46 -0
  156. data/embulk-standards/src/main/java/org/embulk/standards/S3FileInputPlugin.java +238 -0
  157. data/embulk-standards/src/main/java/org/embulk/standards/StandardPluginExtension.java +16 -0
  158. data/embulk-standards/src/main/java/org/embulk/standards/StandardPluginModule.java +44 -0
  159. data/embulk-standards/src/main/java/org/embulk/standards/StdoutOutputPlugin.java +71 -0
  160. data/embulk-standards/src/main/resources/META-INF/services/org.embulk.spi.Extension +1 -0
  161. data/embulk-standards/src/test/java/org/embulk/standards/TestCsvParserPlugin.java +69 -0
  162. data/embulk-standards/src/test/java/org/embulk/standards/TestCsvTokenizer.java +291 -0
  163. data/embulk-standards/src/test/java/org/embulk/standards/TestS3FileInputPlugin.java +43 -0
  164. data/embulk.gemspec +27 -0
  165. data/examples/config.yml +34 -0
  166. data/examples/csv/sample.csv.gz +0 -0
  167. data/gradle/wrapper/gradle-wrapper.jar +0 -0
  168. data/gradle/wrapper/gradle-wrapper.properties +6 -0
  169. data/gradlew +164 -0
  170. data/gradlew.bat +90 -0
  171. data/lib/embulk.rb +16 -0
  172. data/lib/embulk/buffer.rb +17 -0
  173. data/lib/embulk/column.rb +47 -0
  174. data/lib/embulk/command/embulk.rb +39 -0
  175. data/lib/embulk/command/embulk_example.rb +32 -0
  176. data/lib/embulk/command/embulk_generate_bin.rb +62 -0
  177. data/lib/embulk/command/embulk_run.rb +243 -0
  178. data/lib/embulk/data/bundle/.bundle/config +3 -0
  179. data/lib/embulk/data/bundle/Gemfile +31 -0
  180. data/lib/embulk/data/bundle/Gemfile.lock +8 -0
  181. data/lib/embulk/data/bundle/embulk/input_example.rb +40 -0
  182. data/lib/embulk/data/bundle/embulk/output_example.rb +51 -0
  183. data/lib/embulk/data_source.rb +66 -0
  184. data/lib/embulk/error.rb +5 -0
  185. data/lib/embulk/guess_charset.rb +26 -0
  186. data/lib/embulk/guess_csv.rb +195 -0
  187. data/lib/embulk/guess_gzip.rb +18 -0
  188. data/lib/embulk/guess_newline.rb +20 -0
  189. data/lib/embulk/guess_plugin.rb +113 -0
  190. data/lib/embulk/input_plugin.rb +53 -0
  191. data/lib/embulk/java/bootstrap.rb +12 -0
  192. data/lib/embulk/java/imports.rb +26 -0
  193. data/lib/embulk/java/time_helper.rb +77 -0
  194. data/lib/embulk/output_plugin.rb +104 -0
  195. data/lib/embulk/page.rb +28 -0
  196. data/lib/embulk/page_builder.rb +22 -0
  197. data/lib/embulk/plugin.rb +152 -0
  198. data/lib/embulk/plugin_registry.rb +70 -0
  199. data/lib/embulk/schema.rb +85 -0
  200. data/lib/embulk/time_format_guess.rb +331 -0
  201. data/lib/embulk/version.rb +3 -0
  202. data/pom.xml +533 -0
  203. data/settings.gradle +5 -0
  204. metadata +370 -0
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ MjM4MTAxYzU5YTZlYWZkMWM0NjYzYTZlMGRkMjgwN2I0Yjc0MDU5YQ==
5
+ data.tar.gz: !binary |-
6
+ MGJkZmQ2NDM0NWQ3NWIwNmY2MWUyYjY0OWM0MzA2MmIwM2RmMDYwOQ==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ MGY5Y2E2YjBiMjBhZTkxMzljNGU4MGNhZGE0MWM2N2YzZmM2YWM1MWRkZjUx
10
+ NTExZmEyN2Q5NDIyNThiNGNiYTE3ZDM0MzA3ZDMwNTE2NDI0N2E2ODM5ODE2
11
+ OTQxN2FjNWY1MzY3ODc5NGU5YTk3NmEwYjA4NDVjMTkwZTAxNjE=
12
+ data.tar.gz: !binary |-
13
+ NDZlMzkxOGVhN2VjY2U1ZGY4OTNlZWZlMzYxMWEyNDYyMDM3ZGMxNDlkOGY4
14
+ MWFhYzdhNzgyNTUxY2VkNGE4NWIzZDJkNmU1Nzc1ZTYyMjc0NTlkYzc3MGUx
15
+ ZWIwNTYzMzc3ZDA1NWQ0MzMwNmViZjZkNTdhZWQ0YjE1MDg0ZTA=
data/.gitignore ADDED
@@ -0,0 +1,13 @@
1
+ target/
2
+ build/
3
+ *.iml
4
+ *~
5
+ ._*
6
+ .idea
7
+ tmp/
8
+ vendor/
9
+ /classpath/
10
+ /.bundle
11
+ .yardoc
12
+ /embulk-*.jar
13
+ /.gradle
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org/'
2
+
3
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,33 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ embulk (0.1.0)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ diff-lcs (1.2.5)
10
+ json (1.8.1)
11
+ kramdown (1.5.0)
12
+ rake (10.4.2)
13
+ rspec (2.99.0)
14
+ rspec-core (~> 2.99.0)
15
+ rspec-expectations (~> 2.99.0)
16
+ rspec-mocks (~> 2.99.0)
17
+ rspec-core (2.99.2)
18
+ rspec-expectations (2.99.2)
19
+ diff-lcs (>= 1.1.3, < 2.0)
20
+ rspec-mocks (2.99.2)
21
+ yard (0.8.7.6)
22
+
23
+ PLATFORMS
24
+ ruby
25
+
26
+ DEPENDENCIES
27
+ bundler (>= 1.0)
28
+ embulk!
29
+ json (~> 1.7)
30
+ kramdown (~> 1.5.0)
31
+ rake (>= 0.10.0)
32
+ rspec (~> 2.11)
33
+ yard (~> 0.8.7)
data/README.md ADDED
@@ -0,0 +1,117 @@
1
+ # Embulk: plugin-based parallel bulk data loader
2
+
3
+ ## What's Embulk?
4
+
5
+ TODO
6
+
7
+ ## Quick Start
8
+
9
+ The single-file package is the simplest way to try Embulk. You can download the latest embulk.jar from [releases]() and run it with java:
10
+
11
+ ```
12
+ wget https://github.com/embulk/embulk/releases .... /latest
13
+ java -jar embulk.jar --help
14
+ ```
15
+
16
+ Let's load a CSV file, for example. `embulk example` subcommand generates a csv file and config file for you.
17
+
18
+ ```
19
+ java -jar embulk.jar example ./try1
20
+ java -jar embulk.jar guess ./try1/example.yml -o config.yml
21
+ java -jar embulk.jar preview config.yml
22
+ java -jar embulk.jar run config.yml
23
+ ```
24
+
25
+ ### Using plugins
26
+
27
+ You can use plugins to load data from/to various systems and file formats.
28
+ An example is [embulk-output-postgres-json]() plugin. It outputs data into PostgreSQL server using "json" column type.
29
+
30
+ ```
31
+ java -jar embulk.jar gem install embulk-output-postgres-json
32
+ java -jar embulk.jar gem list
33
+ ```
34
+
35
+ You can search plugins on RubyGems: [search for "embulk-"](https://rubygems.org/search?utf8=%E2%9C%93&query=embulk-).
36
+
37
+ ### Using plugin bundle
38
+
39
+ `embulk bundle` subcommand creates (or updates if already exists) a *plugin bundle* directory.
40
+ You can use the bundle using `-b <bundle_dir>` option. `embulk bundle` also generates some example plugins to \<bundle_dir>/embulk/\*.rb directory.
41
+
42
+ See generated \<bundle_dir>/Gemfile file how to plugin bundles work.
43
+
44
+ ```
45
+ java -jar embulk.jar bundle ./embulk_bundle
46
+ java -jar embulk.jar guess -b ./embulk_bundle ...
47
+ java -jar embulk.jar run -b ./embulk_bundle ...
48
+ ```
49
+
50
+ ### Releasing plugins to RubyGems
51
+
52
+ TODO: documents
53
+
54
+ ```
55
+ embulk-plugin-xyz
56
+ ```
57
+
58
+ ## Embulk Development
59
+
60
+ ### Build
61
+
62
+ ```
63
+ rake # creates embulk-VERSION.jar
64
+ ```
65
+
66
+ You can see JaCoCo's test coverage report at ${project}/target/site/jacoco/index.html
67
+
68
+ To build by Gradle, run:
69
+ ```
70
+ ./gradlew build
71
+ ```
72
+ If you want to deploy artifacts on local maven repository like ~/.m2/repository/, run:
73
+ ```
74
+ ./gradlew install
75
+ ```
76
+ If you want to compile the source code of embulk-core project only, run:
77
+ ```
78
+ ./gradlew :embulk-core:compileJava
79
+ ```
80
+ The following command allows use to see the dependency tree of embulk-core project
81
+ ```
82
+ ./gradlew :embulk-core:dependencies
83
+ ```
84
+
85
+ ### Release
86
+
87
+ You need to add your bintray account information to ~/.gradle/gradle.properties
88
+
89
+ ```
90
+ bintray_user=(bintray user name)
91
+ bintray_api_key=(bintray api key)
92
+ ```
93
+
94
+ Increment version number written at following 3 files (TODO improve this):
95
+
96
+ * build.gradle
97
+ * pom.xml
98
+ * lib/embulk/version.rb
99
+
100
+ Then, build and upload using gradle:
101
+
102
+ ```
103
+ ./gradlew bintrayUpload
104
+ ```
105
+
106
+ Finally, you need to manually upload the single-file jar package to bintray.
107
+ Run `rake` and upload embulk-VERSION.jar from "Upload Files" link at https://bintray.com/embulk/maven/embulk/VERSION/upload.
108
+
109
+ ```
110
+ rake
111
+ # embulk-VERSION.jar is built
112
+ ```
113
+
114
+ See also:
115
+ * [Bintray](https://bintray.com)
116
+ * [How to acquire bintray API Keys](https://bintray.com/docs/usermanual/interacting/interacting_apikeys.html)
117
+
data/Rakefile ADDED
@@ -0,0 +1,58 @@
1
+ #!/usr/bin/env rake
2
+
3
+ require 'bundler/gem_tasks'
4
+ require 'rake/testtask'
5
+ require 'rake/clean'
6
+ require 'bundler'
7
+ require 'yard'
8
+
9
+ desc 'Generate YARD document'
10
+ YARD::Rake::YardocTask.new(:doc) do |t|
11
+ t.files = ['lib/**/*.rb']
12
+ t.options = %w[-M kramdown]
13
+ t.options << '--debug' << '--verbose' if $trace
14
+ end
15
+
16
+ desc "Clean java code and copy files"
17
+ task :clean do
18
+ sh "mvn clean"
19
+ rm_rf "classpath"
20
+ end
21
+
22
+ desc "Compile java code and copy jar files to classpath/"
23
+ task :compile do
24
+ sh "mvn package dependency:copy-dependencies"
25
+ rm_rf "classpath"
26
+ mkdir_p "classpath"
27
+ cp Dir["embulk-cli/target/dependency/*.jar"], "classpath"
28
+ targets = Dir["embulk-cli/target/embulk-cli-*.jar"]
29
+ targets.reject! {|target| target =~ /-sources.jar$/ || target =~ /-executable.jar$/ }
30
+ cp targets, "classpath"
31
+ end
32
+
33
+ desc "Create embulk-{version}.jar"
34
+ task :jar do
35
+ require_relative 'lib/embulk/version'
36
+ executable = Dir["embulk-cli/target/embulk-cli-*-executable.jar"].sort.last
37
+ executable_data = File.read(executable).force_encoding('ASCII-8BIT')
38
+ header = <<EOF
39
+ #!/bin/sh
40
+ exec java -jar "$0" "$@"
41
+ exit 127
42
+ EOF
43
+ data = header.force_encoding('ASCII-8BIT') + executable_data
44
+ path = "embulk-#{Embulk::VERSION}.jar"
45
+ rm_f path
46
+ File.open(path, 'wb', 0755) {|f| f.write data }
47
+ puts "Created #{path}"
48
+ end
49
+
50
+ desc "Run clean, compile, build and jar"
51
+ task :all do
52
+ Rake::Task["clean"].invoke
53
+ Rake::Task["compile"].invoke
54
+ Rake::Task["build"].invoke
55
+ Rake::Task["jar"].invoke
56
+ end
57
+
58
+ task :default => :all
data/bin/embulk ADDED
@@ -0,0 +1,63 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # TODO cygwin check
4
+ cygwin = false
5
+
6
+ java_args = []
7
+ while i = ARGV.find_index {|arg| arg =~ /^\-D/ }
8
+ if ARGV[i] == "-D"
9
+ prop_path = ARGV[i + 1]
10
+ unless prop_path
11
+ STDERR.puts "-D option requires an option"
12
+ exit 1
13
+ end
14
+ ARGV.slice!(i, 2)
15
+ else
16
+ java_args << ARGV[i]
17
+ ARGV.slice!(i)
18
+ end
19
+ end
20
+
21
+ if prop_path
22
+ props = File.read(prop_path)
23
+ java_props = props.split("\n").reject {|prop| prop.strip.empty? }
24
+ java_args = java_props + java_args
25
+ end
26
+
27
+ java_cmd = ENV['JAVACMD']
28
+ unless java_cmd
29
+ if java_home = ENV['JAVA_HOME']
30
+ if cygwin
31
+ java_cmd = "#{`cygpath -u "#{java_home}"`.strip}/bin/java"
32
+ else
33
+ java_cmd = "#{java_home}/bin/java"
34
+ end
35
+ else
36
+ java_cmd = "java"
37
+ end
38
+ end
39
+
40
+ embulk_home = ENV['EMBULK_HOME']
41
+ unless embulk_home
42
+ embulk_home = File.dirname(File.dirname(__FILE__))
43
+ end
44
+ ENV['EMBULK_HOME'] = File.expand_path(embulk_home)
45
+
46
+ classpath_dir = File.join(embulk_home, 'classpath')
47
+ lib_dir = File.join(embulk_home, 'lib')
48
+
49
+ jruby_complete = Dir.entries(classpath_dir).find {|jar| jar =~ /jruby-complete-[\d\.]+\.jar/ }
50
+ unless jruby_complete
51
+ STDERR.puts "Could not find jruby-complete at $EMBULK_HOME/classpath directory."
52
+ STDERR.puts "Please confirm EMBULK_HOME is correctly set"
53
+ STDERR.puts "Current EMBULK_HOME = #{ENV['EMBULK_HOME'].to_s.dump}"
54
+ raise SystemExit.new(1)
55
+ end
56
+
57
+ # java ... -jar ruby-complete.jar $EMBULK_HOME/lib/embulk/command/embulk.rb "$@"
58
+ cmdline = [java_cmd]
59
+ cmdline.concat java_args
60
+ cmdline << '-jar' << File.join(classpath_dir, jruby_complete)
61
+ cmdline << File.join(lib_dir, 'embulk/command/embulk.rb')
62
+ cmdline.concat ARGV
63
+ exec *cmdline
data/build.gradle ADDED
@@ -0,0 +1,149 @@
1
+ // TODO this build.gradle file just works but not well-written yet...
2
+
3
+ //plugins {
4
+ // id "com.jfrog.bintray" version "1.0"
5
+ //}
6
+ buildscript {
7
+ repositories {
8
+ jcenter()
9
+ }
10
+ dependencies {
11
+ classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.0'
12
+ }
13
+ }
14
+
15
+ allprojects {
16
+ repositories {
17
+ mavenCentral()
18
+ jcenter()
19
+ }
20
+
21
+ apply plugin: 'idea'
22
+ apply plugin: 'maven-publish'
23
+ apply plugin: 'com.jfrog.bintray'
24
+
25
+ group = 'org.embulk'
26
+ version = '0.1.0'
27
+
28
+ // to upload artifacts to Bintray by gradle-bintray-plugin
29
+ // $ gradle bintrayUpload
30
+ bintray {
31
+ // write at your bintray user name and api key to ~/.gradle/gradle.properties file:
32
+ // bintray_user=frsyuki
33
+ // bintray_api_key=xxxxxxxxxxx
34
+ user = project.hasProperty('bintray_user') ? bintray_user : ''
35
+ key = project.hasProperty('bintray_api_key') ? bintray_api_key : ''
36
+
37
+ publications = ['mavenJava']
38
+
39
+ dryRun = false
40
+ publish = false // TODO publish = project.publish
41
+
42
+ pkg {
43
+ userOrg = 'embulk'
44
+ repo = 'maven'
45
+ name = 'embulk'
46
+ desc = 'Embulk, a plugin-based parallel bulk data loader'
47
+ websiteUrl = 'https://github.com/embulk/embulk'
48
+ issueTrackerUrl = 'https://github.com/embulk/embulk/issues'
49
+ vcsUrl = 'https://github.com/embulk/embulk.git'
50
+ licenses = ['Apache-2.0']
51
+ labels = ['embulk', 'ruby', 'java']
52
+ publicDownloadNumbers = true
53
+
54
+ version {
55
+ name = project.version
56
+ // TODO
57
+ //mavenCentralSync {
58
+ // sync = true
59
+ // user = 'userToken'
60
+ // password = 'paasword'
61
+ // close = '1'
62
+ //}
63
+ }
64
+ }
65
+ }
66
+ }
67
+
68
+ subprojects {
69
+ apply plugin: 'java'
70
+
71
+ // to install jar files to the local repo
72
+ // $ gradle install
73
+ apply plugin: 'maven'
74
+
75
+ compileJava.options.encoding = 'UTF-8' // source encoding
76
+ sourceCompatibility = 1.7
77
+ targetCompatibility = 1.7
78
+
79
+ dependencies {
80
+ compile 'commons-logging:commons-logging:1.2',
81
+ 'com.google.guava:guava:17.0',
82
+ 'com.google.inject:guice:3.0',
83
+ 'com.google.inject.extensions:guice-multibindings:3.0',
84
+ 'javax.inject:javax.inject:1',
85
+ 'com.fasterxml.jackson.core:jackson-annotations:2.4.3',
86
+ 'com.fasterxml.jackson.core:jackson-core:2.4.3',
87
+ 'com.fasterxml.jackson.core:jackson-databind:2.4.3',
88
+ 'com.fasterxml.jackson.datatype:jackson-datatype-guava:2.4.3',
89
+ 'com.fasterxml.jackson.datatype:jackson-datatype-joda:2.4.3',
90
+ 'com.fasterxml.jackson.module:jackson-module-guice:2.4.3',
91
+ 'log4j:log4j:1.2.17',
92
+ 'org.slf4j:slf4j-api:1.7.9',
93
+ 'org.slf4j:slf4j-log4j12:1.7.9',
94
+ 'org.jruby:jruby-complete:1.7.16.1',
95
+ 'org.yaml:snakeyaml:1.14',
96
+ 'javax.validation:validation-api:1.1.0.Final',
97
+ 'org.apache.bval:bval-jsr303:0.5',
98
+ 'io.airlift:slice:0.7',
99
+ 'joda-time:joda-time:2.3',
100
+ 'io.netty:netty-buffer:4.0.24.Final',
101
+ 'com.ibm.icu:icu4j:53.1'
102
+
103
+ testCompile 'junit:junit:4.10',
104
+ 'org.mockito:mockito-core:1.9.5'
105
+ }
106
+
107
+ // custom tasks for creating source/javadoc jars
108
+ task sourcesJar(type: Jar, dependsOn: classes) {
109
+ classifier = 'sources'
110
+ from sourceSets.main.allSource
111
+ }
112
+
113
+ task javadocJar(type: Jar, dependsOn: javadoc) {
114
+ classifier = 'javadoc'
115
+ from javadoc.destinationDir
116
+ }
117
+
118
+ // add javadoc/source jar tasks as artifacts
119
+ artifacts {
120
+ archives sourcesJar, javadocJar
121
+ }
122
+
123
+ // $ gradle copyDependencies
124
+ task copyDependencies(type: Copy) {
125
+ println ":copy depend to $buildDir/libs/dependencies"
126
+ new File("$buildDir/libs/dependencies").mkdirs()
127
+
128
+ into "$buildDir/libs/dependencies"
129
+ from configurations.runtime.filter {
130
+ // TODO avoid bytecode compatibility error
131
+ it.name != 'asm-3.1.jar' && it.name != 'cglib-2.2.1-v20090111.jar'
132
+ }
133
+ }
134
+
135
+ publishing {
136
+ publications {
137
+ mavenJava(MavenPublication) {
138
+ groupId project.group
139
+ artifactId project.name
140
+ version project.version
141
+
142
+ from components.java
143
+
144
+ artifact sourcesJar
145
+ artifact javadocJar
146
+ }
147
+ }
148
+ }
149
+ }