삽질하는플머

재빌드한 RTL, FCL 유니트들을 적용하기 위한 스크립트

Lazarus
재빌드한 rtl, package 유니트들을 라자루스에 적용하기 위한 스크립트이다.
cygwin 상에서 실행시키면 컴파일된 유니트들을 제 위치에 옮겨준다.

역시 셸 스크립트는 어렵다... (보고 웃지 마세요!)

moveunits.sh


#!/bin/sh 
#

# 라자루스의 유니트들을 정돈하기 위한 스크립트. 
# 인자값으로는 소스디렉토리, 유니트디렉토리, 그리고 작업할 유니트 타입을 받는다. 
#
# rtl의 경우 다음과 같다. 
#
# 1. /cygdrive/c/lazarus/fpc/2.2.2/source/
# 2. /cygdrive/c/lazarus/fpc/2.2.2/units/
# 3. i386-win32 
# 
# fcl의 경우 다음과 같다. 
#
# 1. /cygdrive/c/lazarus/fpc/2.2.2/source/packages/
# 2. /cygdrive/c/lazarus/fpc/2.2.2/units/
# 3. i386-win32 

# 시작위치를 저장 해 둔다. 
StartPath="$(pwd)";

if [ $# -eq 3 ]; then
  echo "실행인자를 받았습니다."
  echo "소스 디렉토리  : "$1
  echo "유니트 디렉토리: "$2
  echo "유니트 타입    : "$3
  
  # 소스 디렉토리로 이동. 디렉토리를 추출. 
  cd $1;
  SubDirs=($(ls -ltr $1 | grep -v total | awk '{print $NF}'));
  echo "서브디렉토리 갯수 : "${#SubDirs[*]};
  
  for Dir in ${SubDirs[*]} 
  do
    # 주어진 디렉토리 밑에 /units/$3 이 존재하는지 살핀다. 
    if [ -a $1$Dir"/units/"$3 ]; then
      echo $1$Dir"/units/"$3
      echo " - 이동 대상입니다. "$2$3"/"$Dir"  옮깁니다." 
      # 옮겨갈 유니트 디렉토리 하부의 대상을 먼저 날린다. 
      rm  $2$3"/"$Dir -rf
      # 없는 경우를 대비해 생성도 해 둔다. 
      mkdir  $2$3
      # 디렉토리를 옮겨준다.
      mv $1$Dir"/units/"$3 $2$3"/"$Dir       # 원본의 컴파일된 유니트는 날려준다.       rm $1$Dir"/units/" -rf     fi   done; else   echo "실행인자의 갯수를 확인하세요." fi # 시작 위치로 되돌아간다. cd $StartPath;