1// Copyright (c) 2015 HPE Software Inc. All rights reserved. 2// Copyright (c) 2013 ActiveState Software Inc. All rights reserved. 3 4package util 5 6import ( 7 "fmt" 8 "log" 9 "os" 10 "runtime/debug" 11) 12 13type Logger struct { 14 *log.Logger 15} 16 17var LOGGER = &Logger{log.New(os.Stderr, "", log.LstdFlags)} 18 19// fatal is like panic except it displays only the current goroutine's stack. 20func Fatal(format string, v ...interface{}) { 21 // https://github.com/hpcloud/log/blob/master/log.go#L45 22 LOGGER.Output(2, fmt.Sprintf("FATAL -- "+format, v...)+"\n"+string(debug.Stack())) 23 os.Exit(1) 24} 25 26// partitionString partitions the string into chunks of given size, 27// with the last chunk of variable size. 28func PartitionString(s string, chunkSize int) []string { 29 if chunkSize <= 0 { 30 panic("invalid chunkSize") 31 } 32 length := len(s) 33 chunks := 1 + length/chunkSize 34 start := 0 35 end := chunkSize 36 parts := make([]string, 0, chunks) 37 for { 38 if end > length { 39 end = length 40 } 41 parts = append(parts, s[start:end]) 42 if end == length { 43 break 44 } 45 start, end = end, end+chunkSize 46 } 47 return parts 48} 49