bin/shoes-swt in shoes-swt-4.0.0.pre10 vs bin/shoes-swt in shoes-swt-4.0.0.pre11
- old
+ new
@@ -1,10 +1,34 @@
#!/usr/bin/env jruby
# frozen_string_literal: true
lib_directory = File.expand_path('../../lib', __FILE__)
$LOAD_PATH << lib_directory
-if File.exist?("Gemfile")
+# We want the Gemfile alongside the Shoes code that we're executing, not
+# necessarily the Gemfile in our current directory. This helps in both running
+# and packaging apps that have their own Gemfiles, even if we run `shoes` from
+# another location.
+candidates = (ARGV + ["."]).map do |candidate|
+ File.expand_path(File.join(File.dirname(candidate), "Gemfile"))
+end
+
+gemfile = candidates.uniq.find do |candidate|
+ File.exist?(candidate)
+end
+
+if gemfile
+ if defined?(Bundler) && gemfile != Bundler.default_gemfile.to_s
+ puts <<~EOS
+ Shoes wants to load the Gemfile from '#{gemfile}'
+ But you've already loaded Gemfile at '#{Bundler.default_gemfile}'
+
+ Instead of `bundle exec shoes`, try just `shoes` instead. We'll load Bundler for you.
+
+ EOS
+ end
+
+ # Thanks Bundler for the ENV vars! <3
+ ENV["BUNDLE_GEMFILE"] = gemfile
require "bundler/setup"
Bundler.require
end
require 'shoes/ui/cli'