自動(dòng)清理CocoaPods緩存

目前做的項(xiàng)目是用cocoapods管理依賴庫(kù)的载佳,cocoapods的好處這里就不細(xì)說(shuō)了。我們遇到的問(wèn)題在于SDK層也是依賴cocoapods進(jìn)行管理的蔑担,而單單一個(gè)SDK動(dòng)不動(dòng)就1~2個(gè)G傻铣,在開(kāi)發(fā)階段經(jīng)常一天有幾個(gè)版本需要迭代。那么導(dǎo)致cocoapods的緩存目錄在一個(gè)月內(nèi)就會(huì)漲到40G到50G肖方。對(duì)于小固態(tài)真的傷不起诀豁。
手動(dòng)清理是可以的,目錄是~/Library/Caches/CocoaPods/Pods/Release窥妇,但是就是懶舷胜,且?guī)煲蔡啵苯影讶縿h掉的話,切一下分支可能又要重新下烹骨,麻煩翻伺,畢竟可能要下幾個(gè)G。所以打算寫(xiě)個(gè)腳本沮焕。
該腳本不會(huì)刪除最近7天的下載的版本吨岭,并且每個(gè)庫(kù)都會(huì)至少留3個(gè)版本。直接上代碼

#移動(dòng)文件到垃圾桶的方法
function moveToTrash() {    
    echo moveToTrash=$1
osascript << EOF
 tell application "Finder"
     posix path of ((delete posix file "$1") as unicode text)
 end tell
EOF #這行一定要頂格寫(xiě)峦树,否則報(bào)錯(cuò)
}

echo "開(kāi)始清理Pods緩存"
leftCount=3 #剩余幾個(gè)
Release=~/Library/Caches/CocoaPods/Pods/Release

for dir in $(ls $Release | sed 's/ /_-_/g') #需要將空格先替換辣辫,否則空格會(huì)分割文件名來(lái)遍歷
do
    originalDir="$(echo $dir | sed s'/_-_/ /g')"
    libDir=$Release/$originalDir
    if [ -d "$libDir" ]; then
        allCount=$(ls "$libDir" | wc -l)
        # echo allCount=$allCount
        
        deleteCount=`expr $allCount - $leftCount`
        # echo deleteCount=$deleteCount
        if [ $deleteCount -gt 0 ]; then 
            noUseFiles=$(find "$libDir" -type d -ctime +7 | sed 's/ /_-_/g') #7天沒(méi)修改的文件
            for deleteDir in $(ls -rt "$libDir" | head -n$deleteCount | sed "s:^:$libDir/: " | sed 's/ /_-_/g')
            do
                if [[ $noUseFiles =~ $deleteDir ]]; then
                    moveToTrash "$(echo $deleteDir | sed s'/_-_/ /g')"
                fi
            done
            
        fi
    fi
done

只要執(zhí)行一下這個(gè)腳本就行了。感覺(jué)很方便了魁巩。
但是還是懶急灭,再來(lái)個(gè)定時(shí)跑吧。這個(gè)時(shí)候需要用到mac的launchctl

使用launchctl定時(shí)跑清理腳本

首先我們需要寫(xiě)一個(gè)plist文件谷遂,然后把這個(gè)plist文件放到特定文件夾里面葬馋,當(dāng)系統(tǒng)登錄或者啟動(dòng)的時(shí)候就會(huì)跑了。
LaunchDaemons --> 只要系統(tǒng)啟動(dòng)了肾扰,哪怕用戶不登陸系統(tǒng)也會(huì)被執(zhí)行
LaunchAgents --> 當(dāng)用戶登陸系統(tǒng)后才會(huì)被執(zhí)行
具體的一些目錄
~/Library/LaunchAgents 由單個(gè)用戶自己定義的任務(wù)項(xiàng) 我是放這個(gè)目錄了畴嘶。
/Library/LaunchAgents 由管理員為用戶定義的任務(wù)項(xiàng)
/Library/LaunchDaemons 由管理員定義的守護(hù)進(jìn)程任務(wù)項(xiàng)
/System/Library/LaunchAgents 由Mac OS X為用戶定義的任務(wù)項(xiàng)
/System/Library/LaunchDaemons 由Mac OS X定義的守護(hù)進(jìn)程任務(wù)項(xiàng)
上plist代碼,記得把下面的注釋刪掉才行

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>com.bigo.deletePodsCache.plist</string> // 文件label集晚,需要唯一
  <key>ProgramArguments</key>
  <array>
    <string>~/Documents/eksh/deletePodsCache.sh</string>  //  需要跑的腳本絕對(duì)路徑
  </array>

  <key>StartInterval</key>  // 單位是秒窗悯,測(cè)試發(fā)現(xiàn)最小是10秒。使用StartCalendarInterval 可以指定時(shí)間偷拔,具體的可以查看一下其他的配置文件蟀瞧,照貓畫(huà)虎就行
  <integer>1728000</integer>
  <key>StandardOutPath</key> // 標(biāo)準(zhǔn)輸出文件
  <string>~/Documents/eksh/deletePodsCache.log</string>  
  <key>StandardErrorPath</key> // 錯(cuò)誤輸出文件
  <string>~/Documents/eksh/deletePodsCache.log</string>
</dict>
</plist>

把plist文件放到上述的LaunchAgents文件夾之后,終端運(yùn)行命令条摸,就行了悦污。

launchctl load -w path_of_plist_file

但怎么說(shuō),團(tuán)隊(duì)開(kāi)發(fā)的時(shí)候钉蒲,清理腳本好分發(fā)切端,但是這個(gè)定時(shí)任務(wù)配置卻有點(diǎn)麻煩,如果要寫(xiě)個(gè)腳本去配置顷啼,也不是不行踏枣。但就是懶,有木有更快更省力的方法钙蒙?有茵瀑,post_install。把清理腳本加入到podfile里面去就行了躬厌。每次pod intall之后马昨,就會(huì)跑,這樣就容易擴(kuò)展到團(tuán)隊(duì)了。
放上腳本代碼

post_install do |installer|
  if File.exist?("清理腳本文件路徑") == true then
      system("sh 清理腳本文件路徑")
  end
end

本以為這樣就完事了鸿捧,但是實(shí)際發(fā)現(xiàn)有些問(wèn)題屹篓,清理腳本里面是使用osascript給Finder發(fā)送命令的,但是pod install的時(shí)候感覺(jué)是ruby的腳本環(huán)境匙奴,運(yùn)行這種發(fā)送命令會(huì)特別慢(終端運(yùn)行腳本卻不會(huì))堆巧,有木有高手指點(diǎn)一下其中迷津?所以無(wú)奈之下泼菌,只能把移動(dòng)到廢紙婁的方法改為了mv $1 ~/.Trash谍肤,但這種方式會(huì)丟失廢紙婁文件放回原處的命令。
寫(xiě)在最后哗伯,把podfile腳本推送到遠(yuǎn)端之后荒揣,發(fā)現(xiàn)一個(gè)問(wèn)題,因?yàn)轫?xiàng)目是用Jenkins進(jìn)行持續(xù)集成的笋颤,這個(gè)腳本會(huì)導(dǎo)致Jenkins在打包的時(shí)候,機(jī)器上的緩存也被清理.....

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末内地,一起剝皮案震驚了整個(gè)濱河市伴澄,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌阱缓,老刑警劉巖非凌,帶你破解...
    沈念sama閱讀 216,470評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異荆针,居然都是意外死亡敞嗡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)航背,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)喉悴,“玉大人,你說(shuō)我怎么就攤上這事玖媚』啵” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,577評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵今魔,是天一觀的道長(zhǎng)勺像。 經(jīng)常有香客問(wèn)我,道長(zhǎng)错森,這世上最難降的妖魔是什么吟宦? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,176評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮涩维,結(jié)果婚禮上殃姓,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好辰狡,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布锋叨。 她就那樣靜靜地躺著,像睡著了一般宛篇。 火紅的嫁衣襯著肌膚如雪娃磺。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,155評(píng)論 1 299
  • 那天叫倍,我揣著相機(jī)與錄音偷卧,去河邊找鬼。 笑死吆倦,一個(gè)胖子當(dāng)著我的面吹牛听诸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蚕泽,決...
    沈念sama閱讀 40,041評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼晌梨,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了须妻?” 一聲冷哼從身側(cè)響起仔蝌,我...
    開(kāi)封第一講書(shū)人閱讀 38,903評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎荒吏,沒(méi)想到半個(gè)月后敛惊,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,319評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡绰更,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評(píng)論 2 332
  • 正文 我和宋清朗相戀三年瞧挤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片儡湾。...
    茶點(diǎn)故事閱讀 39,703評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡特恬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出徐钠,到底是詐尸還是另有隱情鸵鸥,我是刑警寧澤,帶...
    沈念sama閱讀 35,417評(píng)論 5 343
  • 正文 年R本政府宣布丹皱,位于F島的核電站妒穴,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏摊崭。R本人自食惡果不足惜讼油,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望呢簸。 院中可真熱鬧矮台,春花似錦乏屯、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,664評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至确虱,卻和暖如春含友,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背校辩。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,818評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工窘问, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人宜咒。 一個(gè)月前我還...
    沈念sama閱讀 47,711評(píng)論 2 368
  • 正文 我出身青樓惠赫,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親故黑。 傳聞我的和親對(duì)象是個(gè)殘疾皇子儿咱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容