/******************************************************************************
 * Copyright (c)  2022 PingCAP, Inc.                                          *
 * Licensed under the Apache License, Version 2.0 (the "License");            *
 * you may not use this file except in compliance with the License.           *
 * You may obtain a copy of the License at                                    *
 *                                                                            *
 * http://www.apache.org/licenses/LICENSE-2.0                                 *
 *                                                                            *
 * Unless required by applicable law or agreed to in writing, software        *
 * distributed under the License is distributed on an "AS IS" BASIS,          *
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   *
 * See the License for the specific language governing permissions and        *
 * limitations under the License.                                             *
 ******************************************************************************/

/*******************************************************************************
 * @File: file.go
 * @Description:
 * @Author: jiangxunyu@pingcap.com
 * @Version: 1.0.0
 * @Date: 2022/6/7 17:07
*******************************************************************************/

package utils

import "os"

// Exists
// @Description: determine if a file or directory exists
// @Parameter path
// @return bool
func Exists(path string) bool {
	_, err := os.Stat(path)
	if err != nil {
		if !os.IsExist(err) {
			return false
		}
	}
	return true
}

// IsDir
// @Description: determine if the path is a directory
// @Parameter path
// @return bool
func IsDir(path string) bool {
	if !Exists(path) {
		return false
	}
	s, err := os.Stat(path)
	if err != nil {
		return false
	}
	return s.IsDir()

}

// IsFile
// @Description: determine if the path is a file
// @Parameter path
// @return bool
func IsFile(path string) bool {
	if !Exists(path) {
		return false
	}
	return !IsDir(path)
}
