For Node.js based tools we needed a fully configured PATH because it is often the case those tools will make calls to other apps.
Basically our strategy is to start a full bash/cmd shell (notice -l for bash) which will be configured fully. [1]
then execute the commands [2]
finally issue an exit to leave the shell [3]

The only downside is you can not easily capture the process exit code.

The code examples are from the initial implementation that I have done for CordovaCLI and uses eclipse libraries for starting the process however it can be implemented equally same using the Runtime.exec too. [4]


[1] https://github.com/gorkem/thym/blob/use_cli/plugins/org.eclipse.thym.core/src/org/eclipse/thym/core/internal/cordova/CordovaCLI.java#L175
[2] https://github.com/gorkem/thym/blob/use_cli/plugins/org.eclipse.thym.core/src/org/eclipse/thym/core/internal/cordova/CordovaCLI.java#L135
[3] https://github.com/gorkem/thym/blob/use_cli/plugins/org.eclipse.thym.core/src/org/eclipse/thym/core/internal/cordova/CordovaCLI.java#L139
[4] https://github.com/gorkem/js-parser-benchmarks/blob/master/src/main/java/org/jboss/tools/benchmark/parsers/esprima/EsprimaParser.java#L70
--
Gorkem

On Tue, Dec 8, 2015 at 2:09 AM, Max Rydahl Andersen <manderse@redhat.com> wrote:
Question relevant on the list. 

/max


On 08 Dec 2015, at 05:09, Rob Stryker <rob.stryker@jboss.com> wrote:

Hey Guys:

Can you clarify how you guys call filesystem commands like npm and cordova?

In the CDK tools as currently coded, we do two different things.  One, is that we create an "External Tools Launch Configuration" which runs the command. This requires knowing the actual location of the executable.  The other is to simply call Runtime.exec(etc) and get a Process from it.

The external tools launch config is useful because it opens a console for us and means we don't have to do any of the wiring, so we use that when we know we want the commands to be visible to the user. We use the runtime.exec() in the background for commands that we want to run without showing the user (for example if we did a vagrant adbinfo)

How do you all do it?

- Rob Stryker


On 12/03/2015 11:36 AM, Max Rydahl Andersen wrote:

In plugins/org.jboss.tools.openshift.cdk.server/src/org/jboss/tools/openshift/cdk/server/core/internal/CDKConstantUtility.java:

>  	public static String getVagrantLocation() {
> -		return VAGRANT_LOCATION_LINUX;
> +		return findVagrantLocation();

im wondering if we are better of launching this similar to what @gercan and @ibuziuk been doing for npm and cordova cli tools.

i.e. call out via bash or cmd.exe making it up to the user to have it properly configured in PATH


Reply to this email directly or view it on GitHub.