#!/bin/bash

# created by lichanghong ; mail: lichanghong@soyoung.com

# XXX.sh  AFNetworking 3.0.0

set -e

. ./pod_function.sh

read_pod_file_at_current_path

git_path_dir=$HOME"/.changhong_bin"

framework_dir=$git_path_dir"/frameworks/"

open $framework_dir

#!/bin/bash

set -e

function read_lib_line_name_version(){

line=$1

#clip for name

first=${line#*\'}

name=${first%%\'*}

#clip for version

second=${line%\'*}

pre_version=${second##*\'}

version=${pre_version/"~> "/""}

#判断带版本号的和不带版本号的

first_char=${version:0:1}

case $first_char in

[1-9])

echo "带版本..."$line

create_lib $name $version

;;

[a-z]|[A-Z])

echo "不带版本号:"$line

create_lib $name ""

;;

esac

}

function create_lib(){

pod_get_gitpath $1

git_path_dir=$HOME"/.changhong_bin"

framework_dir=$git_path_dir"/frameworks/"

create_changhong_bin_dir $git_path_dir $framework_dir

cd $git_path_dir

clone_git_source_or_pull $1 $2

package_podspec_to_framework $1 $2 $framework_dir

}

function read_pod_file_at_current_path(){

while read line

do

if [[ ${line:0:1} != "#" && $line =~ "pod" ]];then

read_lib_line_name_version "$line"

fi

done < `pwd`"/Podfile"

}

function pod_get_gitpath(){

echo "pod search $1"

search_result=$(pod search $1)

#- Source: https://github.com/AFNetworking/AFNetworking.git - Versions

search_result_path=${search_result%%" - Versions"*}

git_path=${search_result_path##*Source:}

echo "the git path is "$git_path

}

function create_changhong_bin_dir(){

git_path_dir=$1

framework_dir=$2

if [ ! -d "$git_path_dir" ]; then

echo "create dir $git_path_dir"

mkdir $git_path_dir

fi

if [ ! -d "$git_path_dir/frameworks" ]; then

echo "create dir $framework_dir"

mkdir $framework_dir

fi

}

function clone_git_source_or_pull(){

# clone git

lib_dir="$git_path_dir/"$1

lib_dir2=${lib_dir/+/-}  #mac 会把带有+的文件名改为-

if [ ! -d $lib_dir2 ]; then

git clone $git_path -b $2 || git clone $git_path -b "v"$2

cd $lib_dir2

git checkout -b $2

else

rm -rf $lib_dir2

fi

}

function package_podspec_to_framework(){

framework_dir=$3

#find podspec file & package framework path

podspec_file=`find  .  -type f -regex  ".*\.podspec"`

build_dir=`pwd`"/$1-$2/ios/"

echo -e "\033[32m  $build_framework_ios  \033[0m"

# package file to framework

if pod package $podspec_file; then

framework_name=`ls  $build_dir  |  grep ".*\.framework"`

build_dir_ios=$build_dir"/"$framework_name

echo "...........success package cp $build_dir_ios to $framework_dir.........."

rm -Rf $framework_dir"/"$framework_name && echo "$framework_name already exists,update ..."

cp -Rf $build_dir_ios $framework_dir

echo -e "\033[32m .....$1-$2 success packaged by changhong.... \033[0m" #绿色字

echo "$1-$2 success..."`date "+%Y-%m-%d %H:%M:%S" ` >> ../changhong_build.log

else

echo "failure to create framework for $1"

exit 1

fi

}

cocoapod podpackage 自动根据podfile生成framework实现二进制化,原创脚本,转载请注明出处的更多相关文章

  1. iOS封装功能生成 .framework

    前言 如果你想将你开发的控件与别人分享,一种方法是直接提供源代码文件.然而,这种方法并不是很优雅.它会暴露所有的实现细节,而这些实现你可能并不想开源出来.此外,开发者也可能并不想看到你的所有代码,因为 ...

  2. 利用python自动生成verilog模块例化模板

    一.前言 初入职场,一直忙着熟悉工作,就没什么时间更新博客.今天受“利奇马”的影响,只好宅在家中,写写技术文章.芯片设计规模日益庞大,编写脚本成了芯片开发人员必要的软技能.模块端口动不动就几十上百个, ...

  3. ExcelVBA实现一键生成word文字报告及批量操作[原创]

    在很多工作中,经常需要写一些类似的报告,使用同一个模板,只是里面的数据不同,人工操作工程量大且容易出错,如果能用程序直接实现可以省去不少麻烦. 本文使用ExcelVBA实现,主要思路是使用word邮件 ...

  4. [转]用Python做一个自动生成读表代码的小脚本

    写在开始(本片文章不是写给小白的,至少你应该知道一些常识!) 大家在Unity开发中,肯定会把一些数据放到配置文件中,尤其是大一点的项目,每次开发一个新功能的时候,都要重复的写那些读表代码.非常烦.来 ...

  5. [Android实例] Android Studio插件-自动根据布局生成Activity等代码1.4 (开源)(申明:来源于网络)

    [Android实例] Android Studio插件-自动根据布局生成Activity等代码1.4 (开源)(申明:来源于网络) 地址:http://www.eoeandroid.com/thre ...

  6. pod package 生成 Framework

    pod package 生成 Framework pod package 是 cocoapods 的一个插件,如果没有的话使用以下命令安装: sudo gem install cocoapods-pa ...

  7. Erwin 生成 mysql 带注释(comment )的脚本

    Erwin设计数据库非常方便,有逻辑视图和物理视图,可以很方便的生成数据库文档和SQL 脚本.在使用过程中唯一不爽的地方是脚本不能生成comment.   在百度无数次无法解决下,又FQ谷歌,在一个日 ...

  8. Linux:自动获取静态IP地址,清空iptable,修改selinux脚本

    自动获取静态IP地址,清空iptable,修改selinux脚本 环境:VMware 平台:centos6.8全新 功能: 1)应用ifconfig -a,route -n,cat /etc/reso ...

  9. 自动清理N天前的二进制日志

    这里以自动清理5天前的二进制日志为例(做了同步或依赖于二进制日志备份的请慎用): 以root身份登录数据库,执行以下命令: ; 首次设置expire_logs_days参数后需要执行flush log ...

随机推荐

  1. 1、java的数据类型

    一.基本数据类型 1.整型(byte,short,int,long) byte在内存中占用一个字节,short占用两个字节,int占用四个字节,long占用8个字节: Java语言中整型默认为int型 ...

  2. python3爬虫_环境安装

    一.环境安装 1.python3安装 官网:https://www.python.org/downloads/ 64 位系统可以下载 Windows x86-64 executable install ...

  3. 将对象转成 json 以及 将字符串 hash(SHA1) 加密

    如下: /// <summary> /// 生成 Json /// </summary> /// <param name="obj"></ ...

  4. idea使用eclipse 代码format风格

    为了保证大家代码格式一样,避免在合代码时很出现大面积冲突.针对eclipse和idea两种开发工具进行了代码风格统一. Eclipse 使用方法:Windows → Preferences → Jav ...

  5. Hive分区表的导入与导出

    最近在做一个小任务,将一个CDH平台中Hive的部分数据同步到另一个平台中.毕竟我也刚开始工作,在正式开始做之前,首先进行了一段时间的练习,下面的内容就是练习时写的文档中的内容.如果哪里有错误或者疏漏 ...

  6. Android平台上的Aplay与TinyAlsa移植使用

    ALSA是高级Linux声音架构.提供了一系列音频的逻辑接口,包括PCM.CONTROL等.这些,不影响它的使用,了解一下就可以. 在Android设备上,linux 2.x的版本,要控制录制播放音频 ...

  7. css--颜色值

    首先,#000000格式的颜色被成为十六进制颜色码: 6位数分为三组,每两位数一组,依次是红.黄.蓝颜色的强度: #000000可以缩写为#000:黑色 其他类推

  8. jenkins log文件突然占满磁盘空间

    今天早上同事反应jenkins构建job发生异常,于是登录机器查看发现磁盘空间已满.进一步排查之后发现jenkins的catalina.out文件已占满磁盘空间. 用tail看了下日志后面都是关于DN ...

  9. 深度学习硬件:CPU、GPU、FPGA、ASIC

    人工智能包括三个要素:算法,计算和数据.人工智能算法目前最主流的是深度学习.计算所对应的硬件平台有:CPU.GPU.FPGA.ASIC.由于移动互联网的到来,用户每天产生大量的数据被入口应用收集:搜索 ...

  10. HTML特殊字符编码对照表(备记)

    特殊符号 命名实体 十进制编码 特殊符号 命名实体 十进制编码 特殊符号 命名实体 十进制编码 Α Α Α Β Β Β Γ Γ Γ Δ Δ Δ Ε Ε Ε Ζ Ζ Ζ Η Η Η Θ Θ Θ Ι Ι ...