Skip to content

Commit 7b1b9c1

Browse files
feat: make platform and arch optional in downloadArtifact (#109)
Fixes #107
1 parent 52d9c0e commit 7b1b9c1

File tree

3 files changed

+33
-5
lines changed

3 files changed

+33
-5
lines changed

src/index.ts

+17-5
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,11 @@ import debug from 'debug';
22
import * as path from 'path';
33

44
import { getArtifactFileName, getArtifactRemoteURL, FileNameUse } from './artifact-utils';
5-
import { ElectronArtifactDetails, ElectronDownloadRequestOptions } from './types';
5+
import {
6+
ElectronArtifactDetails,
7+
ElectronDownloadRequestOptions,
8+
ElectronPlatformArtifactDetailsWithDefaults,
9+
} from './types';
610
import { Cache } from './Cache';
711
import { getDownloaderForSystem } from './downloader-resolver';
812
import {
@@ -44,10 +48,18 @@ export function download(
4448
*
4549
* @param artifactDetails - The information required to download the artifact
4650
*/
47-
export async function downloadArtifact(_artifactDetails: ElectronArtifactDetails): Promise<string> {
48-
const artifactDetails: ElectronArtifactDetails = {
49-
..._artifactDetails,
50-
};
51+
export async function downloadArtifact(
52+
_artifactDetails: ElectronPlatformArtifactDetailsWithDefaults,
53+
): Promise<string> {
54+
const artifactDetails: ElectronArtifactDetails = _artifactDetails.isGeneric
55+
? {
56+
..._artifactDetails,
57+
}
58+
: {
59+
platform: process.platform,
60+
arch: getHostArch(),
61+
..._artifactDetails,
62+
};
5163
ensureIsTruthyString(artifactDetails, 'version');
5264
artifactDetails.version = normalizeVersion(artifactDetails.version);
5365

src/types.ts

+9
Original file line numberDiff line numberDiff line change
@@ -91,4 +91,13 @@ export type ElectronArtifactDetails =
9191
| ElectronPlatformArtifactDetails
9292
| ElectronGenericArtifactDetails;
9393

94+
export type Omit<T, K> = Pick<T, Exclude<keyof T, K>>;
95+
96+
export type ElectronPlatformArtifactDetailsWithDefaults =
97+
| (Omit<ElectronPlatformArtifactDetails, 'platform' | 'arch'> & {
98+
platform?: string;
99+
arch?: string;
100+
})
101+
| ElectronGenericArtifactDetails;
102+
94103
export type DownloadOptions = any;

test/index.spec.ts

+7
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,13 @@ describe('Public API', () => {
120120
expect(await fs.readFile(dtsPath, 'utf8')).toContain('declare namespace Electron');
121121
});
122122

123+
it('should work default platform/arch', async () => {
124+
await downloadArtifact({
125+
version: '2.0.3',
126+
artifactName: 'electron',
127+
});
128+
});
129+
123130
it('should work for chromedriver', async () => {
124131
const driverPath = await downloadArtifact({
125132
cacheRoot,

0 commit comments

Comments
 (0)