mirror of
https://github.com/linka-cloud/d2vm.git
synced 2024-07-01 02:39:52 +00:00
60 lines
2.5 KiB
Go
60 lines
2.5 KiB
Go
// Copyright 2022 Linka Cloud All rights reserved.
|
|
//
|
|
// 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 main
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/spf13/pflag"
|
|
|
|
"go.linka.cloud/d2vm"
|
|
)
|
|
|
|
var (
|
|
output = "disk0.qcow2"
|
|
size = "1G"
|
|
password = ""
|
|
force = false
|
|
raw bool
|
|
pull = false
|
|
cmdLineExtra = ""
|
|
containerDiskTag = ""
|
|
push bool
|
|
networkManager string
|
|
splitBoot bool
|
|
bootSize uint64
|
|
luksPassword string
|
|
|
|
keepCache bool
|
|
)
|
|
|
|
func buildFlags() *pflag.FlagSet {
|
|
flags := pflag.NewFlagSet("build", pflag.ExitOnError)
|
|
flags.StringVarP(&output, "output", "o", output, "The output image, the extension determine the image format, raw will be used if none. Supported formats: "+strings.Join(d2vm.OutputFormats(), " "))
|
|
flags.StringVarP(&password, "password", "p", "", "Optional root user password")
|
|
flags.StringVarP(&size, "size", "s", "10G", "The output image size")
|
|
flags.BoolVar(&force, "force", false, "Override output qcow2 image")
|
|
flags.StringVar(&cmdLineExtra, "append-to-cmdline", "", "Extra kernel cmdline arguments to append to the generated one")
|
|
flags.StringVar(&networkManager, "network-manager", "", "Network manager to use for the image: none, netplan, ifupdown")
|
|
flags.BoolVar(&raw, "raw", false, "Just convert the container to virtual machine image without installing anything more")
|
|
flags.StringVarP(&containerDiskTag, "tag", "t", "", "Container disk Docker image tag")
|
|
flags.BoolVar(&push, "push", false, "Push the container disk image to the registry")
|
|
flags.BoolVar(&splitBoot, "split-boot", false, "Split the boot partition from the root partition")
|
|
flags.Uint64Var(&bootSize, "boot-size", 100, "Size of the boot partition in MB")
|
|
flags.StringVar(&luksPassword, "luks-password", "", "Password to use for the LUKS encrypted root partition. If not set, the root partition will not be encrypted")
|
|
flags.BoolVar(&keepCache, "keep-cache", false, "Keep the images after the build")
|
|
return flags
|
|
}
|