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 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
|
// Copyright (c) 2020, Control Command Inc. All rights reserved.
// Copyright (c) 2018-2021, 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 (
"runtime"
"github.com/spf13/cobra"
"github.com/sylabs/scs-library-client/client"
"github.com/sylabs/singularity/v4/docs"
"github.com/sylabs/singularity/v4/internal/pkg/client/library"
"github.com/sylabs/singularity/v4/pkg/cmdline"
"github.com/sylabs/singularity/v4/pkg/sylog"
)
var (
// SearchLibraryURI holds the base URI to a Sylabs library API instance
SearchLibraryURI string
// SearchArch holds the architecture for images to display in search results
SearchArch string
// SearchSigned is set true to only search for signed containers
SearchSigned bool
)
// --library
var searchLibraryFlag = cmdline.Flag{
ID: "searchLibraryFlag",
Value: &SearchLibraryURI,
DefaultValue: "",
Name: "library",
Usage: "URI for library to search",
EnvKeys: []string{"LIBRARY"},
}
// --arch
var searchArchFlag = cmdline.Flag{
ID: "searchArchFlag",
Value: &SearchArch,
DefaultValue: runtime.GOARCH,
Name: "arch",
Usage: "architecture to search for",
EnvKeys: []string{"SEARCH_ARCH"},
}
// --signed
var searchSignedFlag = cmdline.Flag{
ID: "searchSignedFlag",
Value: &SearchSigned,
DefaultValue: false,
Name: "signed",
Usage: "architecture to search for",
EnvKeys: []string{"SEARCH_SIGNED"},
}
func init() {
addCmdInit(func(cmdManager *cmdline.CommandManager) {
cmdManager.RegisterCmd(SearchCmd)
cmdManager.RegisterFlagForCmd(&searchLibraryFlag, SearchCmd)
cmdManager.RegisterFlagForCmd(&searchArchFlag, SearchCmd)
cmdManager.RegisterFlagForCmd(&searchSignedFlag, SearchCmd)
})
}
// SearchCmd singularity search
var SearchCmd = &cobra.Command{
DisableFlagsInUseLine: true,
Args: cobra.ExactArgs(1),
Run: func(cmd *cobra.Command, args []string) {
config, err := getLibraryClientConfig(SearchLibraryURI)
if err != nil {
sylog.Fatalf("Error while getting library client config: %v", err)
}
libraryClient, err := client.NewClient(config)
if err != nil {
sylog.Fatalf("Error initializing library client: %v", err)
}
if err := library.SearchLibrary(cmd.Context(), libraryClient, args[0], SearchArch, SearchSigned); err != nil {
sylog.Fatalf("Couldn't search library: %v", err)
}
},
Use: docs.SearchUse,
Short: docs.SearchShort,
Long: docs.SearchLong,
Example: docs.SearchExample,
}
|