Sha256: 608f3cb3a835ffd966c5ba77c350cc78516132363e1680721df9fdad7a3d9496

Contents?: true

Size: 1.32 KB

Versions: 11

Compression:

Stored size: 1.32 KB

Contents

module Sprout::Generator
  class DirectoryManifest < Manifest
    attr_reader :children
    attr_reader :generators

    def initialize
      super
      @children = []
      @generators = []
    end

    def create
      if !File.directory?(path)
        FileUtils.mkdir_p path
        say "Created directory: #{path}"
      else
        say "Skipped existing:  #{path}" unless(path == Dir.pwd)
      end
      create_children
      execute_generators
    end

    def destroy
      unexecute_generators
      success = destroy_children

      if success && can_remove?
        FileUtils.rmdir path
        say "Removed directory: #{path}"
        true
      else
        say "Skipped remove directory: #{path}"
        false
      end
    end

    private

    def can_remove?
      File.directory?(path) && Dir.empty?(path)
    end

    def create_children
      created = children.select { |child| child.create }
      return (created.size == children.size)
    end

    def destroy_children
      destroyed = children.reverse.select { |child| child.destroy }
      return (destroyed.size == children.size)
    end

    def execute_generators
      generators.each do |generator|
        generator.execute
      end
    end

    def unexecute_generators
      generators.each do |generator|
        generator.unexecute
      end
    end

  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
sprout-1.1.3.pre lib/sprout/generator/directory_manifest.rb
sprout-1.1.2.pre lib/sprout/generator/directory_manifest.rb
sprout-1.0.35.pre lib/sprout/generator/directory_manifest.rb
sprout-1.0.32.pre lib/sprout/generator/directory_manifest.rb
sprout-1.0.31.pre lib/sprout/generator/directory_manifest.rb
sprout-1.0.29.pre lib/sprout/generator/directory_manifest.rb
sprout-1.0.26.pre lib/sprout/generator/directory_manifest.rb
sprout-1.0.25.pre lib/sprout/generator/directory_manifest.rb
sprout-1.0.24.pre lib/sprout/generator/directory_manifest.rb
sprout-1.0.23.pre lib/sprout/generator/directory_manifest.rb
sprout-1.0.22.pre lib/sprout/generator/directory_manifest.rb