github.com/grantbow/bug@v0.3.1/bugapp/Identifier.go (about)

     1  package bugapp
     2  
     3  import (
     4  	"crypto/sha1"
     5  	"fmt"
     6  	"github.com/driusan/bug/bugs"
     7  	"os"
     8  	"strings"
     9  )
    10  
    11  func generateID(val string) string {
    12  	hash := sha1.Sum([]byte(val))
    13  	return fmt.Sprintf("b%x", hash)[0:5]
    14  }
    15  func Identifier(args ArgumentList) {
    16  	if len(args) < 1 {
    17  		fmt.Printf("Usage: %s identifier BugID [value]\n", os.Args[0])
    18  		return
    19  	}
    20  
    21  	b, err := bugs.LoadBugByHeuristic(args[0])
    22  	if err != nil {
    23  		fmt.Printf("Invalid BugID: %s\n", err.Error())
    24  		return
    25  	}
    26  	if len(args) > 1 {
    27  		var newValue string
    28  		if args.HasArgument("--generate") {
    29  			newValue = generateID(b.Title(""))
    30  			fmt.Printf("Generated id %s for bug\n", newValue)
    31  		} else {
    32  			newValue = strings.Join(args[1:], " ")
    33  		}
    34  		err := b.SetIdentifier(newValue)
    35  		if err != nil {
    36  			fmt.Printf("Error setting identifier: %s", err.Error())
    37  		}
    38  	} else {
    39  		val := b.Identifier()
    40  		if val == "" {
    41  			fmt.Printf("Identifier not defined\n")
    42  		} else {
    43  			fmt.Printf("%s\n", val)
    44  		}
    45  	}
    46  }