class Fanforce::PluginFactory::CLI::Scaffolding include Fanforce::PluginFactory::CLI::Utils require_relative 'scaffolding_file' attr_reader :plugin def initialize(plugin) @plugin = plugin error 'Your .fanforce-plugin-factory file must specify a default fanforce_version_dependency' if !config[:fanforce_version_dependency] end def setup if File.directory?("#{plugin.dir}/tmp") log "#{'Found '.format(:green,:bold)} #{plugin._id}/tmp/" else Dir.mkdir("#{plugin.dir}/tmp") log "#{'Created'.format(:green,:bold)} #{plugin._id}/tmp/" end files.each {|file| file.create } end def update files_updated = false files.each {|file| files_updated = true if file.update } return files_updated end def metadata # status = :exists, :current, :missing, :previous, :diverged, :forked change_data = {} files.each do |file| if File.directory?(file.scaffold_filepath) directory_exists = File.directory?(file.filepath) change_data[file.filepath] = {status: directory_exists ? :exists : :missing} if directory_exists and File.exists?("#{file.scaffold_filepath}initialize.txt") and Dir.glob("#{file.filepath}*").size == 0 change_data["#{file.filepath}initialize.txt"] = {status: :missing} end next end status = file.status diff = file.diff_changes if [:previous,:diverged].include?(status) insertions = 0 deletions = 0 diff.lines do |line| next deletions += 1 if line[0] == '-' next insertions += 1 if line[0] == '+' end if diff change_data[file.filepath] = { status: status, diff: diff, insertions: insertions, deletions: deletions } end return change_data end ###################################################################################################################### def files Dir.glob("#{self.class.dir}/**/*", File::FNM_DOTMATCH).inject([]) do |files, scaffold_filepath| next files if scaffold_filepath =~ /\.registry$/ next files if scaffold_filepath =~ /\/initialize\.txt$/ next files if scaffold_filepath =~ /\/\.\.?$/ scaffold_filepath = "#{scaffold_filepath}/" if File.directory?(scaffold_filepath) and scaffold_filepath !~ /\/$/ files << Fanforce::PluginFactory::CLI::ScaffoldingFile.new(scaffold_filepath, plugin) end end ###################################################################################################################### def self.dir File.expand_path('scaffolding', Fanforce::PluginFactory.base_dir) end end