Sha256: de6f5ea7b88fc20aaf0ef2313df136e396de8cc1e1aa6a02ec7c82328dc9315e

Contents?: true

Size: 1.53 KB

Versions: 7

Compression:

Stored size: 1.53 KB

Contents

# frozen_string_literal: true

module Bridgetown
  class PluginManager
    attr_reader :site

    # Create an instance of this class.
    #
    # site - the instance of Bridgetown::Site we're concerned with
    #
    # Returns nothing
    def initialize(site)
      @site = site
    end

    # Require all the plugins which are allowed.
    #
    # Returns nothing
    def conscientious_require
      require_plugin_files
    end

    def self.require_from_bundler
      if !ENV["BRIDGETOWN_NO_BUNDLER_REQUIRE"] && File.file?("Gemfile")
        require "bundler"

        Bundler.setup
        required_gems = Bundler.require(:bridgetown_plugins)
        message = "Required #{required_gems.map(&:name).join(", ")}"
        Bridgetown.logger.debug("PluginManager:", message)
        ENV["BRIDGETOWN_NO_BUNDLER_REQUIRE"] = "true"

        true
      else
        false
      end
    end

    # Require all .rb files
    #
    # Returns nothing.
    def require_plugin_files
      plugins_path.each do |plugin_search_path|
        plugin_files = Utils.safe_glob(plugin_search_path, File.join("**", "*.rb"))
        Bridgetown::External.require_with_graceful_fail(plugin_files)
      end
    end

    # Public: Setup the plugin search path
    #
    # Returns an Array of plugin search paths
    def plugins_path
      if site.config["plugins_dir"].eql? Bridgetown::Configuration::DEFAULTS["plugins_dir"]
        [site.in_root_dir(site.config["plugins_dir"])]
      else
        Array(site.config["plugins_dir"]).map { |d| File.expand_path(d) }
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
bridgetown-core-0.10.1 lib/bridgetown-core/plugin_manager.rb
bridgetown-core-0.10.0 lib/bridgetown-core/plugin_manager.rb
bridgetown-core-0.9.0 lib/bridgetown-core/plugin_manager.rb
bridgetown-core-0.8.1 lib/bridgetown-core/plugin_manager.rb
bridgetown-core-0.8.0 lib/bridgetown-core/plugin_manager.rb
bridgetown-core-0.7.2 lib/bridgetown-core/plugin_manager.rb
bridgetown-core-0.7.1 lib/bridgetown-core/plugin_manager.rb