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)
|
checkConfigHostListSyntax(ctx)
|
||||||
|
|
||||||
// Additional command speific theme customization.
|
// Additional command speific theme customization.
|
||||||
console.SetColor("HostMessage", color.New(color.FgGreen))
|
|
||||||
console.SetColor("Alias", color.New(color.FgCyan, color.Bold))
|
console.SetColor("Alias", color.New(color.FgCyan, color.Bold))
|
||||||
console.SetColor("URL", color.New(color.FgCyan))
|
console.SetColor("URL", color.New(color.FgYellow))
|
||||||
console.SetColor("AccessKey", color.New(color.FgBlue))
|
console.SetColor("AccessKey", color.New(color.FgCyan))
|
||||||
console.SetColor("SecretKey", color.New(color.FgBlue))
|
console.SetColor("SecretKey", color.New(color.FgCyan))
|
||||||
console.SetColor("API", color.New(color.FgYellow))
|
console.SetColor("API", color.New(color.FgBlue))
|
||||||
console.SetColor("Lookup", color.New(color.FgCyan))
|
console.SetColor("Lookup", color.New(color.FgCyan))
|
||||||
|
|
||||||
args := ctx.Args()
|
args := ctx.Args()
|
||||||
@@ -96,7 +95,7 @@ func printHosts(hosts ...hostMessage) {
|
|||||||
for _, host := range hosts {
|
for _, host := range hosts {
|
||||||
if !globalJSON {
|
if !globalJSON {
|
||||||
// Format properly for alignment based on alias length only in non json mode.
|
// 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 == "" {
|
if host.AccessKey == "" || host.SecretKey == "" {
|
||||||
host.AccessKey = ""
|
host.AccessKey = ""
|
||||||
|
|||||||
@@ -64,28 +64,16 @@ type hostMessage struct {
|
|||||||
func (h hostMessage) String() string {
|
func (h hostMessage) String() string {
|
||||||
switch h.op {
|
switch h.op {
|
||||||
case "list":
|
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
|
// Create a new pretty table with cols configuration
|
||||||
t := newPrettyTable(" ",
|
t := newPrettyRecord(2,
|
||||||
Field{"Alias", -1},
|
Row{"Alias", "Alias"},
|
||||||
Field{"URL", urlFieldMaxLen},
|
Row{"URL", "URL"},
|
||||||
Field{"AccessKey", accessFieldMaxLen},
|
Row{"AccessKey", "AccessKey"},
|
||||||
Field{"SecretKey", secretFieldMaxLen},
|
Row{"SecretKey", "SecretKey"},
|
||||||
Field{"API", apiFieldMaxLen},
|
Row{"API", "API"},
|
||||||
Field{"Lookup", lookupFieldMaxLen},
|
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":
|
case "remove":
|
||||||
return console.Colorize("HostMessage", "Removed `"+h.Alias+"` successfully.")
|
return console.Colorize("HostMessage", "Removed `"+h.Alias+"` successfully.")
|
||||||
case "add":
|
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