Sha256: 6415a04256a3e895c52e7bc05ff6635a252723991bee8b7d9b0f3a3f2b87a16a

Contents?: true

Size: 1.47 KB

Versions: 2

Compression:

Stored size: 1.47 KB

Contents

module JBundle
  
  class Version

    def initialize(string)
      @major, @minor, @patch = string.split('.')
      raise "require (major.minor.patch) eg: 1.3.1" unless @major && @minor && @patch
    end

    def full
      [@major, @minor, @patch].join('.')
    end

    def major_minor 
      [@major, @minor].join('.')
    end

    def releaseable
      prerelease? ? [full] : [full, major_minor]
    end
    
    def to_s
      full
    end

    protected

    def prerelease?
      @patch =~ /-pre/
    end

  end
  
  class Writer
    
    def initialize(compiler, version, target_dir)
      @compiler, @version, @target_dir = compiler, Version.new(version), target_dir
    end
    
    def write
      @version.releaseable.each do |version_dir|
        if @compiler.buildable?
          write_file @compiler.src, ::File.join(@target_dir, version_dir), @compiler.name
          write_file @compiler.min, ::File.join(@target_dir, version_dir), @compiler.min_name
        else
          copy_file @compiler.src_path, ::File.join(@target_dir, version_dir, @compiler.name)
        end
      end
    end
    
    protected
    
    def copy_file(src, target)
      JBundle.log("Copying to #{target}")
      FileUtils.cp src, target
    end
    
    def write_file(content, dir_name, file_name)
      FileUtils.mkdir_p dir_name
      path = ::File.join(dir_name, file_name)
      JBundle.log("Writing to #{path}")
      ::File.open(path, 'w') do |f|
        f.write content
      end
    end
    
  end
  
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
jbundle-0.0.2 lib/jbundle/writer.rb
jbundle-0.0.1 lib/jbundle/writer.rb