require 'yaml' require File.join(File.dirname(__FILE__), '..', '..', 'lib/undercase/pattern')
namespace :fonts do
desc 'Compile fonts' task :compile do system 'fontcustom compile -c config/undercase-icons-regular.yml' end
end
namespace :undercase do
desc 'Compile and commit assets' task :package do system "rm public/undercase-*.tar.gz" system "cd spec/dummy/public; rake assets:precompile > /dev/null 2>&1" system "cd public; (tar -C ../spec/dummy/public/assets -cvzf undercase-#{bumped_version}.tar.gz .)> /dev/null 2>&1" system "git add 'public/undercase-*.tar.gz'" system "git commit -m 'Add packaged assets for v#{bumped_version}'" end desc 'Push to github and heroku' task :deploy do system "git push origin head --tags" system "git push heroku master" end desc 'Tag and package assets - defaults to incrementing current version number unless passed VERSION as an argument' task release: [:package, :bump, :tag, :deploy] desc 'Create tag' task :tag do system "git tag v#{bumped_version}" end desc 'Bump undercase version' task :bump do puts "Bumping undercase version to #{bumped_version}" version_file_text = <<-VERSION_FILE
module Undercase
VERSION = '#{bumped_version}'
end
VERSION_FILE File.open("lib/undercase/version.rb", 'w') { |file| file.write(version_file_text) } system "git add lib/undercase/version.rb" system "bundle install > /dev/null 2>&1" system "git add Gemfile.lock" system "git commit -m 'Bump undercase to v#{bumped_version}'" end
end
namespace :pattern do
desc 'Combine import statements for all existing, new, and changed patterns into a manifest file. Overwrites existing manifest.' task :manifest do scss = Undercase::Pattern.all.inject('') do |sum, pattern| sum << "@import 'undercase/patterns/#{pattern.key}';\n" sum end File.open(Undercase::Pattern::SCSS_FILE, 'w') {|f| f.write(scss) } puts "Generated SCSS import manifest at #{Undercase::Pattern::SCSS_FILE}" end desc "Create scaffolding for a new pattern. Usage: pattern:create[NAME,'DISPLAY NAME']" task :create, :pattern_name, :display_name do |t, args| name = args[:pattern_name] display_name = args[:display_name] puts "Creating #{name}, #{display_name}..." yaml = "#{Undercase::Pattern::YAML_PATH}#{name}.yml" content = <<-TEXT
name: #{display_name} description: add description usage: add usage notes for #{name} pattern category: :choose_one
TEXT File.open(yaml, 'w') {|f| f.write(content) } puts "Created #{yaml}" scss = "#{Undercase::Pattern::SCSS_PATH}_#{name}.scss" system('touch', scss) puts "Created #{scss}" haml = "#{Undercase::Pattern::HAML_PATH}_#{name}.html.haml" system('touch', haml) puts "Created #{haml}" Rake::Task['pattern:manifest'].execute puts 'Done' end
end
def bumped_version
@bumped_version ||= (ENV['VERSION'] || calculate_new_version)
end
def calculate_new_version
major, minor, patch = "#{Undercase::VERSION}".split(".") incremented_patch = patch.to_i + 1 [major, minor, incremented_patch.to_s].join(".")
end