Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion _integration_tests/zip/ipa_reader_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@ import (
"testing"

"github.com/bitrise-io/go-utils/v2/log"
"github.com/bitrise-io/go-xcode/plistutil"
"github.com/bitrise-io/go-xcode/profileutil"
"github.com/bitrise-io/go-xcode/v2/_integration_tests"
"github.com/bitrise-io/go-xcode/v2/artifacts"
internalzip "github.com/bitrise-io/go-xcode/v2/internal/zip"
"github.com/bitrise-io/go-xcode/v2/plistutil"
"github.com/bitrise-io/go-xcode/v2/zip"
"github.com/stretchr/testify/require"
)
Expand Down
2 changes: 1 addition & 1 deletion artifacts/ios_xcarchive_reader.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package artifacts

import (
"github.com/bitrise-io/go-xcode/plistutil"
"github.com/bitrise-io/go-xcode/v2/plistutil"
)

// IOSXCArchiveReader ...
Expand Down
2 changes: 1 addition & 1 deletion artifacts/ipa_reader.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ package artifacts
import (
"fmt"

"github.com/bitrise-io/go-xcode/plistutil"
"github.com/bitrise-io/go-xcode/profileutil"
"github.com/bitrise-io/go-xcode/v2/plistutil"
)

// IPAReader ...
Expand Down
2 changes: 1 addition & 1 deletion artifacts/xcarchive_reader.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package artifacts

import (
"github.com/bitrise-io/go-xcode/plistutil"
"github.com/bitrise-io/go-xcode/v2/plistutil"
)

// XCArchiveReader ...
Expand Down
2 changes: 1 addition & 1 deletion autocodesign/projectmanager/projecthelper.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"regexp"
"strings"

"github.com/bitrise-io/go-plist"
"github.com/bitrise-io/go-utils/fileutil"
"github.com/bitrise-io/go-utils/pathutil"
"github.com/bitrise-io/go-utils/sliceutil"
Expand All @@ -17,7 +18,6 @@ import (
"github.com/bitrise-io/go-xcode/xcodeproject/xcodeproj"
"github.com/bitrise-io/go-xcode/xcodeproject/xcscheme"
"github.com/bitrise-io/go-xcode/xcodeproject/xcworkspace"
"howett.net/plist"
)

// BuildAction is the type of build action to be performed on the scheme.
Expand Down
2 changes: 1 addition & 1 deletion codesign/codesign.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import (
"github.com/bitrise-io/go-utils/v2/log"
"github.com/bitrise-io/go-xcode/certificateutil"
"github.com/bitrise-io/go-xcode/exportoptions"
"github.com/bitrise-io/go-xcode/plistutil"
"github.com/bitrise-io/go-xcode/profileutil"
"github.com/bitrise-io/go-xcode/v2/autocodesign"
"github.com/bitrise-io/go-xcode/v2/autocodesign/devportalclient"
Expand All @@ -17,6 +16,7 @@ import (
"github.com/bitrise-io/go-xcode/v2/autocodesign/projectmanager"
"github.com/bitrise-io/go-xcode/v2/devportalservice"
"github.com/bitrise-io/go-xcode/v2/exportoptionsgenerator"
"github.com/bitrise-io/go-xcode/v2/plistutil"
"github.com/bitrise-io/go-xcode/v2/xcarchive"
)

Expand Down
4 changes: 2 additions & 2 deletions exportoptionsgenerator/codesign_group_provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ import (
"github.com/bitrise-io/go-xcode/certificateutil"
"github.com/bitrise-io/go-xcode/export"
"github.com/bitrise-io/go-xcode/exportoptions"
"github.com/bitrise-io/go-xcode/plistutil"
"github.com/bitrise-io/go-xcode/profileutil"
"github.com/bitrise-io/go-xcode/v2/plistutil"
)

// CodeSignGroupProvider ...
Expand Down Expand Up @@ -65,7 +65,7 @@ func (g codeSignGroupProvider) DetermineCodesignGroup(certificates []certificate
if len(bundleIDEntitlementsMap) > 0 {
g.logger.Warnf("Filtering CodeSignInfo groups for target capabilities")

codeSignGroups = export.FilterSelectableCodeSignGroups(codeSignGroups, export.CreateEntitlementsSelectableCodeSignGroupFilter(bundleIDEntitlementsMap))
codeSignGroups = export.FilterSelectableCodeSignGroups(codeSignGroups, export.CreateEntitlementsSelectableCodeSignGroupFilter(convertToV1PlistData(bundleIDEntitlementsMap)))
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

export package is on V1 and uses V1 plistutil, until we migrate export package convertToV1PlistData converts between v2 and v1 plistutil.


g.logger.Debugf("\nGroups after filtering for target capabilities:")
for _, group := range codeSignGroups {
Expand Down
2 changes: 1 addition & 1 deletion exportoptionsgenerator/exportoptionsgenerator.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ import (
"github.com/bitrise-io/go-utils/v2/log"
"github.com/bitrise-io/go-xcode/export"
"github.com/bitrise-io/go-xcode/exportoptions"
"github.com/bitrise-io/go-xcode/plistutil"
"github.com/bitrise-io/go-xcode/profileutil"
"github.com/bitrise-io/go-xcode/v2/plistutil"
"github.com/bitrise-io/go-xcode/v2/xcodeversion"
)

Expand Down
2 changes: 1 addition & 1 deletion exportoptionsgenerator/exportoptionsgenerator_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ import (
"github.com/bitrise-io/go-utils/v2/log"
"github.com/bitrise-io/go-xcode/certificateutil"
"github.com/bitrise-io/go-xcode/exportoptions"
"github.com/bitrise-io/go-xcode/plistutil"
"github.com/bitrise-io/go-xcode/profileutil"
"github.com/bitrise-io/go-xcode/v2/exportoptionsgenerator/mocks"
"github.com/bitrise-io/go-xcode/v2/plistutil"
"github.com/bitrise-io/go-xcode/v2/xcodeversion"
"github.com/stretchr/testify/require"
)
Expand Down
15 changes: 15 additions & 0 deletions exportoptionsgenerator/plistconverter.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package exportoptionsgenerator

import (
plistutilv1 "github.com/bitrise-io/go-xcode/plistutil"
"github.com/bitrise-io/go-xcode/v2/plistutil"
)

// TODO: remove this function when export package is migrated to v2 and uses plistutil/v2
func convertToV1PlistData(bundleIDEntitlementsMap map[string]plistutil.PlistData) map[string]plistutilv1.PlistData {
converted := map[string]plistutilv1.PlistData{}
for bundleID, entitlements := range bundleIDEntitlementsMap {
converted[bundleID] = plistutilv1.PlistData(entitlements)
}
return converted
}
2 changes: 1 addition & 1 deletion exportoptionsgenerator/targets.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package exportoptionsgenerator
import (
"fmt"

"github.com/bitrise-io/go-xcode/plistutil"
"github.com/bitrise-io/go-xcode/v2/plistutil"
"github.com/bitrise-io/go-xcode/xcodeproject/serialized"
"github.com/bitrise-io/go-xcode/xcodeproject/xcodeproj"
"github.com/bitrise-io/go-xcode/xcodeproject/xcscheme"
Expand Down
4 changes: 2 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ toolchain go1.23.2
require (
cloud.google.com/go/secretmanager v1.14.3
cloud.google.com/go/storage v1.50.0
github.com/bitrise-io/go-plist v0.0.0-20210301100253-4b1a112ccd10
github.com/bitrise-io/go-steputils v1.0.5
github.com/bitrise-io/go-steputils/v2 v2.0.0-alpha.18
github.com/bitrise-io/go-utils v1.0.12
Expand All @@ -22,7 +23,6 @@ require (
golang.org/x/oauth2 v0.24.0
golang.org/x/text v0.21.0
google.golang.org/api v0.214.0
howett.net/plist v1.0.0
)

require (
Expand All @@ -37,7 +37,6 @@ require (
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1 // indirect
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.48.1 // indirect
github.com/bitrise-io/go-pkcs12 v0.0.0-20230815095624-feb898696e02 // indirect
github.com/bitrise-io/go-plist v0.0.0-20210301100253-4b1a112ccd10 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
Expand Down Expand Up @@ -80,4 +79,5 @@ require (
google.golang.org/grpc v1.67.3 // indirect
google.golang.org/protobuf v1.35.2 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
howett.net/plist v1.0.0 // indirect
)
220 changes: 220 additions & 0 deletions plistutil/plistutil.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,220 @@
package plistutil
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There are two changes compared to the v1 version:


import (
"errors"
"time"

"github.com/bitrise-io/go-plist"
)

// PlistData ...
type PlistData map[string]interface{}

// NewPlistDataFromContent ...
func NewPlistDataFromContent(plistContent string) (PlistData, error) {
var data PlistData
if _, err := plist.Unmarshal([]byte(plistContent), &data); err != nil {
return PlistData{}, err
}
return data, nil
}

// GetString ...
func (data PlistData) GetString(forKey string) (string, bool) {
value, ok := data[forKey]
if !ok {
return "", false
}

casted, ok := value.(string)
if !ok {
return "", false
}

return casted, true
}

// GetUInt64 ...
func (data PlistData) GetUInt64(forKey string) (uint64, bool) {
value, ok := data[forKey]
if !ok {
return 0, false
}

casted, ok := value.(uint64)
if !ok {
return 0, false
}
return casted, true
}

// GetFloat64 ...
func (data PlistData) GetFloat64(forKey string) (float64, bool) {
value, ok := data[forKey]
if !ok {
return 0, false
}

casted, ok := value.(float64)
if !ok {
return 0, false
}
return casted, true
}

// GetBool ...
func (data PlistData) GetBool(forKey string) (bool, bool) {
value, ok := data[forKey]
if !ok {
return false, false
}

casted, ok := value.(bool)
if !ok {
return false, false
}

return casted, true
}

// GetTime ...
func (data PlistData) GetTime(forKey string) (time.Time, bool) {
value, ok := data[forKey]
if !ok {
return time.Time{}, false
}

casted, ok := value.(time.Time)
if !ok {
return time.Time{}, false
}
return casted, true
}

// GetUInt64Array ...
func (data PlistData) GetUInt64Array(forKey string) ([]uint64, bool) {
value, ok := data[forKey]
if !ok {
return nil, false
}

if casted, ok := value.([]uint64); ok {
return casted, true
}

casted, ok := value.([]interface{})
if !ok {
return nil, false
}

var array []uint64
for _, v := range casted {
casted, ok := v.(uint64)
if !ok {
return nil, false
}

array = append(array, casted)
}
return array, true
}

// GetStringArray ...
func (data PlistData) GetStringArray(forKey string) ([]string, bool) {
value, ok := data[forKey]
if !ok {
return nil, false
}

if casted, ok := value.([]string); ok {
return casted, true
}

casted, ok := value.([]interface{})
if !ok {
return nil, false
}

var array []string
for _, v := range casted {
casted, ok := v.(string)
if !ok {
return nil, false
}

array = append(array, casted)
}
return array, true
}

// GetByteArrayArray ...
func (data PlistData) GetByteArrayArray(forKey string) ([][]byte, bool) {
value, ok := data[forKey]
if !ok {
return nil, false
}

if casted, ok := value.([][]byte); ok {
return casted, true
}

casted, ok := value.([]interface{})
if !ok {
return nil, false
}

var array [][]byte
for _, v := range casted {
casted, ok := v.([]byte)
if !ok {
return nil, false
}

array = append(array, casted)
}
return array, true
}

// GetMapStringInterface ...
func (data PlistData) GetMapStringInterface(forKey string) (PlistData, bool) {
value, ok := data[forKey]
if !ok {
return nil, false
}

if casted, ok := value.(map[string]interface{}); ok {
return casted, true
}
return nil, false
}

func castToMapStringInterfaceArray(obj interface{}) ([]PlistData, error) {
array, ok := obj.([]interface{})
if !ok {
return nil, errors.New("failed to cast to []interface{}")
}

var casted []PlistData
for _, item := range array {
mapStringInterface, ok := item.(map[string]interface{})
if !ok {
return nil, errors.New("failed to cast to map[string]interface{}")
}
casted = append(casted, mapStringInterface)
}

return casted, nil
}

// GetMapStringInterfaceArray ...
func (data PlistData) GetMapStringInterfaceArray(forKey string) ([]PlistData, bool) {
value, ok := data[forKey]
if !ok {
return nil, false
}
mapStringInterfaceArray, err := castToMapStringInterfaceArray(value)
if err != nil {
return nil, false
}
return mapStringInterfaceArray, true
}
Loading
Loading