コード例 #1
0
ファイル: init.go プロジェクト: the-information/ori
func Initialize(c *cli.Context) error {

	// read seed.json and send the data to the db
	reader, err := os.Open(c.String("seed"))
	if err != nil {
		return cli.NewExitError("Error opening seed.json: "+err.Error(), 1)
	}

	seedData, err := ioutil.ReadAll(reader)
	if err != nil {
		return cli.NewExitError("Error reading seed.json: "+err.Error(), 1)
	}

	var src = json.RawMessage(seedData)

	// generate a random string for the secret
	randomBytes := make([]byte, 48)

	_, err = rand.Read(randomBytes)
	if err != nil {
		return cli.NewExitError(err.Error(), 1)
	}

	newAppSecret := base64.RawURLEncoding.EncodeToString(randomBytes)
	conf := struct{ AuthSecret string }{newAppSecret}

	if err := patch(c, "config", &conf, nil); err != nil {
		return cli.NewExitError("Error from server: "+err.Error(), 1)
	}

	fmt.Println("Add this secret to your environment -- it won't be available again.")
	fmt.Printf("export ORI_APP_SECRET=%s\n", newAppSecret)
	c.GlobalSet("secret", newAppSecret)

	// send to admin
	if err = post(c, "load", &src, nil); err != nil {
		return err
	}
	return nil

}