Repository navigation
Expand file tree
/
Copy pathinit.go
More file actions
81 lines (64 loc) · 1.92 KB
/
Copy pathinit.go
File metadata and controls
81 lines (64 loc) · 1.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
/*
Copyright 2019 BlackRock, Inc.
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 initialize
import (
"io/ioutil"
"os"
"strings"
"github.com/gobuffalo/packr"
"github.com/ocibuilder/lib/generate"
"github.com/sirupsen/logrus"
)
// Initializer is the struct for holding the state for bevalctl init command
type Initializer struct {
Box packr.Box
Dry bool
Logger *logrus.Logger
}
// Basic handles a basic bevalctl init, creating a documented beval.yaml specification to be modified
func (i Initializer) Basic() error {
box := i.Box
log := i.Logger
template, err := box.Find("simple_spec_template.yaml")
if err != nil {
log.WithError(err).Errorln("error reading in template from docs")
return err
}
if i.Dry {
if _, err := os.Stdout.Write(template); err != nil {
log.WithError(err).Errorln("error writing template to stdout")
return err
}
}
if err := ioutil.WriteFile("beval.yaml", template, 0644); err != nil {
log.WithError(err).Errorln("error generating beval.yaml template file")
return err
}
return nil
}
// FromDocker handles an init from a docker file, generating an beval spec
func (i Initializer) FromDocker(imageName string, path string) error {
tags := strings.Split(imageName, ":")
dg := generate.DockerGenerator{
ImageName: tags[0],
Filepath: path,
Logger: i.Logger,
}
if len(tags) > 1 {
dg.Tag = tags[1]
}
if err := generate.GenerateSpecification(dg, i.Dry); err != nil {
return err
}
return nil
}