github.com/apptainer/singularity@v3.1.1+incompatible/cmd/internal/cli/capability_add_linux.go (about)

     1  // Copyright (c) 2018-2019, Sylabs Inc. All rights reserved.
     2  // This software is licensed under a 3-clause BSD license. Please consult the
     3  // LICENSE.md file distributed with the sources of this project regarding your
     4  // rights to use or distribute this software.
     5  
     6  package cli
     7  
     8  import (
     9  	"github.com/spf13/cobra"
    10  	"github.com/sylabs/singularity/docs"
    11  	"github.com/sylabs/singularity/internal/app/singularity"
    12  	"github.com/sylabs/singularity/internal/pkg/buildcfg"
    13  	"github.com/sylabs/singularity/internal/pkg/sylog"
    14  )
    15  
    16  func init() {
    17  
    18  	// -u|--user
    19  	CapabilityAddCmd.Flags().StringVarP(&CapUser, "user", "u", "", "add capabilities to a user")
    20  	CapabilityAddCmd.Flags().SetAnnotation("user", "argtag", []string{"<user>"})
    21  	CapabilityAddCmd.Flags().SetAnnotation("user", "envkey", []string{"USER"})
    22  
    23  	// -g|--group
    24  	CapabilityAddCmd.Flags().StringVarP(&CapGroup, "group", "g", "", "add capabilities to a group")
    25  	CapabilityAddCmd.Flags().SetAnnotation("group", "argtag", []string{"<group>"})
    26  	CapabilityAddCmd.Flags().SetAnnotation("group", "envkey", []string{"GROUP"})
    27  
    28  	CapabilityAddCmd.Flags().SetInterspersed(false)
    29  }
    30  
    31  // CapabilityAddCmd singularity capability add
    32  var CapabilityAddCmd = &cobra.Command{
    33  	Args:                  cobra.ExactArgs(1),
    34  	DisableFlagsInUseLine: true,
    35  	Run: func(cmd *cobra.Command, args []string) {
    36  		c := singularity.CapManageConfig{
    37  			Caps:  args[0],
    38  			User:  CapUser,
    39  			Group: CapGroup,
    40  		}
    41  
    42  		if err := singularity.CapabilityAdd(buildcfg.CAPABILITY_FILE, c); err != nil {
    43  			sylog.Fatalf("Unable to add capabilities: %s", err)
    44  		}
    45  	},
    46  
    47  	Use:     docs.CapabilityAddUse,
    48  	Short:   docs.CapabilityAddShort,
    49  	Long:    docs.CapabilityAddLong,
    50  	Example: docs.CapabilityAddExample,
    51  }