diff --git a/.gitignore b/.gitignore index 415377f..0796dd7 100644 --- a/.gitignore +++ b/.gitignore @@ -37,3 +37,5 @@ build/ env preparer-test-* +.asset-cache +.jekyll-cache diff --git a/.travis.yml b/.travis.yml index 9a33846..078f3c3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,4 @@ language: ruby rvm: -- "2.2.3" +- "2.4.4" script: bin/test diff --git a/Dockerfile b/Dockerfile index 5ebb99b..191300d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,8 @@ -FROM alpine:3.3 -MAINTAINER Ash Wilson +FROM alpine:3.6 +LABEL maintainer="Laura Santamaria " RUN apk add --no-cache ruby ruby-io-console ruby-irb ruby-rdoc ruby-dev \ - git build-base libffi-dev nodejs python + git build-base libffi-dev nodejs python ruby-nokogiri libxml2-dev libxslt-dev RUN adduser -D -g "" -u 1000 preparer RUN mkdir -p /usr/src/app /usr/content-repo diff --git a/Gemfile.lock b/Gemfile.lock index 4f5b4d8..8707407 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,129 +1,129 @@ PATH remote: . specs: - preparermd (0.1.0) - faraday (= 0.9.1) - jekyll (= 2.5.3) - jekyll-assets (= 0.14.0) - json (= 1.8.3) - therubyracer (= 0.12.2) + preparermd (1.0.0) + faraday (= 0.14.0) + jekyll (= 3.7.3) + jekyll-assets (= 3.0.8) + json (= 2.1.0) + redcarpet (= 3.4.0) GEM remote: https://rubygems.org/ specs: - addressable (2.3.8) - blankslate (2.1.2.4) - classifier-reborn (2.0.3) - fast-stemmer (~> 1.0) - coderay (1.1.0) - coffee-script (2.4.1) - coffee-script-source - execjs - coffee-script-source (1.9.1.1) - colorator (0.1) - execjs (2.6.0) - faraday (0.9.1) + activesupport (5.1.6) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 0.7, < 2) + minitest (~> 5.1) + tzinfo (~> 1.1) + addressable (2.5.2) + public_suffix (>= 2.0.2, < 4.0) + coderay (1.1.2) + colorator (1.1.0) + concurrent-ruby (1.0.5) + em-websocket (0.5.1) + eventmachine (>= 0.12.9) + http_parser.rb (~> 0.6.0) + eventmachine (1.2.5) + execjs (2.7.0) + extras (0.3.0) + forwardable-extended (~> 2.5) + faraday (0.14.0) multipart-post (>= 1.2, < 3) - fast-stemmer (1.0.2) - fastimage (1.7.0) - addressable (~> 2.3, >= 2.3.5) - ffi (1.9.10) - hashdiff (0.2.3) - hike (1.2.3) - jekyll (2.5.3) - classifier-reborn (~> 2.0) - colorator (~> 0.1) - jekyll-coffeescript (~> 1.0) - jekyll-gist (~> 1.0) - jekyll-paginate (~> 1.0) + fastimage (2.1.1) + ffi (1.9.23) + forwardable-extended (2.6.0) + hashdiff (0.3.7) + http_parser.rb (0.6.0) + i18n (0.9.5) + concurrent-ruby (~> 1.0) + jekyll (3.7.3) + addressable (~> 2.4) + colorator (~> 1.0) + em-websocket (~> 0.5) + i18n (~> 0.7) jekyll-sass-converter (~> 1.0) - jekyll-watch (~> 1.1) - kramdown (~> 1.3) - liquid (~> 2.6.1) + jekyll-watch (~> 2.0) + kramdown (~> 1.14) + liquid (~> 4.0) mercenary (~> 0.3.3) - pygments.rb (~> 0.6.0) - redcarpet (~> 3.1) + pathutil (~> 0.9) + rouge (>= 1.7, < 4) safe_yaml (~> 1.0) - toml (~> 0.1.0) - jekyll-assets (0.14.0) - fastimage (~> 1.6) - jekyll (~> 2.0) - mini_magick (~> 4.1) - sass (~> 3.2) - sprockets (~> 2.10) - sprockets-helpers - sprockets-sass - jekyll-coffeescript (1.0.1) - coffee-script (~> 2.2) - jekyll-gist (1.3.4) - jekyll-paginate (1.1.0) - jekyll-sass-converter (1.3.0) - sass (~> 3.2) - jekyll-watch (1.3.0) + jekyll-assets (3.0.8) + activesupport (~> 5.0) + execjs (~> 2.7) + extras (~> 0.2) + fastimage (~> 2.0, >= 1.8) + jekyll (>= 3.5, < 4.0) + jekyll-sanity (~> 1.2) + liquid-tag-parser (~> 1.0) + nokogiri (~> 1.8) + pathutil (~> 0.16) + sprockets (>= 3.3, < 4.1.beta) + jekyll-sanity (1.2.0) + jekyll (~> 3.1) + jekyll-sass-converter (1.5.2) + sass (~> 3.4) + jekyll-watch (2.0.0) listen (~> 3.0) - json (1.8.3) - kramdown (1.8.0) - libv8 (3.16.14.11) - liquid (2.6.3) - listen (3.0.3) - rb-fsevent (>= 0.9.3) - rb-inotify (>= 0.9) - mercenary (0.3.5) - method_source (0.8.2) - mini_magick (4.3.3) - multi_json (1.11.2) + json (2.1.0) + kramdown (1.16.2) + liquid (4.0.0) + liquid-tag-parser (1.8.0) + extras (~> 0.3) + liquid (>= 3.0, < 5.0) + listen (3.1.5) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + ruby_dep (~> 1.2) + mercenary (0.3.6) + method_source (0.9.0) + mini_portile2 (2.3.0) + minitest (5.11.3) multipart-post (2.0.0) - parslet (1.5.0) - blankslate (~> 2.0) - posix-spawn (0.3.11) - pry (0.10.1) + nokogiri (1.8.2) + mini_portile2 (~> 2.3.0) + pathutil (0.16.1) + forwardable-extended (~> 2.6) + pry (0.11.3) coderay (~> 1.1.0) - method_source (~> 0.8.1) - slop (~> 3.4) - pygments.rb (0.6.3) - posix-spawn (~> 0.3.6) - yajl-ruby (~> 1.2.0) - rack (1.6.4) - rake (10.4.2) - rb-fsevent (0.9.6) - rb-inotify (0.9.5) - ffi (>= 0.5.0) - redcarpet (3.3.3) - ref (2.0.0) + method_source (~> 0.9.0) + public_suffix (3.0.2) + rack (2.0.4) + rake (12.3.1) + rb-fsevent (0.10.3) + rb-inotify (0.9.10) + ffi (>= 0.5.0, < 2) + redcarpet (3.4.0) + rouge (3.1.1) + ruby_dep (1.5.0) safe_yaml (1.0.4) - sass (3.4.18) - slop (3.6.0) - sprockets (2.12.4) - hike (~> 1.2) - multi_json (~> 1.0) - rack (~> 1.0) - tilt (~> 1.1, != 1.3.0) - sprockets-helpers (1.2.1) - sprockets (>= 2.2) - sprockets-sass (1.3.1) - sprockets (~> 2.0) - tilt (~> 1.1) - term-ansicolor (1.3.2) + sass (3.5.6) + sass-listen (~> 4.0.0) + sass-listen (4.0.0) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + sprockets (4.0.0.beta7) + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + term-ansicolor (1.6.0) tins (~> 1.0) - therubyracer (0.12.2) - libv8 (~> 3.16.14.0) - ref - tilt (1.4.1) - tins (1.7.0) - toml (0.1.2) - parslet (~> 1.5.0) - yajl-ruby (1.2.1) + thread_safe (0.3.6) + tins (1.16.3) + tzinfo (1.2.5) + thread_safe (~> 0.1) PLATFORMS ruby DEPENDENCIES - bundler (~> 1.9) + bundler (~> 1.15) hashdiff preparermd! pry - rake (~> 10.0) + rake (~> 12.1) term-ansicolor BUNDLED WITH - 1.10.6 + 1.15.4 diff --git a/lib/preparermd/overrides/environment.rb b/lib/preparermd/overrides/environment.rb index 896f26a..8cd5378 100644 --- a/lib/preparermd/overrides/environment.rb +++ b/lib/preparermd/overrides/environment.rb @@ -4,7 +4,7 @@ require 'faraday' require 'sprockets' -require 'jekyll/assets_plugin/environment' +require 'jekyll/assets/env' # Module to be mixed in to each uploaded Asset to ensure that the correct URLs are generated. # @@ -16,7 +16,7 @@ module AssetPatch # Custom Index subclass that uploads each built asset to the content service as it is discovered. # -class Index < Sprockets::Index +class Index < Sprockets::CachedEnvironment def build_asset(path, pathname, options) super.tap do |asset| dest = File.join(PreparerMD.config.asset_dir, asset.logical_path) @@ -41,23 +41,20 @@ def build_asset(path, pathname, options) # Custom Sprockets Environment subclass that uses our injected Index subclass. # -class Environment < Jekyll::AssetsPlugin::Environment +class Env < Jekyll::Assets::Env def index Index.new(self) end end -# Monkey-patch the Jekyll Assets plugin AssetPath class to use the #asset_render_url +# Monkey-patch the Jekyll Assets plugin SassFunctions module (run from the +# Functions module) to use the #asset_render_url if present. # -module Jekyll - module AssetsPlugin - - class AssetPath - alias_method :orig_to_s, :to_s - def to_s - @asset.respond_to?(:asset_render_url) ? @asset.asset_render_url : orig_to_s - end +module Sprockets + class Asset + alias_method :orig_to_s, :to_s + def to_s + @asset.respond_to?(:asset_render_url) ? @asset.asset_render_url : orig_to_s end - end end diff --git a/lib/preparermd/plugins/metadata_envelopes.rb b/lib/preparermd/plugins/metadata_envelopes.rb index ec33157..bd7acaa 100644 --- a/lib/preparermd/plugins/metadata_envelopes.rb +++ b/lib/preparermd/plugins/metadata_envelopes.rb @@ -18,7 +18,7 @@ def generate(site) end end - site.posts.each do |post| + site.posts.docs.each do |post| render_json(post, site) end diff --git a/lib/preparermd/version.rb b/lib/preparermd/version.rb index 20797e0..23c4ef4 100644 --- a/lib/preparermd/version.rb +++ b/lib/preparermd/version.rb @@ -1,3 +1,3 @@ module PreparerMD - VERSION = "0.1.0" + VERSION = "1.0.0" end diff --git a/preparermd.gemspec b/preparermd.gemspec index 4d0dff4..e3c2bfb 100644 --- a/preparermd.gemspec +++ b/preparermd.gemspec @@ -25,12 +25,12 @@ Gem::Specification.new do |spec| spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) } spec.require_paths = ["lib"] - spec.add_development_dependency "bundler", "~> 1.9" - spec.add_development_dependency "rake", "~> 10.0" + spec.add_development_dependency "bundler", "~> 1.15" + spec.add_development_dependency "rake", "~> 12.1" - spec.add_runtime_dependency "jekyll", "2.5.3" - spec.add_runtime_dependency "faraday", "0.9.1" - spec.add_runtime_dependency "jekyll-assets", "0.14.0" - spec.add_runtime_dependency "therubyracer", "0.12.2" - spec.add_runtime_dependency "json", "1.8.3" + spec.add_runtime_dependency "jekyll", "3.7.3" + spec.add_runtime_dependency "faraday", "0.14.0" + spec.add_runtime_dependency "jekyll-assets", "3.0.8" + spec.add_runtime_dependency "redcarpet", "3.4.0" + spec.add_runtime_dependency "json", "2.1.0" end diff --git a/test/all.rb b/test/all.rb index be476fc..fcde533 100644 --- a/test/all.rb +++ b/test/all.rb @@ -115,6 +115,7 @@ def asset_set_from dir return assets unless File.directory? base Find.find(base) do |path| + next if path == base assets << path[base.size..-1] end assets.sort @@ -126,7 +127,7 @@ def report case @outcome when :fail - header, diff = true, true + header, output, diff = true, true, true when :error header, output, stacktrace = true, true, true end diff --git a/test/assets/src/useit.md b/test/assets/src/useit.md index 49af2d5..0670701 100644 --- a/test/assets/src/useit.md +++ b/test/assets/src/useit.md @@ -5,6 +5,6 @@ Including some actual markup before it to test the offsets. -![here it is]({% asset_path somepath/coffee-selfie-small.jpg %}) +![here it is]({% asset somepath/coffee-selfie-small.jpg @path %}) And a little markup after it to keep things interesting. diff --git a/test/envelopes/src/_deconst.json b/test/envelopes/src/_deconst.json deleted file mode 100644 index 5c2f9a9..0000000 --- a/test/envelopes/src/_deconst.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "contentIDBase": "idbase" -} diff --git a/test/image-asset/dest/assets/wheatley-icon.jpg b/test/image-asset/dest/assets/wheatley-icon.jpg new file mode 100644 index 0000000..b62eeb6 Binary files /dev/null and b/test/image-asset/dest/assets/wheatley-icon.jpg differ diff --git a/test/image-asset/dest/image-asset-base%2Fasset b/test/image-asset/dest/image-asset-base%2Fasset new file mode 100644 index 0000000..627c4de --- /dev/null +++ b/test/image-asset/dest/image-asset-base%2Fasset @@ -0,0 +1 @@ +{"title":null,"body":"

This document contains a reference to an asset.

\n","categories":[],"meta":{"layout":null},"tags":[]} \ No newline at end of file diff --git a/test/image-asset/src/_assets/img/wheatley-icon.jpg b/test/image-asset/src/_assets/img/wheatley-icon.jpg new file mode 100644 index 0000000..b62eeb6 Binary files /dev/null and b/test/image-asset/src/_assets/img/wheatley-icon.jpg differ diff --git a/test/envelopes/src/_config.yml b/test/image-asset/src/_config.yml similarity index 100% rename from test/envelopes/src/_config.yml rename to test/image-asset/src/_config.yml diff --git a/test/image-asset/src/_deconst.json b/test/image-asset/src/_deconst.json new file mode 100644 index 0000000..1283963 --- /dev/null +++ b/test/image-asset/src/_deconst.json @@ -0,0 +1,3 @@ +{ + "contentIDBase": "image-asset-base" +} diff --git a/test/image-asset/src/asset.md b/test/image-asset/src/asset.md new file mode 100644 index 0000000..340c692 --- /dev/null +++ b/test/image-asset/src/asset.md @@ -0,0 +1,4 @@ +--- +--- + +This document contains a reference to an [asset]({% asset wheatley-icon @path %}). diff --git a/test/maximum-envelope/src/_config.yml b/test/maximum-envelope/src/_config.yml new file mode 100644 index 0000000..ea90ec0 --- /dev/null +++ b/test/maximum-envelope/src/_config.yml @@ -0,0 +1,9 @@ +# Site settings +title: The site title +description: The site description + +# Build settings +markdown: redcarpet +encoding: UTF-8 +redcarpet: + extensions: ["with_toc_data"] diff --git a/test/maximum-envelope/src/_deconst.json b/test/maximum-envelope/src/_deconst.json new file mode 100644 index 0000000..1c09d64 --- /dev/null +++ b/test/maximum-envelope/src/_deconst.json @@ -0,0 +1,3 @@ +{ + "contentIDBase": "maximum-base" +} diff --git a/test/envelopes/src/maximum.md b/test/maximum-envelope/src/maximum.md similarity index 100% rename from test/envelopes/src/maximum.md rename to test/maximum-envelope/src/maximum.md diff --git a/test/minimum-envelope/src/_config.yml b/test/minimum-envelope/src/_config.yml new file mode 100644 index 0000000..ea90ec0 --- /dev/null +++ b/test/minimum-envelope/src/_config.yml @@ -0,0 +1,9 @@ +# Site settings +title: The site title +description: The site description + +# Build settings +markdown: redcarpet +encoding: UTF-8 +redcarpet: + extensions: ["with_toc_data"] diff --git a/test/minimum-envelope/src/_deconst.json b/test/minimum-envelope/src/_deconst.json new file mode 100644 index 0000000..1b91537 --- /dev/null +++ b/test/minimum-envelope/src/_deconst.json @@ -0,0 +1,3 @@ +{ + "contentIDBase": "minimal-base" +} diff --git a/test/envelopes/src/minimal.md b/test/minimum-envelope/src/minimal.md similarity index 100% rename from test/envelopes/src/minimal.md rename to test/minimum-envelope/src/minimal.md