class Rubypack::RubypackFile
Constants
- DEFAULT_FILENAME
Attributes
filename[RW]
path[RW]
Public Class Methods
new(filename:, output:)
click to toggle source
# File lib/rubypack/rubypack_file.rb, line 8 def initialize(filename:, output:) fail("File not found: #{filename}") unless File.exists?(filename) @filename = File.basename(filename) @path = File.dirname(filename) @output = output read! end
Public Instance Methods
all()
click to toggle source
# File lib/rubypack/rubypack_file.rb, line 46 def all '**/**' end
exclude(*args)
click to toggle source
# File lib/rubypack/rubypack_file.rb, line 40 def exclude(*args) args.flatten! @rules = [] unless defined?(@rules) args.each { |entry| @rules << { action: :exclude, filter: entry } } end
format_rule(rule, files)
click to toggle source
# File lib/rubypack/rubypack_file.rb, line 56 def format_rule(rule, files) @output.status(" Action: #{rule[:action]}, Filter: #{rule[:filter]}") icon = (rule[:action] == :include) ? ' +' : ' -' files.each { |file| @output.verbose(icon, file) } end
git()
click to toggle source
# File lib/rubypack/rubypack_file.rb, line 50 def git Dir.chdir(@path) do `git ls-files -z`.split("\x0") end end
include(*args)
click to toggle source
# File lib/rubypack/rubypack_file.rb, line 34 def include(*args) args.flatten! @rules = [] unless defined?(@rules) args.each { |entry| @rules << { action: :include, filter: entry } } end
list_files()
click to toggle source
# File lib/rubypack/rubypack_file.rb, line 62 def list_files Dir.chdir(@path) do # If not rules were defined, include all by default unless defined?(@rules) files = Dir['**/**'] format_rule({ action: :include, filter: '**/**' }, files) return ffiles end # Determinate if the package must start with all files or with none action = @rules.first[:action] if action == :include files = [] elsif action == :exclude files = Dir['**/**'] format_rule({ action: :include, filter: '**/**' }, files) else fail("Action not implemented: #{action}") end # Include/exclude based on the rules @rules.each do |rule| if rule[:action] == :include filtered_files = Dir[rule[:filter]] files |= filtered_files format_rule(rule, filtered_files) elsif rule[:action] == :exclude filtered_files = Dir[rule[:filter]] files -= filtered_files format_rule(rule, filtered_files) else fail("Action not implemented: #{rule[:action]}") end end # Remove directories files.reject! { |file| File.directory?(file) } # Sort the file names files.sort end end
name(name)
click to toggle source
# File lib/rubypack/rubypack_file.rb, line 20 def name(name) @output.status(' Name:', name) @name = name end
output_filename()
click to toggle source
# File lib/rubypack/rubypack_file.rb, line 30 def output_filename "#{@name}-#{@version}" end
read!()
click to toggle source
# File lib/rubypack/rubypack_file.rb, line 16 def read! instance_exec { eval(File.read(File.join(@path, @filename))) } end
version(version)
click to toggle source
# File lib/rubypack/rubypack_file.rb, line 25 def version(version) @output.status(' Version:', version) @version = version end