Compare commits
2 Commits
f011825e76
...
3d84f46112
Author | SHA1 | Date | |
---|---|---|---|
|
3d84f46112 | ||
|
b3e189fa8d |
@ -34,9 +34,15 @@ var Diff = &command.Command{
|
||||
},
|
||||
},
|
||||
},
|
||||
"redacted": {
|
||||
Description: "Compare redacted versions",
|
||||
Type: "bool",
|
||||
Default: false,
|
||||
},
|
||||
},
|
||||
Action: func(cmd *command.Command) error {
|
||||
paths := cmd.Arguments[0].ToValue().([]string)
|
||||
redacted := cmd.Options["redacted"].ToValue().(bool)
|
||||
for _, path := range paths {
|
||||
|
||||
local, err := config.Load(path, false)
|
||||
@ -44,7 +50,7 @@ var Diff = &command.Command{
|
||||
return err
|
||||
}
|
||||
|
||||
if err := local.DiffRemote(path, cmd.Cobra.OutOrStdout(), cmd.Cobra.OutOrStderr()); err != nil {
|
||||
if err := local.DiffRemote(path, redacted, cmd.Cobra.OutOrStdout(), cmd.Cobra.OutOrStderr()); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
}
|
||||
|
@ -42,7 +42,8 @@ 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.Debugf("remote %s\nlocal %s", remote.GetValue("password"), item.GetValue("password"))
|
||||
logrus.Warnf("item %s/%s is already up to date", item.Vault.ID, item.Title)
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -156,13 +156,19 @@ func (cfg *Config) Merge(other *Config) error {
|
||||
return cfg.Tree.Merge(other.Tree)
|
||||
}
|
||||
|
||||
func (cfg *Config) DiffRemote(path string, stdout io.Writer, stderr io.Writer) error {
|
||||
func (cfg *Config) DiffRemote(path string, redacted bool, stdout, stderr io.Writer) error {
|
||||
logrus.Debugf("loading remote for %s", path)
|
||||
remote, err := Load(path, true)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
localBytes, err := cfg.AsYAML(OutputModeNoComments, OutputModeSorted, OutputModeNoConfig)
|
||||
modes := []OutputMode{OutputModeNoComments, OutputModeSorted, OutputModeNoConfig, OutputModeStandardYAML}
|
||||
if redacted {
|
||||
modes = append(modes, OutputModeRedacted)
|
||||
}
|
||||
|
||||
localBytes, err := cfg.AsYAML(modes...)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@ -173,7 +179,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(modes...)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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}
|
||||
|
@ -97,7 +97,6 @@ func checksum(fields []*op.ItemField) string {
|
||||
sort.Strings(df)
|
||||
newHash.Write([]byte(strings.Join(df, "")))
|
||||
checksum := newHash.Sum(nil)
|
||||
|
||||
return fmt.Sprintf("%x", checksum)
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user