mirror of
https://github.com/minio/mc.git
synced 2025-11-12 01:02:26 +03:00
Change mc config host list format to record style (#2659)
This commit is contained in:
@@ -72,12 +72,11 @@ func mainConfigHostList(ctx *cli.Context) error {
|
||||
checkConfigHostListSyntax(ctx)
|
||||
|
||||
// Additional command speific theme customization.
|
||||
console.SetColor("HostMessage", color.New(color.FgGreen))
|
||||
console.SetColor("Alias", color.New(color.FgCyan, color.Bold))
|
||||
console.SetColor("URL", color.New(color.FgCyan))
|
||||
console.SetColor("AccessKey", color.New(color.FgBlue))
|
||||
console.SetColor("SecretKey", color.New(color.FgBlue))
|
||||
console.SetColor("API", color.New(color.FgYellow))
|
||||
console.SetColor("URL", color.New(color.FgYellow))
|
||||
console.SetColor("AccessKey", color.New(color.FgCyan))
|
||||
console.SetColor("SecretKey", color.New(color.FgCyan))
|
||||
console.SetColor("API", color.New(color.FgBlue))
|
||||
console.SetColor("Lookup", color.New(color.FgCyan))
|
||||
|
||||
args := ctx.Args()
|
||||
@@ -96,7 +95,7 @@ func printHosts(hosts ...hostMessage) {
|
||||
for _, host := range hosts {
|
||||
if !globalJSON {
|
||||
// Format properly for alignment based on alias length only in non json mode.
|
||||
host.Alias = fmt.Sprintf("%-*.*s:", maxAlias, maxAlias, host.Alias)
|
||||
host.Alias = fmt.Sprintf("%-*.*s", maxAlias, maxAlias, host.Alias)
|
||||
}
|
||||
if host.AccessKey == "" || host.SecretKey == "" {
|
||||
host.AccessKey = ""
|
||||
|
||||
@@ -64,28 +64,16 @@ type hostMessage struct {
|
||||
func (h hostMessage) String() string {
|
||||
switch h.op {
|
||||
case "list":
|
||||
urlFieldMaxLen, apiFieldMaxLen := -1, -1
|
||||
accessFieldMaxLen, secretFieldMaxLen := -1, -1
|
||||
lookupFieldMaxLen := -1
|
||||
// Set cols width if prettyPrint flag is enabled
|
||||
if h.prettyPrint {
|
||||
urlFieldMaxLen = 30
|
||||
accessFieldMaxLen = 20
|
||||
secretFieldMaxLen = 40
|
||||
apiFieldMaxLen = 5
|
||||
lookupFieldMaxLen = 5
|
||||
}
|
||||
|
||||
// Create a new pretty table with cols configuration
|
||||
t := newPrettyTable(" ",
|
||||
Field{"Alias", -1},
|
||||
Field{"URL", urlFieldMaxLen},
|
||||
Field{"AccessKey", accessFieldMaxLen},
|
||||
Field{"SecretKey", secretFieldMaxLen},
|
||||
Field{"API", apiFieldMaxLen},
|
||||
Field{"Lookup", lookupFieldMaxLen},
|
||||
t := newPrettyRecord(2,
|
||||
Row{"Alias", "Alias"},
|
||||
Row{"URL", "URL"},
|
||||
Row{"AccessKey", "AccessKey"},
|
||||
Row{"SecretKey", "SecretKey"},
|
||||
Row{"API", "API"},
|
||||
Row{"Lookup", "Lookup"},
|
||||
)
|
||||
return t.buildRow(h.Alias, h.URL, h.AccessKey, h.SecretKey, h.API, h.Lookup)
|
||||
return t.buildRecord(h.Alias, h.URL, h.AccessKey, h.SecretKey, h.API, h.Lookup)
|
||||
case "remove":
|
||||
return console.Colorize("HostMessage", "Removed `"+h.Alias+"` successfully.")
|
||||
case "add":
|
||||
|
||||
80
cmd/pretty-record.go
Normal file
80
cmd/pretty-record.go
Normal file
@@ -0,0 +1,80 @@
|
||||
/*
|
||||
* Minio Client (C) 2019 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 cmd
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/minio/mc/pkg/console"
|
||||
)
|
||||
|
||||
// Row specifies row description and theme
|
||||
type Row struct {
|
||||
desc string
|
||||
descTheme string
|
||||
}
|
||||
|
||||
// PrettyRecord - an easy struct to format a set of key-value
|
||||
// pairs into a record
|
||||
type PrettyRecord struct {
|
||||
rows []Row
|
||||
indent int
|
||||
maxLen int
|
||||
}
|
||||
|
||||
// newPrettyRecord - creates a new pretty record
|
||||
func newPrettyRecord(indent int, rows ...Row) PrettyRecord {
|
||||
maxDescLen := 0
|
||||
for _, r := range rows {
|
||||
if len(r.desc) > maxDescLen {
|
||||
maxDescLen = len(r.desc)
|
||||
}
|
||||
}
|
||||
return PrettyRecord{
|
||||
rows: rows,
|
||||
indent: indent,
|
||||
maxLen: maxDescLen,
|
||||
}
|
||||
}
|
||||
|
||||
// buildRecord - creates a string which represents a record table given
|
||||
// some fields contents.
|
||||
func (t PrettyRecord) buildRecord(contents ...string) (line string) {
|
||||
|
||||
// totalRows is the minimum of the number of fields config
|
||||
// and the number of contents elements.
|
||||
totalRows := len(contents)
|
||||
if len(t.rows) < totalRows {
|
||||
totalRows = len(t.rows)
|
||||
}
|
||||
var format, separator string
|
||||
// Format fields and construct message
|
||||
for i := 0; i < totalRows; i++ {
|
||||
// default heading
|
||||
indent := 0
|
||||
format = "%s\n"
|
||||
// optionally indented rows with key value pairs
|
||||
if i > 0 {
|
||||
indent = t.indent
|
||||
format = fmt.Sprintf("%%%ds%%-%ds : %%s\n", indent, t.maxLen)
|
||||
line += console.Colorize(t.rows[i].descTheme, fmt.Sprintf(format, separator, t.rows[i].desc, contents[i]))
|
||||
} else {
|
||||
line += console.Colorize(t.rows[i].descTheme, fmt.Sprintf(format, contents[i]))
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
Reference in New Issue
Block a user