Sha256: 2afa580324d7cb6e8e718caf488ef42ed331d21a40c55c4d81291b0d7a03e42c
Contents?: true
Size: 866 Bytes
Versions: 13
Compression:
Stored size: 866 Bytes
Contents
module OptParseValidator # Implementation of the FilePath Option class OptFilePath < OptPath # @param [ Array ] option See OptBase#new # @param [ Hash ] attrs See OptPath#new # :extensions [ Array | String ] The allowed extension(s) def initialize(option, attrs = {}) super(option, attrs) @attrs.merge!(file: true) end # @param [ Pathname ] path def check_create(path) return if File.exist?(path.to_s) FileUtils.mkdir_p(path.parent.to_s) unless Dir.exist?(path.parent.to_s) FileUtils.touch(path.to_s) end def allowed_attrs # :extensions is put at the first place [:extensions] + super end def check_extensions(path) return if [*attrs[:extensions]].include?(path.extname.delete('.')) raise Error, "The extension of '#{path}' is not allowed" end end end
Version data entries
13 entries across 13 versions & 1 rubygems