package cn.reghao.autodop.dmaster.app.service.bd;

import cn.reghao.autodop.common.util.FileOps;
import cn.reghao.autodop.common.util.text.ReplaceCharacter;
import cn.reghao.autodop.dmaster.app.model.constant.AppType;
import cn.reghao.autodop.dmaster.app.model.po.config.AppConfig;
import cn.reghao.autodop.dmaster.app.model.po.config.build.LocalBuildDir;
import lombok.extern.slf4j.Slf4j;

import java.io.File;
import java.io.IOException;

/**
 * @author reghao
 * @date 2019-11-16 21:55:31
 */
@Slf4j
public class BuilderUtil {
    /**
     * 复制源码到编译目录
     *
     * @param appLocalRepo 应用代码的本地仓库位置
     * @date 2019-12-03 上午9:55
     */
    public static void copyToCompileDir(String appLocalRepo, AppConfig app) throws IOException {
        String appCompileDir = LocalBuildDir.compileDir + "/" + app.getAppId();
        File compileDir = new File(appCompileDir);
        if (!compileDir.exists() && !FileOps.mkdirs(compileDir)) {
            throw new IOException(compileDir + "不存在");
        } else {
            FileOps.eraseDir(compileDir);
        }

        String dirname = app.getCodeDirname();
        FileOps.copyDirContentToDir(appLocalRepo + "/" + dirname, appCompileDir);

        // Dotnet 应用需要额外的处理
        if (app.getAppType().equals(AppType.dotnetCore.name())) {
            // Dotnet 应用需要替换一些字符
            BuilderUtil.replaceCharacter(appCompileDir);
        }
    }

    /**
     * TODO 判断文件编码
     *
     * @param
     * @return
     * @date 2020-08-18 上午11:00
     */
    public static void replaceCharacter(String appCompileDir) {
        FileOps.traversal(appCompileDir, new ReplaceCharacter());
    }
}
