Sha256: 9b75c9a247471965f99f83b573e52ef15507712bc8877c50ff2733fe9c744b9e

Contents?: true

Size: 948 Bytes

Versions: 2

Compression:

Stored size: 948 Bytes

Contents

# frozen_string_literal: true

module Script
  module Layers
    module Infrastructure
      class AssemblyScriptWasmBuilder
        BYTECODE_FILE = "%{name}.wasm"
        SCRIPT_SDK_BUILD = "npx --no-install shopify-scripts-build --src=../%{source} --binary=#{BYTECODE_FILE} "\
                           "-- --lib=../node_modules --validate --optimize"

        attr_reader :script

        def initialize(script)
          @script = script
        end

        def build
          compile
          bytecode
        end

        def compiled_type
          "wasm"
        end

        private

        def compile
          out, status = CLI::Kit::System.capture2e(format(SCRIPT_SDK_BUILD, source: script.id, name: script.name))
          raise Domain::Errors::ServiceFailureError, out unless status.success?
        end

        def bytecode
          File.read(format(BYTECODE_FILE, name: script.name))
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
shopify-cli-0.9.1 lib/project_types/script/layers/infrastructure/assemblyscript_wasm_builder.rb
shopify-cli-0.9.0 lib/project_types/script/layers/infrastructure/assemblyscript_wasm_builder.rb