embulk 0.3.2 → 0.4.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 (138) hide show
  1. checksums.yaml +5 -13
  2. data/.travis.yml +16 -0
  3. data/Gemfile +0 -1
  4. data/README.md +37 -19
  5. data/Rakefile +5 -37
  6. data/bin/embulk +1 -1
  7. data/build.gradle +178 -95
  8. data/embulk-core/build.gradle +1 -1
  9. data/embulk-core/src/main/java/org/embulk/command/Runner.java +11 -10
  10. data/embulk-core/src/main/java/org/embulk/config/ConfigDiff.java +26 -0
  11. data/embulk-core/src/main/java/org/embulk/config/ConfigInject.java +14 -0
  12. data/embulk-core/src/main/java/org/embulk/config/DataSourceImpl.java +2 -2
  13. data/embulk-core/src/main/java/org/embulk/config/DataSourceSerDe.java +4 -3
  14. data/embulk-core/src/main/java/org/embulk/config/TaskSerDe.java +5 -3
  15. data/embulk-core/src/main/java/org/embulk/config/TaskValidationException.java +1 -0
  16. data/embulk-core/src/main/java/org/embulk/exec/ExecutionResult.java +6 -6
  17. data/embulk-core/src/main/java/org/embulk/exec/GuessExecutor.java +19 -19
  18. data/embulk-core/src/main/java/org/embulk/exec/LocalExecutor.java +61 -36
  19. data/embulk-core/src/main/java/org/embulk/plugin/InjectedPluginSource.java +4 -0
  20. data/embulk-core/src/main/java/org/embulk/plugin/PluginManager.java +16 -1
  21. data/embulk-core/src/main/java/org/embulk/spi/Column.java +1 -1
  22. data/embulk-core/src/main/java/org/embulk/spi/{SchemaVisitor.java → ColumnVisitor.java} +1 -1
  23. data/embulk-core/src/main/java/org/embulk/spi/Exec.java +3 -3
  24. data/embulk-core/src/main/java/org/embulk/spi/ExecSession.java +2 -2
  25. data/embulk-core/src/main/java/org/embulk/spi/FileInputPlugin.java +3 -3
  26. data/embulk-core/src/main/java/org/embulk/spi/FileInputRunner.java +3 -3
  27. data/embulk-core/src/main/java/org/embulk/spi/FileOutputPlugin.java +3 -3
  28. data/embulk-core/src/main/java/org/embulk/spi/FileOutputRunner.java +3 -3
  29. data/embulk-core/src/main/java/org/embulk/spi/FilterPlugin.java +1 -1
  30. data/embulk-core/src/main/java/org/embulk/spi/GuessPlugin.java +2 -2
  31. data/embulk-core/src/main/java/org/embulk/spi/InputPlugin.java +3 -3
  32. data/embulk-core/src/main/java/org/embulk/spi/OutputPlugin.java +3 -3
  33. data/embulk-core/src/main/java/org/embulk/spi/PluginClassLoader.java +80 -0
  34. data/embulk-core/src/main/java/org/embulk/spi/Schema.java +1 -1
  35. data/embulk-core/src/main/java/org/embulk/spi/time/TimestampFormatter.java +2 -2
  36. data/embulk-core/src/main/java/org/embulk/spi/time/TimestampParser.java +2 -2
  37. data/embulk-core/src/main/java/org/embulk/spi/util/Filters.java +1 -1
  38. data/embulk-core/src/main/java/org/embulk/spi/util/LineEncoder.java +2 -2
  39. data/embulk-core/src/main/java/org/embulk/spi/util/PagePrinter.java +6 -6
  40. data/embulk-core/src/main/java/org/embulk/spi/util/Pages.java +6 -6
  41. data/embulk-core/src/test/java/org/embulk/GuiceBinder.java +1 -1
  42. data/embulk-core/src/test/java/org/embulk/plugin/MockPluginSource.java +1 -0
  43. data/embulk-core/src/test/java/org/embulk/spi/MockFormatterPlugin.java +2 -2
  44. data/embulk-core/src/test/java/org/embulk/spi/PageTestUtils.java +1 -1
  45. data/embulk-core/src/test/java/org/embulk/spi/TestFileInputRunner.java +3 -3
  46. data/embulk-core/src/test/java/org/embulk/spi/TestFileOutputRunner.java +4 -4
  47. data/embulk-docs/Makefile +178 -0
  48. data/embulk-docs/build.gradle +20 -0
  49. data/embulk-docs/make.bat +243 -0
  50. data/embulk-docs/push-gh-pages.sh +29 -0
  51. data/embulk-docs/src/conf.py +260 -0
  52. data/embulk-docs/src/index.rst +19 -0
  53. data/embulk-docs/src/release.rst +14 -0
  54. data/embulk-docs/src/release/release-0.1.0.rst +8 -0
  55. data/embulk-docs/src/release/release-0.2.0.rst +16 -0
  56. data/embulk-docs/src/release/release-0.2.1.rst +19 -0
  57. data/embulk-docs/src/release/release-0.3.0.rst +34 -0
  58. data/embulk-docs/src/release/release-0.3.1.rst +11 -0
  59. data/embulk-docs/src/release/release-0.3.2.rst +15 -0
  60. data/embulk-docs/src/release/release-0.4.0.rst +74 -0
  61. data/embulk-standards/build.gradle +0 -1
  62. data/embulk-standards/src/main/java/org/embulk/standards/CsvFormatterPlugin.java +2 -2
  63. data/embulk-standards/src/main/java/org/embulk/standards/CsvParserPlugin.java +12 -3
  64. data/embulk-standards/src/main/java/org/embulk/standards/GzipFileDecoderPlugin.java +2 -2
  65. data/embulk-standards/src/main/java/org/embulk/standards/LocalFileInputPlugin.java +49 -26
  66. data/embulk-standards/src/main/java/org/embulk/standards/LocalFileOutputPlugin.java +16 -17
  67. data/embulk-standards/src/main/java/org/embulk/standards/NullOutputPlugin.java +4 -4
  68. data/embulk-standards/src/main/java/org/embulk/standards/StandardPluginModule.java +0 -1
  69. data/embulk-standards/src/main/java/org/embulk/standards/StdoutOutputPlugin.java +5 -5
  70. data/gradle/wrapper/gradle-wrapper.jar +0 -0
  71. data/gradle/wrapper/gradle-wrapper.properties +2 -2
  72. data/lib/embulk/buffer.rb +2 -2
  73. data/lib/embulk/column.rb +6 -6
  74. data/lib/embulk/command/embulk_example.rb +1 -1
  75. data/lib/embulk/command/embulk_new_plugin.rb +87 -0
  76. data/lib/embulk/command/embulk_run.rb +84 -26
  77. data/lib/embulk/data/bundle/Gemfile +12 -20
  78. data/lib/embulk/data/bundle/embulk/{filter_example.rb → filter/example.rb} +3 -3
  79. data/lib/embulk/data/bundle/embulk/{input_example.rb → input/example.rb} +3 -3
  80. data/lib/embulk/data/bundle/embulk/{output_example.rb → output/example.rb} +3 -3
  81. data/lib/embulk/data/new/LICENSE.txt +21 -0
  82. data/lib/embulk/data/new/README.md.erb +75 -0
  83. data/lib/embulk/data/new/gitignore.erb +12 -0
  84. data/lib/embulk/data/new/java/build.gradle.erb +57 -0
  85. data/lib/embulk/data/new/java/decoder.java.erb +40 -0
  86. data/lib/embulk/data/new/java/encoder.java.erb +40 -0
  87. data/lib/embulk/data/new/java/file_input.java.erb +64 -0
  88. data/lib/embulk/data/new/java/file_output.java.erb +66 -0
  89. data/lib/embulk/data/new/java/filter.java.erb +47 -0
  90. data/lib/embulk/data/new/java/formatter.java.erb +45 -0
  91. data/lib/embulk/data/new/java/gradle/wrapper/gradle-wrapper.jar +0 -0
  92. data/lib/embulk/data/new/java/gradle/wrapper/gradle-wrapper.properties +6 -0
  93. data/lib/embulk/data/new/java/gradlew +164 -0
  94. data/lib/embulk/data/new/java/gradlew.bat +90 -0
  95. data/lib/embulk/data/new/java/input.java.erb +69 -0
  96. data/lib/embulk/data/new/java/output.java.erb +65 -0
  97. data/lib/embulk/data/new/java/parser.java.erb +51 -0
  98. data/lib/embulk/data/new/java/plugin_loader.rb.erb +3 -0
  99. data/lib/embulk/data/new/java/test.java.erb +5 -0
  100. data/lib/embulk/data/new/ruby/Gemfile +2 -0
  101. data/lib/embulk/data/new/ruby/Rakefile +1 -0
  102. data/lib/embulk/data/new/ruby/filter.rb.erb +39 -0
  103. data/lib/embulk/data/new/ruby/gemspec.erb +19 -0
  104. data/lib/embulk/data/new/ruby/input.rb.erb +47 -0
  105. data/lib/embulk/data/new/ruby/output.rb.erb +59 -0
  106. data/lib/embulk/data/package_data.rb +64 -0
  107. data/lib/embulk/data_source.rb +2 -2
  108. data/lib/embulk/decoder_plugin.rb +27 -0
  109. data/lib/embulk/encoder_plugin.rb +27 -0
  110. data/lib/embulk/error.rb +3 -0
  111. data/lib/embulk/file_input_plugin.rb +27 -0
  112. data/lib/embulk/file_output_plugin.rb +27 -0
  113. data/lib/embulk/filter_plugin.rb +28 -9
  114. data/lib/embulk/formatter_plugin.rb +105 -0
  115. data/lib/embulk/guess_csv.rb +10 -1
  116. data/lib/embulk/guess_plugin.rb +22 -27
  117. data/lib/embulk/input_plugin.rb +34 -20
  118. data/lib/embulk/java/bootstrap.rb +5 -0
  119. data/lib/embulk/java/imports.rb +7 -0
  120. data/lib/embulk/java_plugin.rb +84 -0
  121. data/lib/embulk/output_plugin.rb +35 -19
  122. data/lib/embulk/page.rb +1 -1
  123. data/lib/embulk/page_builder.rb +1 -1
  124. data/lib/embulk/parser_plugin.rb +76 -0
  125. data/lib/embulk/plugin.rb +130 -65
  126. data/lib/embulk/plugin_registry.rb +19 -8
  127. data/lib/embulk/schema.rb +4 -4
  128. data/lib/embulk/version.rb +1 -1
  129. data/settings.gradle +1 -0
  130. metadata +123 -90
  131. data/ChangeLog +0 -46
  132. data/embulk-cli/pom.xml +0 -94
  133. data/embulk-core/pom.xml +0 -148
  134. data/embulk-core/src/main/java/org/embulk/config/NextConfig.java +0 -26
  135. data/embulk-standards/pom.xml +0 -68
  136. data/embulk-standards/src/main/java/org/embulk/standards/S3FileInputPlugin.java +0 -250
  137. data/embulk-standards/src/test/java/org/embulk/standards/TestS3FileInputPlugin.java +0 -43
  138. data/pom.xml +0 -541
@@ -0,0 +1,29 @@
1
+ #!/bin/bash
2
+
3
+ set -e
4
+ [ "$TRAVIS_PULL_REQUEST" != "false" ] && exit 0
5
+
6
+ revision="$(git rev-parse HEAD)"
7
+ remote="$(git config remote.origin.url | sed "s+^git:+http://+")"
8
+ ./gradlew site
9
+
10
+ rm -rf gh_pages
11
+ git clone . gh_pages
12
+ cd gh_pages
13
+
14
+ git remote add travis_push "$remote"
15
+ git fetch travis_push
16
+
17
+ git checkout -b gh-pages travis_push/gh-pages
18
+ rm -rf docs
19
+ cp -a ../embulk-docs/build/html docs
20
+ git add docs
21
+
22
+ git config user.name "$GIT_USER_NAME"
23
+ git config user.email "$GIT_USER_EMAIL"
24
+ git commit -m "Updated document $revision" || exit 0
25
+
26
+ git config credential.helper "store --file=.git_credential_helper"
27
+ echo "https://$GITHUB_TOKEN:@github.com" > "$HOME/.git_credential_helper"
28
+ trap "rm -rf $HOME/.git_credential_helper" EXIT
29
+ git push travis_push gh-pages
@@ -0,0 +1,260 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # Embulk documentation build configuration file, created by
4
+ # sphinx-quickstart on Fri Feb 13 14:52:36 2015.
5
+ #
6
+ # This file is execfile()d with the current directory set to its
7
+ # containing dir.
8
+ #
9
+ # Note that not all possible configuration values are present in this
10
+ # autogenerated file.
11
+ #
12
+ # All configuration values have a default; values that are commented out
13
+ # serve to show the default.
14
+
15
+ import sys
16
+ import os
17
+
18
+ # If extensions (or modules to document with autodoc) are in another directory,
19
+ # add these directories to sys.path here. If the directory is relative to the
20
+ # documentation root, use os.path.abspath to make it absolute, like shown here.
21
+ #sys.path.insert(0, os.path.abspath('.'))
22
+
23
+ # -- General configuration ------------------------------------------------
24
+
25
+ # If your documentation needs a minimal Sphinx version, state it here.
26
+ #needs_sphinx = '1.0'
27
+
28
+ # Add any Sphinx extension module names here, as strings. They can be
29
+ # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
30
+ # ones.
31
+ extensions = [
32
+ 'sphinx.ext.autodoc',
33
+ ]
34
+
35
+ # Add any paths that contain templates here, relative to this directory.
36
+ templates_path = ['_templates']
37
+
38
+ # The suffix of source filenames.
39
+ source_suffix = '.rst'
40
+
41
+ # The encoding of source files.
42
+ #source_encoding = 'utf-8-sig'
43
+
44
+ # The master toctree document.
45
+ master_doc = 'index'
46
+
47
+ # General information about the project.
48
+ project = u'Embulk'
49
+ copyright = u'2015, Embulk Project'
50
+
51
+ # The version info for the project you're documenting, acts as replacement for
52
+ # |version| and |release|, also used in various other places throughout the
53
+ # built documents.
54
+ #
55
+ # The short X.Y version.
56
+ version = '0.4'
57
+ # The full version, including alpha/beta/rc tags.
58
+ release = '0.4'
59
+
60
+ # The language for content autogenerated by Sphinx. Refer to documentation
61
+ # for a list of supported languages.
62
+ #language = None
63
+
64
+ # There are two options for replacing |today|: either, you set today to some
65
+ # non-false value, then it is used:
66
+ #today = ''
67
+ # Else, today_fmt is used as the format for a strftime call.
68
+ #today_fmt = '%B %d, %Y'
69
+
70
+ # List of patterns, relative to source directory, that match files and
71
+ # directories to ignore when looking for source files.
72
+ exclude_patterns = []
73
+
74
+ # The reST default role (used for this markup: `text`) to use for all
75
+ # documents.
76
+ #default_role = None
77
+
78
+ # If true, '()' will be appended to :func: etc. cross-reference text.
79
+ #add_function_parentheses = True
80
+
81
+ # If true, the current module name will be prepended to all description
82
+ # unit titles (such as .. function::).
83
+ #add_module_names = True
84
+
85
+ # If true, sectionauthor and moduleauthor directives will be shown in the
86
+ # output. They are ignored by default.
87
+ #show_authors = False
88
+
89
+ # The name of the Pygments (syntax highlighting) style to use.
90
+ pygments_style = 'sphinx'
91
+
92
+ # A list of ignored prefixes for module index sorting.
93
+ #modindex_common_prefix = []
94
+
95
+ # If true, keep warnings as "system message" paragraphs in the built documents.
96
+ #keep_warnings = False
97
+
98
+
99
+ # -- Options for HTML output ----------------------------------------------
100
+
101
+ # The theme to use for HTML and HTML Help pages. See the documentation for
102
+ # a list of builtin themes.
103
+ html_theme = 'haiku'
104
+
105
+ # Theme options are theme-specific and customize the look and feel of a theme
106
+ # further. For a list of options available for each theme, see the
107
+ # documentation.
108
+ html_theme_options = {}
109
+
110
+ # Add any paths that contain custom themes here, relative to this directory.
111
+ #html_theme_path = []
112
+
113
+ # The name for this set of Sphinx documents. If None, it defaults to
114
+ # "<project> v<release> documentation".
115
+ #html_title = None
116
+
117
+ # A shorter title for the navigation bar. Default is the same as html_title.
118
+ #html_short_title = None
119
+
120
+ # The name of an image file (relative to this directory) to place at the top
121
+ # of the sidebar.
122
+ #html_logo = None
123
+
124
+ # The name of an image file (within the static path) to use as favicon of the
125
+ # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
126
+ # pixels large.
127
+ #html_favicon = None
128
+
129
+ # Add any paths that contain custom static files (such as style sheets) here,
130
+ # relative to this directory. They are copied after the builtin static files,
131
+ # so a file named "default.css" will overwrite the builtin "default.css".
132
+ html_static_path = ['_static']
133
+
134
+ # Add any extra paths that contain custom files (such as robots.txt or
135
+ # .htaccess) here, relative to this directory. These files are copied
136
+ # directly to the root of the documentation.
137
+ #html_extra_path = []
138
+
139
+ # If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
140
+ # using the given strftime format.
141
+ #html_last_updated_fmt = '%b %d, %Y'
142
+
143
+ # If true, SmartyPants will be used to convert quotes and dashes to
144
+ # typographically correct entities.
145
+ #html_use_smartypants = True
146
+
147
+ # Custom sidebar templates, maps document names to template names.
148
+ #html_sidebars = {}
149
+
150
+ # Additional templates that should be rendered to pages, maps page names to
151
+ # template names.
152
+ #html_additional_pages = {}
153
+
154
+ # If false, no module index is generated.
155
+ #html_domain_indices = True
156
+
157
+ # If false, no index is generated.
158
+ #html_use_index = True
159
+
160
+ # If true, the index is split into individual pages for each letter.
161
+ #html_split_index = False
162
+
163
+ # If true, links to the reST sources are added to the pages.
164
+ #html_show_sourcelink = True
165
+
166
+ # If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
167
+ #html_show_sphinx = True
168
+
169
+ # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
170
+ #html_show_copyright = True
171
+
172
+ # If true, an OpenSearch description file will be output, and all pages will
173
+ # contain a <link> tag referring to it. The value of this option must be the
174
+ # base URL from which the finished HTML is served.
175
+ #html_use_opensearch = ''
176
+
177
+ # This is the file name suffix for HTML files (e.g. ".xhtml").
178
+ #html_file_suffix = None
179
+
180
+ # Output file base name for HTML help builder.
181
+ htmlhelp_basename = 'Embulkdoc'
182
+
183
+
184
+ # -- Options for LaTeX output ---------------------------------------------
185
+
186
+ latex_elements = {
187
+ # The paper size ('letterpaper' or 'a4paper').
188
+ #'papersize': 'letterpaper',
189
+
190
+ # The font size ('10pt', '11pt' or '12pt').
191
+ #'pointsize': '10pt',
192
+
193
+ # Additional stuff for the LaTeX preamble.
194
+ #'preamble': '',
195
+ }
196
+
197
+ # Grouping the document tree into LaTeX files. List of tuples
198
+ # (source start file, target name, title,
199
+ # author, documentclass [howto, manual, or own class]).
200
+ latex_documents = [
201
+ ('index', 'Embulk.tex', u'Embulk Documentation',
202
+ u'Embulk Project', 'manual'),
203
+ ]
204
+
205
+ # The name of an image file (relative to this directory) to place at the top of
206
+ # the title page.
207
+ #latex_logo = None
208
+
209
+ # For "manual" documents, if this is true, then toplevel headings are parts,
210
+ # not chapters.
211
+ #latex_use_parts = False
212
+
213
+ # If true, show page references after internal links.
214
+ #latex_show_pagerefs = False
215
+
216
+ # If true, show URL addresses after external links.
217
+ #latex_show_urls = False
218
+
219
+ # Documents to append as an appendix to all manuals.
220
+ #latex_appendices = []
221
+
222
+ # If false, no module index is generated.
223
+ #latex_domain_indices = True
224
+
225
+
226
+ # -- Options for manual page output ---------------------------------------
227
+
228
+ # One entry per manual page. List of tuples
229
+ # (source start file, name, description, authors, manual section).
230
+ man_pages = [
231
+ ('index', 'embulk', u'Embulk Documentation',
232
+ [u'Embulk Project'], 1)
233
+ ]
234
+
235
+ # If true, show URL addresses after external links.
236
+ #man_show_urls = False
237
+
238
+
239
+ # -- Options for Texinfo output -------------------------------------------
240
+
241
+ # Grouping the document tree into Texinfo files. List of tuples
242
+ # (source start file, target name, title, author,
243
+ # dir menu entry, description, category)
244
+ texinfo_documents = [
245
+ ('index', 'Embulk', u'Embulk Documentation',
246
+ u'Embulk Project', 'Embulk', 'One line description of project.',
247
+ 'Miscellaneous'),
248
+ ]
249
+
250
+ # Documents to append as an appendix to all manuals.
251
+ #texinfo_appendices = []
252
+
253
+ # If false, no module index is generated.
254
+ #texinfo_domain_indices = True
255
+
256
+ # How to display URL addresses: 'footnote', 'no', or 'inline'.
257
+ #texinfo_show_urls = 'footnote'
258
+
259
+ # If true, do not generate a @detailmenu in the "Top" node's menu.
260
+ #texinfo_no_detailmenu = False
@@ -0,0 +1,19 @@
1
+ .. Embulk documentation master file, created by
2
+ sphinx-quickstart on Fri Feb 13 14:52:36 2015.
3
+ You can adapt this file completely to your liking, but it should at least
4
+ contain the root `toctree` directive.
5
+
6
+ Embulk documentation
7
+ ==================================
8
+
9
+ https://github.com/embulk/embulk
10
+
11
+ .. toctree::
12
+ :maxdepth: 2
13
+
14
+ release
15
+
16
+ * `JavaDoc <javadoc/index.html>`_
17
+
18
+ * `RDoc <rdoc/_index.html>`_
19
+
@@ -0,0 +1,14 @@
1
+ Release Notes
2
+ ==================================
3
+
4
+ .. toctree::
5
+ :maxdepth: 1
6
+
7
+ release/release-0.1.0
8
+ release/release-0.2.0
9
+ release/release-0.2.1
10
+ release/release-0.3.0
11
+ release/release-0.3.1
12
+ release/release-0.3.2
13
+ release/release-0.4.0
14
+
@@ -0,0 +1,8 @@
1
+ Release 0.1.0
2
+ ==================================
3
+
4
+ The first release.
5
+
6
+ Release Date
7
+ ---------------
8
+ 2015-01-26
@@ -0,0 +1,16 @@
1
+ Release 0.2.0
2
+ ==================================
3
+
4
+ Plugin API
5
+ ------------------
6
+
7
+ * Changed JRuby InputPlugin API to use #run instead of .run
8
+
9
+ CLI
10
+ ------------------
11
+
12
+ * Fixed ``example`` subcommand to quote file path for Windows environment
13
+
14
+ Release Date
15
+ ------------------
16
+ 2015-01-26
@@ -0,0 +1,19 @@
1
+ Release 0.2.1
2
+ ==================================
3
+
4
+ Plugin Utility
5
+ ------------------
6
+
7
+ * Fixed ``spi.util.LineEncoder#finish`` to flush all remaining buffer (reported by @aibou)
8
+ * ``Embulk::PageBuilder#add`` accepts nil value
9
+
10
+ General Changes
11
+ ------------------
12
+
13
+ * Fixed NextConfig to be merged to in: or out: rather than the top-level
14
+ (reported by enukane) [#41]
15
+ * ./bin/embulk shows warns to run `rake` if ./classpath doesn't exist
16
+
17
+ Release Date
18
+ ------------------
19
+ 2015-01-29
@@ -0,0 +1,34 @@
1
+ Release 0.3.0
2
+ ==================================
3
+
4
+ Resume Feature
5
+ ------------------
6
+
7
+ * Added resume functionality.
8
+
9
+ Filter Feature
10
+ ------------------
11
+
12
+ * Added new filter plugin type.
13
+
14
+ Plugin SPI
15
+ ------------------
16
+
17
+ * ``spi.InputPlugin`` and ``spi.OutputPlugin`` need to implement ``resume`` and ``cleanup`` methods.
18
+ * Added ``spi.FilterInputPlugin`` Java API.
19
+ * Added ``Embulk::FilterInputPlugin`` JRuby API.
20
+
21
+ CLI
22
+ ------------------
23
+
24
+ * ``run`` subcommand supports ``-r, --resume-state PATH`` option.
25
+
26
+ General Changes
27
+ ------------------
28
+
29
+ * Added gradle-versions-plugin to build.gradle (@seratch++)
30
+ * Fixed broken dependencies at build.gradle (@thagikura++)
31
+
32
+ Release Date
33
+ ------------------
34
+ 2015-02-03
@@ -0,0 +1,11 @@
1
+ Release 0.3.1
2
+ ==================================
3
+
4
+ CLI
5
+ ------------------
6
+
7
+ * Added ``-C, --classpath option`` to add java classpath
8
+
9
+ Release Date
10
+ ------------------
11
+ 2015-02-04
@@ -0,0 +1,15 @@
1
+ Release 0.3.2
2
+ ==================================
3
+
4
+ General Changes
5
+ ------------------
6
+
7
+ * Fixed a problem where ruby input plugins can't use timestamp type (reported
8
+ by @shun0102)
9
+ * ``Embulk::Page`` includes Enumerable to include map, each_with_index, and other
10
+ a lot of convenient methods (@niku++)
11
+ * Fixed ``spi.time.TimestampType::DEFAULT_FORMAT`` to use ':' as the separator of times
12
+
13
+ Release Date
14
+ ------------------
15
+ 2015-02-04
@@ -0,0 +1,74 @@
1
+ Release 0.4.0
2
+ ==================================
3
+
4
+ Plugin Template Generator
5
+ ------------------
6
+
7
+ A new CLI subcommand ``new`` generate a plugin template.
8
+
9
+ For example, ``new ruby-output <name>`` generates a template of output plugin written in Ruby::
10
+
11
+ $ embulk new ruby-output foo
12
+ Creating embulk-output-foo/
13
+ Creating embulk-output-foo/README.md
14
+ Creating embulk-output-foo/LICENSE.txt
15
+ Creating embulk-output-foo/.gitignore
16
+ Creating embulk-output-foo/Rakefile
17
+ Creating embulk-output-foo/Gemfile
18
+ Creating embulk-output-foo/embulk-output-foo.gemspec
19
+ Creating embulk-output-foo/lib/embulk/output/foo.rb
20
+
21
+ The template generate supports most of plugin types. ruby-file-input and output, ruby-parser and formatter, ruby-decoder and encoder are not available yet because plugin SPI is not implemented yet.
22
+
23
+
24
+ Java Plugin Loader
25
+ ------------------
26
+
27
+ Now, we can write plugins in Java.
28
+
29
+ The plugin loader creates a dedicated classloader for each plugin so that plugins can depend on different versions of libraries. To develop a Java plugin, you can use use ``new java-<category> <name>`` command which generates a template. The generated directory has ``build.gradle`` file so that you can run ``./gradlew gem`` command to build a gem package.
30
+
31
+
32
+ Plugin SPI
33
+ ------------------
34
+
35
+ * **IMPORTANT**: Changed plugin path name from ``lib/embulk/<caetgory>_<name>.rb`` to ``lib/embulk/<category>/<name>.rb``.
36
+ * Added ``@ConfigInject`` annotation to set resources injected by Guice to a Task.
37
+ * Removed support for ``@JacksonInject`` annotation on a Task. ``@ConfigInject`` is the drop-in replacement.
38
+ * Changed class name ``spi.NextConfig`` to ``spi.ConfigDiff``.
39
+
40
+
41
+
42
+ Built-in plugins
43
+ ------------------
44
+
45
+ * ``csv`` parser plugin and its guess plugin assume "true", "yes", "Y" and "on" as a boolean true value.
46
+
47
+ * ``file`` input plugin changed parameters.
48
+
49
+ * Added ``path_prefix`` parameter (string, required).
50
+ * Added ``last_path`` parameter (string, optional) which skips files older than or same with the specified file path.
51
+ * Removed ``paths`` parameter.
52
+
53
+ * ``file`` output plugin changed parameters.
54
+
55
+ * Added ``sequence_format`` parameter.
56
+ * Removed ``directory`` parameters.
57
+ * Removed ``file_name`` parameters.
58
+ * The actual file name is ``${path_prefix}${sequence_format % [processorIndex, sequenceNumber}${ext_name}``.
59
+
60
+ * Removed ``s3`` file input plugin. It is now embulk-input-s3 gem.
61
+
62
+
63
+ General Changes
64
+ ------------------
65
+
66
+ * PluginManager reports the cause of exceptions when it failed to load a plugin.
67
+ * Removed pom.xml.
68
+ * Set locale = 'en_US' when gradle builds javadoc.
69
+ * Added documentation scripts using Sphinx, YARD and JavaDoc.
70
+
71
+
72
+ Release Date
73
+ ------------------
74
+ 2015-02-15