Sha256: 0dd8eb2cdfabe0602269355f881f847e01c9e6ac3a9d9933729d0ab84818ea3f

Contents?: true

Size: 1.25 KB

Versions: 3

Compression:

Stored size: 1.25 KB

Contents

# typed: true
# frozen_string_literal: true

require 'sorbet-runtime'

module Frontman
  module Builder
    class File
      extend T::Sig

      attr_accessor :path, :status

      sig { params(path: String, status: T.any(String, Symbol)).void }
      def initialize(path, status)
        unless valid_status?(status)
          raise "#{status} is not a valid file status!"
        end

        @path = path
        @status = status.to_sym
      end

      class << self
        extend T::Sig

        sig { params(path: String).returns(Frontman::Builder::File) }
        def unchanged(path)
          new(path, :unchanged)
        end

        sig { params(path: String).returns(Frontman::Builder::File) }
        def deleted(path)
          new(path, :deleted)
        end

        sig { params(path: String).returns(Frontman::Builder::File) }
        def created(path)
          new(path, :created)
        end

        sig { params(path: String).returns(Frontman::Builder::File) }
        def updated(path)
          new(path, :updated)
        end
      end

      private

      sig { params(status: T.any(String, Symbol)).returns(T::Boolean) }
      def valid_status?(status)
        %i[updated deleted created unchanged].include?(status.to_sym)
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
frontman-ssg-0.0.4 lib/frontman/builder/file.rb
frontman-ssg-0.0.3 lib/frontman/builder/file.rb
frontman-ssg-0.0.2 lib/frontman/builder/file.rb