|
47 | 47 | $allFiles = [];
|
48 | 48 |
|
49 | 49 | // Build tasks
|
50 |
| -$allFiles[] = generateConfigs('build', 'phpVersion', 'build-extension.yml', 'build-php-%s', $supportedPhpVersions); |
| 50 | +$allFiles[] = generateConfigs('tasks', 'build', 'phpVersion', 'build-extension.yml', $supportedPhpVersions); |
51 | 51 |
|
52 | 52 | // Test tasks
|
53 |
| -$allFiles[] = generateConfigs('test', 'mongodbVersion', 'local.yml', 'local-%s', $localServerVersions); |
54 |
| -$allFiles[] = generateConfigs('test', 'mongodbVersion', 'load-balanced.yml', 'load-balanced-%s', $loadBalancedServerVersions); |
55 |
| -$allFiles[] = generateConfigs('test', 'mongodbVersion', 'require-api-version.yml', 'require-api-version-%s', $requireApiServerVersions); |
56 |
| -$allFiles[] = generateConfigs('test', 'mongodbVersion', 'csfle.yml', 'csfle-%s', $csfleServerVersions); |
| 53 | +$allFiles[] = generateConfigs('tasks', 'test', 'mongodbVersion', 'local.yml', $localServerVersions); |
| 54 | +$allFiles[] = generateConfigs('tasks', 'test', 'mongodbVersion', 'load-balanced.yml', $loadBalancedServerVersions); |
| 55 | +$allFiles[] = generateConfigs('tasks', 'test', 'mongodbVersion', 'require-api-version.yml', $requireApiServerVersions); |
| 56 | +$allFiles[] = generateConfigs('tasks', 'test', 'mongodbVersion', 'csfle.yml', $csfleServerVersions); |
57 | 57 |
|
58 | 58 | // Test variants
|
59 |
| -$allFiles[] = generateConfigs('test-variant', 'phpVersion', 'latest.yml', 'latest-php-%s', [$latestPhpVersion]); |
60 |
| -$allFiles[] = generateConfigs('test-variant', 'phpVersion', 'replicaset-only.yml', 'replicaset-php-%s', array_diff($supportedPhpVersions, [$latestPhpVersion])); |
61 |
| -$allFiles[] = generateConfigs('test-variant', 'phpVersion', 'lowest.yml', 'lowest-php-%s', [$lowestPhpVersion]); |
| 59 | +$allFiles[] = generateConfigs('buildvariants', 'test-variant', 'phpVersion', 'latest.yml', [$latestPhpVersion]); |
| 60 | +$allFiles[] = generateConfigs('buildvariants', 'test-variant', 'phpVersion', 'replicaset-only.yml', array_diff($supportedPhpVersions, [$latestPhpVersion])); |
| 61 | +$allFiles[] = generateConfigs('buildvariants', 'test-variant', 'phpVersion', 'lowest.yml', [$lowestPhpVersion]); |
62 | 62 |
|
63 | 63 | echo "Generated config. Use the following list to import files:\n";
|
64 |
| -echo implode("\n", array_map('getImportConfig', array_merge(...$allFiles))) . "\n"; |
| 64 | +echo implode("\n", array_map('getImportConfig', $allFiles)) . "\n"; |
65 | 65 |
|
66 | 66 | function getImportConfig(string $filename): string
|
67 | 67 | {
|
68 | 68 | return '- filename: ' . $filename;
|
69 | 69 | }
|
70 | 70 |
|
71 | 71 | function generateConfigs(
|
| 72 | + string $type, |
72 | 73 | string $directory,
|
73 | 74 | string $replacementName,
|
74 | 75 | string $templateFile,
|
75 |
| - string $outputFormat, |
76 | 76 | array $versions,
|
77 |
| -): array { |
| 77 | +): string { |
78 | 78 | $templateRelativePath = 'templates/' . $directory . '/' . $templateFile;
|
79 | 79 | $template = file_get_contents(__DIR__ . '/' . $templateRelativePath);
|
80 | 80 | $header = sprintf(
|
81 | 81 | '# This file is generated automatically - please edit the "%s" template file instead.',
|
82 | 82 | $templateRelativePath
|
83 | 83 | );
|
84 | 84 |
|
85 |
| - $files = []; |
| 85 | + $contents = <<<HEADER |
| 86 | +$header |
| 87 | +$type: |
86 | 88 |
|
87 |
| - foreach ($versions as $version) { |
88 |
| - $filename = sprintf('/generated/%s/' . $outputFormat . '.yml', $directory, $version); |
89 |
| - $files[] = '.evergreen/config' . $filename; |
90 |
| - |
91 |
| - $replacements = ['%' . $replacementName . '%' => $version]; |
| 89 | +HEADER; |
92 | 90 |
|
93 |
| - file_put_contents(__DIR__ . $filename, $header . "\n" . strtr($template, $replacements)); |
| 91 | + foreach ($versions as $version) { |
| 92 | + $contents .= strtr( |
| 93 | + $template, |
| 94 | + ['%' . $replacementName . '%' => $version], |
| 95 | + ); |
94 | 96 | }
|
95 | 97 |
|
96 |
| - return $files; |
| 98 | + $filename = '/generated/' . $directory . '/' . $templateFile; |
| 99 | + file_put_contents(__DIR__ . $filename, $contents); |
| 100 | + |
| 101 | + return '.evergreen/config' . $filename; |
97 | 102 | }
|
0 commit comments