Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Device generator #24

Merged
merged 10 commits into from
Feb 1, 2024
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@
# Folders
.vscode
/build*/
/etc/

# others
*~
*.swp
*.swo
4 changes: 2 additions & 2 deletions cmd/version.go
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2023 Arm Limited. All rights reserved.
* Copyright (c) 2023-2024 Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: Apache-2.0
*/
Expand All @@ -8,4 +8,4 @@ package main

var version string

const copyright = "(C) 2023 Arm Ltd."
const copyright = "(C) 2023-2024 Arm Ltd."
1 change: 1 addition & 0 deletions internal/common/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ func ReadYml(path string, out interface{}) error {
err = yaml.Unmarshal(yamlFile, out)
if err != nil {
log.Errorf("Unmarshal: %v", err)
return err
}

return nil
Expand Down
55 changes: 55 additions & 0 deletions internal/generator/generator.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
/*
* Copyright (c) 2024 Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: Apache-2.0
*/

package generator

import (
"errors"

"github.com/open-cmsis-pack/generator-bridge/internal/common"
"github.com/open-cmsis-pack/generator-bridge/internal/utils"
)

type ParamsType struct {
ID string
DownloadURL string
}

type GeneratorType struct {
Generator []struct {
ID string `yaml:"id"`
Description string `yaml:"description"`
DownloadURL string `yaml:"download-url"`
Run string `yaml:"run"`
Path string `yaml:"path"`
} `yaml:"generator"`
}

func Read(name string, params *ParamsType) error {
var gen GeneratorType

if !utils.FileExists(name) {
text := "File not found: "
text += name
return errors.New(text)
}

err := common.ReadYml(name, &gen)
if err != nil {
return err
}
for _, genx := range gen.Generator {
if genx.ID == "CubeMX" {
params.ID = genx.ID
params.DownloadURL = genx.DownloadURL
break
}
}
if params.ID != "CubeMX" {
return errors.New("generator CubeMX missing in global.generator.yml")
}
return nil
}
45 changes: 45 additions & 0 deletions internal/generator/generator_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
/*
* Copyright (c) 2024 Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: Apache-2.0
*/

package generator

import (
"reflect"
"testing"
)

func TestRead(t *testing.T) {
var params ParamsType

type args struct {
name string
params *ParamsType
}
tests := []struct {
name string
args args
want ParamsType
wantErr bool
}{
{"wrong.yml", args{"../../testdata/wrong.yml", &params}, ParamsType{}, true},
{"global.yml", args{"../../testdata/global.yml", &params}, ParamsType{ID: "CubeMX", DownloadURL: "https://nix.html"}, false},
{"global-nix.yml", args{"../../testdata/global-nix.yml", &params}, ParamsType{}, true},
{"wrong.yml", args{"../../testdata/wrong.yml", &params}, ParamsType{}, true},
{"xxx.yml", args{"../../testdata/xxx.yml", &params}, ParamsType{}, true},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
params.ID = ""
params.DownloadURL = ""
if err := Read(tt.args.name, tt.args.params); (err != nil) != tt.wantErr {
t.Errorf("Read() %s error = %v, wantErr %v", tt.name, err, tt.wantErr)
}
if !reflect.DeepEqual(params, tt.want) {
t.Errorf("createContextMap() %s got = %v, want %v", tt.name, params, tt.want)
}
})
}
}
8 changes: 6 additions & 2 deletions internal/readFile/readFile.go
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2023 Arm Limited. All rights reserved.
* Copyright (c) 2023-2024 Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: Apache-2.0
*/
Expand Down Expand Up @@ -75,7 +75,11 @@ func Process(inFile, inFile2, outPath string) error {
workDir = path.Join(workDir, parms.OutPath)
}
} else {
workDir = path.Join(workDir, outPath)
if filepath.IsAbs(outPath) {
workDir = outPath
} else {
workDir = path.Join(workDir, outPath)
}
}
workDir = filepath.Clean(workDir)
workDir = filepath.ToSlash(workDir)
Expand Down
3 changes: 1 addition & 2 deletions internal/stm32CubeMX/iniReader.go
Original file line number Diff line number Diff line change
Expand Up @@ -244,8 +244,7 @@ func GetIni(path string) (*ini.File, error) {

func GetSections(inidata *ini.File, iniSections *IniSectionsType) error {
sectionsData := inidata.SectionStrings()
for sectionID := range sectionsData {
section := sectionsData[sectionID]
for _, section := range sectionsData {
var iniName string
var sectionName string
sectionString := strings.Split(section, ":")
Expand Down
Loading
Loading