Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
dms3
go-cidutil
Commits
072fed05
Commit
072fed05
authored
Aug 15, 2017
by
Kevin Atkinson
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add ability to change CID version.
parent
335a9b89
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
91 additions
and
12 deletions
+91
-12
cid-fmt/main.go
cid-fmt/main.go
+54
-12
cid-fmt/main_test.go
cid-fmt/main_test.go
+37
-0
No files found.
cid-fmt/main.go
View file @
072fed05
...
@@ -13,7 +13,7 @@ import (
...
@@ -13,7 +13,7 @@ import (
)
)
func
usage
()
{
func
usage
()
{
fmt
.
Fprintf
(
os
.
Stderr
,
"usage: %s [-b multibase-code] <fmt-str> <cid> ...
\n\n
"
,
os
.
Args
[
0
])
fmt
.
Fprintf
(
os
.
Stderr
,
"usage: %s [-b multibase-code]
[-v cid-version]
<fmt-str> <cid> ...
\n\n
"
,
os
.
Args
[
0
])
fmt
.
Fprintf
(
os
.
Stderr
,
"<fmt-str> is either 'prefix' or a printf style format string:
\n
%s"
,
fmtRef
)
fmt
.
Fprintf
(
os
.
Stderr
,
"<fmt-str> is either 'prefix' or a printf style format string:
\n
%s"
,
fmtRef
)
os
.
Exit
(
1
)
os
.
Exit
(
1
)
}
}
...
@@ -46,16 +46,38 @@ func main() {
...
@@ -46,16 +46,38 @@ func main() {
usage
()
usage
()
}
}
newBase
:=
mb
.
Encoding
(
-
1
)
newBase
:=
mb
.
Encoding
(
-
1
)
var
verConv
func
(
cid
*
c
.
Cid
)
(
*
c
.
Cid
,
error
)
args
:=
os
.
Args
[
1
:
]
args
:=
os
.
Args
[
1
:
]
if
args
[
0
]
==
"-b"
{
outer
:
if
len
(
args
)
<
2
{
for
{
usage
()
switch
args
[
0
]
{
}
case
"-b"
:
if
len
(
args
[
1
])
!=
1
{
if
len
(
args
)
<
2
{
fmt
.
Fprintf
(
os
.
Stderr
,
"Error: Invalid multibase code: %s
\n
"
,
args
[
1
])
usage
()
}
if
len
(
args
[
1
])
!=
1
{
fmt
.
Fprintf
(
os
.
Stderr
,
"Error: Invalid multibase code: %s
\n
"
,
args
[
1
])
os
.
Exit
(
1
)
}
newBase
=
mb
.
Encoding
(
args
[
1
][
0
])
args
=
args
[
2
:
]
case
"-v"
:
if
len
(
args
)
<
2
{
usage
()
}
switch
args
[
1
]
{
case
"0"
:
verConv
=
toCidV0
case
"1"
:
verConv
=
toCidV1
default
:
fmt
.
Fprintf
(
os
.
Stderr
,
"Error: Invalid cid version: %s
\n
"
,
args
[
1
])
os
.
Exit
(
1
)
}
args
=
args
[
2
:
]
default
:
break
outer
}
}
newBase
=
mb
.
Encoding
(
args
[
1
][
0
])
args
=
args
[
2
:
]
}
}
if
len
(
args
)
<
2
{
if
len
(
args
)
<
2
{
usage
()
usage
()
...
@@ -71,15 +93,24 @@ func main() {
...
@@ -71,15 +93,24 @@ func main() {
}
}
for
_
,
cidStr
:=
range
args
[
1
:
]
{
for
_
,
cidStr
:=
range
args
[
1
:
]
{
base
,
cid
,
err
:=
decode
(
cidStr
)
base
,
cid
,
err
:=
decode
(
cidStr
)
if
newBase
!=
-
1
{
base
=
newBase
}
if
err
!=
nil
{
if
err
!=
nil
{
fmt
.
Fprintf
(
os
.
Stderr
,
"Error: %s: %v
\n
"
,
cidStr
,
err
)
fmt
.
Fprintf
(
os
.
Stderr
,
"Error: %s: %v
\n
"
,
cidStr
,
err
)
fmt
.
Fprintf
(
os
.
Stdout
,
"!INVALID_CID!
\n
"
)
fmt
.
Fprintf
(
os
.
Stdout
,
"!INVALID_CID!
\n
"
)
// Don't abort on a bad cid
// Don't abort on a bad cid
continue
continue
}
}
if
newBase
!=
-
1
{
base
=
newBase
}
if
verConv
!=
nil
{
cid
,
err
=
verConv
(
cid
)
if
err
!=
nil
{
fmt
.
Fprintf
(
os
.
Stderr
,
"Error: %s: %v
\n
"
,
cidStr
,
err
)
fmt
.
Fprintf
(
os
.
Stdout
,
"!CONVERSION_ERROR!
\n
"
)
// Don't abort on a bad conversion
continue
}
}
str
,
err
:=
fmtCid
(
fmtStr
,
base
,
cid
)
str
,
err
:=
fmtCid
(
fmtStr
,
base
,
cid
)
if
err
!=
nil
{
if
err
!=
nil
{
fmt
.
Fprintf
(
os
.
Stderr
,
"Error: %v
\n
"
,
err
)
fmt
.
Fprintf
(
os
.
Stderr
,
"Error: %v
\n
"
,
err
)
...
@@ -221,3 +252,14 @@ func encode(base mb.Encoding, data []byte, strip bool) string {
...
@@ -221,3 +252,14 @@ func encode(base mb.Encoding, data []byte, strip bool) string {
}
}
return
str
return
str
}
}
func
toCidV0
(
cid
*
c
.
Cid
)
(
*
c
.
Cid
,
error
)
{
if
cid
.
Type
()
!=
c
.
DagProtobuf
{
return
nil
,
fmt
.
Errorf
(
"can't convert non-protobuf nodes to cidv0"
)
}
return
c
.
NewCidV0
(
cid
.
Hash
()),
nil
}
func
toCidV1
(
cid
*
c
.
Cid
)
(
*
c
.
Cid
,
error
)
{
return
c
.
NewCidV1
(
cid
.
Type
(),
cid
.
Hash
()),
nil
}
cid-fmt/main_test.go
View file @
072fed05
...
@@ -71,3 +71,40 @@ func testFmt(t *testing.T, cidStr string, newBase mb.Encoding, fmtStr string, re
...
@@ -71,3 +71,40 @@ func testFmt(t *testing.T, cidStr string, newBase mb.Encoding, fmtStr string, re
t
.
Error
(
fmt
.
Sprintf
(
"expected: %s; but got: %s"
,
result
,
str
))
t
.
Error
(
fmt
.
Sprintf
(
"expected: %s; but got: %s"
,
result
,
str
))
}
}
}
}
func
TestCidConv
(
t
*
testing
.
T
)
{
cidv0
:=
"QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn"
cidv1
:=
"zdj7WbTaiJT1fgatdet9Ei9iDB5hdCxkbVyhyh8YTUnXMiwYi"
_
,
cid
,
err
:=
decode
(
cidv0
)
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
cid
,
err
=
toCidV1
(
cid
)
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
if
cid
.
String
()
!=
cidv1
{
t
.
Fatal
(
"conversion failure"
)
}
cid
,
err
=
toCidV0
(
cid
)
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
cidStr
:=
cid
.
String
()
if
cidStr
!=
cidv0
{
t
.
Error
(
fmt
.
Sprintf
(
"conversion failure, expected: %s; but got: %s"
,
cidv0
,
cidStr
))
}
}
func
TestBadCidConv
(
t
*
testing
.
T
)
{
// this cid is a raw leaf and should not be able to convert to cidv0
cidv1
:=
"zb2rhhzX7uSKrtQ2ZZXFAabKiKFYZrJqKY2KE1cJ8yre2GSWZ"
_
,
cid
,
err
:=
decode
(
cidv1
)
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
cid
,
err
=
toCidV0
(
cid
)
if
err
==
nil
{
t
.
Fatal
(
"expected failure"
)
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment