func NewCore(cli cl.CLI) (Core, error) {
	nc := &nativeCore{
		cli: cli,
	}
	appSupportPath, err := macox.GetApplicationSupportPath()
	if err != nil {
		return nil, err
	}
	nc.roamingSetupPath = filepath.Join(appSupportPath, fmt.Sprintf("%s-setup", cli.AppName))
	log.Printf("Base dir: %s", nc.roamingSetupPath)
	selfPath, err := os.Executable()
	if err != nil {
		return nil, err
	}
	nc.selfPath = selfPath
	log.Printf("Self path: %s", nc.selfPath)
	homePath, err := macox.GetHomeDirectory()
	if err != nil {
		return nil, err
	}
	nc.homeApplicationsPath = filepath.Join(homePath, "Applications")
	log.Printf("Home Applications path: %s", nc.homeApplicationsPath)
	globalNc = nc
	return nc, nil
}
NewCore returns a macOS-specific Core implementation
package native
import "C"
import (
	"context"
	"fmt"
	"log"
	"os"
	"path/filepath"
	"time"
	"unsafe"
	"github.com/itchio/itch-setup/bindata"
	"github.com/itchio/itch-setup/cl"
	"github.com/itchio/itch-setup/setup"
	"github.com/itchio/ox/macox"
	"github.com/pkg/errors"
)
type nativeCore struct {
	cli                  cl.CLI
	selfPath             string
	roamingSetupPath     string
	homeApplicationsPath string
}
var globalNc *nativeCore