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