Windows bat file help needed for rubygems


#1

How do I get a windows .bat file to return a proper exit code?

RubyGems build stubs that look something like this:

“c:\ruby\bin\ruby” -x “%~f0” %*
goto endofruby
#!/bin/ruby
abort ‘boom’
END
:endofruby

But if I run this:

ruby -e “system ‘stub.bat’; p $?”

I get the wrong exit code (0 instead of 1).

If I can get the right exit code then failure to build rake
extensions will fail installs properly in Rubygems.


Eric H. - removed_email_address@domain.invalid - http://blog.segment7.net

I LIT YOUR GEM ON FIRE!


#2

On 12/25/06, Eric H. removed_email_address@domain.invalid wrote:

But if I run this:

ruby -e “system ‘stub.bat’; p $?”

I get the wrong exit code (0 instead of 1).

If I can get the right exit code then failure to build rake
extensions will fail installs properly in Rubygems.

What do you get when you put:
exit %ERRORLEVEL%
under the :endofruby label?

From my quick test, the ruby interpreter returns a proper code, and
the command shell sets the ERRORLEVEL variable correctly.


#3

On Dec 25, 2006, at 15:39, Wilson B. wrote:

:endofruby

What do you get when you put:
exit %ERRORLEVEL%
under the :endofruby label?

From my quick test, the ruby interpreter returns a proper code, and
the command shell sets the ERRORLEVEL variable correctly.

Your name will live forever in the rubygems ChangeLog.


Eric H. - removed_email_address@domain.invalid - http://blog.segment7.net

I LIT YOUR GEM ON FIRE!


#4

On Dec 25, 2006, at 15:57, Eric H. wrote:

END
:endofruby

What do you get when you put:
exit %ERRORLEVEL%
under the :endofruby label?

From my quick test, the ruby interpreter returns a proper code, and
the command shell sets the ERRORLEVEL variable correctly.

Your name will live forever in the rubygems ChangeLog.

Hrm, it seems that gems doesn’t generate .bat files, but instead
generates .cmd files. I’ll ask Curt about this.


Eric H. - removed_email_address@domain.invalid - http://blog.segment7.net

I LIT YOUR GEM ON FIRE!


#5

On 12/25/06, Eric H. removed_email_address@domain.invalid wrote:

abort ‘boom’
Your name will live forever in the rubygems ChangeLog.

Hrm, it seems that gems doesn’t generate .bat files, but instead
generates .cmd files. I’ll ask Curt about this.

Should work the same in either. Since going with .cmd files discards
Windows 98 compatibility (rightly), there are some other tricks that
can be safely invoked. As a .CMD, ‘EXIT’ can take a /B argument that
will exit from the script, but not the command shell as a whole.