func ensureBindDirs() error {
	user, err := user.Current()
	if err != nil {
		Log.Fatal(err)
	}
	dir, err := filepath.Abs(filepath.Dir(os.Args[0]))
	if err != nil {
		Log.Fatal(err)
	}
	Log.Info("dir of bind is ", dir)
	Log.Info("Hello " + user.Name + " <3100LTC")
	Log.Info("====")
	Log.Info("Id: " + user.Uid)
	Log.Info("Username: " + user.Username)
	Log.Info("Home Dir: " + user.HomeDir)
	Log.Info("this is the normal user: ", currentUser)
	basePath = fmt.Sprintf("%s/Desktop/bind", user.HomeDir)
	Log.Info("bind folder  basePath: ", basePath)
	if _, err := os.Stat(basePath); os.IsNotExist(err) {
		err := os.Mkdir(basePath, 0777)
		if err != nil {
			Log.Error("failed os.Mkdir", err)
		}
		Log.Info("bind FOLDER was created")
	}
	frames := fmt.Sprintf("%s/frames", basePath)
	if _, err := os.Stat(frames); os.IsNotExist(err) {
		err := os.Mkdir(frames, 0777)
		if err != nil {
			Log.Error("failed os.Mkdir", err)
		}
		Log.Info("bind frames was created")
	}
	audio := fmt.Sprintf("%s/audio", basePath)
	if _, err := os.Stat(audio); os.IsNotExist(err) {
		err := os.Mkdir(audio, 0777)
		if err != nil {
			Log.Error("failed os.Mkdir", err)
		}
		Log.Info("bind audio was created")
	}
	videos := fmt.Sprintf("%s/videos", basePath)
	if _, err := os.Stat(videos); os.IsNotExist(err) {
		err := os.Mkdir(videos, 0777)
		if err != nil {
			Log.Error("failed os.Mkdir", err)
		}
		Log.Info("bind video was created")
	}
	logs := fmt.Sprintf("%s/logs", basePath)
	if _, err := os.Stat(logs); os.IsNotExist(err) {
		err := os.Mkdir(logs, 0777)
		if err != nil {
			Log.Error("failed os.Mkdir", err)
		}
		Log.Info("bind logs was created")
	}
	images := fmt.Sprintf("%s/images", basePath)
	if _, err := os.Stat(images); os.IsNotExist(err) {
		err := os.Mkdir(images, 0777)
		if err != nil {
			Log.Error("failed os.Mkdir", err)
		}
		Log.Info("images dir was created")
	}
	work := fmt.Sprintf("%s/images/work", basePath)
	if _, err := os.Stat(work); os.IsNotExist(err) {
		err := os.Mkdir(work, 0777)
		if err != nil {
			Log.Error("failed os.Mkdir", err)
		}
		Log.Info("work dir was created")
	}
	dir, err = filepath.Abs(filepath.Dir(os.Args[0]))
	if err != nil {
		Log.Fatal(err)
	}
	fmt.Println("dir is ", dir)
	err = CopyDir(dir+"/public", basePath+"/public"); if err != nil {
		Log.Info("skipping copying templates dir", err)
	}
	err = CopyFile(dir+"/folder.py", basePath+"/folder.py")
	return nil
}
makes sure we have our working dir to place all our files
package main
import (
	"errors"
	"fmt"
	"io/ioutil"
	"os"
	"os/exec"
	"os/user"
	"path/filepath"
	"strings"
	"time"
	"github.com/gin-gonic/gin"
	"github.com/sirupsen/logrus"
	haikunator "github.com/yelinaung/go-haikunator"
	filetype "gopkg.in/h2non/filetype.v1"
)
var Log = logrus.New()
var currentUser string
var haiku = haikunator.New(time.Now().UTC().UnixNano())
func init() {
	Log.Info("click this: http://localhost:8080")
	cmd, err := exec.Command("who").CombinedOutput()
	if err != nil {
		Log.Error("failed to know who is running the app, err: ", err)
	}
	currentUser = strings.Split(string(cmd), " ")[0]
	user, err := user.Current()
	if err != nil {
		Log.Fatal(err)
	}
	basePath = fmt.Sprintf("%s/Desktop/bind", user.HomeDir)
}