mirror of
https://github.com/siderolabs/talos.git
synced 2025-08-19 05:31:14 +02:00
This change aims to make installations more unified and reliable. It introduces the concept of a mountpoint manager that is capable of mounting, unmounting, and moving a set of mountpoints in the correct order. Signed-off-by: Andrew Rynhard <andrew@andrewrynhard.com>
63 lines
1.4 KiB
Go
63 lines
1.4 KiB
Go
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
package mount
|
|
|
|
// Options is the functional options struct.
|
|
type Options struct {
|
|
Loopback string
|
|
Prefix string
|
|
ReadOnly bool
|
|
Shared bool
|
|
Resize bool
|
|
}
|
|
|
|
// Option is the functional option func.
|
|
type Option func(*Options)
|
|
|
|
// WithPrefix is a functional option for setting the mount point prefix.
|
|
func WithPrefix(o string) Option {
|
|
return func(args *Options) {
|
|
args.Prefix = o
|
|
}
|
|
}
|
|
|
|
// WithReadOnly is a functional option for setting the mount point as readonly.
|
|
func WithReadOnly(o bool) Option {
|
|
return func(args *Options) {
|
|
args.ReadOnly = o
|
|
}
|
|
}
|
|
|
|
// WithShared is a functional option for setting the mount point as shared.
|
|
func WithShared(o bool) Option {
|
|
return func(args *Options) {
|
|
args.Shared = o
|
|
}
|
|
}
|
|
|
|
// WithResize indicates that a the partition for a given mount point should be
|
|
// resized to the maximum allowed.
|
|
func WithResize(o bool) Option {
|
|
return func(args *Options) {
|
|
args.Resize = o
|
|
}
|
|
}
|
|
|
|
// NewDefaultOptions initializes a Options struct with default values.
|
|
func NewDefaultOptions(setters ...Option) *Options {
|
|
opts := &Options{
|
|
Loopback: "",
|
|
Prefix: "",
|
|
ReadOnly: false,
|
|
Shared: false,
|
|
}
|
|
|
|
for _, setter := range setters {
|
|
setter(opts)
|
|
}
|
|
|
|
return opts
|
|
}
|