Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

nativescript-doctor

Package Overview
Dependencies
Maintainers
7
Versions
47
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

nativescript-doctor

Library that helps identifying if the environment can be used for development of {N} apps.

  • 1.11.1
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
128
decreased by-16.34%
Maintainers
7
Weekly downloads
 
Created
Source

nativescript-doctor

Library that helps identifying if the environment can be used for development of {N} apps.

Installation

  1. Using npm
    $ npm install nativescript-doctor --save
    

Requirements

  1. Node.js 4.3.0 or later

Usage

  • Module doctor:

    • Usage:
    import { doctor } from "nativescript-doctor"
    
    async function main() {
    	const canExecuteLocalBuildForAndroid = await doctor.canExecuteLocalBuild("Android");
    	const canExecuteLocalBuildForIos = await doctor.canExecuteLocalBuild("iOS");
    	console.log("Can execute local build for Android: ", canExecuteLocalBuildForAndroid);
    	console.log("Can execute local build for iOS: ", canExecuteLocalBuildForIos);
    }
    
    main();
    
    • Interfaces:
    /**
     * Describes methods which help identifying if the environment can be used for development of {N} apps.
     */
    interface IDoctor {
    	/**
    	 * Checks if a local build can be executed on the current machine.
    	 * @param {string} platform The platform for which to check if local build is possible.
    	 * @return {Promise<boolean>} true if local build can be executed for the provided platform.
    	 */
    	canExecuteLocalBuild(platform: string): Promise<boolean>;
    
    	/**
    	 * Executes all checks for the current environment and returns the warnings from each check.
    	 * @return {Promise<IWarning[]>} Array of all the warnings from all checks. If there are no warnings will return empty array.
    	 */
    	getWarnings(): Promise<IWarning[]>;
    }
    
    /**
     * Describes warning returned from nativescript-doctor check.
     */
    interface IWarning {
    	/**
    	 * The warning.
    	 * @type {string}
    	 */
    	warning: string;
    
    	/**
    	 * Additional information for the warning.
    	 * @type {string}
    	 */
    	additionalInformation: string;
    
    	/**
    	 * The platforms which are affected by this warning.
    	 * @type {string[]}
    	 */
    	platforms: string[];
    }
    
  • Module sysInfo:

    • Usage:
    import { sysInfo, setShouldCacheSysInfo } from "nativescript-doctor";
    
    async function main() {
    	// The default value is true. If set to false the result of each check for each element
    	// of the sys info will not be cached.
    	setShouldCacheSysInfo(false);
    
    	const javacVersion = await sysInfo.getJavaCompilerVersion();
    	console.log("javac: ", javacVersion);
    
    	const adbVersion = await sysInfo.getAdbVersion();
    	console.log("adb: ", adbVersion);
    
    	const cocoaPodsVersion = await sysInfo.getCocoaPodsVersion();
    	console.log("cocoapods: ", cocoaPodsVersion);
    
    	const gitVersion = await sysInfo.getGitVersion();
    	console.log("git: ", gitVersion);
    
    	const gradleVersion = await sysInfo.getGradleVersion();
    	console.log("gradle: ", gradleVersion);
    
    	const monoVersion = await sysInfo.getMonoVersion();
    	console.log("mono: ", monoVersion);
    
    	const nodeVersion = await sysInfo.getNodeVersion();
    	console.log("node: ", nodeVersion);
    
    	const npmVersion = await sysInfo.getNpmVersion();
    	console.log("npm: ", npmVersion);
    
    	const nodeGypVersion = await sysInfo.getNodeGypVersion();
    	console.log("node-gyp: ", nodeGypVersion);
    
    	const osName = await sysInfo.getOs();
    	console.log("os: ", osName);
    
    	const xcodeprojLocation = await sysInfo.getXCodeProjLocation();
    	console.log("xcodeproj location: ", xcodeprojLocation);
    
    	const xcodeVersion = await sysInfo.getXCodeVersion();
    	console.log("xcode: ", xcodeVersion);
    
    	const isAndroidInstalled = await sysInfo.isAndroidInstalled();
    	console.log("is Android installed: ", isAndroidInstalled);
    
    	const isITunesInstalled = await sysInfo.isITunesInstalled();
    	console.log("is iTunes installed: ", isITunesInstalled);
    
    	const isCocoaPodsWorkingCorrectly = await sysInfo.isCocoaPodsWorkingCorrectly();
    	console.log("is cocoapods working correctly: ", isCocoaPodsWorkingCorrectly);
    
    	const nativeScriptCliVersion = await sysInfo.getNativeScriptCliVersion();
    	console.log("{N} CLI version: ", nativeScriptCliVersion);
    
    	const xcprojInfo = await sysInfo.getXcprojInfo();
    	console.log("xcproj info: ", xcprojInfo);
    
    	const isCocoaPodsUpdateRequired = await sysInfo.isCocoaPodsUpdateRequired();
    	console.log("is CocoaPods update required: ", isCocoaPodsUpdateRequired);
    
    	const pythonInfo = await sysInfo.getPythonInfo();
    	console.log("python info: ", pythonInfo );
    
    	const sysInfoData = await sysInfo.getSysInfo({ projectDir: "/Users/username/myProject" });
    	console.log("sysInfo: ", sysInfoData);
    
    	const gitPath = await sysInfo.getGitPath();
    	console.log("Path to the git executable: ", gitPath);
    }
    
    main();
    
    
    • Interfaces:
    /**
     * Describes methods which helps collecting system information.
     */
    interface ISysInfo {
    	/**
    	 * Returns the currently installed Java compiler version.
    	 * @return {Promise<string>} The currently installed Java compiler version.
    	 */
    	getJavaCompilerVersion(): Promise<string>;
    
    	/**
    	 * Returns the currently installed version of Xcode.
    	 * @return {Promise<string>} Returns the currently installed version of Xcode or null if Xcode is not installed or executed on Linux or Windows.
    	 */
    	getXcodeVersion(): Promise<string>;
    
    	/**
    	 * Returns the currently installed Node.js version.
    	 * @return {Promise<string>} Returns the currently installed Node.js version.
    	 */
    	getNodeVersion(): Promise<string>;
    
    	/**
    	 * Returns the currently installed npm version.
    	 * @return {Promise<string>} Returns the currently installed npm version.
    	 */
    	getNpmVersion(): Promise<string>;
    
    	/**
    	 * Returns the currently installed node-gyp version.
    	 * @return {Promise<string>} Returns the currently installed node-gyp version. If node-gyp is not installed it will return null.
    	 */
    	getNodeGypVersion(): Promise<string>;
    
    	/**
    	 * Returns the xcodeproj location.
    	 * @return {Promise<string>} Returns the xcodeproj location. If the the xcodeproj is not installed it will return null.
    	 */
    	getXcodeprojLocation(): Promise<string>;
    
    	/**
    	 * Checks if iTunes is installed.
    	 * @return {Promise<string>} Returns true if iTunes is installed.
    	 */
    	isITunesInstalled(): Promise<boolean>;
    
    	/**
    	 * Returns the currently installed Cocoapods version.
    	 * @return {Promise<string>} Returns the currently installed Cocoapods version. It will return null if Cocoapods is not installed.
    	 */
    	getCocoaPodsVersion(): Promise<string>;
    
    	/**
    	 * Returns the os name.
    	 * @return {Promise<string>} Returns the os name.
    	 */
    	getOs(): Promise<string>;
    
    	/**
    	 * Returns the currently installed ADB version.
    	 * @param {string} pathToAdb Defines path to adb
    	 * @return {Promise<string>} Returns the currently installed ADB version. It will return null if ADB is not installed.
    	 */
    	getAdbVersion(pathToAdb?: string): Promise<string>;
    
    	/**
    	 * Checks if Android is installed.
    	 * @return {Promise<boolean>} Returns true if Android is installed.
    	 */
    	isAndroidInstalled(): Promise<boolean>;
    
    	/**
    	 * Returns the currently installed Mono version.
    	 * @return {Promise<string>} Returns the currently installed Mono version. It will return null if Mono is not installed.
    	 */
    	getMonoVersion(): Promise<string>;
    
    	/**
    	 * Returns the currently installed Git version.
    	 * @return {Promise<string>} Returns the currently installed Git version. It will return null if Git is not installed.
    	 */
    	getGitVersion(): Promise<string>;
    
    	/**
    	 * Returns the currently installed Gradle version.
    	 * @return {Promise<string>} Returns the currently installed Gradle version. It will return null if Gradle is not installed.
    	 */
    	getGradleVersion(): Promise<string>;
    
    	/**
    	 * Checks if CocoaPods is working correctly by trying to install one pod.
    	 * @return {Promise<boolean>} Returns true if CocoaPods is working correctly.
    	 */
    	isCocoaPodsWorkingCorrectly(): Promise<boolean>;
    
    	/**
    	 * Returns the version of the globally installed NativeScript CLI.
    	 * @return {Promise<string>} Returns the version of the globally installed NativeScript CLI.
    	 */
    	getNativeScriptCliVersion(): Promise<string>;
    
    	/**
    	 * Checks if xcproj is required to build projects and if it is installed.
    	 * @return {Promise<IXcprojInfo>} Returns the collected information aboud xcproj.
    	 */
    	getXcprojInfo(): Promise<IXcprojInfo>;
    
    	/**
    	 * Checks if the current version of CocoaPods is compatible with the installed Xcode.
    	 * @return {boolean} true if an update us require.
    	 */
    	isCocoaPodsUpdateRequired(): Promise<boolean>;
    
    	/**
    	 * Checks if the Android SDK Tools are installed and configured correctly.
    	 * @return {Promise<boolean>} true if the Android SDK Tools are installed and configured correctly.
    	 */
    	isAndroidSdkConfiguredCorrectly(): Promise<boolean>;
    
    	/**
    	 * Returns the whole system information.
    	 * @param {ISysInfoConfig} config
    	 * @return {Promise<ISysInfoData>} The system information.
    	 */
    	getSysInfo(config?: ISysInfoConfig): Promise<ISysInfoData>;
    
    	/**
    	 * If set to true each method will cache it's result. The default value is true.
    	 * @param {boolean} shouldCache The cache switch.
    	 * @return {void}
    	 */
    	setShouldCacheSysInfo(shouldCache: boolean): void;
    
    	/**
    	 * Returns the path to the currently installed Git.
    	 * @return {Promise<string>} Returns the path to the currently installed Git. It will return null if Git is not installed.
    	 */
    	getGitPath(): Promise<string>;
    }
    
    interface ISysInfoData {
    	// os stuff
    	/**
    	 * Os platform flavour, reported by os.platform.
    	 * @type {string}
    	 */
    	platform: string;
    
    	/**
    	 * Full os name, like `uname -a` on unix, registry query on win.
    	 * @type {string}
    	 */
    	os: string;
    
    	/**
    	 * .net version, applicable to windows only.
    	 * @type {string}
    	 */
    	dotNetVer: string;
    
    	/**
    	 * The command shell in use, usually bash or cmd.
    	 * @type {string}
    	 */
    	shell: string;
    
    	// node stuff
    	/**
    	 * node.js version, returned by node -v.
    	 * @type {string}
    	 */
    	nodeVer: string;
    
    	/**
    	 * npm version, returned by `npm -v`.
    	 * @type {string}
    	 */
    	npmVer: string;
    
    	/**
    	 * Process architecture, returned by `process.arch`.
    	 * @type {string}
    	 */
    	procArch: string;
    
    	/**
    	 * node-gyp version as returned by `node-gyp -v`.
    	 * @type {string}
    	 */
    	nodeGypVer: string;
    
    	// dependencies
    	/**
    	 * Xcode version string as returned by `xcodebuild -version`. Valid only on Mac.
    	 * @type {string}
    	 */
    	xcodeVer: string;
    
    	/**
    	 * Version string of adb, as returned by `adb version`.
    	 * @type {string}
    	 */
    	adbVer: string;
    
    	/**
    	 * Whether iTunes is installed on the machine.
    	 * @type {boolean}
    	 */
    	itunesInstalled: boolean;
    
    	/**
    	 * Whether `android` executable can be run.
    	 * @type {boolean}
    	 */
    	androidInstalled: boolean;
    
    	/**
    	 * mono version, relevant on Mac only.
    	 * @type {string}
    	 */
    	monoVer: string;
    
    	/**
    	 * git version string, as returned by `git --version`.
    	 * @type {string}
    	 */
    	gitVer: string;
    
    	/**
    	 * gradle version string as returned by `gradle -v`.
    	 * @type {string}
    	 */
    	gradleVer: string;
    
    	/**
    	 * javac version string as returned by `javac -version`.
    	 * @type {string}
    	 */
    	javacVersion: string;
    
    	/**
    	 * pod version string, as returned by `pod --version`.
    	 * @type {string}
    	 */
    	cocoaPodsVer: string;
    
    	/**
    	 * xcodeproj gem location, as returned by `which gem xcodeproj`.
    	 * @type {string}
    	 */
    	xcodeprojLocation: string;
    
    	/**
    	 * true id CocoaPods can successfully execute pod install.
    	 * @type {boolean}
    	 */
    	isCocoaPodsWorkingCorrectly: boolean;
    
    	/**
    	 * NativeScript CLI version string, as returned by `tns --version`.
    	 * @type {string}
    	 */
    	nativeScriptCliVersion: string;
    
    	/**
    	 * Information about xcproj.
    	 * @type {string}
    	 */
    	xcprojInfo: IXcprojInfo;
    
    	/**
    	 * true if the system requires xcproj to build projects successfully and the CocoaPods version is not compatible with the Xcode.
    	 */
    	isCocoaPodsUpdateRequired: boolean;
    
    	/**
    	 * true if the Android SDK Tools are installed and configured correctly.
    	 * @type {boolean}
    	 */
    	isAndroidSdkConfiguredCorrectly: boolean;
    }
    
    /**
     * Describes information about xcproj brew formula.
     */
    interface IXcprojInfo {
    	/**
    	 * Determines whether the system needs xcproj to execute ios builds sucessfully.
    	 */
    	shouldUseXcproj: boolean;
    
    	/**
    	 * Determines whether xcproj can be called from the command line.
    	 */
    	xcprojAvailable: boolean;
    }
    
  • Module androidToolsInfo:

    • Usage:
    import { androidToolsInfo } from "nativescript-doctor"
    
    function main() {
    	const projectDir = "/Users/username/myProject";
    	console.log("path to adb from android home: ", await androidToolsInfo.getPathToAdbFromAndroidHome());
    	console.log("path to emulator executable: ", androidToolsInfo.getPathToEmulatorExecutable());
    	console.log("android tools info: ", androidToolsInfo.getToolsInfo());
    	console.log("ANROID_HOME validation errors: ", await androidToolsInfo.validateAndroidHomeEnvVariable());
    	console.log("android tools info validation errors: ", await androidToolsInfo.validateInfo());
    	console.log("javac validation errors: ", await androidToolsInfo.validateJavacVersion(await sysInfo.getJavaCompilerVersion(), projectDir));
    }
    
    main();
    
    • Interfaces:
    /**
     * Describes methods for getting and validating Android tools.
     */
    interface IAndroidToolsInfo {
    	/**
    	 * Returns the Android tools info.
    	 * @return {NativeScriptDoctor.IAndroidToolsInfoData} returns the Android tools info.
    	 */
    	getToolsInfo(): NativeScriptDoctor.IAndroidToolsInfoData;
    
    	/**
    	 * Checks if the Android tools are valid.
    	 * @param {string} projectDir @optional The project directory. Used to determine the Android Runtime version and validate the Java compiler version against it.
    	 * If it is not passed or the project does not have Android runtime, this validation is skipped.
    	 * @return {NativeScriptDoctor.IWarning[]} An array of errors from the validation checks. If there are no errors will return [].
    	 */
    	validateInfo(projectDir?: string): NativeScriptDoctor.IWarning[];
    
    	/**
    	 * Checks if the current javac version is valid.
    	 * @param {string} installedJavaVersion The version of javac to check.
    	 * @param {string} projectDir @optional The project directory. Used to determine the Android Runtime version and validate the Java compiler version against it.
    	 * If it is not passed or the project does not have Android runtime, this validation is skipped.
    	 * @return {NativeScriptDoctor.IWarning[]} An array of errors from the validation checks. If there are no errors will return [].
    	 */
    	validateJavacVersion(installedJavaVersion: string, projectDir?: string): NativeScriptDoctor.IWarning[];
    
    	/**
    	 * Returns the path to the adb which is located in ANDROID_HOME.
    	 * @return {Promise<string>} Path to the adb which is located in ANDROID_HOME.
    	 */
    	getPathToAdbFromAndroidHome(): Promise<string>;
    
    	/**
    	 * Checks if the ANDROID_HOME variable is set to the correct folder.
    	 * @return {NativeScriptDoctor.IWarning[]} An array of errors from the validation checks. If there are no errors will return [].
    	 */
    	validateAndroidHomeEnvVariable(): NativeScriptDoctor.IWarning[];
    
    	/**
    	 * Returns the path to the emulator executable.
    	 * @return {string} The path to the emulator executable.
    	 */
    	getPathToEmulatorExecutable(): string;
    }
    
    /**
     * Describes information about installed Android tools and SDKs.
     */
    interface IAndroidToolsInfoData {
    	/**
    	 * The value of ANDROID_HOME environment variable.
    	 */
    	androidHomeEnvVar: string;
    
    	/**
    	 * The latest installed version of Android Build Tools that satisfies CLI's requirements.
    	 */
    	buildToolsVersion: string;
    
    	/**
    	 * The latest installed version of Android SDK that satisfies CLI's requirements.
    	 */
    	compileSdkVersion: number;
    
    	/**
    	 * The latest installed version of Android Support Repository that satisfies CLI's requirements.
    	 */
    	supportRepositoryVersion: string;
    }
    
  • Module constants:

    • Usage:
    import { constants } from "nativescript-doctor"
    
    function main() {
    	for(let constantName in constants) {
    		console.log(`${constantName}: ${constants[constantName]}`);
    	}
    }
    
    main();
    
    • Interfaces:
    /**
     * Describes the constants used in the module.
     */
    interface IConstants {
    	ANDROID_PLATFORM_NAME: string;
    	IOS_PLATFORM_NAME: string;
    	SUPPORTED_PLATFORMS: string[];
    }
    

Keywords

FAQs

Package last updated on 28 Aug 2019

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc