1010 */
1111'use strict' ;
1212
13+ const android = require ( './android' ) ;
1314const Config = require ( '../util/Config' ) ;
15+ const findPlugins = require ( './findPlugins' ) ;
16+ const findAssets = require ( './findAssets' ) ;
17+ const ios = require ( './ios' ) ;
18+ const windows = require ( './windows' ) ;
19+ const wrapCommands = require ( './wrapCommands' ) ;
1420
15- const defaultConfig = require ( './default.config' ) ;
21+ const flatten = require ( 'lodash' ) . flatten ;
1622const minimist = require ( 'minimist' ) ;
1723const path = require ( 'path' ) ;
1824
@@ -35,6 +41,61 @@ export type RNConfig = {
3541 getDependencyConfig ( pkgName : string ) : Object ,
3642} ;
3743
44+ const getRNPMConfig = ( folder ) =>
45+ // $FlowFixMe non-literal require
46+ require ( path . join ( folder , './package.json' ) ) . rnpm || { } ;
47+
48+ const attachPackage = ( command , pkg ) => Array . isArray ( command )
49+ ? command . map ( cmd => attachPackage ( cmd , pkg ) )
50+ : { ...command , pkg } ;
51+
52+ const defaultRNConfig = {
53+ getProjectCommands ( ) : Array < CommandT > {
54+ const appRoot = process . cwd ( ) ;
55+ const plugins = findPlugins ( [ appRoot ] )
56+ . map ( pathToCommands => {
57+ const name = pathToCommands . split ( path . sep ) [ 0 ] ;
58+
59+ return attachPackage (
60+ // $FlowFixMe non-literal require
61+ require ( path . join ( appRoot , 'node_modules' , pathToCommands ) ) ,
62+ // $FlowFixMe non-literal require
63+ require ( path . join ( appRoot , 'node_modules' , name , 'package.json' ) )
64+ ) ;
65+ } ) ;
66+
67+ return flatten ( plugins ) ;
68+ } ,
69+
70+ getProjectConfig ( ) : Object {
71+ const folder = process . cwd ( ) ;
72+ const rnpm = getRNPMConfig ( folder ) ;
73+
74+ return Object . assign ( { } , rnpm , {
75+ ios : ios . projectConfig ( folder , rnpm . ios || { } ) ,
76+ android : android . projectConfig ( folder , rnpm . android || { } ) ,
77+ windows : windows . projectConfig ( folder , rnpm . windows || { } ) ,
78+ assets : findAssets ( folder , rnpm . assets ) ,
79+ } ) ;
80+ } ,
81+
82+ getDependencyConfig ( packageName : string ) {
83+ const folder = path . join ( process . cwd ( ) , 'node_modules' , packageName ) ;
84+ const rnpm = getRNPMConfig (
85+ path . join ( process . cwd ( ) , 'node_modules' , packageName )
86+ ) ;
87+
88+ return Object . assign ( { } , rnpm , {
89+ ios : ios . dependencyConfig ( folder , rnpm . ios || { } ) ,
90+ android : android . dependencyConfig ( folder , rnpm . android || { } ) ,
91+ windows : windows . dependencyConfig ( folder , rnpm . windows || { } ) ,
92+ assets : findAssets ( folder , rnpm . assets ) ,
93+ commands : wrapCommands ( rnpm . commands ) ,
94+ params : rnpm . params || [ ] ,
95+ } ) ;
96+ } ,
97+ } ;
98+
3899/**
39100 * Loads the CLI configuration
40101 */
@@ -44,7 +105,7 @@ function getCliConfig(): RNConfig {
44105 ? Config . loadFile ( path . resolve ( __dirname , cliArgs . config ) )
45106 : Config . findOptional ( __dirname ) ;
46107
47- return { ...defaultConfig , ...config } ;
108+ return { ...defaultRNConfig , ...config } ;
48109}
49110
50111module . exports = getCliConfig ( ) ;
0 commit comments