github.com/hoffie/larasync@v0.0.0-20151025221940-0384d2bddcef/cmd/lara/init.go (about)

     1  package main
     2  
     3  import (
     4  	"fmt"
     5  	"os"
     6  
     7  	"github.com/hoffie/larasync/repository"
     8  )
     9  
    10  // initAction initializes a new repository.
    11  func (d *Dispatcher) initAction() int {
    12  	args := d.context.Args()
    13  	numArgs := len(args)
    14  	var target string
    15  	if numArgs < 1 {
    16  		pwd, err := os.Getwd()
    17  		if err != nil {
    18  			fmt.Fprint(d.stderr, "Unable to get current directory\n")
    19  			return 1
    20  		}
    21  		target = pwd
    22  	} else {
    23  		target = args[0]
    24  		err := os.Mkdir(target, 0700)
    25  		if err != nil && os.IsExist(err) {
    26  			fmt.Fprint(d.stderr, "Unable to create directory\n")
    27  			return 1
    28  		}
    29  	}
    30  	repo := repository.NewClient(target)
    31  	err := repo.CreateManagementDir()
    32  	if err != nil {
    33  		fmt.Fprint(d.stderr, "Unable to create management directory\n")
    34  		return 1
    35  	}
    36  	err = repo.CreateKeys()
    37  	if err != nil {
    38  		fmt.Fprintf(d.stderr, "Unable to generate encryption keys\n")
    39  		return 1
    40  	}
    41  	return 0
    42  }