File: common.go

package info (click to toggle)
distrobuilder 3.2-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,468 kB
  • sloc: sh: 204; makefile: 75
file content (105 lines) | stat: -rw-r--r-- 2,278 bytes parent folder | download | duplicates (2)
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
package managers

import (
	"context"

	"github.com/sirupsen/logrus"

	"github.com/lxc/distrobuilder/shared"
)

type common struct {
	commands   managerCommands
	flags      managerFlags
	hooks      managerHooks
	logger     *logrus.Logger
	definition shared.Definition
	ctx        context.Context
}

func (c *common) init(ctx context.Context, logger *logrus.Logger, definition shared.Definition) {
	c.logger = logger
	c.definition = definition
	c.ctx = ctx
}

// Install installs packages to the rootfs.
func (c *common) install(pkgs, flags []string) error {
	if len(c.flags.install) == 0 || pkgs == nil || len(pkgs) == 0 {
		return nil
	}

	args := append(c.flags.global, c.flags.install...)
	args = append(args, flags...)
	args = append(args, pkgs...)

	return shared.RunCommand(c.ctx, nil, nil, c.commands.install, args...)
}

// Remove removes packages from the rootfs.
func (c *common) remove(pkgs, flags []string) error {
	if len(c.flags.remove) == 0 || pkgs == nil || len(pkgs) == 0 {
		return nil
	}

	args := append(c.flags.global, c.flags.remove...)
	args = append(args, flags...)
	args = append(args, pkgs...)

	return shared.RunCommand(c.ctx, nil, nil, c.commands.remove, args...)
}

// Clean cleans up cached files used by the package managers.
func (c *common) clean() error {
	var err error

	if len(c.flags.clean) == 0 {
		return nil
	}

	args := append(c.flags.global, c.flags.clean...)

	err = shared.RunCommand(c.ctx, nil, nil, c.commands.clean, args...)
	if err != nil {
		return err
	}

	if c.hooks.clean != nil {
		err = c.hooks.clean()
	}

	return err
}

// Refresh refreshes the local package database.
func (c *common) refresh() error {
	if len(c.flags.refresh) == 0 {
		return nil
	}

	if c.hooks.preRefresh != nil {
		err := c.hooks.preRefresh()
		if err != nil {
			return err
		}
	}

	args := append(c.flags.global, c.flags.refresh...)

	return shared.RunCommand(c.ctx, nil, nil, c.commands.refresh, args...)
}

// Update updates all packages.
func (c *common) update() error {
	if len(c.flags.update) == 0 {
		return nil
	}

	args := append(c.flags.global, c.flags.update...)

	return shared.RunCommand(c.ctx, nil, nil, c.commands.update, args...)
}

func (c *common) manageRepository(repo shared.DefinitionPackagesRepository) error {
	return nil
}