Skip to content

Commit 8ef2a97

Browse files
thymikeeEsemesek
authored andcommitted
chore: simplify cli structure and common tools (react-native-community#201)
Summary: --------- Cleaning up the `packages/cli` structure. This might be pretty disruptive to already open PRs :D. - Renamed `core` -> `tools` - Moved `util` to `tools` - Flatten-out `server/util` - Create `commands` dir and put all commands there ``` packages/cli/src ├── bin.js ├── cliEntry.js ├── commands │   ├── bundle │   ├── dependencies │   ├── eject │   ├── index.js │   ├── info │   ├── init │   ├── install │   ├── library │   ├── link │   ├── logAndroid │   ├── logIOS │   ├── runAndroid │   ├── runIOS │   ├── server │   └── upgrade ├── index.js └── tools ├── ... ``` Fixes react-native-community#49 Test Plan: ---------- CI green
1 parent 75c86c8 commit 8ef2a97

File tree

260 files changed

+153
-152
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

260 files changed

+153
-152
lines changed

packages/cli/src/__mocks__/beeper.js

-13
This file was deleted.

packages/cli/src/cliEntry.js

+6-6
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@ import childProcess from 'child_process';
1212
import commander from 'commander';
1313
import minimist from 'minimist';
1414
import path from 'path';
15-
import type { CommandT, ContextT } from './core/types.flow';
16-
import getCommands from './core/getCommands';
17-
import getLegacyConfig from './core/getLegacyConfig';
18-
import init from './init/init';
19-
import assertRequiredOptions from './util/assertRequiredOptions';
20-
import logger from './util/logger';
15+
import type { CommandT, ContextT } from './tools/types.flow';
16+
import getLegacyConfig from './tools/getLegacyConfig';
17+
import { getCommands } from './commands';
18+
import init from './commands/init/init';
19+
import assertRequiredOptions from './tools/assertRequiredOptions';
20+
import logger from './tools/logger';
2121
import pkg from '../package.json';
2222

2323
commander

packages/cli/src/bundle/buildBundle.js renamed to packages/cli/src/commands/bundle/buildBundle.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@ import Server from 'metro/src/Server';
1212
import outputBundle from 'metro/src/shared/output/bundle';
1313
import path from 'path';
1414
import type { CommandLineArgs } from './bundleCommandLineArgs';
15-
import type { ContextT } from '../core/types.flow';
15+
import type { ContextT } from '../../tools/types.flow';
1616
import saveAssets from './saveAssets';
17-
import loadMetroConfig from '../util/loadMetroConfig';
18-
import logger from '../util/logger';
17+
import loadMetroConfig from '../../tools/loadMetroConfig';
18+
import logger from '../../tools/logger';
1919

2020
async function buildBundle(
2121
args: CommandLineArgs,

packages/cli/src/bundle/saveAssets.js renamed to packages/cli/src/commands/bundle/saveAssets.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import fs from 'fs';
1414
import filterPlatformAssetScales from './filterPlatformAssetScales';
1515
import getAssetDestPathAndroid from './getAssetDestPathAndroid';
1616
import getAssetDestPathIOS from './getAssetDestPathIOS';
17-
import logger from '../util/logger';
17+
import logger from '../../tools/logger';
1818

1919
function saveAssets(assets, platform, assetsDest) {
2020
if (!assetsDest) {

packages/cli/src/eject/eject.js renamed to packages/cli/src/commands/eject/eject.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99

1010
import path from 'path';
1111
import fs from 'fs';
12-
import copyProjectTemplateAndReplace from '../generator/copyProjectTemplateAndReplace';
13-
import logger from '../util/logger';
12+
import copyProjectTemplateAndReplace from '../../tools/generator/copyProjectTemplateAndReplace';
13+
import logger from '../../tools/logger';
1414

1515
/**
1616
* The eject command re-creates the `android` and `ios` native folders. Because native code can be

packages/cli/src/core/getCommands.js renamed to packages/cli/src/commands/index.js

+39-33
Original file line numberDiff line numberDiff line change
@@ -4,27 +4,31 @@
44

55
import path from 'path';
66

7-
import findPlugins from './findPlugins';
8-
import logger from '../util/logger';
7+
import findPlugins from '../tools/findPlugins';
8+
import logger from '../tools/logger';
99

10-
import type { CommandT, ProjectCommandT, LocalCommandT } from './types.flow';
10+
import type {
11+
CommandT,
12+
ProjectCommandT,
13+
LocalCommandT,
14+
} from '../tools/types.flow';
1115

12-
import server from '../server/server';
13-
import runIOS from '../runIOS/runIOS';
14-
import runAndroid from '../runAndroid/runAndroid';
15-
import library from '../library/library';
16-
import bundle from '../bundle/bundle';
17-
import ramBundle from '../bundle/ramBundle';
18-
import eject from '../eject/eject';
19-
import link from '../link/link';
20-
import unlink from '../link/unlink';
21-
import install from '../install/install';
22-
import uninstall from '../install/uninstall';
23-
import upgrade from '../upgrade/upgrade';
24-
import logAndroid from '../logAndroid/logAndroid';
25-
import logIOS from '../logIOS/logIOS';
26-
import dependencies from '../dependencies/dependencies';
27-
import info from '../info/info';
16+
import server from './server/server';
17+
import runIOS from './runIOS/runIOS';
18+
import runAndroid from './runAndroid/runAndroid';
19+
import library from './library/library';
20+
import bundle from './bundle/bundle';
21+
import ramBundle from './bundle/ramBundle';
22+
import eject from './eject/eject';
23+
import link from './link/link';
24+
import unlink from './link/unlink';
25+
import install from './install/install';
26+
import uninstall from './install/uninstall';
27+
import upgrade from './upgrade/upgrade';
28+
import logAndroid from './logAndroid/logAndroid';
29+
import logIOS from './logIOS/logIOS';
30+
import dependencies from './dependencies/dependencies';
31+
import info from './info/info';
2832

2933
/**
3034
* List of built-in commands
@@ -97,18 +101,20 @@ const loadProjectCommands = (root: string): Array<ProjectCommandT> => {
97101
/**
98102
* Loads all the commands inside a given `root` folder
99103
*/
100-
export default (root: string): Array<CommandT> => [
101-
...loadLocalCommands,
102-
{
103-
name: 'init',
104-
func: () => {
105-
logger.warn(
106-
[
107-
'Looks like a React Native project already exists in the current',
108-
'folder. Run this command from a different folder or remove node_modules/react-native',
109-
].join('\n')
110-
);
104+
export function getCommands(root: string): Array<CommandT> {
105+
return [
106+
...loadLocalCommands,
107+
{
108+
name: 'init',
109+
func: () => {
110+
logger.warn(
111+
[
112+
'Looks like a React Native project already exists in the current',
113+
'folder. Run this command from a different folder or remove node_modules/react-native',
114+
].join('\n')
115+
);
116+
},
111117
},
112-
},
113-
...loadProjectCommands(root),
114-
];
118+
...loadProjectCommands(root),
119+
];
120+
}

packages/cli/src/info/info.js renamed to packages/cli/src/commands/info/info.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*/
99

1010
import envinfo from 'envinfo';
11-
import logger from '../util/logger';
11+
import logger from '../../tools/logger';
1212

1313
const info = function getInfo(argv, ctx, options) {
1414
try {

packages/cli/src/init/init.js renamed to packages/cli/src/commands/init/init.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ import fs from 'fs';
1111
import minimist from 'minimist';
1212
import path from 'path';
1313
import process from 'process';
14-
import printRunInstructions from '../generator/printRunInstructions';
15-
import { createProjectFromTemplate } from '../generator/templates';
16-
import PackageManager from '../util/PackageManager';
17-
import logger from '../util/logger';
14+
import printRunInstructions from '../../tools/generator/printRunInstructions';
15+
import { createProjectFromTemplate } from '../../tools/generator/templates';
16+
import PackageManager from '../../tools/PackageManager';
17+
import logger from '../../tools/logger';
1818

1919
/**
2020
* Creates the template for a React Native project given the provided

packages/cli/src/install/install.js renamed to packages/cli/src/commands/install/install.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
* @flow
88
*/
99

10-
import type { ContextT } from '../core/types.flow';
11-
import logger from '../util/logger';
12-
import PackageManager from '../util/PackageManager';
10+
import type { ContextT } from '../../tools/types.flow';
11+
import logger from '../../tools/logger';
12+
import PackageManager from '../../tools/PackageManager';
1313
import link from '../link/link';
1414

1515
async function install(args: Array<string>, ctx: ContextT) {

packages/cli/src/install/uninstall.js renamed to packages/cli/src/commands/install/uninstall.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
* @flow
88
*/
99

10-
import type { ContextT } from '../core/types.flow';
11-
import logger from '../util/logger';
12-
import PackageManager from '../util/PackageManager';
10+
import type { ContextT } from '../../tools/types.flow';
11+
import logger from '../../tools/logger';
12+
import PackageManager from '../../tools/PackageManager';
1313
import link from '../link/unlink';
1414

1515
async function uninstall(args: Array<string>, ctx: ContextT) {

packages/cli/src/library/library.js renamed to packages/cli/src/commands/library/library.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@
99

1010
import fs from 'fs';
1111
import path from 'path';
12-
import copyAndReplace from '../util/copyAndReplace';
13-
import isValidPackageName from '../util/isValidPackageName';
14-
import walk from '../util/walk';
15-
import logger from '../util/logger';
12+
import copyAndReplace from '../../tools/copyAndReplace';
13+
import isValidPackageName from '../../tools/isValidPackageName';
14+
import walk from '../../tools/walk';
15+
import logger from '../../tools/logger';
1616

1717
/**
1818
* Creates a new native library with the given name

packages/cli/src/link/__tests__/getDependencyConfig-test.js renamed to packages/cli/src/commands/link/__tests__/getDependencyConfig-test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ const platforms = {
1717
},
1818
};
1919

20-
jest.setMock('../../core/getPackageConfiguration', folder => {
20+
jest.setMock('../../../tools/getPackageConfiguration', folder => {
2121
if (folder === '/root/node_modules/abcd') {
2222
throw new Error('Cannot require');
2323
}

packages/cli/src/link/__tests__/link-test.js renamed to packages/cli/src/commands/link/__tests__/link-test.js

+6-6
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
*/
1010

1111
jest.mock('chalk', () => ({ grey: str => str }));
12-
jest.mock('../../util/logger');
12+
jest.mock('../../../tools/logger');
1313

1414
const context = {
1515
root: process.cwd(),
@@ -145,7 +145,7 @@ describe('link', () => {
145145
);
146146
jest.doMock('../ios/registerNativeModule.js', () => jest.fn());
147147

148-
jest.doMock('../../core/getAssets', () => projectAssets);
148+
jest.doMock('../../../tools/getAssets', () => projectAssets);
149149

150150
const copyAssets = jest.fn();
151151

@@ -157,7 +157,7 @@ describe('link', () => {
157157
link(['react-native-blur'], context, {}).then(() => {
158158
expect(copyAssets.mock.calls).toHaveLength(2);
159159
expect(copyAssets.mock.calls[0][0]).toEqual(dependencyAssets);
160-
jest.unmock('../../core/getAssets');
160+
jest.unmock('../../../tools/getAssets');
161161
done();
162162
});
163163
});
@@ -224,7 +224,7 @@ describe('link', () => {
224224
commands: {},
225225
}));
226226

227-
jest.doMock('../../core/getPlatforms', () => {
227+
jest.doMock('../../../tools/getPlatforms', () => {
228228
const fn = () => ({
229229
ios: { linkConfig: require('../ios').default },
230230
android: { linkConfig: require('../android').default },
@@ -256,7 +256,7 @@ describe('link', () => {
256256

257257
it('should link only for specific platforms if --platforms is used', async () => {
258258
jest.doMock('../getProjectDependencies', () => () => ['react-native-maps']);
259-
jest.doMock('../../core/getPackageConfiguration', () => () => ({
259+
jest.doMock('../../../tools/getPackageConfiguration', () => () => ({
260260
assets: [],
261261
}));
262262

@@ -273,7 +273,7 @@ describe('link', () => {
273273
register: registerIOSNativeModule,
274274
});
275275

276-
jest.doMock('../../core/getPlatforms', () => {
276+
jest.doMock('../../../tools/getPlatforms', () => {
277277
const fn = () => ({
278278
android: { linkConfig: genericAndroidLinkConfig },
279279
ios: { linkConfig: genericIOSLinkConfig },

packages/cli/src/link/getDependencyConfig.js renamed to packages/cli/src/commands/link/getDependencyConfig.js

+5-5
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@ import type {
77
PlatformsT,
88
ContextT,
99
DependenciesConfig,
10-
} from '../core/types.flow';
10+
} from '../../tools/types.flow';
1111

12-
import getPackageConfiguration from '../core/getPackageConfiguration';
13-
import getParams from '../core/getParams';
14-
import getHooks from '../core/getHooks';
15-
import getAssets from '../core/getAssets';
12+
import getPackageConfiguration from '../../tools/getPackageConfiguration';
13+
import getParams from '../../tools/getParams';
14+
import getHooks from '../../tools/getHooks';
15+
import getAssets from '../../tools/getAssets';
1616

1717
export default function getDependencyConfig(
1818
ctx: ContextT,

packages/cli/src/link/getProjectConfig.js renamed to packages/cli/src/commands/link/getProjectConfig.js

+6-2
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,13 @@
22
* @flow
33
*/
44

5-
import type { PlatformsT, ContextT, ProjectConfigT } from '../core/types.flow';
5+
import type {
6+
PlatformsT,
7+
ContextT,
8+
ProjectConfigT,
9+
} from '../../tools/types.flow';
610

7-
import getPackageConfiguration from '../core/getPackageConfiguration';
11+
import getPackageConfiguration from '../../tools/getPackageConfiguration';
812

913
export default function getProjectConfig(
1014
ctx: ContextT,

packages/cli/src/link/ios/createGroupWithMessage.js renamed to packages/cli/src/commands/link/ios/createGroupWithMessage.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @format
88
*/
99

10-
import log from '../../util/logger';
10+
import log from '../../../tools/logger';
1111
import createGroup from './createGroup';
1212
import getGroup from './getGroup';
1313

packages/cli/src/link/ios/unlinkAssets.js renamed to packages/cli/src/commands/link/ios/unlinkAssets.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import fs from 'fs-extra';
1010
import path from 'path';
1111
import xcode from 'xcode';
1212
import { difference } from 'lodash';
13-
import log from '../../util/logger';
13+
import log from '../../../tools/logger';
1414

1515
import groupFilesByType from '../groupFilesByType';
1616
import getPlist from './getPlist';

packages/cli/src/link/link.js renamed to packages/cli/src/commands/link/link.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,19 @@
88
*/
99

1010
import { pick } from 'lodash';
11-
import type { ContextT } from '../core/types.flow';
11+
import type { ContextT } from '../../tools/types.flow';
1212

1313
import promiseWaterfall from './promiseWaterfall';
14-
import logger from '../util/logger';
14+
import logger from '../../tools/logger';
1515
import getDependencyConfig from './getDependencyConfig';
1616
import commandStub from './commandStub';
1717
import promisify from './promisify';
1818
import getProjectConfig from './getProjectConfig';
1919
import linkDependency from './linkDependency';
2020
import linkAssets from './linkAssets';
2121
import linkAll from './linkAll';
22-
import findReactNativeScripts from '../util/findReactNativeScripts';
23-
import getPlatforms from '../core/getPlatforms';
22+
import findReactNativeScripts from '../../tools/findReactNativeScripts';
23+
import getPlatforms from '../../tools/getPlatforms';
2424

2525
type FlagsType = {
2626
platforms?: Array<string>,

packages/cli/src/link/linkAll.js renamed to packages/cli/src/commands/link/linkAll.js

+7-3
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,13 @@
22

33
import { uniqBy, flatten } from 'lodash';
44
import path from 'path';
5-
import type { ContextT, PlatformsT, ProjectConfigT } from '../core/types.flow';
6-
import logger from '../util/logger';
7-
import getAssets from '../core/getAssets';
5+
import type {
6+
ContextT,
7+
PlatformsT,
8+
ProjectConfigT,
9+
} from '../../tools/types.flow';
10+
import logger from '../../tools/logger';
11+
import getAssets from '../../tools/getAssets';
812
import getProjectDependencies from './getProjectDependencies';
913
import getDependencyConfig from './getDependencyConfig';
1014
import promiseWaterfall from './promiseWaterfall';

packages/cli/src/link/linkAssets.js renamed to packages/cli/src/commands/link/linkAssets.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
// @flow
22

33
import { isEmpty } from 'lodash';
4-
import type { PlatformsT, ProjectConfigT } from '../core/types.flow';
4+
import type { PlatformsT, ProjectConfigT } from '../../tools/types.flow';
55

6-
import logger from '../util/logger';
6+
import logger from '../../tools/logger';
77

88
const linkAssets = (
99
platforms: PlatformsT,

packages/cli/src/link/linkDependency.js renamed to packages/cli/src/commands/link/linkDependency.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ import type {
44
PlatformsT,
55
ProjectConfigT,
66
DependenciesConfig,
7-
} from '../core/types.flow';
8-
import logger from '../util/logger';
7+
} from '../../tools/types.flow';
8+
import logger from '../../tools/logger';
99
import pollParams from './pollParams';
10-
import { getPlatformName } from '../core/getPlatforms';
10+
import { getPlatformName } from '../../tools/getPlatforms';
1111

1212
const linkDependency = async (
1313
platforms: PlatformsT,

0 commit comments

Comments
 (0)