验证Cocoapods是否是最新的Xcode构建步骤

mwkjh3gx  于 2023-05-08  发布在  其他
关注(0)|答案(3)|浏览(113)

我有一个iOS项目,它已经与Cocoapods建立。我使用了一堆库,但有时我在不同的分支之间添加/删除/更新库,忘记在终端中运行pod update,以确保我有我正在工作的分支的所有正确的pod。
我试图在我的项目(iOS 7,Xcode 5)中设置一个构建步骤,执行以下操作:
1.检查Pod当前是否为最新版本,即确定是否需要运行pod update
1.如果Pod是最新的,则不执行任何操作。
1.如果Pod不是最新的,请运行pod update/pod install
我看了Cocoapods网站上的文档,找不到解决我的问题的方法。
任何指针赞赏!
干杯,马里奥

lx0bsm1f

lx0bsm1f1#

基于weissazool答案

详情

  • Xcode 10
  • Cocoapods 1.6.1 beta

解决方案1.检查而不缓存

no_updates="No pod updates are available."
need_to_update=1
pod outdated | (while read i
    do
        if [ "$i" == "$no_updates" ]; then
        need_to_update=0   
    fi
done
    if [ $need_to_update == 1 ]; then
        echo "warning: need to update pods";
    fi
)

解决方案2.每天只检查一次

DIR="Temp"
FILE="./$DIR/Pods.check"

CURRENT_DATE=`date '+%Y-%m-%d'`

checkPods () {
    NEED_TO_UPDATE_PODS=1
    NO_PODS_UPDATE_STRING="No pod updates are available."
    > $FILE
    pod outdated | (while read LINE
    do
        if [ "$LINE" = "$NO_PODS_UPDATE_STRING" ]
        then
            NEED_TO_UPDATE_PODS=0
        fi
    done
        echo "$CURRENT_DATE" >> $FILE
        if [ $NEED_TO_UPDATE_PODS = 1 ]
        then
            str="warning: need to update pods"
            echo "$str"
            echo "$str" >> $FILE
        fi
    )
}

mkdir -p $DIR

if [ ! -f "$FILE" ]
then
    checkPods
else
    INDEX='0'
    cat $FILE | while read LINE
    do

    if [ $INDEX = 0 ] && [ $CURRENT_DATE != $LINE ]
    then
        checkPods
        break
    fi

    if [ $INDEX = 1 ]
    then
        echo "$LINE"
        break
    fi

    INDEX=`expr $INDEX + 1`
    done
fi

结果

kqqjbcuj

kqqjbcuj2#

有几个Xcode插件可以让事情变得更容易,但我不认为它们会自动更新:
使用CocoaPods的Xcode插件:ManiacDev
一个Xcode 5插件,用于更轻松地使用Cocoapods和创建Podfile:ManiacDev
CocoaPods for Xcode:kattrali/cocoapods-xcode-plugin

raogr8fs

raogr8fs3#

在Xcode中,编辑构建方案-cmd-option-r
构建->预操作
添加New Run Script Action
我想出了这个适合我的脚本--但我缺乏害羞,所以其他人可能有更优雅的解决方案。

pod outdated | while read i
do
flag=`echo $i | awk '{print match($0,"No updates")}'`;
if [ $flag -gt 0 ]; then
    break;
else
    pod update;
    break;      
fi
done

还要注意的是,这依赖于pod outdated的文本输出不变,所以当Cocoapods更新时,它可能很脆弱。

相关问题