diff --git a/cmd/ipfs/init.go b/cmd/ipfs/init.go index 53b8a8e04..2836ff915 100644 --- a/cmd/ipfs/init.go +++ b/cmd/ipfs/init.go @@ -27,6 +27,7 @@ var initCmd = &cmds.Command{ Options: []cmds.Option{ cmds.IntOption("bits", "b", fmt.Sprintf("Number of bits to use in the generated RSA private key (defaults to %d)", nBitsForKeypairDefault)), cmds.BoolOption("force", "f", "Overwrite existing config (if it exists)"), + cmds.BoolOption("empty-repo", "e", "Don't add and pin help files to the local storage"), // TODO need to decide whether to expose the override as a file or a // directory. That is: should we allow the user to also specify the @@ -59,6 +60,12 @@ var initCmd = &cmds.Command{ return } + empty, _, err := req.Option("e").Bool() // if !empty, it's okay empty == false + if err != nil { + res.SetError(err, cmds.ErrNormal) + return + } + nBitsForKeypair, bitsOptFound, err := req.Option("b").Int() if err != nil { res.SetError(err, cmds.ErrNormal) @@ -69,7 +76,7 @@ var initCmd = &cmds.Command{ nBitsForKeypair = nBitsForKeypairDefault } - if err := doInit(os.Stdout, req.InvocContext().ConfigRoot, force, nBitsForKeypair); err != nil { + if err := doInit(os.Stdout, req.InvocContext().ConfigRoot, force, empty, nBitsForKeypair); err != nil { res.SetError(err, cmds.ErrNormal) return } @@ -82,10 +89,10 @@ Reinitializing would overwrite your keys. `) func initWithDefaults(out io.Writer, repoRoot string) error { - return doInit(out, repoRoot, false, nBitsForKeypairDefault) + return doInit(out, repoRoot, false, false, nBitsForKeypairDefault) } -func doInit(out io.Writer, repoRoot string, force bool, nBitsForKeypair int) error { +func doInit(out io.Writer, repoRoot string, force bool, empty bool, nBitsForKeypair int) error { if _, err := fmt.Fprintf(out, "initializing ipfs node at %s\n", repoRoot); err != nil { return err } @@ -113,8 +120,10 @@ func doInit(out io.Writer, repoRoot string, force bool, nBitsForKeypair int) err return err } - if err := addDefaultAssets(out, repoRoot); err != nil { - return err + if !empty { + if err := addDefaultAssets(out, repoRoot); err != nil { + return err + } } return initializeIpnsKeyspace(repoRoot) diff --git a/test/sharness/t0020-init.sh b/test/sharness/t0020-init.sh index 53141286f..2a855ec88 100755 --- a/test/sharness/t0020-init.sh +++ b/test/sharness/t0020-init.sh @@ -75,6 +75,37 @@ test_expect_success "ipfs init output looks good" ' test_cmp expected actual_init ' +test_expect_success "Welcome readme exists" ' + ipfs cat /ipfs/$HASH_WELCOME_DOCS/readme +' + +test_expect_success "clean up ipfs dir" ' + rm -rf "$IPFS_PATH" +' + +test_expect_success "'ipfs init --empty-repo' succeeds" ' + BITS="1024" && + ipfs init --bits="$BITS" --empty-repo >actual_init +' + +test_expect_success "ipfs peer id looks good" ' + PEERID=$(ipfs config Identity.PeerID) && + echo $PEERID | tr -dC "[:alnum:]" | wc -c | tr -d " " >actual_peerid && + echo "46" >expected_peerid && + test_cmp expected_peerid actual_peerid +' + +test_expect_success "'ipfs init --empty-repo' output looks good" ' + echo "initializing ipfs node at $IPFS_PATH" >expected && + echo "generating $BITS-bit RSA keypair...done" >>expected && + echo "peer identity: $PEERID" >>expected && + test_cmp expected actual_init +' + +test_expect_success "Welcome readme doesn't exists" ' + test_must_fail ipfs cat /ipfs/$HASH_WELCOME_DOCS/readme +' + test_expect_success "clean up ipfs dir" ' rm -rf "$IPFS_PATH" '