Windows bat file help needed for rubygems

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 Hodel - drbrain@segment7.net - http://blog.segment7.net

I LIT YOUR GEM ON FIRE!

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

the command shell sets the ERRORLEVEL variable correctly.

···

On 12/25/06, Eric Hodel <drbrain@segment7.net> wrote:

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.

From my quick test, the ruby interpreter returns a proper code, and

Your name will live forever in the rubygems ChangeLog.

···

On Dec 25, 2006, at 15:39, Wilson Bilkovich wrote:

On 12/25/06, Eric Hodel <drbrain@segment7.net> wrote:

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

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.

--
Eric Hodel - drbrain@segment7.net - http://blog.segment7.net

I LIT YOUR GEM ON FIRE!

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

···

On Dec 25, 2006, at 15:57, Eric Hodel wrote:

On Dec 25, 2006, at 15:39, Wilson Bilkovich wrote:

On 12/25/06, Eric Hodel <drbrain@segment7.net> wrote:

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

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 Hodel - drbrain@segment7.net - http://blog.segment7.net

I LIT YOUR GEM ON FIRE!

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.

···

On 12/25/06, Eric Hodel <drbrain@segment7.net> wrote:

On Dec 25, 2006, at 15:57, Eric Hodel wrote:
> On Dec 25, 2006, at 15:39, Wilson Bilkovich wrote:
>> On 12/25/06, Eric Hodel <drbrain@segment7.net> wrote:
>>> 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
>>
>> 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.