[jbosstools-dev] [jbosstools-openshift] JBIDE-21175 - ensure more reliable locating of vagrant command (#831)

Gorkem Ercan gercan at redhat.com
Tue Dec 8 08:02:37 EST 2015


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 at redhat.com>
wrote:

> Question relevant on the list.
>
> /max
> http://about.me/maxandersen
>
>
> On 08 Dec 2015, at 05:09, Rob Stryker <rob.stryker at 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
> <https://github.com/jbosstools/jbosstools-openshift/pull/831#discussion_r46575476>
> :
>
> >  	public static String getVagrantLocation() {
> > -		return VAGRANT_LOCATION_LINUX;
> > +		return findVagrantLocation();
>
> im wondering if we are better of launching this similar to what @gercan
> <https://github.com/gercan> and @ibuziuk <https://github.com/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
> <https://github.com/jbosstools/jbosstools-openshift/pull/831/files#r46575476>
> .
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/jbosstools-dev/attachments/20151208/cf0abc1f/attachment.html 


More information about the jbosstools-dev mailing list