diff --git a/gem/lib/triangulum/validation.rb b/gem/lib/triangulum/validation.rb index c384e21..2eec868 100644 --- a/gem/lib/triangulum/validation.rb +++ b/gem/lib/triangulum/validation.rb @@ -19,6 +19,8 @@ class BunNotFound < Triangulum::Error Gem::Platform.match_gem?(platform, Gem::Platform.local.to_s) end + IS_RUBY_PLATFORM_GEM = Dir.glob(File.expand_path('../../exe/*/bun', __dir__)).empty? + attr_reader :flow, :runtime_function_definitions, :data_types def initialize(flow, runtime_function_definitions, data_types) @@ -38,10 +40,8 @@ def validate private def run_ts_triangulum(input) - raise BunNotFound, "No bundled bun binary found for #{Gem::Platform.local}" if BUN_EXE.nil? - stdout_s, stderr_s, status = Open3.capture3( - BUN_EXE, 'run', ENTRYPOINT, + bun, 'run', ENTRYPOINT, stdin_data: input ) @@ -88,5 +88,15 @@ def parse_output(output) end ) end + + def bun + if IS_RUBY_PLATFORM_GEM + 'bun' + else + raise BunNotFound, "No bundled bun binary found for #{Gem::Platform.local}" if BUN_EXE.nil? + + BUN_EXE + end + end end end diff --git a/gem/rakelib/package.rake b/gem/rakelib/package.rake index 57ee216..d888148 100644 --- a/gem/rakelib/package.rake +++ b/gem/rakelib/package.rake @@ -19,6 +19,11 @@ exepaths = [] TRIANGULUM_GEMSPEC = Bundler.load_gemspec('triangulum.gemspec') +ruby_gem_path = Gem::PackageTask.new(TRIANGULUM_GEMSPEC).define + +desc 'Build the ruby (platform-independent) gem' +task 'gem:ruby' => [ruby_gem_path] + BUN_PLATFORMS.each do |platform, (zip_filename, expected_checksum)| TRIANGULUM_GEMSPEC.dup.tap do |gemspec| exedir = File.join('exe', platform)