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 cmd.Options["redact"].ToValue().(bool) {
if err := cfg.AsFile(path); err != nil { if err := cfg.AsFile(path, config.OutputModeRedacted); err != nil {
return err return err
} }
} }

View File

@ -42,7 +42,7 @@ func Update(vault, name string, item *op.Item) error {
} }
if remote.GetValue("password") == item.GetValue("password") { 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 return nil
} }

View File

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

View File

@ -195,6 +195,23 @@ func (e *Entry) asNode() *yaml.Node {
n.FootComment = e.FootComment 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 return n
} }
@ -209,7 +226,7 @@ func (e *Entry) MarshalYAML() (*yaml.Node, error) {
} }
n.Content = append(n.Content, node) n.Content = append(n.Content, node)
} }
} else { } else if e.Kind == yaml.MappingNode || e.Kind == yaml.DocumentNode {
entries := e.Contents() entries := e.Contents()
if len(entries)%2 != 0 { if len(entries)%2 != 0 {
return nil, fmt.Errorf("cannot decode odd numbered contents list: %s", e.Path) return nil, fmt.Errorf("cannot decode odd numbered contents list: %s", e.Path)

View File

@ -14,7 +14,7 @@ import (
"gopkg.in/yaml.v3" "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 Expected: %s
found : %s` found : %s`
@ -111,7 +111,7 @@ func FromOP(item *op.Item) (*Config, error) {
} }
if cs := checksum(item.Fields); cs != item.GetValue("password") { 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) err := cfg.Tree.FromOP(item.Fields)
return cfg, err return cfg, err

View File

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