1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
|
// Copyright (c) 2020, Control Command Inc. All rights reserved.
// Copyright (c) 2018-2020, Sylabs Inc. All rights reserved.
// This software is licensed under a 3-clause BSD license. Please consult the
// LICENSE.md file distributed with the sources of this project regarding your
// rights to use or distribute this software.
package cli
import (
"fmt"
"os"
"os/exec"
"path/filepath"
"github.com/spf13/cobra"
"github.com/sylabs/singularity/v4/docs"
"github.com/sylabs/singularity/v4/internal/pkg/buildcfg"
"github.com/sylabs/singularity/v4/pkg/cmdline"
"github.com/sylabs/singularity/v4/pkg/sylog"
)
// --app
var runHelpAppNameFlag = cmdline.Flag{
ID: "runHelpAppNameFlag",
Value: &appName,
DefaultValue: "",
Name: "app",
Usage: "show the help for an app",
}
func init() {
addCmdInit(func(cmdManager *cmdline.CommandManager) {
cmdManager.RegisterCmd(RunHelpCmd)
cmdManager.RegisterFlagForCmd(&runHelpAppNameFlag, RunHelpCmd)
})
}
// RunHelpCmd singularity run-help <image>
var RunHelpCmd = &cobra.Command{
DisableFlagsInUseLine: true,
Args: cobra.ExactArgs(1),
Run: func(cmd *cobra.Command, args []string) {
// Sanity check
if _, err := os.Stat(args[0]); err != nil {
sylog.Fatalf("container not found: %s", err)
}
cmdArgs := []string{"inspect", "--helpfile"}
if appName != "" {
sylog.Debugf("App specified. Looking for help section of %s", appName)
cmdArgs = append(cmdArgs, "--app", appName)
}
cmdArgs = append(cmdArgs, args[0])
execCmd := exec.Command(filepath.Join(buildcfg.BINDIR, "singularity"), cmdArgs...)
execCmd.Stderr = os.Stderr
execCmd.Env = []string{}
out, err := execCmd.Output()
if err != nil {
sylog.Fatalf("While getting run-help: %s", err)
}
if len(out) == 0 {
fmt.Println("No help sections were defined for this image")
} else {
fmt.Printf("%s", string(out))
}
},
Use: docs.RunHelpUse,
Short: docs.RunHelpShort,
Long: docs.RunHelpLong,
Example: docs.RunHelpExample,
}
|