cmd

import "github.com/analog-substance/carbon/pkg/cmd"

Index

Variables

CarbonCmd represents the base command when called without any subcommands

var CarbonCmd = &cobra.Command{
    Use:   "carbon",
    Short: "Carbon - Infrastructure automation for offensive operations.",
    Long: `Infrastructure automation for offensive operations.
- ℹ️ Checkout the latest docs [here](https://analog-substance.github.io/carbon/)
- 😢 Have a problem? [Create an Issue](https://github.com/analog-substance/carbon/issues/new?title=Something%20is%20broken)
- ❤️ Enjoying Carbon? [Star the Repo](https://github.com/analog-substance/carbon)

## Purpose

Carbon's primary purpose is to provide a consistent execution environment to
facilitate offensive security assessments.

## Dependencies

- Packer to build images.
- Terraform to provision infrastructure.
- Golang project structure.

## Supported Providers

- AWS
- QEMU (Local)
- VirtualBox (Local)
- vSphere (in progress)
- Multipass (Local)

There are plans to bring support to the following:

- GCP
- Azure
- VMware (Local)
- QEMU (Remote)
`,
    PersistentPreRunE: func(cmd *cobra.Command, args []string) error {

        if debug {
            common.LogLevel(slog.LevelDebug)
        }
        log.Debug("debug mode", "debug", debug)

        carbonConfigFile := common.GetConfig()
        home, err := homedir.Dir()
        if err != nil {
            log.Debug("error getting home directory", "error", err)
        } else {
            err := carbonConfigFile.MergeInConfigFile(filepath.Join(home, cfgFileName))

            if err != nil {
                log.Debug("error loading carbon config from home", "error", err)
            }
        }

        err = carbonConfigFile.MergeInConfigFile(cfgFileName)
        if err != nil {
            log.Debug("error loading carbon config from home", "error", err)
        }

        carbonObj = carbon.New(carbonConfigFile.Carbon)
        updateConfigHelp()

        return nil
    },
}

func AskIfSure

func AskIfSure(msg string) bool

func Execute

func Execute()

Execute adds all child commands to the root command and sets flags appropriately. This is called by main.main(). It only needs to happen once to the rootCmd.

func ListingDir

func ListingDir(dir string)
Last modified March 27, 2025: Add GCP Support (#88) (dccf344)