(
childTrace: typeof autoTrace,
{
dir: providedDir = process.cwd(),
interactive = false,
skipPackage = false,
arch = getHostArch() as ForgeArch,
platform = process.platform as ForgePlatform,
overrideTargets,
outDir,
}: MakeOptions,
receiveMakeResults?: (results: ForgeMakeResult[]) => void,
)
| 105 | } |
| 106 | |
| 107 | export const listrMake = ( |
| 108 | childTrace: typeof autoTrace, |
| 109 | { |
| 110 | dir: providedDir = process.cwd(), |
| 111 | interactive = false, |
| 112 | skipPackage = false, |
| 113 | arch = getHostArch() as ForgeArch, |
| 114 | platform = process.platform as ForgePlatform, |
| 115 | overrideTargets, |
| 116 | outDir, |
| 117 | }: MakeOptions, |
| 118 | receiveMakeResults?: (results: ForgeMakeResult[]) => void, |
| 119 | ) => { |
| 120 | const listrOptions: ForgeListrOptions<MakeContext> = { |
| 121 | concurrent: false, |
| 122 | rendererOptions: { |
| 123 | collapseSubtasks: false, |
| 124 | collapseErrors: false, |
| 125 | }, |
| 126 | silentRendererCondition: !interactive, |
| 127 | fallbackRendererCondition: |
| 128 | Boolean(process.env.DEBUG) || Boolean(process.env.CI), |
| 129 | }; |
| 130 | |
| 131 | const runner = new Listr<MakeContext>( |
| 132 | [ |
| 133 | { |
| 134 | title: 'Loading configuration', |
| 135 | task: childTrace<Parameters<ForgeListrTaskFn<MakeContext>>>( |
| 136 | { name: 'load-forge-config', category: '@electron-forge/core' }, |
| 137 | async (_, ctx) => { |
| 138 | const resolvedDir = await resolveDir(providedDir); |
| 139 | if (!resolvedDir) { |
| 140 | throw new Error( |
| 141 | 'Failed to locate startable Electron application', |
| 142 | ); |
| 143 | } |
| 144 | |
| 145 | ctx.dir = resolvedDir; |
| 146 | ctx.forgeConfig = await getForgeConfig(resolvedDir); |
| 147 | }, |
| 148 | ), |
| 149 | }, |
| 150 | { |
| 151 | title: 'Resolving make targets', |
| 152 | task: childTrace<Parameters<ForgeListrTaskFn<MakeContext>>>( |
| 153 | { name: 'resolve-make-targets', category: '@electron-forge/core' }, |
| 154 | async (_, ctx, task) => { |
| 155 | const { dir, forgeConfig } = ctx; |
| 156 | ctx.actualOutDir = outDir || getCurrentOutDir(dir, forgeConfig); |
| 157 | |
| 158 | if (!['darwin', 'win32', 'linux', 'mas'].includes(platform)) { |
| 159 | throw new Error( |
| 160 | `'${platform}' is an invalid platform. Choices are 'darwin', 'mas', 'win32' or 'linux'.`, |
| 161 | ); |
| 162 | } |
| 163 | |
| 164 | // eslint-disable-next-line @typescript-eslint/no-explicit-any |
no test coverage detected