* Copyright (c) 2023 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package gitee_build
import (
"context"
"fotff/pkg"
"fotff/pkg/gitee_common"
"fotff/utils"
"github.com/sirupsen/logrus"
"strings"
)
type Manager struct {
ArchiveDir string `key:"archive_dir" default:"archive"`
Workspace string `key:"workspace" default:"workspace"`
Branch string `key:"branch" default:"master"`
ManifestBranch string `key:"manifest_branch" default:"master"`
Component string `key:"component"`
PreCompileCMD string `key:"pre_compile_cmd"`
CompileCMD string `key:"compile_cmd"`
ImageList []string `key:"image_list"`
*gitee_common.Manager
}
func NewManager() pkg.Manager {
var ret Manager
utils.ParseFromConfigFile("gitee_build", &ret)
ret.Manager = gitee_common.NewManager(ret.Component, ret.Branch, ret.ManifestBranch, ret.ArchiveDir, ret.Workspace, true)
return &ret
}
func (m *Manager) GetNewer(cur string) (string, error) {
return m.GetNewerOrFail(cur)
}
func (m *Manager) Flash(device string, pkg string, ctx context.Context) error {
logrus.Infof("now flash %s", pkg)
buildConfig := gitee_common.BuildConfig{
Pkg: pkg,
PreCompileCMD: m.PreCompileCMD,
CompileCMD: m.CompileCMD,
ImgList: m.ImageList,
}
if m.PkgAvailable(buildConfig) {
return nil
}
if strings.Contains(buildConfig.Pkg, "build_fail") {
logrus.Warnf("here is a known build_fail token package")
} else {
if err := m.BuildNoRetry(buildConfig, true, ctx); err != nil {
logrus.Warnf("build %s fail, err: %v", pkg, err)
} else {
logrus.Infof("%s is available now", pkg)
}
}
logrus.Infof("since fotff just tests package buildings, there is no need to flash images actually, mark flash as a success unconditionally")
return nil
}