UNPKG

react-native-autotrack-growingio

Version:

GrowingIO autotrack SDK for ReactNative

225 lines (205 loc) 6.15 kB
#!/usr/bin/env node var path = require("path"); var injector = require("./GIOInjector"); var packageObj = require("./package.json"); var userPackageObj = require("../../package.json"); // version for hook.js var HOOK_VERSION = packageObj["version"]; var OPT_RUN = 0; var OPT_DISCARD = 0; var OPT_VERSION = 0; var OPT_HELP = 0; var OPT_UNKNOWN = 0; // react-native path var reactNativePath; // react-navigation path var reactNavigationPath; var reactNavigationPath3X; var reactNavigationPath6X; // react-native-navigation path var reactNativeNavigationPath; switch (process.argv[2]) { case "-v": case "--version": OPT_VERSION = 1; break; case "-run": OPT_RUN = 1; break; case "-discard": OPT_DISCARD = 1; break; case "-h": case "--help": OPT_HELP = 1; break; default: OPT_UNKNOWN = 1; } if (OPT_UNKNOWN == 1) { console.log(""); if (OPT_RUN == 1) { console.log("You need to see the details of the -run command"); } else if (OPT_DISCARD == 1) { console.log("You need to see the details of the -discard command"); } else { console.log("Unknown options: " + process.argv[2]); } console.log(""); OPT_HELP = 1; } if (OPT_HELP == 1) { console.log(""); console.log("usage: hook.js [[-v | --version] hook.js version]"); console.log(" hook.js [[-run] hook react native js]"); console.log(" hook.js [[-discard] discard hook]"); console.log(" hook.js [-h, --help: this help]"); return; } if (OPT_VERSION == 1) { console.log(""); console.log("hook.js version " + HOOK_VERSION); console.log(""); return; } var dir = path.resolve(__dirname, ".."); /** * path config */ if ( userPackageObj && userPackageObj["GrowingIO"] && userPackageObj["GrowingIO"]["path"] ) { var pathObj = userPackageObj["GrowingIO"]["path"]; // react-native path var rnativePath = pathObj["react-native"]; if (rnativePath && rnativePath.length > 0) { if (!rnativePath.endsWith("/")) { rnativePath += "/"; } reactNativePath = rnativePath; } else { reactNativePath = dir + "/react-native"; } // react-navigation path var rnavigationPath = pathObj["react-navigation"]; if (rnavigationPath && rnavigationPath.length > 0) { if (!rnavigationPath.endsWith("/")) { rnavigationPath += "/"; } reactNavigationPath = rnavigationPath; } else { reactNavigationPath = dir + "/react-navigation"; } // react-native-navigation path var rnnPath = pathObj["react-native-navigation"]; if (rnnPath && rnnPath.length > 0) { if (!rnnPath.endsWith("/")) { rnnPath += "/"; } reactNativeNavigationPath = rnnPath; } else { reactNativeNavigationPath = dir + "/react-native-navigation"; } } else { // react-native path reactNativePath = dir + "/react-native"; // react-navigation path reactNavigationPath = dir + "/react-navigation"; reactNavigationPath3X = dir + "/@react-navigation/native"; reactNavigationPath6X = dir + "/@react-navigation/core"; // react-native-navigation path reactNativeNavigationPath = dir + "/react-native-navigation"; } /** * hook config */ if (OPT_RUN == 1) { if ( userPackageObj && userPackageObj["GrowingIO"] && userPackageObj["GrowingIO"]["hook"] ) { var hookObj = userPackageObj["GrowingIO"]["hook"]; var reactNavigationHook = hookObj["react-navigation"]; if (reactNavigationHook && reactNavigationHook == "ignore") { } else { injector.injectReactNavigation(reactNavigationPath); } var reactNativeNavigationHook = hookObj["react-native-navigation"]; if (reactNativeNavigationHook && reactNativeNavigationHook == "ignore") { } else { injector.injectReactNativeNavigation(reactNativeNavigationPath); } } else if ( userPackageObj && userPackageObj["GrowingIO"] && userPackageObj["GrowingIO"]["path"] ) { var path = userPackageObj["GrowingIO"]["path"]; if (path["react-navigation-3x"]) { injector.injectReactNavigation3(`${dir}/${path["react-navigation-3x"]}`); } if (path["react-navigation-4x"]) { injector.injectReactNavigation4(`${dir}/${path["react-navigation-4x"]}`); } // 5x、6x 均使用官方建议page采集点 if (path["react-navigation-5x"]) { injector.injectReactNavigation6(`${dir}/${path["react-navigation-5x"]}`); } if (path["react-navigation-6x"]) { injector.injectReactNavigation6(`${dir}/${path["react-navigation-6x"]}`); } } else { injector.injectReactNavigation(reactNavigationPath); injector.injectReactNavigation3(reactNavigationPath3X); injector.injectReactNavigation4(reactNavigationPath3X); injector.injectReactNavigation6(reactNavigationPath6X); injector.injectReactNativeNavigation(reactNativeNavigationPath); } injector.injectReactNative(reactNativePath); return; } if (OPT_DISCARD == 1) { injector.injectReactNative(reactNativePath, true); if ( userPackageObj && userPackageObj["GrowingIO"] && userPackageObj["GrowingIO"]["path"] ) { var path = userPackageObj["GrowingIO"]["path"]; if (path["react-navigation-3x"]) { injector.injectReactNavigation3( `${dir}/${path["react-navigation-3x"]}`, true ); } if (path["react-navigation-4x"]) { injector.injectReactNavigation4( `${dir}/${path["react-navigation-4x"]}`, true ); } // 5x、6x 均使用官方建议page采集点 if (path["react-navigation-5x"]) { injector.injectReactNavigation6( `${dir}/${path["react-navigation-5x"]}`, true ); } if (path["react-navigation-6x"]) { injector.injectReactNavigation6( `${dir}/${path["react-navigation-6x"]}`, true ); } } else { injector.injectReactNavigation(reactNavigationPath, true); injector.injectReactNavigation3(reactNavigationPath3X, true); injector.injectReactNavigation4(reactNavigationPath3X, true); injector.injectReactNavigation6(reactNavigationPath6X, true); injector.injectReactNativeNavigation(reactNativeNavigationPath, true); } return; }