2 * Copyright (C) 2017 "IoT.bzh"
3 * Author Sebastien Douheret <sebastien@iot.bzh>
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
24 "github.com/iotbzh/xds-server/lib/xsapiv1"
25 uuid "github.com/satori/go.uuid"
28 // CrossSDK Hold SDK config
29 type CrossSDK struct {
33 // NewCrossSDK creates a new instance of Syncthing
34 func NewCrossSDK(path string) (*CrossSDK, error) {
35 // Assume that we have .../<profile>/<version>/<arch>
37 sdk: xsapiv1.SDK{Path: path},
40 s.sdk.Arch = filepath.Base(path)
42 d := filepath.Dir(path)
43 s.sdk.Version = filepath.Base(d)
46 s.sdk.Profile = filepath.Base(d)
48 // Use V3 to ensure that we get same uuid on restart
49 s.sdk.ID = uuid.NewV3(uuid.FromStringOrNil("sdks"), s.sdk.Profile+"_"+s.sdk.Arch+"_"+s.sdk.Version).String()
50 s.sdk.Name = s.sdk.Arch + " (" + s.sdk.Version + ")"
52 envFile := filepath.Join(path, "environment-setup*")
53 ef, err := filepath.Glob(envFile)
55 return nil, fmt.Errorf("Cannot retrieve environment setup file: %v", err)
58 return nil, fmt.Errorf("No environment setup file found match %s", envFile)
65 // Get Return SDK definition
66 func (s *CrossSDK) Get() *xsapiv1.SDK {
70 // GetEnvCmd returns the command used to initialized the environment
71 func (s *CrossSDK) GetEnvCmd() []string {
72 return []string{"source", s.sdk.EnvFile}