Skip to content

Commit

Permalink
Revert "Revert "Implements repository initialization with default con…
Browse files Browse the repository at this point in the history
…fig""

This reverts commit 77ef391.

License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>
  • Loading branch information
Kubuxu committed Jun 13, 2016
1 parent 4190076 commit 6822c0c
Show file tree
Hide file tree
Showing 2 changed files with 85 additions and 7 deletions.
37 changes: 30 additions & 7 deletions cmd/ipfs/init.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package main

import (
"encoding/json"
"errors"
"fmt"
"io"
Expand Down Expand Up @@ -33,7 +34,9 @@ environment variable:
export IPFS_PATH=/path/to/ipfsrepo
`,
},

Arguments: []cmds.Argument{
cmds.FileArg("default-config", false, false, "Initialize with the given configuration.").EnableStdin(),
},
Options: []cmds.Option{
cmds.IntOption("bits", "b", "Number of bits to use in the generated RSA private key.").Default(nBitsForKeypairDefault),
cmds.BoolOption("empty-repo", "e", "Don't add and pin help files to the local storage.").Default(false),
Expand Down Expand Up @@ -76,7 +79,24 @@ environment variable:
return
}

if err := doInit(os.Stdout, req.InvocContext().ConfigRoot, empty, nBitsForKeypair); err != nil {
var conf *config.Config

f := req.Files()
if f != nil {
confFile, err := f.NextFile()
if err != nil {
res.SetError(err, cmds.ErrNormal)
return
}

conf = &config.Config{}
if err := json.NewDecoder(confFile).Decode(conf); err != nil {
res.SetError(err, cmds.ErrNormal)
return
}
}

if err := doInit(os.Stdout, req.InvocContext().ConfigRoot, empty, nBitsForKeypair, conf); err != nil {
res.SetError(err, cmds.ErrNormal)
return
}
Expand All @@ -88,10 +108,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, nBitsForKeypairDefault, nil)
}

func doInit(out io.Writer, repoRoot string, empty bool, nBitsForKeypair int) error {
func doInit(out io.Writer, repoRoot string, empty bool, nBitsForKeypair int, conf *config.Config) error {
if _, err := fmt.Fprintf(out, "initializing ipfs node at %s\n", repoRoot); err != nil {
return err
}
Expand All @@ -104,9 +124,12 @@ func doInit(out io.Writer, repoRoot string, empty bool, nBitsForKeypair int) err
return errRepoExists
}

conf, err := config.Init(out, nBitsForKeypair)
if err != nil {
return err
if conf == nil {
var err error
conf, err = config.Init(out, nBitsForKeypair)
if err != nil {
return err
}
}

if err := fsrepo.Init(repoRoot, conf); err != nil {
Expand Down
55 changes: 55 additions & 0 deletions test/sharness/t0022-init-default.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
#!/bin/sh
#
# Copyright (c) 2014 Christian Couder
# MIT Licensed; see the LICENSE file in this repository.
#

test_description="Test init command with default config"

. lib/test-lib.sh

cfg_key="Addresses.API"
cfg_val="/ip4/0.0.0.0/tcp/5001"

# test that init succeeds
test_expect_success "ipfs init succeeds" '
export IPFS_PATH="$(pwd)/.ipfs" &&
echo "IPFS_PATH: \"$IPFS_PATH\"" &&
BITS="2048" &&
ipfs init --bits="$BITS" >actual_init ||
test_fsh cat actual_init
'

test_expect_success ".ipfs/config has been created" '
test -f "$IPFS_PATH"/config ||
test_fsh ls -al .ipfs
'

test_expect_success "ipfs config succeeds" '
ipfs config $cfg_flags "$cfg_key" "$cfg_val"
'

test_expect_success "ipfs read config succeeds" '
IPFS_DEFAULT_CONFIG=$(cat "$IPFS_PATH"/config)
'

test_expect_success "clean up ipfs dir" '
rm -rf "$IPFS_PATH"
'

test_expect_success "ipfs init default config succeeds" '
echo $IPFS_DEFAULT_CONFIG | ipfs init - >actual_init ||
test_fsh cat actual_init
'

test_expect_success "ipfs config output looks good" '
echo "$cfg_val" >expected &&
ipfs config "$cfg_key" >actual &&
test_cmp expected actual
'

test_launch_ipfs_daemon

test_kill_ipfs_daemon

test_done

0 comments on commit 6822c0c

Please sign in to comment.