github.com/ActiveState/cli@v0.0.0-20240508170324-6801f60cd051/internal/osutils/autostart/legacy_darwin.go (about)

     1  package autostart
     2  
     3  import (
     4  	"os"
     5  
     6  	"github.com/ActiveState/cli/internal/errs"
     7  	"github.com/ActiveState/cli/internal/fileutils"
     8  	"howett.net/plist"
     9  )
    10  
    11  type LegacyPlist struct {
    12  	ProgramArguments []string `plist:"ProgramArguments"`
    13  }
    14  
    15  func isLegacyPlist(path string) (bool, error) {
    16  	if !fileutils.FileExists(path) {
    17  		return false, nil
    18  	}
    19  
    20  	reader, err := os.Open(path)
    21  	if err != nil {
    22  		return false, errs.Wrap(err, "Could not open plist file")
    23  	}
    24  
    25  	decoder := plist.NewDecoder(reader)
    26  	var p LegacyPlist
    27  	err = decoder.Decode(&p)
    28  	if err != nil {
    29  		return false, errs.Wrap(err, "Could not decode plist file")
    30  	}
    31  
    32  	return len(p.ProgramArguments) > 1, nil
    33  }