emm 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/emm +9 -0
- data/lib/emm/files.rb +67 -0
- data/lib/emm/proj.rb +96 -0
- metadata +7 -11
- data/.gitignore +0 -9
- data/.travis.yml +0 -5
- data/CODE_OF_CONDUCT.md +0 -49
- data/Gemfile +0 -3
- data/Rakefile +0 -10
- data/bin/console +0 -14
- data/bin/setup +0 -8
- data/emm.gemspec +0 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f79d8a08312c44b35838794545465532b92e9010
|
4
|
+
data.tar.gz: 3477af217ed32f2621241d5593b7e64ffffce6fd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 619bb59df1a624af2334670888df41c3163e562bc4b39b1c576f0d98c8b873034b9888391f329f999a11820c687b56eed38609f9327c8d1237c91365d693bcfa
|
7
|
+
data.tar.gz: 9c539988cb3456ec62451b75f18d1e823dea9bb071b4b17cacb87dfef5f34e05dc1ddfc09ffc3eadc2687fdc464259590d794ffe9f2c6aa57e5f661b90029dd5
|
data/bin/emm
ADDED
data/lib/emm/files.rb
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
module EMMFiles
|
5
|
+
|
6
|
+
def self.create_podfile(configs, output_dir, proj_name)
|
7
|
+
# create_podfile : 通过 json 配置文件,创建一个 podfile
|
8
|
+
# configs : 项目配置
|
9
|
+
# output_dir : Podfile 文件导出目录
|
10
|
+
podfile = File.new(output_dir + "/Podfile", "w+")
|
11
|
+
podfile.syswrite("source 'https://github.com/CocoaPods/Specs.git'\n")
|
12
|
+
podfile.syswrite("source '" + configs["private_repo"] + "'\n")
|
13
|
+
podfile.syswrite("platform :ios, ‘" + configs["deployment_target"] + "’\n")
|
14
|
+
podfile.syswrite("target '" + proj_name + "' do\n")
|
15
|
+
for pod in configs["pods"]
|
16
|
+
podfile.syswrite(pod + "\n")
|
17
|
+
end
|
18
|
+
podfile.syswrite("end")
|
19
|
+
podfile.close
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.copy_xcconfig(source_path, export_path)
|
23
|
+
# 从 pod 的 xcconfig 中提取出所需内容,生成项目所需的 xcconfig
|
24
|
+
# sourcePath : Cocoapods 生成的 xcconfig 文件
|
25
|
+
# outputPath : 导出的 xcconfig 文件
|
26
|
+
output_file = File.new(export_path, "w+")
|
27
|
+
IO.foreach(source_path) do |line|
|
28
|
+
if line.start_with?("OTHER_LDFLAGS")
|
29
|
+
output_file.syswrite(line)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
output_file.syswrite("HEADER_SEARCH_PATHS = $(inherited) ${SRCROOT}/EMM_Pods/Headers/**\n")
|
33
|
+
output_file.syswrite("LIBRARY_SEARCH_PATHS = $(inherited) ${SRCROOT}/EMM_Pods/Libraries")
|
34
|
+
output_file.close
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.copy_resources(pods_dir, pods_proj_name, export_dir)
|
38
|
+
# 从 pod 的 XXX_Proj-resources.sh 脚本文件中提取出资源文件的路径,并将资源文件拷贝到导出目录下
|
39
|
+
# source_path: Pods 文件夹路径
|
40
|
+
# export_dir: 资源文件导出目录
|
41
|
+
start_string = 'if [[ "$CONFIGURATION" == "Release" ]]; then'
|
42
|
+
end_string = 'fi'
|
43
|
+
writing = false
|
44
|
+
# 读取 Cocoapods 提供的 copy resources 的脚本文件
|
45
|
+
IO.foreach(pods_dir + "/Target Support Files/Pods-" + pods_proj_name + "/Pods-" + pods_proj_name + "-resources.sh") do |line|
|
46
|
+
if line.start_with?(start_string)
|
47
|
+
writing = true
|
48
|
+
next
|
49
|
+
end
|
50
|
+
if writing
|
51
|
+
if line.start_with?(end_string)
|
52
|
+
break
|
53
|
+
end
|
54
|
+
line = line.match("\".+\"")[0]
|
55
|
+
line = line.gsub("\"", "")
|
56
|
+
src = pods_dir + "/" + line
|
57
|
+
dst = export_dir + "/" + line
|
58
|
+
FileUtils.mkdir_p(File.dirname(dst))
|
59
|
+
if File.directory?(src)
|
60
|
+
FileUtils.cp_r(src, File.dirname(dst))
|
61
|
+
else
|
62
|
+
FileUtils.cp(src, dst)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
data/lib/emm/proj.rb
ADDED
@@ -0,0 +1,96 @@
|
|
1
|
+
require "xcodeproj"
|
2
|
+
require "find"
|
3
|
+
require 'fileutils'
|
4
|
+
|
5
|
+
module EMMProj
|
6
|
+
|
7
|
+
def self.traverse(dirname, basename, super_group)
|
8
|
+
filepath = dirname + "/" + basename
|
9
|
+
refpath = "./" + @emm_pods_name + filepath[@libs_dir.length, filepath.length - @libs_dir.length]
|
10
|
+
|
11
|
+
if File.directory?(filepath)
|
12
|
+
group = super_group.new_group(basename)
|
13
|
+
Dir.foreach(filepath) do |filename|
|
14
|
+
if filename != "." and filename != ".." and filename != ".DS_Store"
|
15
|
+
traverse(filepath, filename, group)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
else
|
19
|
+
ref = super_group.new_reference(refpath)
|
20
|
+
extname = File.extname(basename)
|
21
|
+
if !([".xcconfig", ".a", ".h"].include?(extname))
|
22
|
+
# 除去 [".a", ".xcconfig", ".h"] 文件外,都当做资源文件添加到 target 中
|
23
|
+
@target.add_resources([ref])
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.create_temp_proj(proj_name, output_dir)
|
29
|
+
# create_temp_proj : 创建一个临时项目
|
30
|
+
# proj_name : 项目名称
|
31
|
+
# output_dir : 项目导出目录
|
32
|
+
proj_path = output_dir + "/" + proj_name + ".xcodeproj"
|
33
|
+
Xcodeproj::Project.new(proj_path).save
|
34
|
+
project = Xcodeproj::Project.open(proj_path)
|
35
|
+
target = project.new_target(:application, proj_name, :ios)
|
36
|
+
project.save
|
37
|
+
end
|
38
|
+
|
39
|
+
def self.create_proj(proj_name, output_dir, emm_pods_name, configs)
|
40
|
+
# create_temp_proj : 创建一个正式项目
|
41
|
+
# proj_name : 项目名称
|
42
|
+
# output_dir : 项目导出目录
|
43
|
+
# emm_pods_name : EMM_Pods 文件夹的名称
|
44
|
+
# configs : 项目配置
|
45
|
+
proj_path = output_dir + "/" + proj_name + "/" + proj_name + ".xcodeproj"
|
46
|
+
# 创建工程文件,并保存
|
47
|
+
Xcodeproj::Project.new(proj_path).save
|
48
|
+
# 打开创建的文件
|
49
|
+
project = Xcodeproj::Project.open(proj_path)
|
50
|
+
# 创建@target,主要的参数 type: application :dynamic_library framework :static_library
|
51
|
+
# name:@target名称
|
52
|
+
# platform:平台 :ios或者:osx
|
53
|
+
@target = project.new_target(:application, proj_name, :ios)
|
54
|
+
|
55
|
+
# 创建一个分组,名称为proj_name,对应的路径为./proj_name
|
56
|
+
group = project.new_group(proj_name)
|
57
|
+
# 给分组添加文件引用
|
58
|
+
group.new_reference("./" + proj_name + "/AppDelegate.h")
|
59
|
+
@target.add_file_references(
|
60
|
+
[group.new_reference("./" + proj_name + "/AppDelegate.m")]
|
61
|
+
);
|
62
|
+
group.new_reference("./" + proj_name + "/ViewController.h")
|
63
|
+
@target.add_file_references(
|
64
|
+
[group.new_reference("./" + proj_name + "/ViewController.m")]
|
65
|
+
);
|
66
|
+
|
67
|
+
# 在分组下创建一个名字为Supporting Files的子分组,并给该子分组添加main和info.plist文件引用
|
68
|
+
supportGroup = group.new_group("Supporting Files")
|
69
|
+
supportGroup.new_reference("./" + proj_name + "/Info.plist")
|
70
|
+
@target.add_file_references(
|
71
|
+
[supportGroup.new_reference("./" + proj_name + "/main.m")]
|
72
|
+
);
|
73
|
+
@target.add_resources(
|
74
|
+
[supportGroup.new_reference("./" + proj_name + "/Base.lproj/LaunchScreen.storyboard"),
|
75
|
+
supportGroup.new_reference("./" + proj_name + "/Base.lproj/Main.storyboard"),
|
76
|
+
supportGroup.new_reference("./" + proj_name + "/Assets.xcassets")]
|
77
|
+
);
|
78
|
+
|
79
|
+
# 添加@target配置信息
|
80
|
+
@target.build_configuration_list.set_setting("INFOPLIST_FILE", "$(SRCROOT)/" + proj_name + "/Info.plist")
|
81
|
+
@target.build_configuration_list.set_setting("PRODUCT_BUNDLE_IDENTIFIER", configs["bundle_identifier"])
|
82
|
+
@target.build_configuration_list.set_setting("IPHONEOS_DEPLOYMENT_TARGET", configs["deployment_target"])
|
83
|
+
|
84
|
+
# 添加 EMM_Pods 文件夹到项目中
|
85
|
+
@libs_dir = output_dir + "/" + proj_name + "/" + emm_pods_name
|
86
|
+
@emm_pods_name = emm_pods_name
|
87
|
+
|
88
|
+
traverse(File.dirname(@libs_dir), File.basename(@libs_dir), project.main_group)
|
89
|
+
|
90
|
+
@target.build_configuration_list["Debug"].base_configuration_reference = project.reference_for_path(@libs_dir + "/EMM_Debug.xcconfig")
|
91
|
+
@target.build_configuration_list["Release"].base_configuration_reference = project.reference_for_path(@libs_dir + "/EMM_Release.xcconfig")
|
92
|
+
|
93
|
+
# 保存
|
94
|
+
project.save
|
95
|
+
end
|
96
|
+
end
|
metadata
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: emm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- chenqmg
|
8
8
|
autorequire:
|
9
|
-
bindir:
|
9
|
+
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
date: 2016-06-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
@@ -27,21 +27,17 @@ dependencies:
|
|
27
27
|
description:
|
28
28
|
email:
|
29
29
|
- chenqmg@yonyou.com
|
30
|
-
executables:
|
30
|
+
executables:
|
31
|
+
- emm
|
31
32
|
extensions: []
|
32
33
|
extra_rdoc_files: []
|
33
34
|
files:
|
34
|
-
- ".gitignore"
|
35
|
-
- ".travis.yml"
|
36
|
-
- CODE_OF_CONDUCT.md
|
37
|
-
- Gemfile
|
38
35
|
- LICENSE.txt
|
39
36
|
- README.md
|
40
|
-
-
|
41
|
-
- bin/console
|
42
|
-
- bin/setup
|
43
|
-
- emm.gemspec
|
37
|
+
- bin/emm
|
44
38
|
- lib/emm.rb
|
39
|
+
- lib/emm/files.rb
|
40
|
+
- lib/emm/proj.rb
|
45
41
|
- lib/emm/version.rb
|
46
42
|
homepage: http://rubygems.org/gems/emm
|
47
43
|
licenses:
|
data/.gitignore
DELETED
data/.travis.yml
DELETED
data/CODE_OF_CONDUCT.md
DELETED
@@ -1,49 +0,0 @@
|
|
1
|
-
# Contributor Code of Conduct
|
2
|
-
|
3
|
-
As contributors and maintainers of this project, and in the interest of
|
4
|
-
fostering an open and welcoming community, we pledge to respect all people who
|
5
|
-
contribute through reporting issues, posting feature requests, updating
|
6
|
-
documentation, submitting pull requests or patches, and other activities.
|
7
|
-
|
8
|
-
We are committed to making participation in this project a harassment-free
|
9
|
-
experience for everyone, regardless of level of experience, gender, gender
|
10
|
-
identity and expression, sexual orientation, disability, personal appearance,
|
11
|
-
body size, race, ethnicity, age, religion, or nationality.
|
12
|
-
|
13
|
-
Examples of unacceptable behavior by participants include:
|
14
|
-
|
15
|
-
* The use of sexualized language or imagery
|
16
|
-
* Personal attacks
|
17
|
-
* Trolling or insulting/derogatory comments
|
18
|
-
* Public or private harassment
|
19
|
-
* Publishing other's private information, such as physical or electronic
|
20
|
-
addresses, without explicit permission
|
21
|
-
* Other unethical or unprofessional conduct
|
22
|
-
|
23
|
-
Project maintainers have the right and responsibility to remove, edit, or
|
24
|
-
reject comments, commits, code, wiki edits, issues, and other contributions
|
25
|
-
that are not aligned to this Code of Conduct, or to ban temporarily or
|
26
|
-
permanently any contributor for other behaviors that they deem inappropriate,
|
27
|
-
threatening, offensive, or harmful.
|
28
|
-
|
29
|
-
By adopting this Code of Conduct, project maintainers commit themselves to
|
30
|
-
fairly and consistently applying these principles to every aspect of managing
|
31
|
-
this project. Project maintainers who do not follow or enforce the Code of
|
32
|
-
Conduct may be permanently removed from the project team.
|
33
|
-
|
34
|
-
This code of conduct applies both within project spaces and in public spaces
|
35
|
-
when an individual is representing the project or its community.
|
36
|
-
|
37
|
-
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
38
|
-
reported by contacting a project maintainer at chenqmg@yonyou.com. All
|
39
|
-
complaints will be reviewed and investigated and will result in a response that
|
40
|
-
is deemed necessary and appropriate to the circumstances. Maintainers are
|
41
|
-
obligated to maintain confidentiality with regard to the reporter of an
|
42
|
-
incident.
|
43
|
-
|
44
|
-
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
45
|
-
version 1.3.0, available at
|
46
|
-
[http://contributor-covenant.org/version/1/3/0/][version]
|
47
|
-
|
48
|
-
[homepage]: http://contributor-covenant.org
|
49
|
-
[version]: http://contributor-covenant.org/version/1/3/0/
|
data/Gemfile
DELETED
data/Rakefile
DELETED
data/bin/console
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require "bundler/setup"
|
4
|
-
require "emm"
|
5
|
-
|
6
|
-
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
-
# with your gem easier. You can also use a different console, if you like.
|
8
|
-
|
9
|
-
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
-
# require "pry"
|
11
|
-
# Pry.start
|
12
|
-
|
13
|
-
require "irb"
|
14
|
-
IRB.start
|
data/bin/setup
DELETED
data/emm.gemspec
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
lib = File.expand_path('../lib', __FILE__)
|
3
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require 'emm/version'
|
5
|
-
|
6
|
-
Gem::Specification.new do |spec|
|
7
|
-
spec.name = "emm"
|
8
|
-
spec.version = "0.0.2"
|
9
|
-
spec.authors = ["chenqmg"]
|
10
|
-
spec.email = ["chenqmg@yonyou.com"]
|
11
|
-
spec.summary = "EMM 移动开发平台自动构建工具"
|
12
|
-
spec.homepage = "http://rubygems.org/gems/emm"
|
13
|
-
spec.license = "MIT"
|
14
|
-
|
15
|
-
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
16
|
-
spec.bindir = "exe"
|
17
|
-
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
18
|
-
spec.require_paths = ["lib"]
|
19
|
-
|
20
|
-
spec.add_development_dependency "xcodeproj", "~> 1.1"
|
21
|
-
end
|