48 lines
1.5 KiB
Go
48 lines
1.5 KiB
Go
package cmd
|
||
|
||
import (
|
||
"fmt"
|
||
"io"
|
||
"os"
|
||
"strings"
|
||
)
|
||
|
||
// warnIfRegistryLike выводит предупреждение в stderr, если аргумент
|
||
// похож на URL реестра (содержит точку и не содержит '/').
|
||
// Частая ошибка: `reg capabilities mydocker.ru` — здесь mydocker.ru
|
||
// воспринимается как имя репозитория, а не как реестр.
|
||
func warnIfRegistryLike(arg string) {
|
||
if strings.Contains(arg, "/") {
|
||
return
|
||
}
|
||
if !strings.Contains(arg, ".") {
|
||
return
|
||
}
|
||
fmt.Fprintln(os.Stderr, MsgRegistryLikeWarning.F(arg))
|
||
}
|
||
|
||
// readLinesFromFile читает строки из файла (или stdin, если path == "-").
|
||
// Пропускает пустые строки и строки, начинающиеся с '#'.
|
||
// Убирает ведущие и хвостовые пробелы у каждой строки.
|
||
func readLinesFromFile(path string) ([]string, error) {
|
||
var data []byte
|
||
var err error
|
||
if path == "-" {
|
||
data, err = io.ReadAll(os.Stdin)
|
||
} else {
|
||
data, err = os.ReadFile(path)
|
||
}
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
var lines []string
|
||
for _, line := range strings.Split(string(data), "\n") {
|
||
line = strings.TrimSpace(line)
|
||
if line == "" || strings.HasPrefix(line, "#") {
|
||
continue
|
||
}
|
||
lines = append(lines, line)
|
||
}
|
||
return lines, nil
|
||
}
|