|
100 | 100 | stubsDir = os.path.join(outputDir, stubsDirName) |
101 | 101 | os.makedirs(stubsDir) |
102 | 102 |
|
103 | | -stubFileName = '_stub.cs' |
104 | | - |
105 | 103 | frameworksDirName = 'frameworks' |
106 | 104 | frameworksDir = os.path.join(stubsDir, frameworksDirName) |
107 | 105 |
|
|
124 | 122 | if not os.path.exists(packageDir): |
125 | 123 | os.makedirs(packageDir) |
126 | 124 | print(' * Processing package: ' + name + '/' + version) |
127 | | - with open(os.path.join(packageDir, stubFileName), 'a') as f: |
128 | | - with open(os.path.join(packageDir, name + '.csproj'), 'a') as pf: |
129 | | - |
130 | | - pf.write('<Project Sdk="Microsoft.NET.Sdk">\n') |
131 | | - pf.write(' <PropertyGroup>\n') |
132 | | - pf.write(' <TargetFramework>net5.0</TargetFramework>\n') |
133 | | - pf.write(' <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\n') |
134 | | - pf.write(' <OutputPath>bin\</OutputPath>\n') |
135 | | - pf.write( |
136 | | - ' <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>\n') |
137 | | - pf.write(' </PropertyGroup>\n\n') |
138 | | - pf.write(' <ItemGroup>\n') |
139 | | - |
140 | | - f.write('// Stub for ' + name + ' version ' + version + '\n\n') |
141 | | - |
142 | | - dlls = set() |
143 | | - if 'compile' in data['targets'][target][package]: |
144 | | - for dll in data['targets'][target][package]['compile']: |
145 | | - dlls.add( |
146 | | - (name + '/' + version + '/' + dll).lower()) |
147 | | - if 'runtime' in data['targets'][target][package]: |
148 | | - for dll in data['targets'][target][package]['runtime']: |
149 | | - dlls.add((name + '/' + version + '/' + dll).lower()) |
150 | | - |
151 | | - for pathInfo in pathInfos: |
152 | | - for dll in dlls: |
153 | | - if pathInfo.lower().endswith(dll): |
154 | | - copiedFiles.add(pathInfo) |
155 | | - shutil.copy2(pathInfos[pathInfo], packageDir) |
156 | | - f.write('// semmle-extractor-options: ' + |
157 | | - os.path.basename(pathInfos[pathInfo]) + '\n') |
158 | | - |
159 | | - if 'dependencies' in data['targets'][target][package]: |
160 | | - for dependency in data['targets'][target][package]['dependencies'].keys(): |
161 | | - depVersion = data['targets'][target][package]['dependencies'][dependency] |
162 | | - f.write('// semmle-extractor-options: ../../' + |
163 | | - dependency + '/' + depVersion + '/' + stubFileName + '\n') |
164 | | - pf.write(' <ProjectReference Include="../../' + |
165 | | - dependency + '/' + depVersion + '/' + dependency + '.csproj" />\n') |
166 | | - |
167 | | - if 'frameworkReferences' in data['targets'][target][package]: |
168 | | - if not os.path.exists(frameworksDir): |
169 | | - os.makedirs(frameworksDir) |
170 | | - for framework in data['targets'][target][package]['frameworkReferences']: |
171 | | - frameworks.add(framework) |
172 | | - frameworkDir = os.path.join( |
173 | | - frameworksDir, framework) |
174 | | - if not os.path.exists(frameworkDir): |
175 | | - os.makedirs(frameworkDir) |
176 | | - f.write('// semmle-extractor-options: ../../' + frameworksDirName + '/' + |
177 | | - framework + '/' + stubFileName + '\n') |
178 | | - pf.write(' <ProjectReference Include="../../' + |
179 | | - frameworksDirName + '/' + framework + '/' + framework + '.csproj" />\n') |
180 | | - |
181 | | - pf.write(' </ItemGroup>\n') |
182 | | - pf.write('</Project>\n') |
183 | | - |
184 | | -for framework in frameworks: |
185 | | - with open(os.path.join(frameworksDir, framework, stubFileName), 'a') as f: |
186 | | - with open(os.path.join(frameworksDir, framework, framework + '.csproj'), 'a') as pf: |
| 125 | + with open(os.path.join(packageDir, name + '.csproj'), 'a') as pf: |
187 | 126 |
|
188 | 127 | pf.write('<Project Sdk="Microsoft.NET.Sdk">\n') |
189 | 128 | pf.write(' <PropertyGroup>\n') |
|
192 | 131 | pf.write(' <OutputPath>bin\</OutputPath>\n') |
193 | 132 | pf.write( |
194 | 133 | ' <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>\n') |
195 | | - pf.write(' </PropertyGroup>\n') |
196 | | - pf.write('</Project>\n') |
197 | | - |
198 | | - f.write('// Stub for ' + framework + '\n\n') |
| 134 | + pf.write(' </PropertyGroup>\n\n') |
| 135 | + pf.write(' <ItemGroup>\n') |
| 136 | + |
| 137 | + dlls = set() |
| 138 | + if 'compile' in data['targets'][target][package]: |
| 139 | + for dll in data['targets'][target][package]['compile']: |
| 140 | + dlls.add( |
| 141 | + (name + '/' + version + '/' + dll).lower()) |
| 142 | + if 'runtime' in data['targets'][target][package]: |
| 143 | + for dll in data['targets'][target][package]['runtime']: |
| 144 | + dlls.add((name + '/' + version + '/' + dll).lower()) |
199 | 145 |
|
200 | 146 | for pathInfo in pathInfos: |
201 | | - if 'packs/' + framework.lower() in pathInfo.lower(): |
202 | | - copiedFiles.add(pathInfo) |
203 | | - shutil.copy2(pathInfos[pathInfo], os.path.join( |
204 | | - frameworksDir, framework)) |
205 | | - f.write('// semmle-extractor-options: ' + |
206 | | - os.path.basename(pathInfos[pathInfo]) + '\n') |
| 147 | + for dll in dlls: |
| 148 | + if pathInfo.lower().endswith(dll): |
| 149 | + copiedFiles.add(pathInfo) |
| 150 | + shutil.copy2(pathInfos[pathInfo], packageDir) |
| 151 | + |
| 152 | + if 'dependencies' in data['targets'][target][package]: |
| 153 | + for dependency in data['targets'][target][package]['dependencies'].keys(): |
| 154 | + depVersion = data['targets'][target][package]['dependencies'][dependency] |
| 155 | + pf.write(' <ProjectReference Include="../../' + |
| 156 | + dependency + '/' + depVersion + '/' + dependency + '.csproj" />\n') |
| 157 | + |
| 158 | + if 'frameworkReferences' in data['targets'][target][package]: |
| 159 | + if not os.path.exists(frameworksDir): |
| 160 | + os.makedirs(frameworksDir) |
| 161 | + for framework in data['targets'][target][package]['frameworkReferences']: |
| 162 | + frameworks.add(framework) |
| 163 | + frameworkDir = os.path.join( |
| 164 | + frameworksDir, framework) |
| 165 | + if not os.path.exists(frameworkDir): |
| 166 | + os.makedirs(frameworkDir) |
| 167 | + pf.write(' <ProjectReference Include="../../' + |
| 168 | + frameworksDirName + '/' + framework + '/' + framework + '.csproj" />\n') |
| 169 | + |
| 170 | + pf.write(' </ItemGroup>\n') |
| 171 | + pf.write('</Project>\n') |
| 172 | + |
| 173 | +for framework in frameworks: |
| 174 | + with open(os.path.join(frameworksDir, framework, framework + '.csproj'), 'a') as pf: |
| 175 | + |
| 176 | + pf.write('<Project Sdk="Microsoft.NET.Sdk">\n') |
| 177 | + pf.write(' <PropertyGroup>\n') |
| 178 | + pf.write(' <TargetFramework>net5.0</TargetFramework>\n') |
| 179 | + pf.write(' <AllowUnsafeBlocks>true</AllowUnsafeBlocks>\n') |
| 180 | + pf.write(' <OutputPath>bin\</OutputPath>\n') |
| 181 | + pf.write( |
| 182 | + ' <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>\n') |
| 183 | + pf.write(' </PropertyGroup>\n') |
| 184 | + pf.write('</Project>\n') |
| 185 | + |
| 186 | + for pathInfo in pathInfos: |
| 187 | + if 'packs/' + framework.lower() in pathInfo.lower(): |
| 188 | + copiedFiles.add(pathInfo) |
| 189 | + shutil.copy2(pathInfos[pathInfo], os.path.join( |
| 190 | + frameworksDir, framework)) |
207 | 191 |
|
208 | 192 | for pathInfo in pathInfos: |
209 | 193 | if pathInfo not in copiedFiles: |
|
0 commit comments