#encoding:utf8
|
|
$cur_dir = Split-Path $MyInvocation.MyCommand.Path
|
|
$dir_main = "$cur_dir/../"
|
|
$dir_erl = $dir_main
|
|
$dir_log = "$dir_erl/logs"
|
|
$werl = "werl"
|
|
$erl = "erl"
|
|
$param_pa = "-pa " + $($dir_erl -replace "\\", "/") + "/ebin"
|
|
|
|
function fun_make(){
|
|
$src = $dir_main + "/src"
|
|
$inc = $dir_main + "/include"
|
|
$timefile = $cur_dir + "/timefile"
|
|
#$beamfile = $dir_main + "/ebin"
|
|
$lastTime = $(Get-Item $timefile).LastWriteTime
|
|
#$beamTime = $(Get-Item $beamfile).LastWriteTime
|
|
#$measureObject = $lastTime, $beamTime | Measure-Object -Maximum
|
|
#$latestTime = $measureObject.Maximum
|
|
$latestTime = $lastTime
|
|
function get_hrl_str(){
|
|
begin{ $list = @() }
|
|
process{ $list += $_.Name }
|
|
end{
|
|
$str = $list -join "|"
|
|
if($str -ne ""){
|
|
$str = "($str)"
|
|
}
|
|
$str
|
|
}
|
|
}
|
|
$chhrl_str = Get-ChildItem $inc -Include *.hrl -Recurse | Where-Object {$_.LastWriteTime -gt $latestTime} | get_hrl_str
|
|
|
|
## 使用管道获取变化的文件
|
|
## 1. 获取所有文件
|
|
## 2. 检测变化文件
|
|
## 3. 生成文件全名列表
|
|
function get_erl_str(){
|
|
begin{ $list = @() }
|
|
process{
|
|
$f = $_.FullName -replace "\\", "/"
|
|
$list += "`\`"$f`\`""
|
|
}
|
|
end{ $list -join "," }
|
|
}
|
|
$erl_str = Get-ChildItem $src -Include *.erl -Exclude .svn,.git -Recurse | Where-Object {
|
|
if ( $(Get-Item $_.FullName).LastWriteTime -gt $latestTime ){
|
|
return $_
|
|
}
|
|
if($chhrl_str -eq ""){
|
|
return $false
|
|
}
|
|
if (Select-String -Path $_.FullName -Pattern $chhrl_str -Quiet) {
|
|
return $_
|
|
}else{
|
|
return $false
|
|
}
|
|
} | get_erl_str
|
|
|
|
Set-Location $dir_erl
|
|
## 在windows下
|
|
## 直接mmake:files(5, [])无效
|
|
## 必须mmake:files(5, [], Opts)
|
|
## why? {{ok,[{{_, Opts}}|_]}}
|
|
$cmd_str = '{0} {1} -noshell -eval "{{ok,FileInfo}}=file:consult(\"./Emakefile\"),{{_, Opts}}=lists:last(FileInfo),case mmake:files(5,[{2}], Opts) of up_to_date -> init:stop(); _ -> init:stop(1) end"'
|
|
|
|
$cmd = $cmd_str -f $erl, $param_pa, $erl_str
|
|
## echo $cmd
|
|
cmd /C $cmd
|
|
if ($?) {
|
|
Write-Output "=============> success"
|
|
(Get-Date).ToString() | Out-File $timefile -Append
|
|
}else{
|
|
Write-Error "==============> fail"
|
|
}
|
|
Set-Location $cur_dir
|
|
}
|
|
|
|
fun_make
|
|
|