Skip to content

Commit fa1d6a7

Browse files
committed
Update unlink interface (#79)
* Initial commit * Fix errors * Resolve * Fixes
1 parent bd8edc1 commit fa1d6a7

File tree

4 files changed

+55
-44
lines changed

4 files changed

+55
-44
lines changed

src/android/registerNativeModule.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,4 @@ module.exports = function registerNativeAndroidModule(
3535
projectConfig.mainActivityPath,
3636
makeImportPatch(androidConfig.packageImportPath)
3737
);
38-
39-
return true;
4038
};

src/android/unregisterNativeModule.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,4 @@ module.exports = function unregisterNativeAndroidModule(
4444
projectConfig.mainActivityPath,
4545
makeImportPatch(androidConfig.packageImportPath)
4646
);
47-
48-
return true;
4947
};

src/ios/unregisterNativeModule.js

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ const getProducts = require('./getProducts');
66
const getHeadersInFolder = require('./getHeadersInFolder');
77
const isEmpty = require('lodash').isEmpty;
88
const getHeaderSearchPath = require('./getHeaderSearchPath');
9-
const hasLibraryImported = require('./hasLibraryImported');
109
const removeProjectFromProject = require('./removeProjectFromProject');
1110
const removeProjectFromLibraries = require('./removeProjectFromLibraries');
1211
const removeFromStaticLibraries = require('./removeFromStaticLibraries');
@@ -24,9 +23,6 @@ module.exports = function unregisterNativeModule(dependencyConfig, projectConfig
2423
const dependencyProject = xcode.project(dependencyConfig.pbxprojPath).parseSync();
2524

2625
const libraries = getGroup(project, projectConfig.libraryFolder);
27-
if (!libraries || !hasLibraryImported(libraries, dependencyConfig.projectName)) {
28-
return false;
29-
}
3026

3127
const file = removeProjectFromProject(
3228
project,
@@ -55,6 +51,4 @@ module.exports = function unregisterNativeModule(dependencyConfig, projectConfig
5551
projectConfig.pbxprojPath,
5652
project.writeSync()
5753
);
58-
59-
return true;
6054
};

src/unlink.js

Lines changed: 55 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ const log = require('npmlog');
44
const getProjectDependencies = require('./getProjectDependencies');
55
const unregisterDependencyAndroid = require('./android/unregisterNativeModule');
66
const unregisterDependencyIOS = require('./ios/unregisterNativeModule');
7+
const isInstalledAndroid = require('./android/isInstalled');
8+
const isInstalledIOS = require('./ios/isInstalled');
79
const unlinkAssetsAndroid = require('./android/unlinkAssets');
810
const unlinkAssetsIOS = require('./ios/unlinkAssets');
911
const getDependencyConfig = require('./getDependencyConfig');
@@ -13,14 +15,58 @@ const flatten = require('lodash').flatten;
1315

1416
log.heading = 'rnpm-link';
1517

18+
const unlinkDependencyAndroid = (androidProject, dependency, packageName) => {
19+
if (!androidProject || !dependency.android) {
20+
return;
21+
}
22+
23+
const isInstalled = isInstalledAndroid(androidProject, packageName);
24+
25+
if (!isInstalled) {
26+
log.info(`Android module ${packageName} is not installed`);
27+
return;
28+
}
29+
30+
log.info(`Unlinking ${packageName} android dependency`);
31+
32+
unregisterDependencyAndroid(packageName, dependency.android, androidProject);
33+
34+
log.info(`Android module ${packageName} has been successfully unlinked`);
35+
};
36+
37+
const unlinkDependencyIOS = (iOSProject, dependency, packageName) => {
38+
if (!iOSProject || !dependency.ios) {
39+
return;
40+
}
41+
42+
const isInstalled = isInstalledIOS(iOSProject, dependency.ios);
43+
44+
if (!isInstalled) {
45+
log.info(`iOS module ${packageName} is not installed`);
46+
return;
47+
}
48+
49+
log.info(`Unlinking ${packageName} ios dependency`);
50+
51+
unregisterDependencyIOS(dependency.ios, iOSProject);
52+
53+
log.info(`iOS module ${packageName} has been successfully unlinked`);
54+
};
55+
1656
/**
1757
* Updates project and unlink specific dependency
1858
*
19-
* If optional argument [packageName] is provided, it's the only one that's checked
59+
* If optional argument [packageName] is provided, it's the only one
60+
* that's checked
2061
*/
2162
module.exports = function unlink(config, args) {
63+
const packageName = args[0];
64+
65+
var project;
66+
var dependency;
67+
2268
try {
23-
const project = config.getProjectConfig();
69+
project = config.getProjectConfig();
2470
} catch (err) {
2571
log.error(
2672
'ERRPACKAGEJSON',
@@ -29,10 +75,8 @@ module.exports = function unlink(config, args) {
2975
return Promise.reject(err);
3076
}
3177

32-
const packageName = args[0];
33-
3478
try {
35-
const dependency = config.getDependencyConfig(packageName);
79+
dependency = config.getDependencyConfig(packageName);
3680
} catch (err) {
3781
log.warn(
3882
'ERRINVALIDPROJ',
@@ -41,35 +85,10 @@ module.exports = function unlink(config, args) {
4185
return Promise.reject(err);
4286
}
4387

44-
const allDependencies = getDependencyConfig(config, getProjectDependencies());
45-
46-
if (project.android && dependency.android) {
47-
log.info(`Unlinking ${packageName} android dependency`);
88+
unlinkDependencyAndroid(project.android, dependency, packageName);
89+
unlinkDependencyIOS(project.ios, dependency, packageName);
4890

49-
const didUnlinkAndroid = unregisterDependencyAndroid(
50-
packageName,
51-
dependency.android,
52-
project.android
53-
);
54-
55-
if (didUnlinkAndroid) {
56-
log.info(`Android module ${packageName} has been successfully unlinked`);
57-
} else {
58-
log.info(`Android module ${packageName} is not linked yet`);
59-
}
60-
}
61-
62-
if (project.ios && dependency.ios) {
63-
log.info(`Unlinking ${packageName} ios dependency`);
64-
65-
const didUnlinkIOS = unregisterDependencyIOS(dependency.ios, project.ios);
66-
67-
if (didUnlinkIOS) {
68-
log.info(`iOS module ${packageName} has been successfully unlinked`);
69-
} else {
70-
log.info(`iOS module ${packageName} is not linked yet`);
71-
}
72-
}
91+
const allDependencies = getDependencyConfig(config, getProjectDependencies());
7392

7493
const assets = difference(
7594
dependency.assets,
@@ -90,7 +109,9 @@ module.exports = function unlink(config, args) {
90109
unlinkAssetsAndroid(assets, project.android.assetsPath);
91110
}
92111

93-
log.info(`${packageName} assets has been successfully unlinked from your project`);
112+
log.info(
113+
`${packageName} assets has been successfully unlinked from your project`
114+
);
94115

95116
return Promise.resolve();
96117
};

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy