Assemble pod packages and dependencies and handle the specific cases where there are more than one podspec in the same directory. This is designed to process .podspec, Podfile and Podfile.lock
(cls, package_data, resource, codebase, package_adder)
| 132 | |
| 133 | @classmethod |
| 134 | def assemble(cls, package_data, resource, codebase, package_adder): |
| 135 | """ |
| 136 | Assemble pod packages and dependencies and handle the specific cases where |
| 137 | there are more than one podspec in the same directory. |
| 138 | This is designed to process .podspec, Podfile and Podfile.lock |
| 139 | """ |
| 140 | if codebase.has_single_resource: |
| 141 | yield from models.DatafileHandler.assemble(package_data, resource, codebase) |
| 142 | else: |
| 143 | # do we have more than one podspec? |
| 144 | parent = resource.parent(codebase) |
| 145 | sibling_podspecs = [ |
| 146 | r for r in parent.children(codebase) |
| 147 | if r.name.endswith('.podspec') |
| 148 | ] |
| 149 | |
| 150 | siblings_counts = len(sibling_podspecs) |
| 151 | has_single_podspec = siblings_counts == 1 |
| 152 | has_multiple_podspec = siblings_counts > 1 |
| 153 | |
| 154 | datafile_name_patterns = ( |
| 155 | 'Podfile.lock', |
| 156 | 'Podfile', |
| 157 | ) |
| 158 | |
| 159 | if has_single_podspec: |
| 160 | # we can treat all podfile/spec as being for one package |
| 161 | datafile_name_patterns = (sibling_podspecs[0].name,) + datafile_name_patterns |
| 162 | |
| 163 | yield from models.DatafileHandler.assemble_from_many_datafiles( |
| 164 | datafile_name_patterns=datafile_name_patterns, |
| 165 | directory=parent, |
| 166 | codebase=codebase, |
| 167 | package_adder=package_adder, |
| 168 | ) |
| 169 | |
| 170 | elif has_multiple_podspec: |
| 171 | # treat each of podspec and podfile alone without meraging |
| 172 | # as we cannot determine easily which podfile is for which |
| 173 | # podspec |
| 174 | podspec = sibling_podspecs.pop() |
| 175 | datafile_name_patterns = (podspec.name,) + datafile_name_patterns |
| 176 | |
| 177 | yield from models.DatafileHandler.assemble_from_many_datafiles( |
| 178 | datafile_name_patterns=datafile_name_patterns, |
| 179 | directory=parent, |
| 180 | codebase=codebase, |
| 181 | package_adder=package_adder, |
| 182 | ) |
| 183 | |
| 184 | for resource in sibling_podspecs: |
| 185 | datafile_path = resource.path |
| 186 | for package_data in resource.package_data: |
| 187 | package_data = models.PackageData.from_dict(package_data) |
| 188 | package = models.Package.from_package_data( |
| 189 | package_data=package_data, |
| 190 | datafile_path=datafile_path, |
| 191 | ) |
nothing calls this directly
no test coverage detected