Skip to content

Commit b76604a

Browse files
committed
refactor fn signatures to be more explicit instead of using api
1 parent 866727d commit b76604a

4 files changed

Lines changed: 87 additions & 60 deletions

File tree

packages/platform-android/src/lib/commands/aar/packageAar.ts

Lines changed: 9 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -13,35 +13,24 @@ export type PackageAarFlags = {
1313
moduleName?: string;
1414
};
1515

16-
export async function packageAar(
17-
aarProject: AarProject,
18-
args: PackageAarFlags,
19-
) {
20-
normalizeArgs(args);
16+
export async function packageAar(aarProject: AarProject, variant: string) {
17+
normalizeVariant(variant);
18+
const tasks = [`assemble${toPascalCase(variant)}`];
2119

22-
const tasks = [`assemble${toPascalCase(args.variant)}`];
23-
24-
await runGradleAar({ tasks, aarProject, variant: args.variant });
20+
await runGradleAar({ tasks, aarProject, variant });
2521
outro('Success 🎉.');
2622
}
2723

28-
export async function localPublishAar(
29-
aarProject: AarProject,
30-
args: PackageAarFlags,
31-
) {
24+
export async function localPublishAar(aarProject: AarProject, variant: string) {
3225
const tasks = ['publishToMavenLocal'];
3326

34-
await runGradleAar({
35-
tasks,
36-
aarProject,
37-
variant: args.variant,
38-
});
27+
await runGradleAar({ tasks, aarProject, variant });
3928
outro('Success 🎉.');
4029
}
4130

42-
function normalizeArgs(args: PackageAarFlags) {
43-
if (!args.variant) {
44-
args.variant = 'debug';
31+
function normalizeVariant(variant: string) {
32+
if (!variant) {
33+
variant = 'debug';
4534
}
4635
}
4736

packages/platform-ios/src/lib/commands/signIos.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import type { PluginApi } from '@rock-js/config';
22
import { modifyApp, modifyIpa } from '@rock-js/platform-apple-helpers';
3-
import type { RockCLIOptions } from 'packages/tools/dist/src/index.js';
3+
import type { RockCLIOptions } from '@rock-js/tools';
44

55
export type SignFlags = {
66
app: string;

packages/plugin-brownfield-android/src/lib/pluginBrownfieldAndroid.ts

Lines changed: 42 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -11,44 +11,54 @@ import {
1111
import { intro, RockError } from '@rock-js/tools';
1212

1313
const getAarConfig = (
14-
args: PackageAarFlags,
14+
moduleName: string | undefined,
1515
androidConfig: AndroidProjectConfig,
1616
) => {
1717
const config = {
1818
sourceDir: androidConfig.sourceDir,
19-
moduleName: args.moduleName ?? '',
19+
moduleName: moduleName ?? '',
2020
};
2121
return config;
2222
};
2323

24-
export const pluginBrownfieldAndroidPackageAction = async (
25-
args: PackageAarFlags,
26-
apiSubset: Pick<PluginApi, 'getProjectRoot'>,
27-
pluginConfig?: AndroidProjectConfig,
28-
) => {
24+
export const packageAarAction = async ({
25+
variant,
26+
moduleName,
27+
projectRoot,
28+
pluginConfig,
29+
}: {
30+
variant: string;
31+
moduleName: string | undefined;
32+
projectRoot: string;
33+
pluginConfig?: AndroidProjectConfig;
34+
}) => {
2935
intro('Creating an AAR file');
3036

31-
const androidConfig = projectConfig(apiSubset.getProjectRoot(), pluginConfig);
37+
const androidConfig = projectConfig(projectRoot, pluginConfig);
3238

3339
if (androidConfig) {
34-
const config = getAarConfig(args, androidConfig);
35-
await packageAar(config, args);
40+
const config = getAarConfig(moduleName, androidConfig);
41+
await packageAar(config, variant);
3642
} else {
3743
throw new RockError('Android project not found.');
3844
}
3945
};
4046

41-
export const pluginBrownfieldAndroidPublishAction = async (
42-
args: PackageAarFlags,
43-
apiSubset: Pick<PluginApi, 'getProjectRoot'>,
44-
pluginConfig?: AndroidProjectConfig,
45-
) => {
47+
export const publishLocalAarAction = async ({
48+
moduleName,
49+
projectRoot,
50+
pluginConfig,
51+
}: {
52+
moduleName: string | undefined;
53+
projectRoot: string;
54+
pluginConfig?: AndroidProjectConfig;
55+
}) => {
4656
intro('Publishing AAR');
4757

48-
const androidConfig = projectConfig(apiSubset.getProjectRoot(), pluginConfig);
58+
const androidConfig = projectConfig(projectRoot, pluginConfig);
4959

5060
if (androidConfig) {
51-
const config = getAarConfig(args, androidConfig);
61+
const config = getAarConfig(moduleName, androidConfig);
5262
await publishLocalAar(config);
5363
} else {
5464
throw new RockError('Android project not found.');
@@ -62,16 +72,27 @@ export const pluginBrownfieldAndroid =
6272
name: 'package:aar',
6373
description:
6474
'Produces an AAR file suitable for including React Native app in native projects.',
65-
action: (args: PackageAarFlags) =>
66-
pluginBrownfieldAndroidPackageAction(args, api, pluginConfig),
75+
action: (args: PackageAarFlags) => {
76+
return packageAarAction({
77+
variant: args.variant,
78+
moduleName: args.moduleName,
79+
projectRoot: api.getProjectRoot(),
80+
pluginConfig,
81+
});
82+
},
6783
options: packageAarOptions,
6884
});
6985

7086
api.registerCommand({
7187
name: 'publish-local:aar',
7288
description: 'Publishes a AAR to local maven repo',
73-
action: async (args: PackageAarFlags) =>
74-
pluginBrownfieldAndroidPublishAction(args, api, pluginConfig),
89+
action: async (args: PackageAarFlags) => {
90+
return publishLocalAarAction({
91+
moduleName: args.moduleName,
92+
projectRoot: api.getProjectRoot(),
93+
pluginConfig,
94+
});
95+
},
7596
options: publishLocalAarOptions,
7697
});
7798

packages/plugin-brownfield-ios/src/lib/pluginBrownfieldIos.ts

Lines changed: 35 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -10,28 +10,34 @@ import {
1010
getValidProjectConfig,
1111
mergeFrameworks,
1212
} from '@rock-js/platform-apple-helpers';
13+
import type { FingerprintSources, RemoteBuildCache } from '@rock-js/tools';
1314
import { colorLink, intro, logger, outro, relativeToCwd } from '@rock-js/tools';
1415
import { copyHermesXcframework } from './copyHermesXcframework.js';
1516

1617
const buildOptions = getBuildOptions({ platformName: 'ios' });
1718

18-
export const pluginBrownfieldIosPackageAction = async (
19+
export const packageIosAction = async (
1920
args: BuildFlags,
20-
apiSubset: Pick<
21-
PluginApi,
22-
| 'getReactNativeVersion'
23-
| 'getProjectRoot'
24-
| 'getReactNativePath'
25-
| 'getFingerprintOptions'
26-
| 'getRemoteCacheProvider'
27-
| 'getUsePrebuiltRNCore'
28-
>,
21+
{
22+
projectRoot,
23+
reactNativePath,
24+
reactNativeVersion,
25+
fingerprintOptions,
26+
remoteCacheProvider,
27+
usePrebuiltRNCore,
28+
}: {
29+
projectRoot: string;
30+
reactNativePath: string;
31+
reactNativeVersion: string;
32+
fingerprintOptions: FingerprintSources;
33+
remoteCacheProvider: null | (() => RemoteBuildCache) | undefined;
34+
usePrebuiltRNCore: number | undefined;
35+
},
2936
pluginConfig?: IOSProjectConfig,
3037
) => {
3138
intro('Packaging iOS project');
3239

3340
// 1) Build the project
34-
const projectRoot = apiSubset.getProjectRoot();
3541
const iosConfig = getValidProjectConfig('ios', projectRoot, pluginConfig);
3642
const { derivedDataDir } = getBuildPaths('ios');
3743

@@ -50,11 +56,11 @@ export const pluginBrownfieldIosPackageAction = async (
5056
projectConfig: iosConfig,
5157
args: { ...args, destination, buildFolder },
5258
projectRoot,
53-
reactNativePath: apiSubset.getReactNativePath(),
54-
fingerprintOptions: apiSubset.getFingerprintOptions(),
59+
reactNativePath,
60+
fingerprintOptions,
5561
brownfield: true,
56-
remoteCacheProvider: await apiSubset.getRemoteCacheProvider(),
57-
usePrebuiltRNCore: apiSubset.getUsePrebuiltRNCore(),
62+
remoteCacheProvider,
63+
usePrebuiltRNCore,
5864
});
5965

6066
// 2) Merge the .framework outputs of the framework target
@@ -105,7 +111,7 @@ export const pluginBrownfieldIosPackageAction = async (
105111
copyHermesXcframework({
106112
sourceDir,
107113
destinationDir: frameworkTargetOutputDir,
108-
reactNativeVersion: apiSubset.getReactNativeVersion(),
114+
reactNativeVersion,
109115
});
110116

111117
// 5) Inform the user
@@ -124,8 +130,19 @@ export const pluginBrownfieldIos =
124130
api.registerCommand({
125131
name: 'package:ios',
126132
description: 'Emit a .xcframework file from React Native code.',
127-
action: (args: BuildFlags) =>
128-
pluginBrownfieldIosPackageAction(args, api, pluginConfig),
133+
action: async (args: BuildFlags) =>
134+
packageIosAction(
135+
args,
136+
{
137+
projectRoot: api.getProjectRoot(),
138+
reactNativePath: api.getReactNativePath(),
139+
reactNativeVersion: api.getReactNativeVersion(),
140+
fingerprintOptions: api.getFingerprintOptions(),
141+
remoteCacheProvider: await api.getRemoteCacheProvider(),
142+
usePrebuiltRNCore: api.getUsePrebuiltRNCore(),
143+
},
144+
pluginConfig,
145+
),
129146
options: buildOptions,
130147
});
131148

0 commit comments

Comments
 (0)