mirror of
https://github.com/empayre/fleet.git
synced 2024-11-06 08:55:24 +00:00
126 lines
3.5 KiB
Go
126 lines
3.5 KiB
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"github.com/fleetdm/fleet/v4/orbit/pkg/packaging"
|
||
|
"github.com/pkg/errors"
|
||
|
"github.com/urfave/cli/v2"
|
||
|
)
|
||
|
|
||
|
var opt packaging.Options
|
||
|
|
||
|
func packageCommand() *cli.Command {
|
||
|
return &cli.Command{
|
||
|
Name: "package",
|
||
|
Aliases: nil,
|
||
|
Usage: "Create an Orbit installer package",
|
||
|
Description: "An easy way to create fully boot-strapped installer packages for Windows, macOS, or Linux",
|
||
|
Flags: []cli.Flag{
|
||
|
&cli.StringFlag{
|
||
|
Name: "type",
|
||
|
Usage: "Type of package to build",
|
||
|
Required: true,
|
||
|
},
|
||
|
&cli.StringFlag{
|
||
|
Name: "enroll-secret",
|
||
|
Usage: "Enroll secret for authenticating to Fleet server",
|
||
|
Destination: &opt.EnrollSecret,
|
||
|
},
|
||
|
&cli.StringFlag{
|
||
|
Name: "fleet-url",
|
||
|
Usage: "URL (host:port) of Fleet server",
|
||
|
Destination: &opt.FleetURL,
|
||
|
},
|
||
|
&cli.StringFlag{
|
||
|
Name: "fleet-certificate",
|
||
|
Usage: "Path to server cerificate bundle",
|
||
|
Destination: &opt.FleetCertificate,
|
||
|
},
|
||
|
&cli.StringFlag{
|
||
|
Name: "identifier",
|
||
|
Usage: "Identifier for package product",
|
||
|
Value: "com.fleetdm.orbit",
|
||
|
Destination: &opt.Identifier,
|
||
|
},
|
||
|
&cli.StringFlag{
|
||
|
Name: "version",
|
||
|
Usage: "Version for package product",
|
||
|
Value: "0.0.3",
|
||
|
Destination: &opt.Version,
|
||
|
},
|
||
|
&cli.BoolFlag{
|
||
|
Name: "insecure",
|
||
|
Usage: "Disable TLS certificate verification",
|
||
|
Destination: &opt.Insecure,
|
||
|
},
|
||
|
&cli.BoolFlag{
|
||
|
Name: "service",
|
||
|
Usage: "Install orbit/osquery with a persistence service (launchd, systemd, etc.)",
|
||
|
Value: true,
|
||
|
Destination: &opt.StartService,
|
||
|
},
|
||
|
&cli.StringFlag{
|
||
|
Name: "sign-identity",
|
||
|
Usage: "Identity to use for macOS codesigning",
|
||
|
Destination: &opt.SignIdentity,
|
||
|
},
|
||
|
&cli.BoolFlag{
|
||
|
Name: "notarize",
|
||
|
Usage: "Whether to notarize macOS packages",
|
||
|
Destination: &opt.Notarize,
|
||
|
},
|
||
|
&cli.StringFlag{
|
||
|
Name: "osqueryd-channel",
|
||
|
Usage: "Update channel of osqueryd to use",
|
||
|
Value: "stable",
|
||
|
Destination: &opt.OsquerydChannel,
|
||
|
},
|
||
|
&cli.StringFlag{
|
||
|
Name: "orbit-channel",
|
||
|
Usage: "Update channel of Orbit to use",
|
||
|
Value: "stable",
|
||
|
Destination: &opt.OrbitChannel,
|
||
|
},
|
||
|
&cli.StringFlag{
|
||
|
Name: "update-url",
|
||
|
Usage: "URL for update server",
|
||
|
Value: "https://tuf.fleetctl.com",
|
||
|
Destination: &opt.UpdateURL,
|
||
|
},
|
||
|
&cli.StringFlag{
|
||
|
Name: "update-roots",
|
||
|
Usage: "Root key JSON metadata for update server (from fleetctl updates roots)",
|
||
|
Destination: &opt.UpdateRoots,
|
||
|
},
|
||
|
&cli.BoolFlag{
|
||
|
Name: "debug",
|
||
|
Usage: "Enable debug logging",
|
||
|
Destination: &opt.Debug,
|
||
|
},
|
||
|
},
|
||
|
Action: func(c *cli.Context) error {
|
||
|
if opt.FleetURL != "" || opt.EnrollSecret != "" {
|
||
|
if opt.FleetURL == "" || opt.EnrollSecret == "" {
|
||
|
return errors.New("--enroll-secret and --fleet-url must be provided together")
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if opt.Insecure && opt.FleetCertificate != "" {
|
||
|
return errors.New("--insecure and --fleet-certificate may not be provided together")
|
||
|
}
|
||
|
|
||
|
switch c.String("type") {
|
||
|
case "pkg":
|
||
|
return packaging.BuildPkg(opt)
|
||
|
case "deb":
|
||
|
return packaging.BuildDeb(opt)
|
||
|
case "rpm":
|
||
|
return packaging.BuildRPM(opt)
|
||
|
case "msi":
|
||
|
return packaging.BuildMSI(opt)
|
||
|
default:
|
||
|
return errors.New("type must be one of ('pkg', 'deb', 'rpm', 'msi')")
|
||
|
}
|
||
|
},
|
||
|
}
|
||
|
}
|