#!/usr/bin/env ruby require 'json' require_relative './../../xrforge.rb' # Check if a filename is provided if ARGV.length != 1 puts "Usage: #{$0} " exit 1 end filename = ARGV[0] begin # Change the directory dir = File.dirname(filename) Dir.chdir( dir ) # Read and parse the JSON file data = JSON.parse( File.read( "datapackage.json" ) ) logfile = File.join( File.dirname(filename), ".xrforge/log.txt" ) XRForge.log("✅ starting XR fragments check", logfile) model_file = XRForge.getExperienceFile(data,dir,logfile) # Check if a model file was found after the loop if ! model_file XRForge.log("❌ No suitable 3D file found for XR Fragments-compatible experience", logfile) exit 0 end # Check if a model file was found after the loop if model_file XRForge.log("✅ Final model file: '#{model_file}'", logfile) # update datapackage data['main'] = model_file if ! data['keywords'].include?('xrfragments') data['keywords'].push('xrfragments') end File.write("datapackage.json", JSON.pretty_generate(data) ) system("assimp export #{model_file} .xrforge/scene.gltf") else XRForge.log("❌ No suitable 3D file found for XR Fragments-compatible experience", logfile) # update datapackage if data['keywords'].include?('xrfragments') data['keywords'].delete('xrfragments') File.write("datapackage.json", JSON.pretty_generate(data) ) end end XRForge.log("✅ updating xrfragment tag", logfile) XRForge.log(" ", logfile) rescue Errno::ENOENT puts "File #{filename} not found" rescue JSON::ParserError puts "Error parsing JSON from #{filename}" rescue => e puts "An error occurred: #{e.message}" end