Sha256: 924f3e275491ece460569a7c209f13f7015bba09a545eee4a7d4c1f12be610f3

Contents?: true

Size: 1.19 KB

Versions: 1

Compression:

Stored size: 1.19 KB

Contents

require "json"

module Licensed
  module Source
    class Bower
      def initialize(config)
        @config = config
      end

      def type
        "bower"
      end

      def enabled?
        return false unless @config.enabled?(type)
        
        [@config.pwd.join(".bowerrc"), @config.pwd.join("bower.json")].any? do |path|
          File.exist?(path)
        end
      end

      def dependencies
        @dependencies ||= Dir.glob(bower_path.join("*/.bower.json")).map do |file|
          package = JSON.parse(File.read(file))
          Dependency.new(File.dirname(file), {
            "type"     => type,
            "name"     => package["name"],
            "version"  => package["version"],
            "summary"  => package["description"],
            "homepage" => package["homepage"]
          })
        end
      end

      def bower_config
        @bower_config ||= begin
          path = @config.pwd.join(".bowerrc")
          path.exist? ? JSON.parse(path.read) : {}
        end
      end

      def bower_path
        pwd = bower_config["cwd"] ? Pathname.new(bower_config["cwd"]) : @config.pwd
        pwd.join bower_config["directory"] || "bower_components"
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
licensed-0.6.0 lib/licensed/source/bower.rb