rharriso/bower-rails

View on GitHub
lib/tasks/bower.rake

Summary

Maintainability
Test Coverage
require 'bower-rails/performer'

namespace :bower do
  desc "Install components from bower"
  task :install, :options do |_, args|
    if ENV['RAILS_ENV'] && ENV['RAILS_ENV'] == 'development'
      Rake::Task["bower:install:development"].invoke(args[:options])
    else
      Rake::Task["bower:install:production"].invoke(args[:options])
    end
  end

  namespace :install do
    desc "Install components from bower using previously generated bower.json"
    task :deployment, :options do |_, args|
      args.with_defaults(:options => '')
      BowerRails::Performer.perform false do |bower|
        sh "#{bower} install #{args[:options]}"
      end
    end

    desc "Install both dependencies and devDependencies from bower"
    task :development, :options do |_, args|
      args.with_defaults(:options => '')
      BowerRails::Performer.perform do |bower|
        sh "#{bower} install #{args[:options]}"
      end
    end

    desc "Install only dependencies, excluding devDependencies from bower"
    task :production, :options do |_, args|
      args.with_defaults(:options => '')
      BowerRails::Performer.perform do |bower|
        sh "#{bower} install -p #{args[:options]}"
      end
    end
  end

  desc "Update bower components"
  task :update, :options do |_, args|
    args.with_defaults(:options => '')
    BowerRails::Performer.perform do |bower|
      sh "#{bower} update #{args[:options]}"
    end
  end

  desc "List bower components"
  task :list do
    BowerRails::Performer.perform false do |bower|
      sh "#{bower} list"
    end
  end

  namespace :update do
    desc "Update existing components and uninstalls extraneous components"
    task :prune, :options do |_, args|
      args.with_defaults(:options => '')
      BowerRails::Performer.perform do |bower|
        sh "#{bower} update #{args[:options]} && #{bower} prune #{args[:options]}"
      end
    end
  end

  desc "Resolve assets paths in bower components"
  task :resolve, :relative_directory do |_, args|
    BowerRails::Performer.perform false do
      resolve_asset_paths(
        args[:relative_directory] || BowerRails.bower_components_directory)
    end
  end

  desc "Attempt to keep only files listed in 'main' of each component's bower.json"
  task :clean do
    BowerRails::Performer.perform false do
      remove_extra_files
    end
  end

  namespace :cache do
    desc "Clear the bower cache ('bower cache clean')"
    task :clean do
      BowerRails::Performer.perform false do |bower|
        sh "#{bower} cache clean"
      end
    end
  end

  task :before_precompile do
    BowerRails.tasks.each do |task|
      Rake.application.invoke_task(task)
    end
  end
end

task "assets:precompile" => ["bower:before_precompile"]