52 lines
823 B
Go
52 lines
823 B
Go
package bundle
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"strings"
|
|
|
|
"cliprepo/internal/config"
|
|
"github.com/atotto/clipboard"
|
|
)
|
|
|
|
const maxFileSize = 1 * 1024 * 1024 // 1MB
|
|
|
|
func Build(key string) (string, error) {
|
|
cfg, err := config.Load()
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
files, ok := cfg.Bundles[key]
|
|
if !ok {
|
|
return "", fmt.Errorf("bundle not found: %s", key)
|
|
}
|
|
|
|
var builder strings.Builder
|
|
|
|
for _, file := range files {
|
|
info, err := os.Stat(file)
|
|
if err != nil {
|
|
continue
|
|
}
|
|
|
|
if info.Size() > maxFileSize {
|
|
continue
|
|
}
|
|
|
|
data, err := os.ReadFile(file)
|
|
if err != nil {
|
|
continue
|
|
}
|
|
|
|
builder.WriteString(fmt.Sprintf("===== %s =====\n", file))
|
|
builder.Write(data)
|
|
builder.WriteString("\n\n")
|
|
}
|
|
|
|
return builder.String(), nil
|
|
}
|
|
|
|
func Copy(content string) error {
|
|
return clipboard.WriteAll(content)
|
|
} |