utmapp/UTM

JXA Examples?

Open

#6403 aperta il 2 giu 2024

Vedi su GitHub
 (4 commenti) (0 reazioni) (0 assegnatari)Swift (1707 fork)batch import
enhancementhelp wanted

Metriche repository

Star
 (34.064 star)
Metriche merge PR
 (Merge medio 2m) (1 PR mergiata in 30 g)

Descrizione

Hi all,

First off, thank you for all your work on UTM. It is a very useful application.

I was looking for some assistance with utilizing the AppleScript scripting interface for UTM from within JXA. From reading the UTM.sdef from the Script Editor in JavaScript language mode, I came up with the following working example that lists VM's and give output in JSON format to STDOUT:

#!/usr/bin/env osascript -l JavaScript

const app = Application('UTM');
let vms = app.virtualMachines().map((vm) => {
    return JSON.parse(Automation.getDisplayString(vm.properties()));
});

// Output last statement to stdout
JSON.stringify(vms);

I am interested in creating VM's as well, but have not had much luck. Here is what I have attemped thus far:

Attempt 1:

#!/usr/bin/env osascript -l JavaScript
const utm = Application("UTM");
let config = utm.QemuConfiguration(
    {
        "name":"test",
        "notes":"",
        "architecture":"aarch64",
        "memory":4096,
        "cpuCores":0,
        "hypervisor":true,
        "uefi":true,
        "directoryShareMode":"VirtFS",
        "drives":[],
        "networkInterfaces":[],
        "serialPorts":[],
        "machine":"virt"
    }
);

var vm = utm.VirtualMachine(
    {
        "backend":"qemu",
        "configuration": config
    }
);
utm.virtualMachines.push(vm);

Attempt 2:

#!/usr/bin/env osascript -l JavaScript
const utm = Application('UTM');
const config = utm.QemuConfiguration(
    {
        "name":"test",
        "notes":"",
        "architecture":"aarch64",
        "memory":4096,
        "cpuCores":0,
        "hypervisor":true,
        "uefi":true,
        "directoryShareMode":"VirtFS",
        "drives":[],
        "networkInterfaces":[],
        "serialPorts":[],
        "machine":"virt"
    }
);
const vm = utm.make(
    {
        "new": "virtualMachine",
        "withProperties":   {
            "backend"   :"qemu",
            "configuration" : config,
        }
    }
);

Attempt 3:

#!/usr/bin/env osascript -l JavaScript
const utm = Application('UTM');

const vm = utm.make(
    {
        "new": "virtualMachine",
        "withProperties":   {
            "backend"   :"qemu",
            "configuration" : {
                "name":"test",
                "notes":"",
                "architecture":"aarch64",
                "memory":4096,
                "cpuCores":0,
                "hypervisor":true,
                "uefi":true,
                "directoryShareMode":"VirtFS",
                "drives":[],
                "networkInterfaces":[],
                "serialPorts":[],
                "machine":"virt"
            }
        }
    }
);

Attempts 1 and 2 yield: execution error: Error: Error: A valid configuration must be specified. (-2700) Attempt 3 yields: execution error: Error: Error: Can't convert types. (-1700)

I think I am close here, but I could use some assistance. If we get something working, I would love to help get some JXA examples documented alongside the AppleScript examples in the scripting cheat sheet, as I imagine most people are more familiar with JavaScript than AppleScript.

JXA Resources

Guida contributor