1
0
mirror of https://github.com/minio/mc.git synced 2025-11-12 01:02:26 +03:00
Files
mc/cmd-options.go
Harshavardhana 9833697e0a Add more fixes and helpful messaging
- check for config file for each command, prior to error out properly
  - hostconfig doesn't do any key verification, let client s3 verify it as needed
  - mc update change URL pointed to dl.minio.io minio server, still not functional yet
2015-04-30 14:03:06 -07:00

346 lines
9.8 KiB
Go

/*
* Minio Client (C) 2014, 2015 Minio, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package main
import (
"fmt"
"strings"
"github.com/minio-io/cli"
"github.com/minio-io/mc/pkg/console"
)
// List of commands
var (
accessCmd = cli.Command{
Name: "access",
Usage: "Set permissions [public, private, readonly] for buckets and folders.",
Action: runAccessCmd,
CustomHelpTemplate: `Name:
mc {{.Name}} - {{.Usage}}
USAGE:
mc {{.Name}}{{if .Flags}} [ARGS...]{{end}} PERMISSION TARGET [TARGET...] {{if .Description}}
DESCRIPTION:
{{.Description}}{{end}}{{if .Flags}}
FLAGS:
{{range .Flags}}{{.}}
{{end}}{{ end }}
EXAMPLES:
1. Set bucket to "private" on Amazon S3 object storage
$ mc {{.Name}} private https://s3.amazonaws.com/burningman2011
2. Set bucket to "public" on Amazon S3 object storage
$ mc {{.Name}} public https://s3.amazonaws.com/shared
3. Set folder to world readwrite (chmod 777) on local filesystem
$ mc {{.Name}} public /shared/Music
`,
}
catCmd = cli.Command{
Name: "cat",
Usage: "Concantenate objects or files to standard output",
Action: runCatCmd,
CustomHelpTemplate: `NAME:
mc {{.Name}} - {{.Usage}}
USAGE:
mc {{.Name}}{{if .Flags}} [ARGS...]{{end}} SOURCE {{if .Description}}
DESCRIPTION:
{{.Description}}{{end}}{{if .Flags}}
FLAGS:
{{range .Flags}}{{.}}
{{end}}{{ end }}
EXAMPLES:
1. Concantenate an object from Amazon S3 object storage to mplayer standard input
$ mc {{.Name}} https://s3.amazonaws.com/jukebox/klingon_opera_aktuh_maylotah.ogg | mplayer -
2. Concantenate a file from local filesystem to standard output.
$ mc {{.Name}} khitomer-accords.txt
3. Concantenate multiple files from local filesystem to standard output.
$ mc {{.Name}} *.txt > newfile.txt
`,
}
cpCmd = cli.Command{
Name: "cp",
Usage: "Copy objects and files from multiple sources single destination",
Action: runCopyCmd,
CustomHelpTemplate: `NAME:
mc {{.Name}} - {{.Usage}}
USAGE:
mc {{.Name}}{{if .Flags}} [ARGS...]{{end}} SOURCE TARGET [TARGET...] {{if .Description}}
DESCRIPTION:
{{.Description}}{{end}}{{if .Flags}}
FLAGS:
{{range .Flags}}{{.}}
{{end}}{{ end }}
EXAMPLES:
1. Copy list of objects from local file system to Amazon S3 object storage
$ mc {{.Name}} Music/*.ogg https://s3.amazonaws.com/jukebox/
2. Copy a bucket recursively from Minio object storage to Amazon S3 object storage
$ mc {{.Name}} http://localhost:9000/photos/burningman2011... https://s3.amazonaws.com/private-photos/burningman/
3. Copy multiple local folders recursively to Minio object storage
$ mc {{.Name}} backup/2014/... backup/2015/... http://localhost:9000/archive/
4. Copy a bucket recursively from aliased Amazon S3 object storage to local filesystem on Windows.
$ mc {{.Name}} s3:documents/2014/... C:\backup\2014
`,
}
lsCmd = cli.Command{
Name: "ls",
Usage: "List files and objects",
Action: runListCmd,
CustomHelpTemplate: `NAME:
mc {{.Name}} - {{.Usage}}
USAGE:
mc {{.Name}} TARGET [TARGET...] {{if .Description}}
DESCRIPTION:
{{.Description}}{{end}}{{if .Flags}}
FLAGS:
{{range .Flags}}{{.}}
{{end}}{{ end }}
EXAMPLES:
1. List objects recursively on Minio object storage
$ mc {{.Name}} http://localhost:9000/backup/...
[2015-03-28 12:47:50 PDT] 34MiB 2006-Jan-1/backup.tar.gz
[2015-03-31 14:46:33 PDT] 55MiB 2006-Mar-1/backup.tar.gz
2. List buckets on Amazon S3 object storage
$ mc {{.Name}} https://s3.amazonaws.com/
[2015-01-20 15:42:00 PST] 0B rom/
[2015-01-15 00:05:40 PST] 0B zek/
3. List buckets from Amazon S3 object storage and recursively list objects from Minio object storage
$ mc {{.Name}} https://s3.amazonaws.com/ http://localhost:9000/backup/...
2015-01-15 00:05:40 PST 0B zek/
2015-03-31 14:46:33 PDT 55MiB 2006-Mar-1/backup.tar.gz
4. List files recursively on local filesystem on Windows
$ mc {{.Name}} C:\Users\Worf\...
[2015-03-28 12:47:50 PDT] 11.00MiB Martok\Klingon Council Ministers.pdf
[2015-03-31 14:46:33 PDT] 15.00MiB Gowron\Khitomer Conference Details.pdf
5. List files non recursively on local filesystem
$ mc {{.Name}} /usr/lib/llvm-3.4
[2015-04-01 14:57:17 PDT] 12KiB lib/
[2015-04-01 14:57:17 PDT] 4.0KiB include/
[2015-04-01 14:57:10 PDT] 4.0KiB build/
[2015-04-01 14:57:07 PDT] 4.0KiB bin/
`,
}
syncCmd = cli.Command{
Name: "sync",
Usage: "Copies files and objects from single source to multiple destinations",
Action: runSyncCmd,
CustomHelpTemplate: `NAME:
mc {{.Name}} - {{.Usage}}
USAGE:
mc {{.Name}} TARGET [TARGET...] {{if .Description}}
DESCRIPTION:
{{.Description}}{{end}}{{if .Flags}}
FLAGS:
{{range .Flags}}{{.}}
{{end}}{{ end }}
EXAMPLES:
1. Sync an object from local filesystem to Amazon S3 object storage
$ mc {{.Name}} star-trek-episode-10-season4.ogg https://s3.amazonaws.com/trekarchive
2. Sync a bucket recursively from Minio object storage to multiple buckets on Amazon S3 object storage
$ mc {{.Name}} http://localhost:9000/photos/2014... https://s3.amazonaws.com/backup-photos https://s3.amazonaws.com/my-photos
3. Copy a local folder recursively to Minio object storage and Amazon S3 object storage
$ mc {{.Name}} backup/... http://localhost:9000/archive https://s3.amazonaws.com/archive
4. Sync a bucket from aliased Amazon S3 object storage to multiple folders on Windows.
$ mc {{.Name}} s3:documents/2014/... C:\backup\2014 C:\shared\volume\backup\2014
`,
}
mbCmd = cli.Command{
Name: "mb",
Usage: "Make a bucket or a folder",
Action: runMakeBucketCmd,
CustomHelpTemplate: `NAME:
mc {{.Name}} - {{.Usage}}
USAGE:
mc {{.Name}} TARGET [TARGET...] {{if .Description}}
DESCRIPTION:
{{.Description}}{{end}}{{if .Flags}}
FLAGS:
{{range .Flags}}{{.}}
{{end}}{{ end }}
EXAMPLES:
1. Create a bucket on Amazon S3 object storage
$ mc {{.Name}} https://s3.amazonaws.com/public-document-store
2. Create a bucket on Minio object storage
$ mc {{.Name}} http://localhost:9000/mongodb-backup
3. Create multiple buckets on Amazon S3 object storage and Minio object storage
$ mc {{.Name}} https://s3.amazonaws.com/public-photo-store https://s3.amazonaws.com/public-store http://localhost:9000/mongodb-backup
`,
}
// Configure minio client
//
// ----
// NOTE: that the configure command only writes values to the config file.
// It does not use any configuration values from the environment variables.
//
// One needs to edit configuration file manually, this is purposefully done
// so to avoid taking credentials over cli arguments. It is a security precaution
// ----
//
configCmd = cli.Command{
Name: "config",
Usage: "Generate configuration \"" + mustGetMcConfigPath() + "\" file.",
Action: runConfigCmd,
CustomHelpTemplate: `NAME:
mc {{.Name}} - {{.Usage}}
USAGE:
mc {{.Name}}{{if .Flags}} [ARGS...]{{end}} generate
mc {{.Name}}{{if .Flags}} [ARGS...]{{end}} alias NAME HOSTURL
EXAMPLES:
1. Generate mc config
$ mc config generate
2. Add alias URLs
$ mc config alias zek https://s3.amazonaws.com/
`,
}
updateCmd = cli.Command{
Name: "update",
Usage: "Check for new software updates",
Action: runUpdateCmd,
CustomHelpTemplate: `Name:
mc {{.Name}} - {{.Usage}}
USAGE:
mc {{.Name}}{{if .Flags}} [ARGS...]{{end}} check
mc {{.Name}}{{if .Flags}} [ARGS...]{{end}} install
EXAMPLES:
1. Check for new updates
$ mc update check
2. Download new minio client locally and update
$ mc update install
`,
}
)
// Collection of mc commands currently supported are
//
// ----
// ls List files and objects
// cp Copy objects and files from multiple sources to single destination
// sync Copy objects and files from single source to multiple destionations
// mb Make a bucket
// access Set permissions [public, private, readonly] for buckets and folders.
// cat Concantenate an object to standard output
// config Generate configuration "/home/harsha/.mc/config.json" file.
// update Check for new software updates
// ----
//
var commands = []cli.Command{
lsCmd,
cpCmd,
syncCmd,
catCmd,
mbCmd,
accessCmd,
configCmd,
updateCmd,
// Add your new commands starting from here
}
// Collection of mc flags currently supported
//
// --theme "minimal"Choose a console theme from this list [*minimal*, nocolor, white]
// --debug Enable HTTP tracing
// --quiet, -q Supress chatty console output
// --retry "5" Number of retry count
// --version, -v print the version
//
var (
flags = []cli.Flag{
cli.StringFlag{
Name: "theme",
Value: console.GetDefaultThemeName(),
Usage: fmt.Sprintf("Choose a console theme from this list [%s]", func() string {
keys := []string{}
for _, themeName := range console.GetThemeNames() {
if console.GetThemeName() == themeName {
themeName = "*" + themeName + "*"
}
keys = append(keys, themeName)
}
return strings.Join(keys, ", ")
}()),
},
cli.BoolFlag{
Name: "debug",
Usage: "Enable HTTP tracing",
},
cli.BoolFlag{
Name: "quiet, q",
Usage: "Supress chatty console output",
},
cli.IntFlag{
Name: "retry",
Usage: "Number of retry count",
Value: 5,
},
// Add your new flags starting here
}
)