Skip to content

Commit 6443d71

Browse files
committed
8-to-9: address self review
1 parent a765ac1 commit 6443d71

File tree

1 file changed

+39
-51
lines changed

1 file changed

+39
-51
lines changed

ipfs-8-to-9/migration/migration.go

Lines changed: 39 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,10 @@ func (m Migration) Reversible() bool {
2525

2626
const keyFilenamePrefix = "key_"
2727

28-
func isEncoded(name string) bool {
29-
if !strings.HasPrefix(name, keyFilenamePrefix) {
30-
return false
31-
}
28+
const keystoreRoot = "keystore"
3229

30+
func isEncoded(name string) bool {
3331
_, err := decode(name)
34-
3532
return err == nil
3633
}
3734

@@ -52,49 +49,23 @@ func decode(name string) (string, error) {
5249
nameWithoutPrefix := strings.ToUpper(name[len(keyFilenamePrefix):])
5350
data, err := base32.StdEncoding.DecodeString(nameWithoutPrefix)
5451

55-
if err != nil {
56-
return "", err
57-
}
58-
59-
decodedName := string(data[:])
60-
61-
return decodedName, nil
52+
return string(data), err
6253
}
6354

6455
func (m Migration) Apply(opts migrate.Options) error {
6556
log.Verbose = opts.Verbose
6657
log.Log("applying %s repo migration", m.Versions())
6758

68-
keystoreRoot := filepath.Join(opts.Path, "keystore")
69-
fileInfos, err := ioutil.ReadDir(keystoreRoot)
59+
err := m.encodeDecode(
60+
opts,
61+
isEncoded, // skip if already encoded
62+
encode,
63+
)
7064

7165
if err != nil {
7266
return err
7367
}
7468

75-
for _, info := range fileInfos {
76-
if info.IsDir() {
77-
log.Log("skipping ", info.Name(), " as it is directory!")
78-
continue
79-
}
80-
81-
if isEncoded(info.Name()) {
82-
log.Log("skipping ", info.Name(), " as it is already encoded!")
83-
continue
84-
}
85-
86-
log.VLog("migrating key's filename: ", info.Name())
87-
encodedName, err := encode(info.Name())
88-
if err != nil {
89-
return err
90-
}
91-
92-
os.Rename(
93-
filepath.Join(keystoreRoot, info.Name()),
94-
filepath.Join(keystoreRoot, encodedName),
95-
)
96-
}
97-
9869
err = mfsr.RepoPath(opts.Path).WriteVersion("9")
9970
if err != nil {
10071
log.Error("failed to update version file to 9")
@@ -106,11 +77,8 @@ func (m Migration) Apply(opts migrate.Options) error {
10677
return nil
10778
}
10879

109-
func (m Migration) Revert(opts migrate.Options) error {
110-
log.Verbose = opts.Verbose
111-
log.Log("reverting migration")
112-
113-
keystoreRoot := filepath.Join(opts.Path, "keystore")
80+
func (m Migration) encodeDecode(opts migrate.Options, shouldApplyCodec func(string) bool, codec func(string) (string, error)) error {
81+
keystoreRoot := filepath.Join(opts.Path, keystoreRoot)
11482
fileInfos, err := ioutil.ReadDir(keystoreRoot)
11583

11684
if err != nil {
@@ -119,25 +87,45 @@ func (m Migration) Revert(opts migrate.Options) error {
11987

12088
for _, info := range fileInfos {
12189
if info.IsDir() {
122-
log.Log("skipping", info.Name(), "as it is directory!")
90+
log.Log("skipping ", info.Name(), " as it is directory!")
12391
continue
12492
}
12593

126-
if !isEncoded(info.Name()) {
127-
log.Log("skipping", info.Name(), "as it is not encoded!")
94+
if shouldApplyCodec(info.Name()) {
95+
log.Log("skipping ", info.Name(), ". Already in expected format!")
12896
continue
12997
}
13098

131-
log.VLog("reverting key's filename:", info.Name())
132-
decodedName, err := decode(info.Name())
99+
log.VLog("Renaming key's filename: ", info.Name())
100+
encodedName, err := codec(info.Name())
133101
if err != nil {
134102
return err
135103
}
136104

137-
os.Rename(
138-
filepath.Join(keystoreRoot, info.Name()),
139-
filepath.Join(keystoreRoot, decodedName),
140-
)
105+
src := filepath.Join(keystoreRoot, info.Name())
106+
dest := filepath.Join(keystoreRoot, encodedName)
107+
108+
if err := os.Rename(src, dest); err != nil {
109+
return err
110+
}
111+
}
112+
return nil
113+
}
114+
115+
func (m Migration) Revert(opts migrate.Options) error {
116+
log.Verbose = opts.Verbose
117+
log.Log("reverting migration")
118+
119+
err := m.encodeDecode(
120+
opts,
121+
func(name string) bool {
122+
return !isEncoded(name) // skip if not encoded
123+
},
124+
decode,
125+
)
126+
127+
if err != nil {
128+
return err
141129
}
142130

143131
err = mfsr.RepoPath(opts.Path).WriteVersion("8")

0 commit comments

Comments
 (0)