Skip to content

Commit 4fc21f2

Browse files
committed
Add: Add RunOnce
1 parent bfb96be commit 4fc21f2

6 files changed

Lines changed: 64 additions & 27 deletions

File tree

alteriso5/cmd/build/build.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,6 @@ func build() error {
3131
}
3232

3333
profile := config.DummyProfile()
34-
target := config.NewTarget([]string{"x86_64"}, outDir)
34+
target := config.NewTarget("x86_64", outDir)
3535
return work.Build(profile, target)
3636
}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package config
22

33
type Target struct {
4-
Arch []string
4+
Arch string
55
Out string
66
}
77

8-
func NewTarget(arch []string, out string) Target {
8+
func NewTarget(arch string, out string) Target {
99
return Target{arch, out}
1010
}

alteriso5/cmd/build/work/build.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,15 @@ func (work Work) Build(p config.Profile, t config.Target) error {
77
work.profile = &p
88
work.target = &t
99

10-
var tasks []BuildTask = []BuildTask{
11-
work.MakeBaseDirs,
12-
work.MakeChroot,
10+
tasks := []*BuildTask{
11+
makeBaseDirs,
12+
makeChroot,
1313
}
1414

1515
for _, t := range tasks {
16-
err := t()
16+
//err := (*t).task(&work)
17+
18+
err := work.RunOnce(t)
1719
if err != nil {
1820
return err
1921
}

alteriso5/cmd/build/work/tasks.go

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,30 +3,31 @@ package work
33
import (
44
"path"
55

6-
"github.com/FascodeNet/alterlinux/alteriso5/utils"
76
"github.com/FascodeNet/alterlinux/alteriso5/cmd/build/work/chroot"
7+
"github.com/FascodeNet/alterlinux/alteriso5/utils"
88
)
99

10-
func (work *Work) MakeBaseDirs() error {
11-
12-
dirs := []string{
13-
work.Base,
14-
work.target.Out,
15-
}
10+
var makeBaseDirs *BuildTask = NewBuildTask("makeBaseDirs",
11+
func(work *Work) error {
1612

17-
if err := utils.MkdirsAll(dirs...); err != nil {
18-
return err
19-
}
20-
return nil
21-
}
13+
dirs := []string{
14+
work.Base,
15+
work.target.Out,
16+
}
2217

23-
func (work *Work) MakeChroot() error {
24-
for _, arch := range work.target.Arch {
25-
dir := path.Join(work.Base, arch)
26-
env := chroot.New(dir, arch)
27-
if err := env.Init(); err != nil {
18+
if err := utils.MkdirsAll(dirs...); err != nil {
2819
return err
2920
}
21+
return nil
22+
})
23+
24+
var makeChroot *BuildTask = NewBuildTask("makeChroot", func(work *Work) error {
25+
26+
dir := path.Join(work.Base, work.target.Arch, "airootfs")
27+
env := chroot.New(dir, work.target.Arch)
28+
if err := env.Init(); err != nil {
29+
return err
30+
3031
}
3132
return nil
32-
}
33+
})

alteriso5/cmd/build/work/utils.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package work
2+
3+
import (
4+
"path"
5+
6+
"github.com/Hayao0819/nahi/osutils"
7+
)
8+
9+
func (w *Work) RunOnce(task *BuildTask) error {
10+
lp := path.Join(w.Base, w.target.Arch, "lockfile", task.Name())
11+
if osutils.Exists(lp) {
12+
return nil
13+
}
14+
15+
return task.Run(w)
16+
}

alteriso5/cmd/build/work/work.go

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,29 @@
11
package work
22

33
import (
4-
"github.com/FascodeNet/alterlinux/alteriso5/cmd/build/work/chroot"
54
"github.com/FascodeNet/alterlinux/alteriso5/cmd/build/config"
5+
"github.com/FascodeNet/alterlinux/alteriso5/cmd/build/work/chroot"
66
)
77

8-
type BuildTask func() error
8+
type BuildTask struct {
9+
name string
10+
task func(work *Work) error
11+
}
12+
13+
func NewBuildTask(name string, task func(*Work) error) *BuildTask {
14+
return &BuildTask{
15+
name: name,
16+
task: task,
17+
}
18+
}
19+
20+
func (t *BuildTask) Name() string {
21+
return t.name
22+
}
23+
24+
func (t *BuildTask) Run(w *Work) error {
25+
return t.task(w)
26+
}
927

1028
type Work struct {
1129
Base string

0 commit comments

Comments
 (0)