#!/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] # dont run for each file-update if ! filename.end_with?("datapackage.json") exit 0 end begin # Change the directory dir = File.dirname(filename) Dir.chdir( File.dirname(filename) ) # Read and parse the JSON file data = JSON.parse( File.read( "datapackage.json" ) ) #if data['keywords'].empty? || data['keywords'].include?('mml') logfile = File.join( File.dirname(filename), ".xrforge/log.txt" ) XRForge.log("✅ starting build mml XR scene", 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 MML-compatible experience", logfile) exit 0 end # Get the value of the environment variable FEDERATE_DRIVE_HOST federate_drive_host = ENV['FEDERATE_DRIVE_HOST'] # https://viewer.mml.io/main/v1/?url=https%3A%2F%2Ffoo.org%2Fbar.mml mml = <<~MML MML File.write('.xrforge/scene.mml', mml) XRForge.log("✅ generated scene.mml", logfile) XRForge.log(" ", logfile) # tag it! if ! data['keywords'].include?('mml') data['keywords'].push('mml') File.write("datapackage.json", JSON.pretty_generate(data) ) end 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