package ioutils

import (
	"bufio"
	"io"
	"os"
	"strings"
)

func FileExistsWithStats(filename string) (os.FileInfo, bool) {
	stats, err := os.Stat(filename)
	return stats, !os.IsNotExist(err)
}

func FileExists(filename string) bool {
	_, err := os.Stat(filename)
	return !os.IsNotExist(err)
}

func ReadPropertyFile(reader io.Reader) (map[string]string, error) {
	scanner := bufio.NewScanner(reader)

	props := make(map[string]string)
	for scanner.Scan() {
		line := scanner.Text()
		commentCharIndex := strings.Index(line, "#")
		if commentCharIndex >= 0 {
			line = line[commentCharIndex+1:]
		}
		if equalIndex := strings.Index(line, "="); equalIndex >= 0 {
			key := strings.TrimSpace(line[:equalIndex])
			value := strings.TrimSpace(line[equalIndex+1:])
			props[key] = value
		}
	}
	if err := scanner.Err(); err != nil {
		return nil, err
	}
	return props, nil
}