cocoapod podpackage 自动根据podfile生成framework实现二进制化,原创脚本,转载请注明出处
#!/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实现二进制化,原创脚本,转载请注明出处的更多相关文章
- iOS封装功能生成 .framework
前言 如果你想将你开发的控件与别人分享,一种方法是直接提供源代码文件.然而,这种方法并不是很优雅.它会暴露所有的实现细节,而这些实现你可能并不想开源出来.此外,开发者也可能并不想看到你的所有代码,因为 ...
- 利用python自动生成verilog模块例化模板
一.前言 初入职场,一直忙着熟悉工作,就没什么时间更新博客.今天受“利奇马”的影响,只好宅在家中,写写技术文章.芯片设计规模日益庞大,编写脚本成了芯片开发人员必要的软技能.模块端口动不动就几十上百个, ...
- ExcelVBA实现一键生成word文字报告及批量操作[原创]
在很多工作中,经常需要写一些类似的报告,使用同一个模板,只是里面的数据不同,人工操作工程量大且容易出错,如果能用程序直接实现可以省去不少麻烦. 本文使用ExcelVBA实现,主要思路是使用word邮件 ...
- [转]用Python做一个自动生成读表代码的小脚本
写在开始(本片文章不是写给小白的,至少你应该知道一些常识!) 大家在Unity开发中,肯定会把一些数据放到配置文件中,尤其是大一点的项目,每次开发一个新功能的时候,都要重复的写那些读表代码.非常烦.来 ...
- [Android实例] Android Studio插件-自动根据布局生成Activity等代码1.4 (开源)(申明:来源于网络)
[Android实例] Android Studio插件-自动根据布局生成Activity等代码1.4 (开源)(申明:来源于网络) 地址:http://www.eoeandroid.com/thre ...
- pod package 生成 Framework
pod package 生成 Framework pod package 是 cocoapods 的一个插件,如果没有的话使用以下命令安装: sudo gem install cocoapods-pa ...
- Erwin 生成 mysql 带注释(comment )的脚本
Erwin设计数据库非常方便,有逻辑视图和物理视图,可以很方便的生成数据库文档和SQL 脚本.在使用过程中唯一不爽的地方是脚本不能生成comment. 在百度无数次无法解决下,又FQ谷歌,在一个日 ...
- Linux:自动获取静态IP地址,清空iptable,修改selinux脚本
自动获取静态IP地址,清空iptable,修改selinux脚本 环境:VMware 平台:centos6.8全新 功能: 1)应用ifconfig -a,route -n,cat /etc/reso ...
- 自动清理N天前的二进制日志
这里以自动清理5天前的二进制日志为例(做了同步或依赖于二进制日志备份的请慎用): 以root身份登录数据库,执行以下命令: ; 首次设置expire_logs_days参数后需要执行flush log ...
随机推荐
- 初学Git命令
初始化一个Git仓库,使用git init命令. 添加文件到Git仓库,分两步: 使用命令git add <file>,注意,可反复多次使用,添加多个文件: 使用命令git commit ...
- [luogu P2521] [HAOI2011]防线修建
[luogu P2521] [HAOI2011]防线修建 题目描述 近来A国和B国的矛盾激化,为了预防不测,A国准备修建一条长长的防线,当然修建防线的话,肯定要把需要保护的城市修在防线内部了.可是A国 ...
- mac版mysql配置
开始下载 我选择的是最后一个dmg格式的安装包,点击download,会出现让我们注册登陆的界面,点击最下面的No thanks,just take me to downloads!直接进行下载即可: ...
- Sed练习
sed:编辑器 sed:Stream EDitor,行编辑器 用法: sed [opthon]... ‘script’ inputfile.. scritp:‘地址命令’ 常用选项: ...
- 【转】FluentAPI详细用法
设置主键modelBuilder.Entity<x>().HasKey(t => t.Name); 设置联合主键modelBuilder.Entity<x>().HasK ...
- yield的表达式形式与内置函数
yield的功能: 1. 与return类似,都可以返回值,不一样在于,yield可以返回多个值而且可暂停,再次执行可继续下一步操作,return到了就停止不在继续运行. 2.为封装好的的函数能够使用 ...
- SQL Server数据库开发的二十一条军规
如果你正在负责一个基于SQL Server的项目,或者你刚刚接触SQL Server,你都有可能要面临一些数据库性能的问题,这篇文章会为你提供一些有用的指导(其中大多数也可以用于其它的DBMS).在这 ...
- Saiku根据入参日期查询出对应的数据(二十)
Saiku根据入参日期查询出对应的数据 之前好像有写过一篇博客关于saiku date range的,现在进一步更新啦!!! 这里的日期筛选会更完善一些,需要提供两个参数 开始日期与结束日期(star ...
- 1.2 JAVA多线程实现
线程和进程 进程:是执行中一段程序, 进程是系统进行资源分配和调度的一个独立单位. 线程:比进程更小的能独立运行的基本单位,单个进程中执行中每个任务就是一个线程.线程是进程中执行运算的最小单位. Th ...
- 阿里云oss c# api 的使用 的使用
API 文档下载地址:http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/32085/cn_zh/1515493045734 ...