tools.aw_id

Yohn Y. 2025-04-09 Parent:05d07cc3040d Child:223ba01da43a

11:3a967e85c0ca Go to Latest

tools.aw_id/src/main.go

.. v1.r202504.1 . Переезд на go 1.23 + Новый тип версий. Теперь можно всю версию генерировать автоматом. Уникальность осуществляется за счёт точности в 0.01 секунды.

History
     1.1 --- a/src/main.go	Sat Jul 06 20:07:08 2024 +0300
     1.2 +++ b/src/main.go	Wed Apr 09 20:20:05 2025 +0300
     1.3 @@ -1,4 +1,4 @@
     1.4 -// devel.a0fs.ru -- aw_id -- v1.r202407.1 //
     1.5 +// devel.a0fs.ru -- aw_id -- v1.r202504.1 //
     1.6  /*
     1.7    Утилиты генерирования полезных в работе ID
     1.8  */
     1.9 @@ -9,6 +9,10 @@
    1.10  	"os"
    1.11  	"time"
    1.12  
    1.13 +	"encoding/base64"
    1.14 +	"encoding/binary"
    1.15 +	"strconv"
    1.16 +
    1.17  	"github.com/google/uuid"
    1.18  )
    1.19  
    1.20 @@ -59,6 +63,32 @@
    1.21  	return fmt.Sprintf("0.%s.1", get_time_id(TIME_ID_SHORT2))
    1.22  }
    1.23  
    1.24 +func get_ver_auto_tag() string {
    1.25 +	var auto_version string = "AAAAAA"
    1.26 +
    1.27 +	buf := make([]byte, 8)
    1.28 +	buf_time := time.Now()
    1.29 +	buf_u64, err := strconv.ParseUint(buf_time.Format("02150405"), 10, 64)
    1.30 +	if err == nil {
    1.31 +		buf_u64 = buf_u64*uint64(100) + uint64(buf_time.Nanosecond()/10000000)
    1.32 +		_, err = binary.Encode(buf, binary.BigEndian, buf_u64)
    1.33 +		if err == nil {
    1.34 +			auto_version = base64.RawURLEncoding.EncodeToString(buf[4:])
    1.35 +
    1.36 +		}
    1.37 +	}
    1.38 +
    1.39 +	return auto_version
    1.40 +}
    1.41 +
    1.42 +func get_ver_id3() string {
    1.43 +	return fmt.Sprintf("v0.r%s.%s", get_time_id(TIME_ID_SHORT2), get_ver_auto_tag())
    1.44 +}
    1.45 +
    1.46 +func get_ver_id4() string {
    1.47 +	return fmt.Sprintf("0.%s.%s", get_time_id(TIME_ID_SHORT2), get_ver_auto_tag())
    1.48 +}
    1.49 +
    1.50  func prnt_out(k, v string) {
    1.51  	fmt.Printf("%10s : %s\n", k, v)
    1.52  }
    1.53 @@ -73,7 +103,9 @@
    1.54  	prnt_out("hrs", get_time_id(TIME_HUM_SAFE))
    1.55  	prnt_out("hrs2", get_time_id(TIME_HUM_SAFE2))
    1.56  	prnt_out("v", get_ver_id())
    1.57 +	prnt_out("va", get_ver_id3())
    1.58  	prnt_out("vs", get_ver_id2())
    1.59 +	prnt_out("vsa", get_ver_id4())
    1.60  	fmt.Println("")
    1.61  }
    1.62  
    1.63 @@ -98,10 +130,16 @@
    1.64  			fmt.Println(get_time_id(TIME_ID_SHORT2))
    1.65  		case "v":
    1.66  			fmt.Println(get_ver_id())
    1.67 +		case "va":
    1.68 +			fmt.Println(get_ver_id3())
    1.69  		case "vs":
    1.70  			fmt.Println(get_ver_id2())
    1.71 +		case "vsa":
    1.72 +			fmt.Println(get_ver_id4())
    1.73  		default:
    1.74 -			fmt.Println("Need one of: uuid, ts, tss, tss2, hr, hrr, hrs, hrs2, v, vs")
    1.75 +			fmt.Println("Need one of: ")
    1.76 +			fmt.Println("  uuid, ts, tss, tss2, hr, hrr, hrs, hrs2,")
    1.77 +			fmt.Println("  v, va, vs, vsa")
    1.78  		}
    1.79  		fmt.Println("")
    1.80  	} else {