|
1 | 1 | import * as path from 'node:path'; |
2 | 2 | import type { PersistConfig, UploadConfig } from '@code-pushup/models'; |
| 3 | +import type { NormalizedExecutorContext } from './context.js'; |
3 | 4 | import { parseEnv } from './env.js'; |
4 | 5 | import type { |
5 | 6 | BaseNormalizedExecutorContext, |
@@ -44,25 +45,32 @@ export function persistConfig( |
44 | 45 |
|
45 | 46 | export function uploadConfig( |
46 | 47 | options: Partial<UploadConfig & ProjectExecutorOnlyOptions>, |
47 | | - context: BaseNormalizedExecutorContext, |
| 48 | + context: NormalizedExecutorContext, |
48 | 49 | ): Partial<UploadConfig> { |
49 | 50 | const { workspaceRoot, projectName } = context; |
50 | 51 |
|
51 | 52 | const { projectPrefix, server, apiKey, organization, project, timeout } = |
52 | 53 | options; |
53 | 54 | const applyPrefix = workspaceRoot === '.'; |
54 | 55 | const prefix = projectPrefix ? `${projectPrefix}-` : ''; |
| 56 | + |
| 57 | + const derivedProject = |
| 58 | + projectName && !project |
| 59 | + ? applyPrefix |
| 60 | + ? `${prefix}${projectName}` |
| 61 | + : projectName |
| 62 | + : project; |
| 63 | + |
55 | 64 | return { |
56 | | - ...(projectName |
57 | | - ? { |
58 | | - project: applyPrefix ? `${prefix}${projectName}` : projectName, |
59 | | - } |
60 | | - : {}), |
61 | 65 | ...parseEnv(process.env), |
62 | 66 | ...Object.fromEntries( |
63 | | - Object.entries({ server, apiKey, organization, project, timeout }).filter( |
64 | | - ([_, v]) => v !== undefined, |
65 | | - ), |
| 67 | + Object.entries({ |
| 68 | + server, |
| 69 | + apiKey, |
| 70 | + organization, |
| 71 | + ...(derivedProject ? { project: derivedProject } : {}), |
| 72 | + timeout, |
| 73 | + }).filter(([_, v]) => v !== undefined), |
66 | 74 | ), |
67 | 75 | }; |
68 | 76 | } |
0 commit comments