prevent diff from tripping on formatting

This commit is contained in:
Roberto Hidalgo 2023-01-15 02:19:05 -06:00
parent f011825e76
commit b3e189fa8d
6 changed files with 26 additions and 7 deletions

View File

@ -54,7 +54,7 @@ var Flush = &command.Command{
}
if cmd.Options["redact"].ToValue().(bool) {
if err := cfg.AsFile(path); err != nil {
if err := cfg.AsFile(path, config.OutputModeRedacted); err != nil {
return err
}
}

View File

@ -42,7 +42,7 @@ func Update(vault, name string, item *op.Item) error {
}
if remote.GetValue("password") == item.GetValue("password") {
logrus.Warn("item is already up to date")
logrus.Warnf("item %s/%s is already up to date", item.Vault.ID, item.Title)
return nil
}

View File

@ -162,7 +162,7 @@ func (cfg *Config) DiffRemote(path string, stdout io.Writer, stderr io.Writer) e
return err
}
localBytes, err := cfg.AsYAML(OutputModeNoComments, OutputModeSorted, OutputModeNoConfig)
localBytes, err := cfg.AsYAML(OutputModeNoComments, OutputModeSorted, OutputModeNoConfig, OutputModeStandardYAML)
if err != nil {
return err
}
@ -173,7 +173,7 @@ func (cfg *Config) DiffRemote(path string, stdout io.Writer, stderr io.Writer) e
}
defer cleanupLocalDiff()
remoteBytes, err := remote.AsYAML(OutputModeNoComments, OutputModeSorted)
remoteBytes, err := remote.AsYAML(OutputModeNoComments, OutputModeSorted, OutputModeStandardYAML)
if err != nil {
return err
}

View File

@ -195,6 +195,23 @@ func (e *Entry) asNode() *yaml.Node {
n.FootComment = e.FootComment
}
if yamlOutput.Has(OutputModeStandardYAML) {
if e.IsScalar() {
if len(e.Path) >= 0 {
if !strings.Contains(n.Value, "\n") {
n.Style &= yaml.FoldedStyle
} else {
n.Style &= yaml.FlowStyle
}
}
} else {
n.Style = yaml.FoldedStyle | yaml.LiteralStyle
for _, v := range n.Content {
v.Style = yaml.FlowStyle
}
}
}
return n
}
@ -209,7 +226,7 @@ func (e *Entry) MarshalYAML() (*yaml.Node, error) {
}
n.Content = append(n.Content, node)
}
} else {
} else if e.Kind == yaml.MappingNode || e.Kind == yaml.DocumentNode {
entries := e.Contents()
if len(entries)%2 != 0 {
return nil, fmt.Errorf("cannot decode odd numbered contents list: %s", e.Path)

View File

@ -14,7 +14,7 @@ import (
"gopkg.in/yaml.v3"
)
const warnChecksumMismatch = `1Password item changed and checksum was not updated.
const warnChecksumMismatch = `1Password item %s changed and checksum was not updated.
Expected: %s
found : %s`
@ -111,7 +111,7 @@ func FromOP(item *op.Item) (*Config, error) {
}
if cs := checksum(item.Fields); cs != item.GetValue("password") {
logrus.Warnf(warnChecksumMismatch, cs, item.GetValue("password"))
logrus.Warnf(warnChecksumMismatch, fmt.Sprintf("%s/%s", item.Vault.ID, item.Title), cs, item.GetValue("password"))
}
err := cfg.Tree.FromOP(item.Fields)
return cfg, err

View File

@ -43,6 +43,8 @@ const (
OutputModeSorted OutputMode = 4
// OutputModeNoConfig does not output the _config key if any.
OutputModeNoConfig OutputMode = 8
// OutputModeStandardYAML formats strings and arrays uniformly
OutputModeStandardYAML OutputMode = 16
)
var defaultYamlOutput = &outputOptions{OutputModeRoundTrip}