Skip to content

Commit 3cfb621

Browse files
author
yuyang
committed
add build arg support
1 parent 40c424e commit 3cfb621

File tree

8 files changed

+100
-10
lines changed

8 files changed

+100
-10
lines changed

Dotamfile.hcl

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,29 @@ temp "Tempfile" {
88
}
99
}
1010

11+
git "dev" {
12+
add_type = "u"
13+
commit = ""
14+
}
15+
16+
docker {
17+
repo = "deoops/dotam"
18+
tag = "{{versions.prod}}"
19+
username = "$reg_passwd"
20+
passpord = "$reg_passwd"
21+
}
22+
1123
var "data" {
1224
temp = <<TEMP
1325
abc
1426
bcd
1527
TEMP
28+
}
29+
30+
arg "reg_user" {
31+
type = "string"
32+
}
33+
34+
arg "reg_passwd" {
35+
type = "string"
1636
}

README.en.md

Whitespace-only changes.

TODO.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
* 模板插件完整支持
1010
* cli基本命令支持`build, init`
1111
* plugin完整支持
12+
* 完善文档
1213

1314
**todos:**
1415

@@ -18,11 +19,20 @@
1819
- [x] yaml
1920
- [x] hcl
2021
- [ ] !! init命令
22+
- [ ] !! 文档
23+
- [ ] template syntax
24+
- [ ] en
25+
- [ ] zh
2126
- [ ] ! 自举
2227
- [ ] ! git 插件
2328
- [ ] ! docker 插件
2429
- [ ] ! refactor code
30+
- [ ] !! build args
2531

2632
----
2733

2834
## V 2.0.0
35+
36+
**目标:**
37+
38+
* 兼容drone

Tempfile

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,8 @@
1-
abcd
2-
{{#success build.status}}
1+
abc
2+
bcd
3+
4+
5+
{{#success build.status}}
6+
7+
8+
abc

build.go

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ func (r RunCmd) Run(args []string) (extCode int) {
3030
var err error
3131
var dotamFile string
3232
var renderData pongo2.Context
33+
var buildArgs []string
34+
log.WithFields(log.Fields{"BUILD": "ARGS"}).Debug(args)
3335

3436
defer func() {
3537
if err != nil {
@@ -48,7 +50,17 @@ func (r RunCmd) Run(args []string) (extCode int) {
4850
}
4951
dotamFile = Abs(defaultConf)
5052
} else {
51-
dotamFile = Abs(args[0])
53+
dotamFile, buildArgs = ParseBuildArgs(args)
54+
if dotamFile == "" {
55+
if !exist {
56+
err = errors.New("you need at least a conf file, pls see help doc")
57+
return
58+
} else {
59+
dotamFile = defaultConf
60+
}
61+
}
62+
log.WithFields(log.Fields{"BUILD": "PARSED ARGS"}).Debug(buildArgs)
63+
5264
}
5365

5466
data := ReadFile(dotamFile)
@@ -61,23 +73,20 @@ func (r RunCmd) Run(args []string) (extCode int) {
6173
if config.Var != nil {
6274
renderData = VarToTplContext(config.Var)
6375
}
64-
log.Debug("ooo")
6576
log.Debug(renderData)
66-
log.Debug("******")
6777

6878
newDotamSrc, err := Render(string(data), renderData)
6979
if err != nil {
7080
// log.Error(err)
7181
return -1
7282
}
73-
log.Debug("!!!!")
83+
7484
log.Debug(newDotamSrc)
7585

7686
newConfig := DotamConf{}
7787
if err = parseConf(&newConfig, newDotamSrc, dotamFile); err != nil {
7888
return
7989
}
80-
log.Debug("00000")
8190
log.Debug(newConfig)
8291

8392
if err = RunTasks(newConfig); err != nil {

example/.dotam/Tempfile

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,7 @@
11
{{data}}
2-
{{ "{{#success build.status}}"|safe }}
2+
{{ "{{#success build.status}}"|safe }}
3+
{# foothing{{#abc}} #}
4+
{% comment %}
5+
foo
6+
{% endcomment%}
7+
abc

main_test.go

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ func TestExist(t *testing.T) {
2929
results := []bool{}
3030

3131
for _, f := range files {
32-
t.Log(Exist(f))
3332
results = append(results, Exist(f))
3433
}
3534
if !reflect.DeepEqual(expects, results) {
@@ -46,6 +45,32 @@ func TestParseYaml(t *testing.T) {
4645
fmt.Println(err)
4746
t.Fail()
4847
}
49-
fmt.Println(c)
5048

5149
}
50+
51+
func TestParseArgs(t *testing.T) {
52+
data := []string{"Dotamfile.hcl", "reg_user=tom", "reg_pass=foo"}
53+
data2 := []string{"reg_user=tom", "foo=bar"}
54+
55+
f, a := ParseBuildArgs(data)
56+
if !reflect.DeepEqual([]string{"reg_user=tom", "reg_pass=foo"}, a) {
57+
t.Log(a)
58+
t.Fail()
59+
}
60+
61+
if f != "Dotamfile.hcl" {
62+
t.Log(f)
63+
t.Fail()
64+
}
65+
66+
f2, a2 := ParseBuildArgs(data2)
67+
if !reflect.DeepEqual([]string{"reg_user=tom", "foo=bar"}, a2) {
68+
t.Log(a2)
69+
t.Fail()
70+
}
71+
72+
if f2 != "" {
73+
t.Log(f2)
74+
t.Fail()
75+
}
76+
}

util.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"fmt"
55
"io/ioutil"
66
"os"
7+
"strings"
78

89
"github.com/flosch/pongo2"
910
log "github.com/sirupsen/logrus"
@@ -108,3 +109,17 @@ func Exist(path string) bool {
108109
}
109110

110111
}
112+
113+
func ParseBuildArgs(src []string) (dotamFile string, dest []string) {
114+
115+
str := strings.Join(src, " ")
116+
for _, d := range DEFAULT_DOTAMFILES {
117+
if strings.Contains(str, d) {
118+
dotamFile = d
119+
}
120+
str = strings.Replace(str, d, "", -1)
121+
str = strings.TrimSpace(str)
122+
}
123+
dest = strings.Split(str, " ")
124+
return
125+
}

0 commit comments

Comments
 (0)