Pular para o conteúdo principal

victorstein.dev

50/100 Dias de Golang - Metade de 100

Table of Contents

# Metade de 100

Esse é o post 51 - o blog é de programação, o primeiro tinha que ser de índice 0. Vou fazer um agrupado de todos os posts seguindo a sequência do roadmap.sh - Sim, no dia 100 vou fazer isso novamente com todos os posts…rsrs. No final mostro o código Go que usei para pegar o nome e o path de cada arquivo.

# Learn the Basics

# Going Deeper

# CLI’s

# ORM’s

# Web Frameworks

# Logging

# API Clients

# Testing your Apps

# Perdidos

Para fazer esse Post, abri cada arquivo, peguei o título, formatei para o link em .md - Fiz isso até o post 3, depois disso automatizei.

Meme sobre automação de tarefas

package main

import (
	"bufio"
	"fmt"
	"os"
	"path/filepath"
	"strings"
)

func main() {

	dir := "/home/victorstein/victorstein.dev/content/posts/golang"

	err := filepath.Walk(dir, func(path string, info os.FileInfo, err error) error {
		if err != nil {
			return err
		}

		file, err := os.Open(path)
		if err != nil {
			fmt.Printf("Erro ao abrir %s: %v\n", path, err)
			return nil
		}
		defer file.Close()

		scanner := bufio.NewScanner(file)
		lineCount := 0
		var title string

		for scanner.Scan() {
			lineCount++
			if lineCount == 2 {
				line := scanner.Text()
				if strings.HasPrefix(line, "title:") {
					title = strings.TrimSpace(strings.TrimPrefix(line, "title:"))
				}
				break
			}
		}

		if title != "" {
			filename := filepath.Base(path)
			fmt.Printf("[%s](./%s)\n", title, filename)
		}

		return nil
	})

	if err != nil {
		fmt.Printf("Erro ao percorrer diretório: %v\n", err)
	}
}