Sha256: de461c3574d1929b0bf8cfae34259bbabf0625b093fe32e6c1df7745c3f999aa

Contents?: true

Size: 1.09 KB

Versions: 1

Compression:

Stored size: 1.09 KB

Contents

# frozen_string_literal: true

require "stashify/file/local"
require "stashify/directory"

module Stashify
  class Directory
    class Local < Stashify::Directory
      attr_reader :path

      def initialize(path)
        @path = path
        super(name: ::File.basename(path))
      end

      def write(file)
        path = ::File.join(@path, file.name)
        if file.is_a?(Stashify::Directory)
          FileUtils.mkdir(path)
        else
          ::File.write(path, file.contents)
        end
      end

      def delete(name)
        path = ::File.join(@path, name)
        if ::File.directory?(path)
          FileUtils.rm_r(path)
        else
          ::File.delete(path)
        end
      end

      def ==(other)
        @path == other.path
      end

      private

      def directory?(name)
        ::File.directory?(path_of(name))
      end

      def file(name)
        Stashify::File::Local.new(path_of(name))
      end

      def directory(name)
        Stashify::Directory::Local.new(path_of(name))
      end

      def path_of(name)
        ::File.join(@path, name)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
stashify-1.0.1 lib/stashify/directory/local.rb