fix: small fixes

This commit is contained in:
Kasper Juul Hermansen 2025-02-22 16:20:45 +01:00
parent 01023c212b
commit 2c09577d0d
Signed by: kjuulh
SSH Key Fingerprint: SHA256:RjXh0p7U6opxnfd3ga/Y9TCo18FYlHFdSpRIV72S/QM
3 changed files with 28 additions and 6 deletions

View File

@ -6,6 +6,7 @@ import (
"log/slog" "log/slog"
"os" "os"
"git.front.kjuulh.io/kjuulh/scaffold/internal/fetcher"
"git.front.kjuulh.io/kjuulh/scaffold/internal/templates" "git.front.kjuulh.io/kjuulh/scaffold/internal/templates"
"github.com/spf13/cobra" "github.com/spf13/cobra"
) )
@ -14,11 +15,16 @@ func getScaffoldCommands(registryPath *string) ([]*cobra.Command, error) {
var ( var (
ctx = context.Background() ctx = context.Background()
ui = slog.New(slog.NewTextHandler(os.Stderr, &slog.HandlerOptions{})) ui = slog.New(slog.NewTextHandler(os.Stderr, &slog.HandlerOptions{}))
fetcher = fetcher.NewFetcher()
templateIndexer = templates.NewTemplateIndexer() templateIndexer = templates.NewTemplateIndexer()
templateLoader = templates.NewTemplateLoader() templateLoader = templates.NewTemplateLoader()
fileWriter = templates.NewFileWriter().WithPromptOverride(promptOverrideFile) fileWriter = templates.NewFileWriter().WithPromptOverride(promptOverrideFile)
) )
if !fetcher.Available(registryPath) {
return nil, nil
}
templateFiles, err := templateIndexer.Index(ctx, *registryPath, ui) templateFiles, err := templateIndexer.Index(ctx, *registryPath, ui)
if err != nil { if err != nil {
return nil, fmt.Errorf("failed to index templates: %w", err) return nil, fmt.Errorf("failed to index templates: %w", err)

View File

@ -19,25 +19,41 @@ func NewFetcher() *Fetcher {
return &Fetcher{} return &Fetcher{}
} }
const readWriteExec = 0o644 const readWriteExec = 0o744
const githubProject = "kjuulh/scaffold" const githubProject = "kjuulh/scaffold"
var ( var (
scaffoldFolder = os.ExpandEnv("$HOME/.scaffold") scaffoldFolder = os.ExpandEnv("$HOME/.scaffold")
scaffoldClone = path.Join(scaffoldFolder, "upstream") scaffoldClone = path.Join(scaffoldFolder, "upstream")
scaffoldCache = path.Join(scaffoldFolder, "scaffold.updates.json") scaffoldRegistry = path.Join(scaffoldClone, "registry")
scaffoldCache = path.Join(scaffoldFolder, "scaffold.updates.json")
) )
func (f *Fetcher) Available(registryPath *string) bool {
if *registryPath == "" {
if _, err := os.Stat(scaffoldClone); err != nil {
return false
}
return true
}
return false
}
func (f *Fetcher) CloneRepository(ctx context.Context, registryPath *string, ui *slog.Logger) error { func (f *Fetcher) CloneRepository(ctx context.Context, registryPath *string, ui *slog.Logger) error {
if err := os.MkdirAll(scaffoldFolder, readWriteExec); err != nil { if err := os.MkdirAll(scaffoldFolder, readWriteExec); err != nil {
return fmt.Errorf("failed to create scaffold folder: %w", err) return fmt.Errorf("failed to create scaffold folder: %w", err)
} }
if *registryPath == "" { if *registryPath == "" {
// update the registry path as it is shared
*registryPath = scaffoldRegistry
if _, err := os.Stat(scaffoldClone); err != nil { if _, err := os.Stat(scaffoldClone); err != nil {
if !errors.Is(err, os.ErrNotExist) { if !errors.Is(err, os.ErrNotExist) {
return fmt.Errorf("failed to find the upstream folder: %w", err) return fmt.Errorf("failed to find the upstream folder: %s, %w", scaffoldClone, err)
} }
ui.Info("cloning upstream templates") ui.Info("cloning upstream templates")

View File

@ -53,7 +53,7 @@ func (t *TemplateIndexer) Index(ctx context.Context, scaffoldRegistryFolder stri
templateDirEntries, err := os.ReadDir(scaffoldRegistryFolder) templateDirEntries, err := os.ReadDir(scaffoldRegistryFolder)
if err != nil { if err != nil {
return nil, fmt.Errorf("failed to read templates dir: %w", err) return nil, fmt.Errorf("failed to read templates dir: %s, %w", scaffoldRegistryFolder, err)
} }
var ( var (