class Xezat::Command::Init
Public Class Methods
new(options, cygport)
click to toggle source
# File lib/xezat/command/init.rb, line 25 def initialize(options, cygport) @options = options @cygport = cygport end
Public Instance Methods
execute()
click to toggle source
# File lib/xezat/command/init.rb, line 30 def execute cygclass_dir = config(@options[:config])['cygwin']['cygclassdir'] repository_variables = get_repository_variables(@options['repository']) raise UnoverwritableCygportError, "#{@cygport} already exists" if FileTest.exist?(@cygport) && !@options['overwrite'] cygclasses = (@options['inherit'] || '').split(',') template_variables = get_template_variables(repository_variables, CygclassManager.new(cygclass_dir), cygclasses) File.atomic_write(@cygport) do |f| f.write(get_cygport(template_variables, @options['category'], @options['summary'], @options['description'], cygclasses, @cygport)) end end
get_cygport(template_variables, category, summary, description, cygclasses, cygport)
click to toggle source
# File lib/xezat/command/init.rb, line 75 def get_cygport(template_variables, category, summary, description, cygclasses, cygport) erb = File.expand_path(File.join(TEMPLATE_DIR, 'cygport.erb')) ERB.new(File.readlines(erb).join(nil), trim_mode: '%-').result(binding) end
get_repository_variables(repository)
click to toggle source
# File lib/xezat/command/init.rb, line 42 def get_repository_variables(repository) if repository repository_file = File.expand_path(File.join(REPOSITORY_DIR, "#{repository}.json")) raise NoSuchRepositoryError, "No such repository: #{template}" unless FileTest.exist?(repository_file) || FileTest.readable?(repository_file) JSON.parse(File.read(repository_file), symbolize_names: true) else { HOMEPAGE: '', SRC_URI: '' } end end
get_template_variables(original_template_variables, cygclass_manager, cygclasses)
click to toggle source
# File lib/xezat/command/init.rb, line 56 def get_template_variables(original_template_variables, cygclass_manager, cygclasses) vcs_class = nil vcs_prefix = 'SRC' cygclasses.each do |cygclass| raise NoSuchCygclassError, "No such cygclass: #{cygclass}" unless cygclass_manager.include?(cygclass.intern) next unless cygclass_manager.vcs?(cygclass.intern) raise CygclassConflictError, "#{cygclass} conflict with #{vcs_class}" if vcs_class vcs_class = cygclass end vcs_prefix = vcs_class.to_s.upcase if vcs_class vcs_uri = "#{vcs_prefix}_URI".intern { :HOMEPAGE => original_template_variables[:HOMEPAGE], vcs_uri => original_template_variables[vcs_uri] } end