go-cursor-help/pkg/idgen/generator.go
Vaggelis kavouras 947d11fbc6 refactor: streamline configuration management and enhance UI interactions
- Updated go.mod and go.sum to include necessary dependencies.
- Refactored README.md for clearer installation instructions and improved formatting.
- Enhanced main.go with better error handling and user feedback during execution.
- Improved configuration management in config.go, ensuring atomic writes and better error handling.
- Updated language support in lang.go for clearer user messages.
- Enhanced process management in manager.go to ensure more reliable process termination.
- Improved UI display methods for better user experience.
- Removed outdated test file generator_test.go to clean up the codebase.
- Updated install.ps1 script for better output formatting and error handling.
2024-12-28 23:52:24 +02:00

60 lines
1.4 KiB
Go

package idgen
import (
"crypto/rand"
"encoding/hex"
"fmt"
"time"
)
// Generator handles secure ID generation for machines and devices
type Generator struct{}
// NewGenerator creates a new ID generator
func NewGenerator() *Generator {
return &Generator{}
}
// Helper methods
// -------------
// simulateWork adds a small delay to make progress visible
func (g *Generator) simulateWork() {
time.Sleep(800 * time.Millisecond)
}
// generateRandomHex generates a random hex string of specified length
func (g *Generator) generateRandomHex(length int) (string, error) {
bytes := make([]byte, length)
if _, err := rand.Read(bytes); err != nil {
return "", fmt.Errorf("failed to generate random bytes: %w", err)
}
return hex.EncodeToString(bytes), nil
}
// Public methods
// -------------
// GenerateMachineID generates a new 32-byte machine ID
func (g *Generator) GenerateMachineID() (string, error) {
g.simulateWork()
return g.generateRandomHex(32)
}
// GenerateMacMachineID generates a new 64-byte MAC machine ID
func (g *Generator) GenerateMacMachineID() (string, error) {
g.simulateWork()
return g.generateRandomHex(64)
}
// GenerateDeviceID generates a new device ID in UUID format
func (g *Generator) GenerateDeviceID() (string, error) {
g.simulateWork()
id, err := g.generateRandomHex(16)
if err != nil {
return "", err
}
return fmt.Sprintf("%s-%s-%s-%s-%s",
id[0:8], id[8:12], id[12:16], id[16:20], id[20:32]), nil
}