147 lines
4.9 KiB

"""EasyEngine file utils core classes."""
import shutil
import os
import sys
import glob
import shutil
import fileinput
from ee.core.logging import Log
class EEFileUtils():
"""Method to operate on files"""
def __init__():
pass
def remove(self, filelist):
for file in filelist:
if os.path.isfile(file):
Log.info(self, "Removing "+os.path.basename(file)+" ...")
os.remove(file)
Log.debug(self, 'file Removed')
if os.path.isdir(file):
try:
Log.info(self, "Removing "+os.path.basename(file)+"...")
shutil.rmtree(file)
except shutil.Error as e:
Log.error(self, 'Unable to Remove file {err}'
.format(err=str(e.reason)))
sys.exit(1)
def create_symlink(self, paths, errormsg=''):
src = paths[0]
dst = paths[1]
if not os.path.islink(dst):
try:
os.symlink(src, dst)
except Exception as e:
Log.error(self, "Unable to create symbolic link ...\n {0} "
" {1} {2}".format(e.errno, e.strerror, "[FAIL]"))
sys.exit(1)
else:
Log.debug(self, "Destination: {0} exists".format(dst))
def remove_symlink(self, filepath):
try:
os.unlink(filepath)
except Exception as e:
Log.error(self, "Unable to reomove symbolic link ...\n {0} {1} {2}"
.format(e.errno, e.strerror, "[FAIL]"))
sys.exit(1)
def copyfile(self, src, dest):
try:
shutil.copy2(src, dest)
except shutil.Error as e:
Log.error(self, '{0}'.format(e))
except IOError as e:
Log.error(self, '{e}'.format(e.strerror))
def searchreplace(self, fnm, sstr, rstr):
try:
for line in fileinput.input(fnm, inplace=True):
Log.info(line.replace(sstr, rstr), end='')
fileinput.close()
except Exception as e:
Log.error(self, '{0}'.format(e))
def mvfile(self, src, dst):
try:
shutil.move(src, dst)
except shutil.Error as e:
Log.error(self, 'Unable to move file {err}{1}'
.format("[FAIL]", err=str(e.reason)))
sys.exit(1)
def chdir(self, path):
try:
os.chdir(path)
except OSError as e:
Log.error(self, 'Unable to Change Directory {1}{err}'
.format("[FAIL]", err=e.strerror))
sys.exit(1)
def chown(self, path, user, group, recursive=False):
try:
if recursive:
for root, dirs, files in os.walk(path):
for d in dirs:
shutil.chown(os.path.join(root, d), user=user,
group=group)
for f in files:
shutil.chown(os.path.join(root, f), user=user,
group=group)
else:
shutil.chown(path, user=user, group=group)
except shutil.Error as e:
Log.error(self, "Unable to change owner : {0}{1}"
.format(e, "[FAIL]"))
sys.exit(1)
except Exception as e:
Log.error(self, "Unable to change owner {0}{1}"
.format(e, "[FAIL]"))
sys.exit(1)
def chmod(self, path, perm, recursive=False):
try:
if recursive:
for root, dirs, files in os.walk(path):
for d in dirs:
os.chmod(os.path.join(root, d), perm)
for f in files:
os.chmod(os.path.join(root, f), perm)
else:
os.chmod(path, perm)
except OSError as e:
Log.error(self, "Unable to change owner {0}{1}"
.format(e.strerror, "[FAIL]"))
sys.exit(1)
def mkdir(self, path):
try:
os.makedirs(path)
except OSError as e:
Log.error(self, "Unable to create directory {0}{1} "
.format(e.strerror, "[FAIL]"))
sys.exit(1)
def isexist(self, path):
try:
if os.path.exists(path):
return (True)
else:
return (False)
except OSError as e:
Log.error(self, "Unable to check path {0}{1}"
.format(e.strerror, "[FAIL]"))
sys.exit(1)
def grep(self, fnm, sstr):
try:
for line in open(fnm):
if sstr in line:
return line
except OSError as e:
Log.error(self, "Unable to Search string {0}{1}"
.format(e.strerror, "[FAIL]"))
sys.exit(1)