@@ -2,20 +2,31 @@ package pkg
22
33import (
44 "fmt"
5+ "github.com/samber/lo"
56 log "github.com/sirupsen/logrus"
67 "github.com/wttech/aemc/pkg/common/execx"
78 "github.com/wttech/aemc/pkg/common/filex"
89 "github.com/wttech/aemc/pkg/common/osx"
910 "github.com/wttech/aemc/pkg/common/pathx"
11+ "github.com/wttech/aemc/pkg/sdk"
1012 "path/filepath"
13+ "strings"
1114)
1215
1316func NewSDK (vendorManager * VendorManager ) * SDK {
14- return & SDK {vendorManager : vendorManager }
17+ cv := vendorManager .aem .Config ().Values ()
18+
19+ return & SDK {
20+ vendorManager : vendorManager ,
21+
22+ OS : cv .GetString ("vendor.sdk.os" ),
23+ }
1524}
1625
1726type SDK struct {
1827 vendorManager * VendorManager
28+
29+ OS string
1930}
2031
2132func (s SDK ) Dir () string {
@@ -118,7 +129,12 @@ func (s SDK) findFile(pattern string) (string, error) {
118129}
119130
120131func (s SDK ) unpackDispatcher () error {
121- if osx .IsWindows () {
132+ os , err := s .determineOs ()
133+ if err != nil {
134+ return err
135+ }
136+
137+ if os == sdk .OSWindows {
122138 zip , err := s .dispatcherToolsWindowsZip ()
123139 if err != nil {
124140 return err
@@ -145,6 +161,20 @@ func (s SDK) unpackDispatcher() error {
145161 return nil
146162}
147163
164+ func (s SDK ) determineOs () (string , error ) {
165+ os := s .OS
166+ if ! lo .Contains (sdk .OsTypes (), os ) {
167+ return "" , fmt .Errorf ("unsupported SDK OS type '%s', supported types are: %s" , os , strings .Join (sdk .OsTypes (), ", " ))
168+ }
169+ if os != sdk .OSAuto {
170+ return os , nil
171+ }
172+ if osx .IsWindows () {
173+ return sdk .OSWindows , nil
174+ }
175+ return sdk .OSUnix , nil
176+ }
177+
148178func (s SDK ) Destroy () error {
149179 return pathx .Delete (s .Dir ())
150180}
0 commit comments