シンボリックリンク先を取り込むプラグインを作成する

Jekyllは_pluginsディレクトリにRubyファイルを追加することでプラグインとして動作させることができる。

下記のコードで_config.ymlimports_dirディレクトリ内にシンボリックリンクとしてリンクさせた別リポジトリのディレクトリから投稿を取り込むことができる。

Jekyll::Hooks.register :site, :after_reset do |site|
  Dir.glob("#{site.in_source_dir("", site.config["imports_dir"])}/*").tap do |dirs|
    require 'active_support/core_ext/string/inflections'
    Jekyll.logger.info "Importing:", "#{dirs.length} #{"directory".pluralize(dirs.length)} found"
  end.each do |dir|
    posts = Jekyll::PostReader.new(site).read_posts(dir).each do |post|
      site.config["imports_dir"].split(File::SEPARATOR).each do |part|
        post.data["categories"].delete(part)
      end
    end
    site.posts.docs.concat(posts)
    Jekyll.logger.info "", "#{dir} -> #{posts.length}"
  end
end