module Icomoon

Constants

VERSION

Public Class Methods

import(icomoon_files) click to toggle source
# File lib/icomoon.rb, line 7
def self.import(icomoon_files)
  begin
    icomoon_files = File.join(icomoon_files)
    app_root = Dir.getwd
    icon_config = YAML.load_file(File.join(app_root, '.icomoon.yml')).to_hash rescue {}

    working_dir = icon_config["working_directory"] ? File.join(app_root, icon_config["working_directory"], "icofont") : File.join(app_root, 'tmp', 'iconfont')
    working_dir = File.expand_path(working_dir)
    font_dir = icon_config["font_directory"] ? File.join(app_root, icon_config["font_directory"]) : File.join(app_root, 'app', 'assets', 'fonts')
    css_dir = icon_config["stylesheet_directory"] ? File.join(app_root, icon_config["stylesheet_directory"]) : File.join(app_root, 'app', 'assets', 'stylesheets')
    selection_dir = icon_config["selection_directory"] ? File.join(app_root, icon_config["selection_directory"]) : File.join(app_root, 'public', 'selection.json')
    stylesheet_name = icon_config["stylesheet"] || 'icons.css'

    if (!File.exist?(File.join(app_root, 'tmp')) || !icon_config["working_directory"]) || !File.exist?(font_dir) || !File.exist?(css_dir)
      abort "Current directory doesn't seems to be an application directory. please move to project root folder and run again"
    end

    unless File.directory? working_dir
      system "mkdir #{working_dir}"
    end

    if File.extname(icomoon_files) == '.zip'
      system "unzip -u #{icomoon_files} -d #{working_dir}"
      is_temp = true
    else
      working_dir = File.expand_path(icomoon_files)
      is_temp = false
    end

    Dir.glob(File.join(working_dir, 'fonts', '*')) do |file|
      puts "Copying #{file} to #{font_dir}"
      system "cp #{file} #{font_dir}"
    end

    puts 'Copying the stylesheet'
    stylesheet = File.join(css_dir, stylesheet_name)
    File.write(stylesheet, "") unless File.exist?(stylesheet)
    system "cp #{File.join(working_dir, 'style.css')} #{stylesheet}"
    
    puts 'Updating font URLs in stylesheet'
    stylesheet_content = File.read(stylesheet)
    stylesheet_content.gsub!("url('fonts/", "font-url('")
    File.open(stylesheet, 'w') do |file|
      file.write(stylesheet_content)
    end

    puts 'Updating selection.json file'
    system "cp -f #{File.join(working_dir, 'selection.json')} #{File.join(selection_dir)}"

  ensure
    if File.directory?(working_dir) && is_temp
      puts 'Deleting tmp folder'
      system "rm -rf #{working_dir}"
    end
  end
end