You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I have a CLI app using Thor with jruby and created a compiled jar file using warbler. When viewing the CLI help, the app name shows as <script> instead of my_app_name when running the jar file using java -jar my_app_name.jar help. If I run my_app_name ruby executable directly under jruby using bin/my_app_name, then the app name shows correctly in the help text. See below.
Root Cause
The root cause is because $PROGRAM_NAME is set to <script> when running the jar file so the following method doesn't return the correct app file name as expected. https://github.com/erikhuda/thor/blob/master/lib/thor/base.rb#L674
$PROGRAM_NAME is correctly set when running directly in jruby.
Tried setting package_name but that doesn't work because it only changes Commands: to my_app_name commands:.
Possible fix
One option is to use __FILE__ instead of $PROGRAM_NAME.
Example Test Case
# bin/my_app
class MyApp < Thor
desc "hammer", "Thor's hammer"
def hammer()
"Thor's hammer"
end
end
# run in project folder -> works as expected
$ bin/my_app help
Commands:
my_app hammer
my_app help [COMMAND]
# package into jar file
$ warble compiled jar
-> creates my_app.jar
# run jar file -> doesn't work as expected
$ java -jar my_app.jar help
Commands:
<script> hammer
<script> help [COMMAND]
Ruby: jruby v9.2.13
Thor: 1.0.1
Warbler: 2.0.5
The text was updated successfully, but these errors were encountered:
Problem
I have a CLI app using Thor with
jruby
and created a compiledjar
file using warbler. When viewing the CLI help, the app name shows as<script>
instead ofmy_app_name
when running thejar
file usingjava -jar my_app_name.jar help
. If I runmy_app_name
ruby executable directly underjruby
usingbin/my_app_name
, then the app name shows correctly in the help text. See below.Root Cause
The root cause is because $PROGRAM_NAME is set to
<script>
when running thejar
file so the following method doesn't return the correct app file name as expected. https://github.com/erikhuda/thor/blob/master/lib/thor/base.rb#L674$PROGRAM_NAME is correctly set when running directly in
jruby
.Tried setting package_name but that doesn't work because it only changes
Commands:
tomy_app_name commands:
.Possible fix
One option is to use
__FILE__
instead of$PROGRAM_NAME
.Example Test Case
Ruby: jruby v9.2.13
Thor: 1.0.1
Warbler: 2.0.5
The text was updated successfully, but these errors were encountered: