exiftool_vendored 12.64.0 → 12.65.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2025,7 +2025,7 @@ sub SetFileName($$;$$$)
2025
2025
  # protect against empty file name
2026
2026
  length $newName or $self->Warn('New file name is empty'), return -1;
2027
2027
  # don't replace existing file
2028
- if ($self->Exists($newName) and (not defined $usedFlag or $usedFlag)) {
2028
+ if ($self->Exists($newName, 1) and (not defined $usedFlag or $usedFlag)) {
2029
2029
  if ($file ne $newName or $opt =~ /Link$/) {
2030
2030
  # allow for case-insensitive filesystem
2031
2031
  if ($opt =~ /Link$/ or not $self->IsSameFile($file, $newName)) {
@@ -2404,7 +2404,7 @@ sub WriteInfo($$;$$)
2404
2404
  $outBuff = '';
2405
2405
  $outRef = \$outBuff;
2406
2406
  $outPos = 0;
2407
- } elsif ($self->Exists($outfile)) {
2407
+ } elsif ($self->Exists($outfile, 1)) {
2408
2408
  $self->Error("File already exists: $outfile");
2409
2409
  } elsif ($self->Open(\*EXIFTOOL_OUTFILE, $outfile, '>')) {
2410
2410
  $outRef = \*EXIFTOOL_OUTFILE;
@@ -4919,6 +4919,11 @@ sub InverseDateTime($$;$$)
4919
4919
  my $fs = ($fmt =~ s/%f$// and $val =~ s/(\.\d+)\s*$//) ? $1 : '';
4920
4920
  my ($lib, $wrn, @a);
4921
4921
  TryLib: for ($lib=$strptimeLib; ; $lib='') {
4922
+ # handle %s format ourself (not supported in Fedora, see forum15032)
4923
+ if ($fmt eq '%s') {
4924
+ $val = ConvertUnixTime($val, 1);
4925
+ last;
4926
+ }
4922
4927
  if (not $lib) {
4923
4928
  last unless $$self{OPTIONS}{StrictDate};
4924
4929
  warn $wrn || "Install POSIX::strptime or Time::Piece for inverse date/time conversions\n";
@@ -29,7 +29,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
29
29
  %jpegMarker %specialTags %fileTypeLookup $testLen $exeDir
30
30
  %static_vars);
31
31
 
32
- $VERSION = '12.64';
32
+ $VERSION = '12.65';
33
33
  $RELEASE = '';
34
34
  @ISA = qw(Exporter);
35
35
  %EXPORT_TAGS = (
@@ -126,7 +126,7 @@ sub MakeTiffHeader($$$$;$$);
126
126
  sub SplitFileName($);
127
127
  sub EncodeFileName($$;$);
128
128
  sub Open($*$;$);
129
- sub Exists($$);
129
+ sub Exists($$;$);
130
130
  sub IsDirectory($$);
131
131
  sub Rename($$$);
132
132
  sub Unlink($@);
@@ -1052,6 +1052,93 @@ my %xmpShorthandOpt = ( 0 => 'None', 1 => 'Shorthand', 2 => ['Shorthand','OneDes
1052
1052
  maccroatian => 'MacCroatian', cp10082 => 'MacCroatian',
1053
1053
  );
1054
1054
 
1055
+ # list of available options
1056
+ # +-----------------------------------------------------+
1057
+ # ! DON'T FORGET!! When adding any new option, must !
1058
+ # ! decide how it is handled in SetNewValuesFromFile() !
1059
+ # +-----------------------------------------------------+
1060
+ # (Note: All options must exist in this lookup, even if undefined,
1061
+ # to facilitate case-insensitive options. 'Group#' is handled specially)
1062
+ my @availableOptions = (
1063
+ [ 'Binary', undef, 'flag to extract binary values even if tag not specified' ],
1064
+ [ 'ByteOrder', undef, 'default byte order when creating EXIF information' ],
1065
+ [ 'Charset', 'UTF8', 'character set for converting Unicode characters' ],
1066
+ [ 'CharsetEXIF', undef, 'internal EXIF "ASCII" string encoding' ],
1067
+ [ 'CharsetFileName', undef, 'external encoding for file names' ],
1068
+ [ 'CharsetID3', 'Latin','internal ID3v1 character set' ],
1069
+ [ 'CharsetIPTC', 'Latin','fallback IPTC character set if no CodedCharacterSet' ],
1070
+ [ 'CharsetPhotoshop', 'Latin','internal encoding for Photoshop resource names' ],
1071
+ [ 'CharsetQuickTime', 'MacRoman', 'internal QuickTime string encoding' ],
1072
+ [ 'CharsetRIFF', 0, 'internal RIFF string encoding (0=default to Latin)' ],
1073
+ [ 'Compact', { }, 'write compact XMP' ],
1074
+ [ 'Composite', 1, 'flag to calculate Composite tags' ],
1075
+ [ 'Compress', undef, 'flag to write new values as compressed if possible' ],
1076
+ [ 'CoordFormat', undef, 'GPS lat/long coordinate format' ],
1077
+ [ 'DateFormat', undef, 'format for date/time' ],
1078
+ [ 'Duplicates', 1, 'flag to save duplicate tag values' ],
1079
+ [ 'Escape', undef, 'escape special characters' ],
1080
+ [ 'Exclude', undef, 'tags to exclude' ],
1081
+ [ 'ExtendedXMP', 1, 'strategy for reading extended XMP' ],
1082
+ [ 'ExtractEmbedded', undef, 'flag to extract information from embedded documents' ],
1083
+ [ 'FastScan', undef, 'flag to avoid scanning for trailer' ],
1084
+ [ 'Filter', undef, 'output filter for all tag values' ],
1085
+ [ 'FilterW', undef, 'input filter when writing tag values' ],
1086
+ [ 'FixBase', undef, 'fix maker notes base offsets' ],
1087
+ [ 'GeoMaxIntSecs', 1800, 'geotag maximum interpolation time (secs)' ],
1088
+ [ 'GeoMaxExtSecs', 1800, 'geotag maximum extrapolation time (secs)' ],
1089
+ [ 'GeoMaxHDOP', undef, 'geotag maximum HDOP' ],
1090
+ [ 'GeoMaxPDOP', undef, 'geotag maximum PDOP' ],
1091
+ [ 'GeoMinSats', undef, 'geotag minimum satellites' ],
1092
+ [ 'GeoSpeedRef', undef, 'geotag GPSSpeedRef' ],
1093
+ [ 'GlobalTimeShift', undef, 'apply time shift to all extracted date/time values' ],
1094
+ [ 'Group#', undef, 'return tags for specified groups in family #' ],
1095
+ [ 'HexTagIDs', 0, 'use hex tag ID\'s in family 7 group names' ],
1096
+ [ 'HtmlDump', 0, 'HTML dump (0-3, higher # = bigger limit)' ],
1097
+ [ 'HtmlDumpBase', undef, 'base address for HTML dump' ],
1098
+ [ 'IgnoreMinorErrors',undef, 'ignore minor errors when reading/writing' ],
1099
+ [ 'IgnoreTags', undef, 'list of tags to ignore when extracting' ],
1100
+ [ 'ImageHashType', 'MD5', 'image hash algorithm' ],
1101
+ [ 'Lang', $defaultLang, 'localized language for descriptions etc' ],
1102
+ [ 'LargeFileSupport', undef, 'flag indicating support of 64-bit file offsets' ],
1103
+ [ 'List', undef, '[deprecated, use ListSplit and ListJoin instead]' ],
1104
+ [ 'ListItem', undef, 'used to return a specific item from lists' ],
1105
+ [ 'ListJoin', ', ', 'join lists together with this separator' ],
1106
+ [ 'ListSep', ', ', '[deprecated, use ListSplit and ListJoin instead]' ],
1107
+ [ 'ListSplit', undef, 'regex for splitting list-type tag values when writing' ],
1108
+ [ 'MakerNotes', undef, 'extract maker notes as a block' ],
1109
+ [ 'MDItemTags', undef, 'extract MacOS metadata item tags' ],
1110
+ [ 'MissingTagValue', undef, 'value for missing tags when expanded in expressions' ],
1111
+ [ 'NoMultiExif', undef, 'raise error when writing multi-segment EXIF' ],
1112
+ [ 'NoPDFList', undef, 'flag to avoid splitting PDF List-type tag values' ],
1113
+ [ 'NoWarning', undef, 'regular expression for warnings to suppress' ],
1114
+ [ 'Password', undef, 'password for password-protected PDF documents' ],
1115
+ [ 'PrintConv', 1, 'flag to enable print conversion' ],
1116
+ [ 'QuickTimeHandler', 1, 'flag to add mdir Handler to newly created Meta box' ],
1117
+ [ 'QuickTimePad', undef, 'flag to preserve padding of QuickTime CR3 tags' ],
1118
+ [ 'QuickTimeUTC', undef, 'assume that QuickTime date/time tags are stored as UTC' ],
1119
+ [ 'RequestAll', undef, 'extract all tags that must be specifically requested' ],
1120
+ [ 'RequestTags', undef, 'extra tags to request (on top of those in the tag list)' ],
1121
+ [ 'SaveFormat', undef, 'save family 6 tag TIFF format' ],
1122
+ [ 'SavePath', undef, 'save family 5 location path' ],
1123
+ [ 'ScanForXMP', undef, 'flag to scan for XMP information in all files' ],
1124
+ [ 'Sort', 'Input','order to sort found tags (Input, File, Tag, Descr, Group#)' ],
1125
+ [ 'Sort2', 'File', 'secondary sort order for tags in a group (File, Tag, Descr)' ],
1126
+ [ 'StrictDate', undef, 'flag to return undef for invalid date conversions' ],
1127
+ [ 'Struct', undef, 'return structures as hash references' ],
1128
+ [ 'StructFormat', undef, 'format for structure serialization when reading/writing' ],
1129
+ [ 'SystemTags', undef, 'extract additional File System tags' ],
1130
+ [ 'TextOut', \*STDOUT, 'file for Verbose/HtmlDump output' ],
1131
+ [ 'TimeZone', undef, 'local time zone' ],
1132
+ [ 'Unknown', 0, 'flag to get values of unknown tags (0-2)' ],
1133
+ [ 'UserParam', { }, 'user parameters for additional user-defined tag values' ],
1134
+ [ 'Validate', undef, 'perform additional validation' ],
1135
+ [ 'Verbose', 0, 'print verbose messages (0-5, higher # = more verbose)' ],
1136
+ [ 'WriteMode', 'wcg', 'enable all write modes by default' ],
1137
+ [ 'XAttrTags', undef, 'extract MacOS extended attribute tags' ],
1138
+ [ 'XMPAutoConv', 1, 'automatic conversion of unknown XMP tag values' ],
1139
+ [ 'XMPShorthand', 0, '[deprecated, use Compact=Shorthand instead]' ],
1140
+ );
1141
+
1055
1142
  # default family 0 group priority for writing
1056
1143
  # (NOTE: tags in groups not specified here will not be written unless
1057
1144
  # overridden by the module or specified when writing)
@@ -2368,92 +2455,11 @@ sub ClearOptions($)
2368
2455
  local $_;
2369
2456
  my $self = shift;
2370
2457
 
2371
- # create options hash with default values
2372
- # +-----------------------------------------------------+
2373
- # ! DON'T FORGET!! When adding any new option, must !
2374
- # ! decide how it is handled in SetNewValuesFromFile() !
2375
- # +-----------------------------------------------------+
2376
- # (Note: All options must exist in this lookup, even if undefined,
2377
- # to facilitate case-insensitive options. 'Group#' is handled specially)
2378
- $$self{OPTIONS} = {
2379
- Binary => undef, # flag to extract binary values even if tag not specified
2380
- ByteOrder => undef, # default byte order when creating EXIF information
2381
- Charset => 'UTF8', # character set for converting Unicode characters
2382
- CharsetEXIF => undef, # internal EXIF "ASCII" string encoding
2383
- CharsetFileName => undef, # external encoding for file names
2384
- CharsetID3 => 'Latin', # internal ID3v1 character set
2385
- CharsetIPTC => 'Latin', # fallback IPTC character set if no CodedCharacterSet
2386
- CharsetPhotoshop => 'Latin', # internal encoding for Photoshop resource names
2387
- CharsetQuickTime => 'MacRoman', # internal QuickTime string encoding
2388
- CharsetRIFF => 0, # internal RIFF string encoding (0=default to Latin)
2389
- Compact => { }, # write compact XMP
2390
- Composite => 1, # flag to calculate Composite tags
2391
- Compress => undef, # flag to write new values as compressed if possible
2392
- CoordFormat => undef, # GPS lat/long coordinate format
2393
- DateFormat => undef, # format for date/time
2394
- Duplicates => 1, # flag to save duplicate tag values
2395
- Escape => undef, # escape special characters
2396
- Exclude => undef, # tags to exclude
2397
- ExtendedXMP => 1, # strategy for reading extended XMP
2398
- ExtractEmbedded =>undef,# flag to extract information from embedded documents
2399
- FastScan => undef, # flag to avoid scanning for trailer
2400
- Filter => undef, # output filter for all tag values
2401
- FilterW => undef, # input filter when writing tag values
2402
- FixBase => undef, # fix maker notes base offsets
2403
- GeoMaxIntSecs => 1800, # geotag maximum interpolation time (secs)
2404
- GeoMaxExtSecs => 1800, # geotag maximum extrapolation time (secs)
2405
- GeoMaxHDOP => undef, # geotag maximum HDOP
2406
- GeoMaxPDOP => undef, # geotag maximum PDOP
2407
- GeoMinSats => undef, # geotag minimum satellites
2408
- GeoSpeedRef => undef, # geotag GPSSpeedRef
2409
- GlobalTimeShift => undef, # apply time shift to all extracted date/time values
2410
- # Group# => undef, # return tags for specified groups in family #
2411
- HexTagIDs => 0, # use hex tag ID's in family 7 group names
2412
- HtmlDump => 0, # HTML dump (0-3, higher # = bigger limit)
2413
- HtmlDumpBase => undef, # base address for HTML dump
2414
- IgnoreMinorErrors => undef, # ignore minor errors when reading/writing
2415
- IgnoreTags => undef, # list of tags to ignore when extracting
2416
- ImageHashType => 'MD5', # image hash algorithm
2417
- Lang => $defaultLang,# localized language for descriptions etc
2418
- LargeFileSupport => undef, # flag indicating support of 64-bit file offsets
2419
- List => undef, # extract lists of PrintConv values into arrays [no longer documented]
2420
- ListItem => undef, # used to return a specific item from lists
2421
- ListJoin => ', ', # join lists together with this separator
2422
- ListSep => ', ', # list item separator [no longer documented]
2423
- ListSplit => undef, # regex for splitting list-type tag values when writing
2424
- MakerNotes => undef, # extract maker notes as a block
2425
- MDItemTags => undef, # extract MacOS metadata item tags
2426
- MissingTagValue =>undef,# value for missing tags when expanded in expressions
2427
- NoMultiExif => undef, # raise error when writing multi-segment EXIF
2428
- NoPDFList => undef, # flag to avoid splitting PDF List-type tag values
2429
- NoWarning => undef, # regular expression for warnings to suppress
2430
- Password => undef, # password for password-protected PDF documents
2431
- PrintConv => 1, # flag to enable print conversion
2432
- QuickTimeHandler => 1, # flag to add mdir Handler to newly created Meta box
2433
- QuickTimePad=> undef, # flag to preserve padding of QuickTime CR3 tags
2434
- QuickTimeUTC=> undef, # assume that QuickTime date/time tags are stored as UTC
2435
- RequestAll => undef, # extract all tags that must be specifically requested
2436
- RequestTags => undef, # extra tags to request (on top of those in the tag list)
2437
- SaveFormat => undef, # save family 6 tag TIFF format
2438
- SavePath => undef, # save family 5 location path
2439
- ScanForXMP => undef, # flag to scan for XMP information in all files
2440
- Sort => 'Input', # order to sort found tags (Input, File, Tag, Descr, Group#)
2441
- Sort2 => 'File', # secondary sort order for tags in a group (File, Tag, Descr)
2442
- StrictDate => undef, # flag to return undef for invalid date conversions
2443
- Struct => undef, # return structures as hash references
2444
- StructFormat=> undef, # format for structure serialization when reading/writing
2445
- SystemTags => undef, # extract additional File System tags
2446
- TextOut => \*STDOUT,# file for Verbose/HtmlDump output
2447
- TimeZone => undef, # local time zone
2448
- Unknown => 0, # flag to get values of unknown tags (0-2)
2449
- UserParam => { }, # user parameters for additional user-defined tag values
2450
- Validate => undef, # perform additional validation
2451
- Verbose => 0, # print verbose messages (0-5, higher # = more verbose)
2452
- WriteMode => 'wcg', # enable all write modes by default
2453
- XAttrTags => undef, # extract MacOS extended attribute tags
2454
- XMPAutoConv => 1, # automatic conversion of unknown XMP tag values
2455
- XMPShorthand=> 0, # (unused, but needed for backward compatibility)
2456
- };
2458
+ $$self{OPTIONS} = { }; # clear all options
2459
+
2460
+ # load default options
2461
+ $$self{OPTIONS}{$$_[0]} = $$_[1] foreach @availableOptions;
2462
+
2457
2463
  # keep necessary member variables in sync with options
2458
2464
  delete $$self{CUR_LANG};
2459
2465
  delete $$self{ESCAPE_PROC};
@@ -3890,6 +3896,15 @@ sub GetCompositeTagInfo($)
3890
3896
  return $Image::ExifTool::Composite{$compositeID{$tag}[0]};
3891
3897
  }
3892
3898
 
3899
+ #------------------------------------------------------------------------------
3900
+ # Return List ExifTool API options
3901
+ # Returns: 0) reference to list of available options -- each entry is a list
3902
+ # [0=option name, 1=default value, 2=description]
3903
+ sub AvailableOptions()
3904
+ {
3905
+ return \@availableOptions;
3906
+ }
3907
+
3893
3908
  #------------------------------------------------------------------------------
3894
3909
  # Get tag name (removes copy index)
3895
3910
  # Inputs: 0) Tag key
@@ -4374,11 +4389,11 @@ sub Open($*$;$)
4374
4389
 
4375
4390
  #------------------------------------------------------------------------------
4376
4391
  # Check to see if a file exists (with Windows Unicode support)
4377
- # Inputs: 0) ExifTool ref, 1) file name
4392
+ # Inputs: 0) ExifTool ref, 1) file name, 2) flag if we are writing this file
4378
4393
  # Returns: true if file exists
4379
- sub Exists($$)
4394
+ sub Exists($$;$)
4380
4395
  {
4381
- my ($self, $file) = @_;
4396
+ my ($self, $file, $writing) = @_;
4382
4397
 
4383
4398
  if ($self->EncodeFileName($file)) {
4384
4399
  local $SIG{'__WARN__'} = \&SetWarning;
@@ -4388,10 +4403,12 @@ sub Exists($$)
4388
4403
  Win32API::File::OPEN_EXISTING(), 0, []) };
4389
4404
  return 0 unless $wh;
4390
4405
  eval { Win32API::File::CloseHandle($wh) };
4391
- } else {
4406
+ } elsif ($writing) {
4392
4407
  # (named pipes already exist, but we pretend that they don't
4393
4408
  # so we will be able to write them, so test with for pipe -p)
4394
4409
  return(-e $file and not -p $file);
4410
+ } else {
4411
+ return(-e $file);
4395
4412
  }
4396
4413
  return 1;
4397
4414
  }
@@ -4894,6 +4911,7 @@ sub SetFoundTags($)
4894
4911
  $groupList = [ $$options{$groupOpt} ];
4895
4912
  }
4896
4913
  foreach (@$groupList) {
4914
+ next unless defined $_;
4897
4915
  # groups have priority in order they were specified
4898
4916
  ++$wantOrder;
4899
4917
  my ($groupName, $want);
@@ -7836,6 +7854,8 @@ sub DoProcessTIFF($$;$)
7836
7854
  return 1;
7837
7855
  }
7838
7856
  }
7857
+ } elsif ($fileType eq 'ARW') {
7858
+ $$self{LOW_PRIORITY_DIR}{IFD1} = 1; # lower priority of IFD1 tags in ARW files
7839
7859
  }
7840
7860
  # we have a valid TIFF (or whatever) file
7841
7861
  if ($fileType and not $$self{VALUE}{FileType}) {
@@ -1463,7 +1463,9 @@ value should always exist if the tag exists.
1463
1463
 
1464
1464
  Set the new value for a tag. The routine may be called multiple times to
1465
1465
  set the values of many tags before using L</WriteInfo> to write the new
1466
- values to an image.
1466
+ values to an image. These values remain queued for writing to subsequent
1467
+ files until L</SetNewValue> is called without arguments to reset the queued
1468
+ values.
1467
1469
 
1468
1470
  For list-type tags (like Keywords), either call repeatedly with the same tag
1469
1471
  name for each value, or call with a reference to the list of values.
@@ -2273,6 +2275,29 @@ within L</ImageInfo>, before the file is closed.
2273
2275
 
2274
2276
  =back
2275
2277
 
2278
+ =head2 AvailableOptions [static]
2279
+
2280
+ Get a list of available API options. (See L</Options> for option details.)
2281
+
2282
+ =over 4
2283
+
2284
+ =item Inputs:
2285
+
2286
+ (none)
2287
+
2288
+ =item Return Values:
2289
+
2290
+ Reference to list of available options. Each entry in the list is a list
2291
+ reference with 3 items: 0=Option name, 1=Default value, 2=Description.
2292
+
2293
+ my $opts = Image::ExifTool::<b>AvailableOptions</b>();
2294
+ foreach (@$opts) {
2295
+ my ($optionName, $defaultValue, $description) = @$_;
2296
+ ...
2297
+ }
2298
+
2299
+ =back
2300
+
2276
2301
  =head2 GetTagName [static]
2277
2302
 
2278
2303
  Get name of tag from tag key. This is a convenience function that
@@ -1,6 +1,6 @@
1
1
  Summary: perl module for image data extraction
2
2
  Name: perl-Image-ExifTool
3
- Version: 12.64
3
+ Version: 12.65
4
4
  Release: 1
5
5
  License: Artistic/GPL
6
6
  Group: Development/Libraries/Perl
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ExiftoolVendored
4
- VERSION = Gem::Version.new('12.64.0')
4
+ VERSION = Gem::Version.new('12.65.0')
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: exiftool_vendored
3
3
  version: !ruby/object:Gem::Version
4
- version: 12.64.0
4
+ version: 12.65.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew McEachen
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2023-08-09 00:00:00.000000000 Z
12
+ date: 2023-08-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: exiftool
@@ -25,188 +25,6 @@ dependencies:
25
25
  - - ">="
26
26
  - !ruby/object:Gem::Version
27
27
  version: 0.7.0
28
- - !ruby/object:Gem::Dependency
29
- name: bundler
30
- requirement: !ruby/object:Gem::Requirement
31
- requirements:
32
- - - ">="
33
- - !ruby/object:Gem::Version
34
- version: '0'
35
- type: :development
36
- prerelease: false
37
- version_requirements: !ruby/object:Gem::Requirement
38
- requirements:
39
- - - ">="
40
- - !ruby/object:Gem::Version
41
- version: '0'
42
- - !ruby/object:Gem::Dependency
43
- name: minitest
44
- requirement: !ruby/object:Gem::Requirement
45
- requirements:
46
- - - ">="
47
- - !ruby/object:Gem::Version
48
- version: '0'
49
- type: :development
50
- prerelease: false
51
- version_requirements: !ruby/object:Gem::Requirement
52
- requirements:
53
- - - ">="
54
- - !ruby/object:Gem::Version
55
- version: '0'
56
- - !ruby/object:Gem::Dependency
57
- name: minitest-great_expectations
58
- requirement: !ruby/object:Gem::Requirement
59
- requirements:
60
- - - ">="
61
- - !ruby/object:Gem::Version
62
- version: '0'
63
- type: :development
64
- prerelease: false
65
- version_requirements: !ruby/object:Gem::Requirement
66
- requirements:
67
- - - ">="
68
- - !ruby/object:Gem::Version
69
- version: '0'
70
- - !ruby/object:Gem::Dependency
71
- name: minitest-reporters
72
- requirement: !ruby/object:Gem::Requirement
73
- requirements:
74
- - - ">="
75
- - !ruby/object:Gem::Version
76
- version: '0'
77
- type: :development
78
- prerelease: false
79
- version_requirements: !ruby/object:Gem::Requirement
80
- requirements:
81
- - - ">="
82
- - !ruby/object:Gem::Version
83
- version: '0'
84
- - !ruby/object:Gem::Dependency
85
- name: nokogiri
86
- requirement: !ruby/object:Gem::Requirement
87
- requirements:
88
- - - ">="
89
- - !ruby/object:Gem::Version
90
- version: '0'
91
- type: :development
92
- prerelease: false
93
- version_requirements: !ruby/object:Gem::Requirement
94
- requirements:
95
- - - ">="
96
- - !ruby/object:Gem::Version
97
- version: '0'
98
- - !ruby/object:Gem::Dependency
99
- name: rake
100
- requirement: !ruby/object:Gem::Requirement
101
- requirements:
102
- - - ">="
103
- - !ruby/object:Gem::Version
104
- version: '0'
105
- type: :development
106
- prerelease: false
107
- version_requirements: !ruby/object:Gem::Requirement
108
- requirements:
109
- - - ">="
110
- - !ruby/object:Gem::Version
111
- version: '0'
112
- - !ruby/object:Gem::Dependency
113
- name: rubocop
114
- requirement: !ruby/object:Gem::Requirement
115
- requirements:
116
- - - ">="
117
- - !ruby/object:Gem::Version
118
- version: '0'
119
- type: :development
120
- prerelease: false
121
- version_requirements: !ruby/object:Gem::Requirement
122
- requirements:
123
- - - ">="
124
- - !ruby/object:Gem::Version
125
- version: '0'
126
- - !ruby/object:Gem::Dependency
127
- name: rubocop-minitest
128
- requirement: !ruby/object:Gem::Requirement
129
- requirements:
130
- - - ">="
131
- - !ruby/object:Gem::Version
132
- version: '0'
133
- type: :development
134
- prerelease: false
135
- version_requirements: !ruby/object:Gem::Requirement
136
- requirements:
137
- - - ">="
138
- - !ruby/object:Gem::Version
139
- version: '0'
140
- - !ruby/object:Gem::Dependency
141
- name: rubocop-rake
142
- requirement: !ruby/object:Gem::Requirement
143
- requirements:
144
- - - ">="
145
- - !ruby/object:Gem::Version
146
- version: '0'
147
- type: :development
148
- prerelease: false
149
- version_requirements: !ruby/object:Gem::Requirement
150
- requirements:
151
- - - ">="
152
- - !ruby/object:Gem::Version
153
- version: '0'
154
- - !ruby/object:Gem::Dependency
155
- name: simplecov
156
- requirement: !ruby/object:Gem::Requirement
157
- requirements:
158
- - - ">="
159
- - !ruby/object:Gem::Version
160
- version: '0'
161
- type: :development
162
- prerelease: false
163
- version_requirements: !ruby/object:Gem::Requirement
164
- requirements:
165
- - - ">="
166
- - !ruby/object:Gem::Version
167
- version: '0'
168
- - !ruby/object:Gem::Dependency
169
- name: simplecov-console
170
- requirement: !ruby/object:Gem::Requirement
171
- requirements:
172
- - - ">="
173
- - !ruby/object:Gem::Version
174
- version: '0'
175
- type: :development
176
- prerelease: false
177
- version_requirements: !ruby/object:Gem::Requirement
178
- requirements:
179
- - - ">="
180
- - !ruby/object:Gem::Version
181
- version: '0'
182
- - !ruby/object:Gem::Dependency
183
- name: simplecov_json_formatter
184
- requirement: !ruby/object:Gem::Requirement
185
- requirements:
186
- - - ">="
187
- - !ruby/object:Gem::Version
188
- version: '0'
189
- type: :development
190
- prerelease: false
191
- version_requirements: !ruby/object:Gem::Requirement
192
- requirements:
193
- - - ">="
194
- - !ruby/object:Gem::Version
195
- version: '0'
196
- - !ruby/object:Gem::Dependency
197
- name: yard
198
- requirement: !ruby/object:Gem::Requirement
199
- requirements:
200
- - - ">="
201
- - !ruby/object:Gem::Version
202
- version: '0'
203
- type: :development
204
- prerelease: false
205
- version_requirements: !ruby/object:Gem::Requirement
206
- requirements:
207
- - - ">="
208
- - !ruby/object:Gem::Version
209
- version: '0'
210
28
  description: Vendored version of exiftool
211
29
  email:
212
30
  - matthew+github@mceachen.org