You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: main.go
    path of file: ./repos/cds/cli/cdsctl
    
    the code of the file until where you have to start completion: package main

import (
	"fmt"
	"strings"

	"github.com/spf13/cobra"

	"github.com/ovh/cds/cli"
	"github.com/ovh/cds/sdk"
	"github.com/ovh/cds/sdk/cdsclient"
)

var (
	cfg            *cdsclient.Config
	configFilePath string
	client         cdsclient.Interface
	root           *cobra.Command
)

func main() {
	root = rootFromSubCommands([]*cobra.Command{
		doc(), // hidden command
		action(),
		admin(),
		application(),
		consumer(),
		encrypt(),
		contexts(),
		environment(),
		experimental(),
		events(),
		group(),
		health(),
		login(),
		reset(),
		signup(),
		pipeline(),
		project(),
		queue(),
		shell(),
		template(),
		tools(),
		update(),
		usr(),
		session(),
		version(),
		worker(),
		workflow(),
		pre
    
func mainRun(vals cli.Values) error {
	fmt.Println("Welcome to CDS")

	config, err := client.ConfigUser()
	if err != nil {
		return nil
	}

	if config.URLUI != "" {
		fmt.Printf("UI: %s\n", config.URLUI)
	}

	navbarInfos, err := client.Navbar()
	if err != nil {
		return nil
	}

	projFavs := []sdk.NavbarProjectData{}
	wfFavs := []sdk.NavbarProjectData{}
	for _, elt := range navbarInfos {
		if elt.Favorite {
			switch elt.Type {
			case "workflow":
				wfFavs = append(wfFavs, elt)
			case "project":
				projFavs = append(projFavs, elt)
			}
		}
	}

	fmt.Println("\n -=-=-=-=- Projects bookmarked -=-=-=-=-")
	for _, prj := range projFavs {
		fmt.Printf("- %s %s\n", prj.Name, config.URLUI+"/project/"+prj.Key)
	}

	fmt.Println("\n -=-=-=-=- Workflows bookmarked -=-=-=-=-")
	for _, wf := range wfFavs {
		fmt.Printf("- %s %s\n", wf.WorkflowName, config.URLUI+"/project/"+wf.Key+"/workflow/"+wf.WorkflowName)
	}

	return nil
}