func StringSliceContainsString(slice []string, str string) bool {
	for _, stringInSlice := range slice {
		if stringInSlice == str {
			return true
		}
	}
	return false
}
returns whether the input str is in the slice
package common
import (
	"bufio"
	"bytes"
	"context"
	"fmt"
	"math/rand"
	"os"
	"path"
	"path/filepath"
	"reflect"
	"regexp"
	"runtime"
	"runtime/debug"
	"strconv"
	"strings"
	"text/template"
	"time"
	"unicode/utf8"
	"unsafe"
	"github.com/nuclio/errors"
	"github.com/nuclio/logger"
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	"k8s.io/apimachinery/pkg/labels"
)
var SmallLettersAndNumbers = []rune("abcdefghijklmnopqrstuvwxyz1234567890")
var LettersAndNumbers = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890")
var seededRand = rand.New(rand.NewSource(time.Now().UnixNano()))
func IsFile(path string) bool {
	info, err := os.Stat(path)
	if err != nil {
		return false
	}
	return info.Mode().IsRegular()
}
func IsDir(path string) bool {
	info, err := os.Stat(path)
	if err != nil {
		return false
	}
	return info.IsDir()
}
func FileExists(path string) bool {
	_, err := os.Stat(path)
	return err == nil
}
func StringSliceToIntSlice(stringSlice []string) ([]int, error) {
	result := []int{}
	for _, stringValue := range stringSlice {
		var intValue int
		var err error
		if intValue, err = strconv.Atoi(stringValue); err != nil {
			return nil, err
		}
		result = append(result, intValue)
	}
	return result, nil
}