From c89e3c22ebb54ad26e3f93d94fe084aa0b7c0edc Mon Sep 17 00:00:00 2001
From: Christian Couder <chriscool@tuxfamily.org>
Date: Tue, 12 Jan 2016 21:54:37 +0100
Subject: [PATCH] core/commands/pin: refactor 'pin ls'

License: MIT
Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
---
 core/commands/pin.go | 24 ++++++++++--------------
 1 file changed, 10 insertions(+), 14 deletions(-)

diff --git a/core/commands/pin.go b/core/commands/pin.go
index e6155df9c..9b595e381 100644
--- a/core/commands/pin.go
+++ b/core/commands/pin.go
@@ -212,13 +212,18 @@ Example:
 		}
 
 		keys := make(map[string]RefKeyObject)
-		if typeStr == "direct" || typeStr == "all" {
-			for _, k := range n.Pinning.DirectKeys() {
+
+		AddToResultKeys := func(keyList []key.Key, typeStr string) {
+			for _, k := range keyList {
 				keys[k.B58String()] = RefKeyObject{
-					Type: "direct",
+					Type: typeStr,
 				}
 			}
 		}
+
+		if typeStr == "direct" || typeStr == "all" {
+			AddToResultKeys(n.Pinning.DirectKeys(), "direct")
+		}
 		if typeStr == "indirect" || typeStr == "all" {
 			ks := key.NewKeySet()
 			for _, k := range n.Pinning.RecursiveKeys() {
@@ -232,20 +237,11 @@ Example:
 					res.SetError(err, cmds.ErrNormal)
 					return
 				}
-
-			}
-			for _, k := range ks.Keys() {
-				keys[k.B58String()] = RefKeyObject{
-					Type: "indirect",
-				}
 			}
+			AddToResultKeys(ks.Keys(), "indirect")
 		}
 		if typeStr == "recursive" || typeStr == "all" {
-			for _, k := range n.Pinning.RecursiveKeys() {
-				keys[k.B58String()] = RefKeyObject{
-					Type: "recursive",
-				}
-			}
+			AddToResultKeys(n.Pinning.RecursiveKeys(), "recursive")
 		}
 
 		res.SetOutput(&RefKeyList{Keys: keys})
-- 
GitLab