xcres 0.4.1 → 0.4.2
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.
- checksums.yaml +4 -4
- data/Gemfile.lock +2 -4
- data/README.md +6 -1
- data/lib/xcres/analyzer/analyzer.rb +1 -1
- data/lib/xcres/analyzer/resources_analyzer/base_resources_analyzer.rb +13 -6
- data/lib/xcres/analyzer/resources_analyzer/bundle_resources_analyzer.rb +4 -9
- data/lib/xcres/analyzer/resources_analyzer/loose_resources_analyzer.rb +4 -5
- data/lib/xcres/analyzer/resources_analyzer/xcassets_analyzer.rb +7 -11
- data/lib/xcres/builder/file_builder.rb +1 -1
- data/lib/xcres/command/install_command.rb +4 -3
- data/lib/xcres/command/project_command.rb +21 -8
- data/lib/xcres/model/xcassets/bundle.rb +1 -1
- data/lib/xcres/version.rb +1 -1
- data/spec/fixtures/Example/Example/Images.xcassets/AppIcon.appiconset/Contents.json +5 -0
- data/spec/fixtures/Example/Example/Images.xcassets/Cats/GrumpyCat.imageset/Contents.json +23 -0
- data/spec/fixtures/Example/Example/Images.xcassets/Cats/GrumpyCat.imageset/GrumpyCat.jpg +0 -0
- data/spec/fixtures/Example/Example/Images.xcassets/Cats/GrumpyCat.imageset/GrumpyCat@2x.jpg +0 -0
- data/spec/fixtures/Example/Example/Images.xcassets/Cats/GrumpyCat.imageset/GrumpyCat@3x.jpg +0 -0
- data/spec/fixtures/Example/Example/Images.xcassets/Doge.imageset/Contents.json +4 -0
- data/spec/integration.rb +1 -0
- data/spec/integration/build-keyword-clash/after/R.h +0 -2
- data/spec/integration/build-keyword-clash/after/R.m +0 -2
- data/spec/integration/build/after/Example/Example/Images.xcassets/AppIcon.appiconset/Contents.json +5 -0
- data/spec/integration/build/after/Example/Example/Images.xcassets/Cats/GrumpyCat.imageset/Contents.json +23 -0
- data/spec/integration/build/after/Example/Example/Images.xcassets/Cats/GrumpyCat.imageset/GrumpyCat.jpg +0 -0
- data/spec/integration/build/after/Example/Example/Images.xcassets/Cats/GrumpyCat.imageset/GrumpyCat@2x.jpg +0 -0
- data/spec/integration/build/after/Example/Example/Images.xcassets/Cats/GrumpyCat.imageset/GrumpyCat@3x.jpg +0 -0
- data/spec/integration/build/after/Example/Example/Images.xcassets/Doge.imageset/Contents.json +4 -0
- data/spec/integration/build/after/R.h +2 -0
- data/spec/integration/build/after/R.m +1 -0
- data/spec/integration/build/after/execution_output.txt +2 -2
- data/spec/integration/build/before/Example/Example/Images.xcassets/AppIcon.appiconset/Contents.json +5 -0
- data/spec/integration/build/before/Example/Example/Images.xcassets/Cats/GrumpyCat.imageset/Contents.json +23 -0
- data/spec/integration/build/before/Example/Example/Images.xcassets/Cats/GrumpyCat.imageset/GrumpyCat.jpg +0 -0
- data/spec/integration/build/before/Example/Example/Images.xcassets/Cats/GrumpyCat.imageset/GrumpyCat@2x.jpg +0 -0
- data/spec/integration/build/before/Example/Example/Images.xcassets/Cats/GrumpyCat.imageset/GrumpyCat@3x.jpg +0 -0
- data/spec/integration/build/before/Example/Example/Images.xcassets/Doge.imageset/Contents.json +4 -0
- data/spec/integration/install-again/after/Example/Example.xcodeproj.yaml +1 -1
- data/spec/integration/install-moved-supporting-files/after/Example/Example.xcodeproj.yaml +1 -1
- data/spec/integration/install-moved-supporting-files/after/execution_output.txt +2 -2
- data/spec/integration/install-no-supporting-files/after/Example/Example.xcodeproj.yaml +1 -1
- data/spec/integration/install-no-supporting-files/after/execution_output.txt +3 -3
- data/spec/integration/install/after/Example/Example.xcodeproj.yaml +1 -1
- data/spec/integration/install/after/execution_output.txt +1 -1
- data/spec/integration/version/after/execution_output.txt +1 -1
- data/spec/spec_helper/xcodeproj_project_yaml.rb +15 -0
- data/spec/unit/analyzer/resources_analyzer/base_resources_analyzer_spec.rb +41 -8
- data/spec/unit/analyzer/resources_analyzer/bundle_resources_analyzer_spec.rb +2 -2
- data/spec/unit/model/xcassets/bundle_spec.rb +32 -17
- data/spec/unit/model/xcassets/resource_spec.rb +6 -1
- metadata +26 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 582ff4713e27360dad8eac366f7fb972e631696f
|
|
4
|
+
data.tar.gz: 95e46087ebe01b670c0cc4b03493e87963146b17
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 65b834e686b1f356abced830e74608fac622bc6c0d744ab7da13e8ce3592c18c42968c980b32d155f4bdd890a17ed10f301f4ad393e4a2c336e4d5cbab02d22e
|
|
7
|
+
data.tar.gz: dfa1cc9951f35286e886179f80f5560bcf8ce3c6cda38e287103209353418b30822ddeba41cfb7339237b92a8a866948e84f95c0182bf859e37e5514beca0162
|
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
xcres (0.4.
|
|
4
|
+
xcres (0.4.2)
|
|
5
5
|
activesupport (>= 3.2.15, < 4)
|
|
6
6
|
clamp (~> 0.6.3)
|
|
7
7
|
colored (~> 1.2)
|
|
@@ -11,7 +11,6 @@ PATH
|
|
|
11
11
|
GEM
|
|
12
12
|
remote: https://rubygems.org/
|
|
13
13
|
specs:
|
|
14
|
-
CFPropertyList (2.2.8)
|
|
15
14
|
activesupport (3.2.19)
|
|
16
15
|
i18n (~> 0.6, >= 0.6.4)
|
|
17
16
|
multi_json (~> 1.0)
|
|
@@ -62,8 +61,7 @@ GEM
|
|
|
62
61
|
term-ansicolor (1.3.0)
|
|
63
62
|
tins (~> 1.0)
|
|
64
63
|
tins (1.3.2)
|
|
65
|
-
xcodeproj (0.
|
|
66
|
-
CFPropertyList (~> 2.2)
|
|
64
|
+
xcodeproj (0.19.4)
|
|
67
65
|
activesupport (~> 3.0)
|
|
68
66
|
colored (~> 1.2)
|
|
69
67
|
yard (0.8.7.4)
|
data/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# xcres
|
|
1
|
+
# <center></center>
|
|
2
2
|
|
|
3
3
|
[](https://twitter.com/mrackwitz)
|
|
4
4
|
[](http://rubygems.org/gems/xcres)
|
|
@@ -176,6 +176,11 @@ also warn you about those. It can be a help, if you want to migrate
|
|
|
176
176
|
your project to non-natural language keys.
|
|
177
177
|
|
|
178
178
|
|
|
179
|
+
## Credits
|
|
180
|
+
|
|
181
|
+
The logo was designed by [@kuchengnom](https://github.com/kuchengnom).
|
|
182
|
+
|
|
183
|
+
|
|
179
184
|
## License
|
|
180
185
|
|
|
181
186
|
xcres is available under MIT License.
|
|
@@ -79,20 +79,27 @@ module XCRes
|
|
|
79
79
|
#
|
|
80
80
|
# @param [Hash] options
|
|
81
81
|
# valid options are:
|
|
82
|
-
# * [
|
|
83
|
-
#
|
|
82
|
+
# * [Array<Symbol>] :use_basename
|
|
83
|
+
# can contain :key and :path
|
|
84
84
|
#
|
|
85
85
|
# @return [Hash{String => Pathname}]
|
|
86
86
|
#
|
|
87
87
|
def build_section_data file_paths, options={}
|
|
88
|
-
options = {
|
|
88
|
+
options = {
|
|
89
|
+
use_basename: [],
|
|
90
|
+
path_without_ext: false,
|
|
91
|
+
}.merge options
|
|
89
92
|
|
|
90
93
|
# Transform image file paths to keys
|
|
91
94
|
keys_to_paths = {}
|
|
92
95
|
for path in file_paths
|
|
93
|
-
|
|
94
|
-
key = key_from_path(path)
|
|
95
|
-
|
|
96
|
+
basename = File.basename(path)
|
|
97
|
+
key = key_from_path(options[:use_basename].include?(:key) ? basename : path.to_s)
|
|
98
|
+
transformed_path = options[:use_basename].include?(:path) ? basename : path
|
|
99
|
+
if options[:path_without_ext]
|
|
100
|
+
transformed_path = transformed_path.to_s.sub /#{File.extname(path)}$/, ''
|
|
101
|
+
end
|
|
102
|
+
keys_to_paths[key] = transformed_path.to_s
|
|
96
103
|
end
|
|
97
104
|
|
|
98
105
|
keys_to_paths
|
|
@@ -9,7 +9,8 @@ module XCRes
|
|
|
9
9
|
class BundleResourcesAnalyzer < BaseResourcesAnalyzer
|
|
10
10
|
|
|
11
11
|
def analyze
|
|
12
|
-
@sections = build_sections_for_bundles
|
|
12
|
+
@sections = build_sections_for_bundles
|
|
13
|
+
super
|
|
13
14
|
end
|
|
14
15
|
|
|
15
16
|
# Build a section for each bundle if it contains any resources
|
|
@@ -42,7 +43,7 @@ module XCRes
|
|
|
42
43
|
# @param [PBXFileReference] bundle_file_ref
|
|
43
44
|
# the file reference to the resources bundle file
|
|
44
45
|
#
|
|
45
|
-
# @return [Section
|
|
46
|
+
# @return [Section]
|
|
46
47
|
# a section or nil
|
|
47
48
|
#
|
|
48
49
|
def build_section_for_bundle bundle_file_ref
|
|
@@ -51,14 +52,8 @@ module XCRes
|
|
|
51
52
|
|
|
52
53
|
log "Found bundle %s with #%s image files of #%s total files.", bundle_file_ref.path, image_files.count, bundle_files.count
|
|
53
54
|
|
|
54
|
-
return nil if image_files.empty?
|
|
55
|
-
|
|
56
|
-
section_data = build_images_section_data(image_files)
|
|
57
|
-
|
|
58
|
-
return nil if section_data.empty?
|
|
59
|
-
|
|
60
55
|
section_name = basename_without_ext(bundle_file_ref.path)
|
|
61
|
-
|
|
56
|
+
section_data = build_images_section_data(image_files)
|
|
62
57
|
new_section(section_name, section_data)
|
|
63
58
|
end
|
|
64
59
|
|
|
@@ -10,7 +10,8 @@ module XCRes
|
|
|
10
10
|
class LooseResourcesAnalyzer < BaseResourcesAnalyzer
|
|
11
11
|
|
|
12
12
|
def analyze
|
|
13
|
-
@sections = [build_section_for_loose_images]
|
|
13
|
+
@sections = [build_section_for_loose_images]
|
|
14
|
+
super
|
|
14
15
|
end
|
|
15
16
|
|
|
16
17
|
def exclude_file_patterns
|
|
@@ -19,16 +20,14 @@ module XCRes
|
|
|
19
20
|
|
|
20
21
|
# Build a section for loose image resources in the project
|
|
21
22
|
#
|
|
22
|
-
# @return [Section
|
|
23
|
+
# @return [Section]
|
|
23
24
|
#
|
|
24
25
|
def build_section_for_loose_images
|
|
25
26
|
image_files = find_image_files(resources_files.map(&:path))
|
|
26
27
|
|
|
27
28
|
log "Found #%s image files in project.", image_files.count
|
|
28
29
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
data = build_images_section_data(image_files, use_basename?: true)
|
|
30
|
+
data = build_images_section_data(image_files, use_basename: [:key, :path])
|
|
32
31
|
|
|
33
32
|
new_section('Images', data)
|
|
34
33
|
end
|
|
@@ -10,9 +10,8 @@ module XCRes
|
|
|
10
10
|
class XCAssetsAnalyzer < BaseResourcesAnalyzer
|
|
11
11
|
|
|
12
12
|
def analyze
|
|
13
|
-
sections =
|
|
14
|
-
|
|
15
|
-
@sections = sections.compact
|
|
13
|
+
@sections = build_sections_for_xcassets
|
|
14
|
+
super
|
|
16
15
|
end
|
|
17
16
|
|
|
18
17
|
# Build a section for each asset catalog if it contains any resources
|
|
@@ -38,21 +37,18 @@ module XCRes
|
|
|
38
37
|
# @param [XCAssets::Bundle] xcassets_bundle
|
|
39
38
|
# the file reference to the resources bundle file
|
|
40
39
|
#
|
|
41
|
-
# @return [Section
|
|
40
|
+
# @return [Section]
|
|
42
41
|
# a section or nil
|
|
43
42
|
#
|
|
44
43
|
def build_section_for_xcassets bundle
|
|
45
44
|
log "Found asset catalog %s with #%s image files.",
|
|
46
45
|
bundle.path.basename, bundle.resources.count
|
|
47
46
|
|
|
48
|
-
return nil if bundle.resources.empty?
|
|
49
|
-
|
|
50
|
-
section_data = build_images_section_data(bundle.resources.map(&:name))
|
|
51
|
-
|
|
52
|
-
return nil if section_data.empty?
|
|
53
|
-
|
|
54
47
|
section_name = "#{basename_without_ext(bundle.path)}Assets"
|
|
55
|
-
|
|
48
|
+
section_data = build_images_section_data(bundle.resources.map(&:path), {
|
|
49
|
+
use_basename: [:path],
|
|
50
|
+
path_without_ext: true
|
|
51
|
+
})
|
|
56
52
|
new_section(section_name, section_data)
|
|
57
53
|
end
|
|
58
54
|
|
|
@@ -10,7 +10,7 @@ class XCRes::FileBuilder
|
|
|
10
10
|
# Ensure that the given directory exists
|
|
11
11
|
output_dir = File.dirname output_path
|
|
12
12
|
unless Dir.exist? output_dir
|
|
13
|
-
logger.success 'Directory did not exist. Will
|
|
13
|
+
logger.success 'Directory did not exist. Will be created.'
|
|
14
14
|
Dir.mkdir output_dir
|
|
15
15
|
end
|
|
16
16
|
|
|
@@ -45,20 +45,20 @@ class XCRes::InstallCommand < XCRes::ProjectCommand
|
|
|
45
45
|
def find_parent_group
|
|
46
46
|
# Get main group and ensure that it exists
|
|
47
47
|
main_group = project.main_group
|
|
48
|
-
raise ArgumentError, "Didn't
|
|
48
|
+
raise ArgumentError, "Didn't find main group" if main_group.nil?
|
|
49
49
|
|
|
50
50
|
# Get target-specific group, if the default project layout is in use
|
|
51
51
|
src_group = main_group.groups.find { |g| g.path == target.name }
|
|
52
52
|
if src_group != nil
|
|
53
53
|
log "Found target group, will use its path as base output path."
|
|
54
54
|
else
|
|
55
|
-
log "Didn't
|
|
55
|
+
log "Didn't find target group, expected a group with path '#{target.name}'."
|
|
56
56
|
end
|
|
57
57
|
|
|
58
58
|
# Find 'Supporting Files' group
|
|
59
59
|
groups = main_group.recursive_children_groups
|
|
60
60
|
support_files_group = groups.find { |g| g.name == 'Supporting Files' }
|
|
61
|
-
warn "Didn't
|
|
61
|
+
warn "Didn't find support files group" if support_files_group.nil?
|
|
62
62
|
|
|
63
63
|
support_files_group || src_group || main_group
|
|
64
64
|
end
|
|
@@ -101,6 +101,7 @@ class XCRes::InstallCommand < XCRes::ProjectCommand
|
|
|
101
101
|
# Set shell script
|
|
102
102
|
script_output_path = output_path.relative_path_from(src_root_path)
|
|
103
103
|
build_phase.shell_script = "xcres --no-ansi build $PROJECT_FILE_PATH $SRCROOT/#{script_output_path}\n"
|
|
104
|
+
build_phase.show_env_vars_in_log = '0'
|
|
104
105
|
|
|
105
106
|
# Find or create 'Resources' group in 'Supporting Files'
|
|
106
107
|
res_group = parent_group.groups.find { |g| g.name == 'Resources' }
|
|
@@ -9,11 +9,11 @@ class XCRes::ProjectCommand < XCRes::Command
|
|
|
9
9
|
option ['--[no-]documented'], :flag, 'Add documentation to the generated files', default: true
|
|
10
10
|
#option ['-d', '--dry-run'], :flag, 'Does nothing on the file system'
|
|
11
11
|
|
|
12
|
-
option ['-t', '--target'], 'TARGET', '
|
|
12
|
+
option ['-t', '--target'], 'TARGET', 'Target to search & analyze', attribute_name: :target_name
|
|
13
13
|
option ['-x', '--exclude'], 'FILE_PATTERN', 'File pattern which should be excluded (default: ["InfoPlist.strings"])', multivalued: true, attribute_name: :exclude_file_patterns, default: ['InfoPlist.strings']
|
|
14
14
|
option ['-n', '--name'], 'NAME', 'Name of the resources constant (default: `basename OUTPUT_PATH`)', attribute_name: :resources_constant_name
|
|
15
15
|
option ['-l', '--language'], 'LANGUAGE', 'Default language to build the keys', attribute_name: :default_language do |language|
|
|
16
|
-
raise ArgumentError.new 'Expected a two-letter code conforming ISO 639-1 as LANGUAGE' unless String(language).length == 2
|
|
16
|
+
raise ArgumentError.new 'Expected a two-letter code conforming to ISO 639-1 as LANGUAGE' unless String(language).length == 2
|
|
17
17
|
language
|
|
18
18
|
end
|
|
19
19
|
|
|
@@ -50,8 +50,12 @@ class XCRes::ProjectCommand < XCRes::Command
|
|
|
50
50
|
# @return [PBXNativeTarget]
|
|
51
51
|
#
|
|
52
52
|
def target
|
|
53
|
-
if target_name != nil
|
|
54
|
-
|
|
53
|
+
@target ||= if target_name != nil
|
|
54
|
+
target = native_targets.find { |t| t.name == target_name }
|
|
55
|
+
if target.nil?
|
|
56
|
+
raise ArgumentError.new "Unknown target '#{target_name}'. "
|
|
57
|
+
end
|
|
58
|
+
target
|
|
55
59
|
else
|
|
56
60
|
if application_targets.count == 1
|
|
57
61
|
application_targets.first
|
|
@@ -62,14 +66,23 @@ class XCRes::ProjectCommand < XCRes::Command
|
|
|
62
66
|
end
|
|
63
67
|
end
|
|
64
68
|
|
|
69
|
+
# Find all native targets in the project
|
|
70
|
+
#
|
|
71
|
+
# @return [Array<PBXNativeTarget>]
|
|
72
|
+
#
|
|
73
|
+
def native_targets
|
|
74
|
+
@native_targets ||= project.targets.select do |target|
|
|
75
|
+
target.is_a?(Xcodeproj::Project::Object::PBXNativeTarget)
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
65
79
|
# Find all application targets in the project
|
|
66
80
|
#
|
|
67
81
|
# @return [Array<PBXNativeTarget>]
|
|
68
82
|
#
|
|
69
83
|
def application_targets
|
|
70
|
-
@application_targets ||=
|
|
71
|
-
target.
|
|
72
|
-
&& target.product_type == Xcodeproj::Constants::PRODUCT_TYPE_UTI[:application]
|
|
84
|
+
@application_targets ||= native_targets.select do |target|
|
|
85
|
+
target.product_type == Xcodeproj::Constants::PRODUCT_TYPE_UTI[:application]
|
|
73
86
|
end
|
|
74
87
|
end
|
|
75
88
|
|
|
@@ -88,7 +101,7 @@ class XCRes::ProjectCommand < XCRes::Command
|
|
|
88
101
|
|
|
89
102
|
def discover_xcodeproj_file_path!
|
|
90
103
|
if xcodeproj_file_path.nil?
|
|
91
|
-
warn 'Argument XCODEPROJ is not set.
|
|
104
|
+
warn 'Argument XCODEPROJ is not set. Using the current directory.'
|
|
92
105
|
discover_xcodeproj_file_path_in_dir! '.'
|
|
93
106
|
elsif Dir.exist?(xcodeproj_file_path) && !File.fnmatch('*.xcodeproj', xcodeproj_file_path)
|
|
94
107
|
warn 'Argument XCODEPROJ is a directory. ' \
|
data/lib/xcres/version.rb
CHANGED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"images" : [
|
|
3
|
+
{
|
|
4
|
+
"idiom" : "universal",
|
|
5
|
+
"scale" : "1x",
|
|
6
|
+
"filename" : "GrumpyCat.jpg"
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
"idiom" : "universal",
|
|
10
|
+
"scale" : "2x",
|
|
11
|
+
"filename" : "GrumpyCat@2x.jpg"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"idiom" : "universal",
|
|
15
|
+
"scale" : "3x",
|
|
16
|
+
"filename" : "GrumpyCat@3x.jpg"
|
|
17
|
+
}
|
|
18
|
+
],
|
|
19
|
+
"info" : {
|
|
20
|
+
"version" : 1,
|
|
21
|
+
"author" : "xcode"
|
|
22
|
+
}
|
|
23
|
+
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
data/spec/integration.rb
CHANGED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"images" : [
|
|
3
|
+
{
|
|
4
|
+
"idiom" : "universal",
|
|
5
|
+
"scale" : "1x",
|
|
6
|
+
"filename" : "GrumpyCat.jpg"
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
"idiom" : "universal",
|
|
10
|
+
"scale" : "2x",
|
|
11
|
+
"filename" : "GrumpyCat@2x.jpg"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"idiom" : "universal",
|
|
15
|
+
"scale" : "3x",
|
|
16
|
+
"filename" : "GrumpyCat@3x.jpg"
|
|
17
|
+
}
|
|
18
|
+
],
|
|
19
|
+
"info" : {
|
|
20
|
+
"version" : 1,
|
|
21
|
+
"author" : "xcode"
|
|
22
|
+
}
|
|
23
|
+
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
Ⓥ Add section for Icons with 2 elements
|
|
8
8
|
Ⓥ Found #1 image files in project.
|
|
9
9
|
Ⓥ Found #1 asset catalogs in project.
|
|
10
|
-
Ⓥ Found asset catalog Images.xcassets with #
|
|
11
|
-
Ⓥ Add section for ImagesAssets with
|
|
10
|
+
Ⓥ Found asset catalog Images.xcassets with #4 image files.
|
|
11
|
+
Ⓥ Add section for ImagesAssets with 4 elements
|
|
12
12
|
Ⓥ Strings files in project: ["en.lproj/InfoPlist.strings", "en.lproj/Localizable.strings", "de.lproj/Localizable.strings"]
|
|
13
13
|
Ⓥ Native development languages: ["en"]
|
|
14
14
|
Ⓥ Used languages for .strings files: ["en", "de"]
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"images" : [
|
|
3
|
+
{
|
|
4
|
+
"idiom" : "universal",
|
|
5
|
+
"scale" : "1x",
|
|
6
|
+
"filename" : "GrumpyCat.jpg"
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
"idiom" : "universal",
|
|
10
|
+
"scale" : "2x",
|
|
11
|
+
"filename" : "GrumpyCat@2x.jpg"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"idiom" : "universal",
|
|
15
|
+
"scale" : "3x",
|
|
16
|
+
"filename" : "GrumpyCat@3x.jpg"
|
|
17
|
+
}
|
|
18
|
+
],
|
|
19
|
+
"info" : {
|
|
20
|
+
"version" : 1,
|
|
21
|
+
"author" : "xcode"
|
|
22
|
+
}
|
|
23
|
+
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -34,7 +34,7 @@ Targets:
|
|
|
34
34
|
shellPath: "/bin/sh"
|
|
35
35
|
shellScript: |
|
|
36
36
|
xcres --no-ansi build $PROJECT_FILE_PATH $SRCROOT/Example/Resources/R
|
|
37
|
-
showEnvVarsInLog: '
|
|
37
|
+
showEnvVarsInLog: '0'
|
|
38
38
|
buildActionMask: '2147483647'
|
|
39
39
|
runOnlyForDeploymentPostprocessing: '0'
|
|
40
40
|
- SourcesBuildPhase:
|
|
@@ -35,7 +35,7 @@ Targets:
|
|
|
35
35
|
shellPath: "/bin/sh"
|
|
36
36
|
shellScript: |
|
|
37
37
|
xcres --no-ansi build $PROJECT_FILE_PATH $SRCROOT/Supporting_Files/Resources/R
|
|
38
|
-
showEnvVarsInLog: '
|
|
38
|
+
showEnvVarsInLog: '0'
|
|
39
39
|
buildActionMask: '2147483647'
|
|
40
40
|
runOnlyForDeploymentPostprocessing: '0'
|
|
41
41
|
- SourcesBuildPhase:
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Ⓥ Verbose mode is enabled.
|
|
3
3
|
⚠ Argument XCODEPROJ is a directory. Try to locate the Xcode project in this directory.
|
|
4
4
|
✓ Use Example/Example.xcodeproj as XCODEPROJ.
|
|
5
|
-
Ⓥ Didn't
|
|
5
|
+
Ⓥ Didn't find target group, expected a group with path 'Example'.
|
|
6
6
|
Execute build first:
|
|
7
7
|
Ⓥ Verbose mode is enabled.
|
|
8
8
|
✓ Use Example/Example.xcodeproj as XCODEPROJ.
|
|
@@ -17,6 +17,6 @@ Execute build first:
|
|
|
17
17
|
Ⓥ Preferred languages: ["en"]
|
|
18
18
|
Ⓥ Strings files after language selection: ["InfoPlist.strings"]
|
|
19
19
|
Ⓥ Non-ignored .strings files: []
|
|
20
|
-
✓ Directory did not exist. Will
|
|
20
|
+
✓ Directory did not exist. Will be created.
|
|
21
21
|
✓ Successfully updated: ROOT/tmp/integration/install-moved-supporting-files/Example/Supporting_Files/Resources/R.h
|
|
22
22
|
✓ Successfully integrated into Example/Example.xcodeproj
|
|
@@ -35,7 +35,7 @@ Targets:
|
|
|
35
35
|
shellPath: "/bin/sh"
|
|
36
36
|
shellScript: |
|
|
37
37
|
xcres --no-ansi build $PROJECT_FILE_PATH $SRCROOT/Resources/R
|
|
38
|
-
showEnvVarsInLog: '
|
|
38
|
+
showEnvVarsInLog: '0'
|
|
39
39
|
buildActionMask: '2147483647'
|
|
40
40
|
runOnlyForDeploymentPostprocessing: '0'
|
|
41
41
|
- SourcesBuildPhase:
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
Ⓥ Verbose mode is enabled.
|
|
3
3
|
⚠ Argument XCODEPROJ is a directory. Try to locate the Xcode project in this directory.
|
|
4
4
|
✓ Use Example/Example.xcodeproj as XCODEPROJ.
|
|
5
|
-
Ⓥ Didn't
|
|
6
|
-
⚠ Didn't
|
|
5
|
+
Ⓥ Didn't find target group, expected a group with path 'Example'.
|
|
6
|
+
⚠ Didn't find support files group
|
|
7
7
|
Execute build first:
|
|
8
8
|
Ⓥ Verbose mode is enabled.
|
|
9
9
|
✓ Use Example/Example.xcodeproj as XCODEPROJ.
|
|
@@ -18,6 +18,6 @@ Execute build first:
|
|
|
18
18
|
Ⓥ Preferred languages: ["en"]
|
|
19
19
|
Ⓥ Strings files after language selection: ["InfoPlist.strings"]
|
|
20
20
|
Ⓥ Non-ignored .strings files: []
|
|
21
|
-
✓ Directory did not exist. Will
|
|
21
|
+
✓ Directory did not exist. Will be created.
|
|
22
22
|
✓ Successfully updated: ROOT/tmp/integration/install-no-supporting-files/Example/Resources/R.h
|
|
23
23
|
✓ Successfully integrated into Example/Example.xcodeproj
|
|
@@ -34,7 +34,7 @@ Targets:
|
|
|
34
34
|
shellPath: "/bin/sh"
|
|
35
35
|
shellScript: |
|
|
36
36
|
xcres --no-ansi build $PROJECT_FILE_PATH $SRCROOT/Example/Resources/R
|
|
37
|
-
showEnvVarsInLog: '
|
|
37
|
+
showEnvVarsInLog: '0'
|
|
38
38
|
buildActionMask: '2147483647'
|
|
39
39
|
runOnlyForDeploymentPostprocessing: '0'
|
|
40
40
|
- SourcesBuildPhase:
|
|
@@ -17,6 +17,6 @@ Execute build first:
|
|
|
17
17
|
Ⓥ Preferred languages: ["en"]
|
|
18
18
|
Ⓥ Strings files after language selection: ["en.lproj/InfoPlist.strings"]
|
|
19
19
|
Ⓥ Non-ignored .strings files: []
|
|
20
|
-
✓ Directory did not exist. Will
|
|
20
|
+
✓ Directory did not exist. Will be created.
|
|
21
21
|
✓ Successfully updated: ROOT/tmp/integration/install/Example/Example/Resources/R.h
|
|
22
22
|
✓ Successfully integrated into Example/Example.xcodeproj
|
|
@@ -12,6 +12,21 @@ class Xcodeproj::Project::Object::PBXShellScriptBuildPhase
|
|
|
12
12
|
end
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
+
class Xcodeproj::Project::Object::XCBuildConfiguration
|
|
16
|
+
def pretty_print
|
|
17
|
+
data = {}
|
|
18
|
+
data['Build Settings'] = {}.tap do |sorted_settings|
|
|
19
|
+
build_settings.keys.sort.each do |key|
|
|
20
|
+
sorted_settings[key] = build_settings[key]
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
if base_configuration_reference
|
|
24
|
+
data['Base Configuration'] = base_configuration_reference.pretty_print
|
|
25
|
+
end
|
|
26
|
+
{ name => data }
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
15
30
|
class Xcodeproj::Project
|
|
16
31
|
def to_yaml
|
|
17
32
|
pretty_print_output = pretty_print
|
|
@@ -20,16 +20,37 @@ describe 'XCRes::ResourcesAnalyzer::BaseResourcesAnalyzer' do
|
|
|
20
20
|
@analyzer.build_images_section_data([]).should.eql?({})
|
|
21
21
|
end
|
|
22
22
|
|
|
23
|
-
describe 'option use_basename
|
|
23
|
+
describe 'option use_basename is not given' do
|
|
24
24
|
it 'builds an items hash and keep the path' do
|
|
25
25
|
@analyzer.build_images_section_data([Pathname('b/a.m'), Pathname('b/a.gif')])
|
|
26
26
|
.should.eql?({ 'b/a' => 'b/a.gif' })
|
|
27
27
|
end
|
|
28
28
|
end
|
|
29
29
|
|
|
30
|
-
describe 'option use_basename
|
|
30
|
+
describe 'option use_basename is given as []' do
|
|
31
|
+
it 'builds an items hash and keep the path' do
|
|
32
|
+
@analyzer.build_images_section_data([Pathname('b/a.m'), Pathname('b/a.gif')], use_basename: [])
|
|
33
|
+
.should.eql?({ 'b/a' => 'b/a.gif' })
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
describe 'option use_basename is given as [:key]' do
|
|
31
38
|
it 'builds an items hash and remove the path' do
|
|
32
|
-
@analyzer.build_images_section_data([Pathname('b/a.m'), Pathname('b/a.gif')], use_basename
|
|
39
|
+
@analyzer.build_images_section_data([Pathname('b/a.m'), Pathname('b/a.gif')], use_basename: [:key])
|
|
40
|
+
.should.eql?({ 'a' => 'b/a.gif' })
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
describe 'option use_basename is given as [:path]' do
|
|
45
|
+
it 'builds an items hash and remove the path' do
|
|
46
|
+
@analyzer.build_images_section_data([Pathname('b/a.m'), Pathname('b/a.gif')], use_basename: [:path])
|
|
47
|
+
.should.eql?({ 'b/a' => 'a.gif' })
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
describe 'option use_basename is given as [:key,:path]' do
|
|
52
|
+
it 'builds an items hash and remove the path' do
|
|
53
|
+
@analyzer.build_images_section_data([Pathname('b/a.m'), Pathname('b/a.gif')], use_basename: [:key, :path])
|
|
33
54
|
.should.eql?({ 'a' => 'a.gif' })
|
|
34
55
|
end
|
|
35
56
|
end
|
|
@@ -78,19 +99,31 @@ describe 'XCRes::ResourcesAnalyzer::BaseResourcesAnalyzer' do
|
|
|
78
99
|
@analyzer.build_section_data([]).should.be.eql?({})
|
|
79
100
|
end
|
|
80
101
|
|
|
81
|
-
it 'returns a hash with the basename if option use_basename
|
|
102
|
+
it 'returns a hash with the basename if option use_basename is [:key]' do
|
|
103
|
+
@analyzer.expects(:key_from_path).with('b').returns('b')
|
|
104
|
+
@analyzer.build_section_data(@file_paths, use_basename: [:key])
|
|
105
|
+
.should.be.eql?({ 'b' => 'a/b' })
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
it 'returns a hash with the basename if option use_basename is [:path]' do
|
|
109
|
+
@analyzer.expects(:key_from_path).with('a/b').returns('a/b')
|
|
110
|
+
@analyzer.build_section_data(@file_paths, use_basename: [:path])
|
|
111
|
+
.should.be.eql?({ 'a/b' => 'b' })
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
it 'returns a hash with the basename if option use_basename is [:key, :path]' do
|
|
82
115
|
@analyzer.expects(:key_from_path).with('b').returns('b')
|
|
83
|
-
@analyzer.build_section_data(@file_paths, use_basename
|
|
116
|
+
@analyzer.build_section_data(@file_paths, use_basename: [:key, :path])
|
|
84
117
|
.should.be.eql?({ 'b' => 'b' })
|
|
85
118
|
end
|
|
86
119
|
|
|
87
|
-
it 'returns a hash with relative paths if option use_basename
|
|
120
|
+
it 'returns a hash with relative paths if option use_basename is []' do
|
|
88
121
|
@analyzer.expects(:key_from_path).with('a/b').returns('a/b')
|
|
89
|
-
@analyzer.build_section_data(@file_paths, use_basename
|
|
122
|
+
@analyzer.build_section_data(@file_paths, use_basename: [])
|
|
90
123
|
.should.be.eql?({ 'a/b' => 'a/b' })
|
|
91
124
|
end
|
|
92
125
|
|
|
93
|
-
it 'returns a hash with relative paths if option use_basename
|
|
126
|
+
it 'returns a hash with relative paths if option use_basename is not given' do
|
|
94
127
|
@analyzer.expects(:key_from_path).with('a/b').returns('a/b')
|
|
95
128
|
@analyzer.build_section_data(@file_paths)
|
|
96
129
|
.should.be.eql?({ 'a/b' => 'a/b' })
|
|
@@ -39,13 +39,13 @@ describe 'XCRes::ResourcesAnalyzer::BundleResourcesAnalyzer' do
|
|
|
39
39
|
|
|
40
40
|
it 'should return nil if the bundle does not contain any images' do
|
|
41
41
|
@analyzer.expects(:find_files_in_dir).with(@mock_bundle.real_path).returns([Pathname('a.m')])
|
|
42
|
-
@analyzer.build_section_for_bundle(@mock_bundle).should.be.
|
|
42
|
+
@analyzer.build_section_for_bundle(@mock_bundle).items.should.be.empty
|
|
43
43
|
end
|
|
44
44
|
|
|
45
45
|
it 'should return nil if the bundle does not contain any valid images' do
|
|
46
46
|
@analyzer.expects(:find_files_in_dir).with(@mock_bundle.real_path).returns([Pathname('a.gif')])
|
|
47
47
|
@analyzer.exclude_file_patterns = ['a.gif']
|
|
48
|
-
@analyzer.build_section_for_bundle(@mock_bundle).should.be.
|
|
48
|
+
@analyzer.build_section_for_bundle(@mock_bundle).items.should.be.empty
|
|
49
49
|
end
|
|
50
50
|
|
|
51
51
|
it 'should build a new section if the bundle contain valid images' do
|
|
@@ -43,12 +43,19 @@ module XCAssetsSpec
|
|
|
43
43
|
it 'should set the resource paths' do
|
|
44
44
|
@bundle.resource_paths.should.be.eql? [
|
|
45
45
|
Pathname('AppIcon.appiconset'),
|
|
46
|
+
Pathname('Cats/GrumpyCat.imageset'),
|
|
46
47
|
Pathname('Doge.imageset'),
|
|
47
48
|
Pathname('LaunchImage.launchimage'),
|
|
48
49
|
]
|
|
49
50
|
end
|
|
50
51
|
|
|
51
52
|
shared 'XCAssets resource' do
|
|
53
|
+
path = @name
|
|
54
|
+
|
|
55
|
+
before do
|
|
56
|
+
@res = @bundle.resources.find { |r| r.path.to_s == path }
|
|
57
|
+
end
|
|
58
|
+
|
|
52
59
|
it 'should match the info' do
|
|
53
60
|
@res.info.should.be.eql?({ "version" => 1, "author" => "xcode" })
|
|
54
61
|
end
|
|
@@ -56,14 +63,8 @@ module XCAssetsSpec
|
|
|
56
63
|
|
|
57
64
|
describe 'resources' do
|
|
58
65
|
describe 'AppIcon.appiconset' do
|
|
59
|
-
before { @res = @bundle.resources[0] }
|
|
60
|
-
|
|
61
66
|
behaves_like 'XCAssets resource'
|
|
62
67
|
|
|
63
|
-
it 'should match the path' do
|
|
64
|
-
@res.path.should.be.eql? Pathname('AppIcon.appiconset')
|
|
65
|
-
end
|
|
66
|
-
|
|
67
68
|
it 'should match the name' do
|
|
68
69
|
@res.name.should.be.eql? 'AppIcon'
|
|
69
70
|
end
|
|
@@ -77,19 +78,38 @@ module XCAssetsSpec
|
|
|
77
78
|
ResourceImage.new(idiom: 'iphone', scale: 2, size: '29x29'),
|
|
78
79
|
ResourceImage.new(idiom: 'iphone', scale: 2, size: '40x40'),
|
|
79
80
|
ResourceImage.new(idiom: 'iphone', scale: 2, size: '60x60'),
|
|
81
|
+
ResourceImage.new(idiom: 'iphone', scale: 3, size: '60x60'),
|
|
80
82
|
]
|
|
81
83
|
end
|
|
82
84
|
end
|
|
83
85
|
|
|
84
|
-
describe '
|
|
85
|
-
before { @res = @bundle.resources[1] }
|
|
86
|
-
|
|
86
|
+
describe 'Cats/GrumpyCat.imageset' do
|
|
87
87
|
behaves_like 'XCAssets resource'
|
|
88
88
|
|
|
89
|
-
it 'should match the
|
|
90
|
-
@res.
|
|
89
|
+
it 'should match the name' do
|
|
90
|
+
@res.name.should.be.eql? 'GrumpyCat'
|
|
91
91
|
end
|
|
92
92
|
|
|
93
|
+
it 'should match the type' do
|
|
94
|
+
@res.type.should.be.eql? 'imageset'
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
it 'should match the info' do
|
|
98
|
+
@res.info.should.be.eql?({ "version" => 1, "author" => "xcode" })
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
it 'should match the images' do
|
|
102
|
+
@res.images.should.be.eql? [
|
|
103
|
+
ResourceImage.new(idiom: 'universal', scale: 1, filename: 'GrumpyCat.jpg'),
|
|
104
|
+
ResourceImage.new(idiom: 'universal', scale: 2, filename: 'GrumpyCat@2x.jpg'),
|
|
105
|
+
ResourceImage.new(idiom: 'universal', scale: 3, filename: 'GrumpyCat@3x.jpg'),
|
|
106
|
+
]
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
describe 'Doge.imageset' do
|
|
111
|
+
behaves_like 'XCAssets resource'
|
|
112
|
+
|
|
93
113
|
it 'should match the name' do
|
|
94
114
|
@res.name.should.be.eql? 'Doge'
|
|
95
115
|
end
|
|
@@ -106,19 +126,14 @@ module XCAssetsSpec
|
|
|
106
126
|
@res.images.should.be.eql? [
|
|
107
127
|
ResourceImage.new(idiom: 'universal', scale: 1, filename: 'doge.png'),
|
|
108
128
|
ResourceImage.new(idiom: 'universal', scale: 2, filename: 'doge@2x.png'),
|
|
129
|
+
ResourceImage.new(idiom: 'universal', scale: 3),
|
|
109
130
|
]
|
|
110
131
|
end
|
|
111
132
|
end
|
|
112
133
|
|
|
113
134
|
describe 'LaunchImage.launchimage' do
|
|
114
|
-
before { @res = @bundle.resources[2] }
|
|
115
|
-
|
|
116
135
|
behaves_like 'XCAssets resource'
|
|
117
136
|
|
|
118
|
-
it 'should match the path' do
|
|
119
|
-
@res.path.should.be.eql? Pathname('LaunchImage.launchimage')
|
|
120
|
-
end
|
|
121
|
-
|
|
122
137
|
it 'should match the name' do
|
|
123
138
|
@res.name.should.be.eql? 'LaunchImage'
|
|
124
139
|
end
|
|
@@ -31,7 +31,11 @@ module XCAssetsSpec
|
|
|
31
31
|
"idiom" => "universal",
|
|
32
32
|
"scale" => "2x",
|
|
33
33
|
"filename" => "doge@2x.png"
|
|
34
|
-
}
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"idiom" => "universal",
|
|
37
|
+
"scale" => "3x"
|
|
38
|
+
},
|
|
35
39
|
],
|
|
36
40
|
"info" => expected_info
|
|
37
41
|
}
|
|
@@ -130,6 +134,7 @@ module XCAssetsSpec
|
|
|
130
134
|
@res.images.should.be.eql? [
|
|
131
135
|
ResourceImage.new(idiom: 'universal', scale: 1, filename: 'doge.png'),
|
|
132
136
|
ResourceImage.new(idiom: 'universal', scale: 2, filename: 'doge@2x.png'),
|
|
137
|
+
ResourceImage.new(idiom: 'universal', scale: 3),
|
|
133
138
|
]
|
|
134
139
|
end
|
|
135
140
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: xcres
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.4.
|
|
4
|
+
version: 0.4.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Marius Rackwitz
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2014-
|
|
11
|
+
date: 2014-10-16 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -261,6 +261,10 @@ files:
|
|
|
261
261
|
- spec/fixtures/Example/Example/Example-Info.plist
|
|
262
262
|
- spec/fixtures/Example/Example/Example-Prefix.pch
|
|
263
263
|
- spec/fixtures/Example/Example/Images.xcassets/AppIcon.appiconset/Contents.json
|
|
264
|
+
- spec/fixtures/Example/Example/Images.xcassets/Cats/GrumpyCat.imageset/Contents.json
|
|
265
|
+
- spec/fixtures/Example/Example/Images.xcassets/Cats/GrumpyCat.imageset/GrumpyCat.jpg
|
|
266
|
+
- spec/fixtures/Example/Example/Images.xcassets/Cats/GrumpyCat.imageset/GrumpyCat@2x.jpg
|
|
267
|
+
- spec/fixtures/Example/Example/Images.xcassets/Cats/GrumpyCat.imageset/GrumpyCat@3x.jpg
|
|
264
268
|
- spec/fixtures/Example/Example/Images.xcassets/Doge.imageset/Contents.json
|
|
265
269
|
- spec/fixtures/Example/Example/Images.xcassets/Doge.imageset/doge.png
|
|
266
270
|
- spec/fixtures/Example/Example/Images.xcassets/Doge.imageset/doge@2x.png
|
|
@@ -366,6 +370,10 @@ files:
|
|
|
366
370
|
- spec/integration/build/after/Example/Example/Icons.bundle/tab_bar/tabbar_map.png
|
|
367
371
|
- spec/integration/build/after/Example/Example/Icons.bundle/tab_bar/tabbar_map@2x.png
|
|
368
372
|
- spec/integration/build/after/Example/Example/Images.xcassets/AppIcon.appiconset/Contents.json
|
|
373
|
+
- spec/integration/build/after/Example/Example/Images.xcassets/Cats/GrumpyCat.imageset/Contents.json
|
|
374
|
+
- spec/integration/build/after/Example/Example/Images.xcassets/Cats/GrumpyCat.imageset/GrumpyCat.jpg
|
|
375
|
+
- spec/integration/build/after/Example/Example/Images.xcassets/Cats/GrumpyCat.imageset/GrumpyCat@2x.jpg
|
|
376
|
+
- spec/integration/build/after/Example/Example/Images.xcassets/Cats/GrumpyCat.imageset/GrumpyCat@3x.jpg
|
|
369
377
|
- spec/integration/build/after/Example/Example/Images.xcassets/Doge.imageset/Contents.json
|
|
370
378
|
- spec/integration/build/after/Example/Example/Images.xcassets/Doge.imageset/doge.png
|
|
371
379
|
- spec/integration/build/after/Example/Example/Images.xcassets/Doge.imageset/doge@2x.png
|
|
@@ -390,6 +398,10 @@ files:
|
|
|
390
398
|
- spec/integration/build/before/Example/Example/Icons.bundle/tab_bar/tabbar_map.png
|
|
391
399
|
- spec/integration/build/before/Example/Example/Icons.bundle/tab_bar/tabbar_map@2x.png
|
|
392
400
|
- spec/integration/build/before/Example/Example/Images.xcassets/AppIcon.appiconset/Contents.json
|
|
401
|
+
- spec/integration/build/before/Example/Example/Images.xcassets/Cats/GrumpyCat.imageset/Contents.json
|
|
402
|
+
- spec/integration/build/before/Example/Example/Images.xcassets/Cats/GrumpyCat.imageset/GrumpyCat.jpg
|
|
403
|
+
- spec/integration/build/before/Example/Example/Images.xcassets/Cats/GrumpyCat.imageset/GrumpyCat@2x.jpg
|
|
404
|
+
- spec/integration/build/before/Example/Example/Images.xcassets/Cats/GrumpyCat.imageset/GrumpyCat@3x.jpg
|
|
393
405
|
- spec/integration/build/before/Example/Example/Images.xcassets/Doge.imageset/Contents.json
|
|
394
406
|
- spec/integration/build/before/Example/Example/Images.xcassets/Doge.imageset/doge.png
|
|
395
407
|
- spec/integration/build/before/Example/Example/Images.xcassets/Doge.imageset/doge@2x.png
|
|
@@ -552,6 +564,10 @@ test_files:
|
|
|
552
564
|
- spec/fixtures/Example/Example/Example-Info.plist
|
|
553
565
|
- spec/fixtures/Example/Example/Example-Prefix.pch
|
|
554
566
|
- spec/fixtures/Example/Example/Images.xcassets/AppIcon.appiconset/Contents.json
|
|
567
|
+
- spec/fixtures/Example/Example/Images.xcassets/Cats/GrumpyCat.imageset/Contents.json
|
|
568
|
+
- spec/fixtures/Example/Example/Images.xcassets/Cats/GrumpyCat.imageset/GrumpyCat.jpg
|
|
569
|
+
- spec/fixtures/Example/Example/Images.xcassets/Cats/GrumpyCat.imageset/GrumpyCat@2x.jpg
|
|
570
|
+
- spec/fixtures/Example/Example/Images.xcassets/Cats/GrumpyCat.imageset/GrumpyCat@3x.jpg
|
|
555
571
|
- spec/fixtures/Example/Example/Images.xcassets/Doge.imageset/Contents.json
|
|
556
572
|
- spec/fixtures/Example/Example/Images.xcassets/Doge.imageset/doge.png
|
|
557
573
|
- spec/fixtures/Example/Example/Images.xcassets/Doge.imageset/doge@2x.png
|
|
@@ -657,6 +673,10 @@ test_files:
|
|
|
657
673
|
- spec/integration/build/after/Example/Example/Icons.bundle/tab_bar/tabbar_map.png
|
|
658
674
|
- spec/integration/build/after/Example/Example/Icons.bundle/tab_bar/tabbar_map@2x.png
|
|
659
675
|
- spec/integration/build/after/Example/Example/Images.xcassets/AppIcon.appiconset/Contents.json
|
|
676
|
+
- spec/integration/build/after/Example/Example/Images.xcassets/Cats/GrumpyCat.imageset/Contents.json
|
|
677
|
+
- spec/integration/build/after/Example/Example/Images.xcassets/Cats/GrumpyCat.imageset/GrumpyCat.jpg
|
|
678
|
+
- spec/integration/build/after/Example/Example/Images.xcassets/Cats/GrumpyCat.imageset/GrumpyCat@2x.jpg
|
|
679
|
+
- spec/integration/build/after/Example/Example/Images.xcassets/Cats/GrumpyCat.imageset/GrumpyCat@3x.jpg
|
|
660
680
|
- spec/integration/build/after/Example/Example/Images.xcassets/Doge.imageset/Contents.json
|
|
661
681
|
- spec/integration/build/after/Example/Example/Images.xcassets/Doge.imageset/doge.png
|
|
662
682
|
- spec/integration/build/after/Example/Example/Images.xcassets/Doge.imageset/doge@2x.png
|
|
@@ -681,6 +701,10 @@ test_files:
|
|
|
681
701
|
- spec/integration/build/before/Example/Example/Icons.bundle/tab_bar/tabbar_map.png
|
|
682
702
|
- spec/integration/build/before/Example/Example/Icons.bundle/tab_bar/tabbar_map@2x.png
|
|
683
703
|
- spec/integration/build/before/Example/Example/Images.xcassets/AppIcon.appiconset/Contents.json
|
|
704
|
+
- spec/integration/build/before/Example/Example/Images.xcassets/Cats/GrumpyCat.imageset/Contents.json
|
|
705
|
+
- spec/integration/build/before/Example/Example/Images.xcassets/Cats/GrumpyCat.imageset/GrumpyCat.jpg
|
|
706
|
+
- spec/integration/build/before/Example/Example/Images.xcassets/Cats/GrumpyCat.imageset/GrumpyCat@2x.jpg
|
|
707
|
+
- spec/integration/build/before/Example/Example/Images.xcassets/Cats/GrumpyCat.imageset/GrumpyCat@3x.jpg
|
|
684
708
|
- spec/integration/build/before/Example/Example/Images.xcassets/Doge.imageset/Contents.json
|
|
685
709
|
- spec/integration/build/before/Example/Example/Images.xcassets/Doge.imageset/doge.png
|
|
686
710
|
- spec/integration/build/before/Example/Example/Images.xcassets/Doge.imageset/doge@2x.png
|