1
0
mirror of https://github.com/ipfs/kubo.git synced 2025-06-23 05:35:58 +08:00
This commit is contained in:
Juan Batiz-Benet
2014-07-05 01:52:05 -07:00
parent d71bf674f7
commit 381bfaa691
3 changed files with 58 additions and 59 deletions

View File

@ -1,26 +1,25 @@
package config package config
import ( import (
"strings" "os"
"os" "os/user"
"os/user" "strings"
) )
type Identity struct { type Identity struct {
PeerId string PeerId string
} }
type Datastore struct { type Datastore struct {
Type string Type string
Path string Path string
} }
type Config struct { type Config struct {
Identity Identity Identity Identity
Datastore Datastore Datastore Datastore
} }
var defaultConfigFilePath = "~/.go-ipfs/config" var defaultConfigFilePath = "~/.go-ipfs/config"
var defaultConfigFile = `{ var defaultConfigFile = `{
"identity": {}, "identity": {},
@ -32,31 +31,31 @@ var defaultConfigFile = `{
` `
func LoadConfig(filename string) (*Config, error) { func LoadConfig(filename string) (*Config, error) {
if len(filename) == 0 { if len(filename) == 0 {
filename = defaultConfigFilePath filename = defaultConfigFilePath
} }
// expand ~/ // expand ~/
if strings.HasPrefix(filename, "~/") { if strings.HasPrefix(filename, "~/") {
usr, err := user.Current() usr, err := user.Current()
if err != nil { if err != nil {
return nil, err return nil, err
} }
dir := usr.HomeDir + "/" dir := usr.HomeDir + "/"
filename = strings.Replace(filename, "~/", dir, 1) filename = strings.Replace(filename, "~/", dir, 1)
} }
// if nothing is there, write first conifg file. // if nothing is there, write first conifg file.
if _, err := os.Stat(filename); os.IsNotExist(err) { if _, err := os.Stat(filename); os.IsNotExist(err) {
WriteFile(filename, []byte(defaultConfigFile)) WriteFile(filename, []byte(defaultConfigFile))
} }
var cfg Config var cfg Config
err := ReadConfigFile(filename, &cfg) err := ReadConfigFile(filename, &cfg)
if err != nil { if err != nil {
return nil, err return nil, err
} }
return &cfg, err return &cfg, err
} }

View File

@ -1,17 +1,17 @@
package config package config
import ( import (
"fmt" "fmt"
"testing" "testing"
) )
func TestConfig(t *testing.T) { func TestConfig(t *testing.T) {
cfg, err := LoadConfig("") cfg, err := LoadConfig("")
if err != nil { if err != nil {
t.Error(err) t.Error(err)
return return
} }
fmt.Printf(cfg.Datastore.Path) fmt.Printf(cfg.Datastore.Path)
} }

View File

@ -1,39 +1,39 @@
package config package config
import ( import (
"os" "encoding/json"
"path" "io/ioutil"
"io/ioutil" "os"
"encoding/json" "path"
) )
func ReadFile(filename string) ([]byte, error) { func ReadFile(filename string) ([]byte, error) {
return ioutil.ReadFile(filename) return ioutil.ReadFile(filename)
} }
func WriteFile(filename string, buf []byte) error { func WriteFile(filename string, buf []byte) error {
err := os.MkdirAll(path.Dir(filename), 0777) err := os.MkdirAll(path.Dir(filename), 0777)
if err != nil { if err != nil {
return err return err
} }
return ioutil.WriteFile(filename, buf, 0666) return ioutil.WriteFile(filename, buf, 0666)
} }
func ReadConfigFile(filename string, cfg *Config) error { func ReadConfigFile(filename string, cfg *Config) error {
buf, err := ReadFile(filename) buf, err := ReadFile(filename)
if err != nil { if err != nil {
return err return err
} }
return json.Unmarshal(buf, cfg) return json.Unmarshal(buf, cfg)
} }
func WriteConfigFile(filename string, cfg *Config) error { func WriteConfigFile(filename string, cfg *Config) error {
buf, err := json.MarshalIndent(cfg, "", " ") buf, err := json.MarshalIndent(cfg, "", " ")
if err != nil { if err != nil {
return err return err
} }
return WriteFile(filename, buf) return WriteFile(filename, buf)
} }