func MakeFolder(folderName string) error {
	if err := os.Mkdir(folderName, 0o750); err != nil {
		return err
	}
	return nil
}
MakeFolder function for create folder.
package cgapp
import (
	"embed"
	"fmt"
	"io/fs"
	"os"
	"path/filepath"
	"strings"
	"text/template"
)
type EmbeddedFileSystem struct {
	Name       embed.FS
	RootFolder string
	SkipDir    bool
}
func CopyFromEmbeddedFS(efs *EmbeddedFileSystem) error {
	if err := fs.WalkDir(efs.Name, efs.RootFolder, func(path string, entry fs.DirEntry, err error) error {
		if err != nil {
			return ShowError(
				fmt.Sprintf("Can't copy files from embedded path `%v`!", efs.RootFolder),
			)
		}
		if entry.IsDir() && !efs.SkipDir {
			if err := MakeFolder(path); err != nil {
				return err
			}
		}
		if !entry.IsDir() {
			fileData, errReadFile := fs.ReadFile(efs.Name, path)
			if errReadFile != nil {
				return errReadFile
			}
			if efs.SkipDir {
				path = entry.Name()
			}
			if errMakeFile := MakeFile(path, fileData); errMakeFile != nil {
				return errMakeFile
			}
		}
		return nil
	}); err != nil {
		return err
	}
	return nil
}
func GenerateFileFromTemplate(fileName string, variables map[string]interface{}) error {
	tmpl, errParseFiles := template.ParseFiles(fileName)
	if errParseFiles != nil {
		return ShowError(errParseFiles.Error())
	}
	file, errCreate := os.Create(fileName)
	if errCreate != nil {
		return ShowError(errCreate.Error())
	}
	if errExecute := tmpl.Execute(file, variables); errExecute != nil {
		return ShowError(errExecute.Error())
	}
	_ = file.Close()
	newFileName := strings.ReplaceAll(fileName, ".tmpl", "")
	if errRename := os.Rename(fileName, newFileName); errRename != nil {
		return ShowError(errRename.Error())
	}
	return nil
}
func MakeFile(fileName string, fileData []byte) error {
	if err := os.WriteFile(fileName, fileData, 0o600); err != nil {
		return err
	}
	return nil
}