xcmake 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/.travis.yml +5 -0
- data/Gemfile +5 -0
- data/Gemfile.lock +35 -0
- data/LICENSE.txt +21 -0
- data/README.md +27 -0
- data/Rakefile +31 -0
- data/bin/setup +10 -0
- data/bin/xcmake +5 -0
- data/lib/xcmake.rb +7 -0
- data/lib/xcmake/cli.rb +101 -0
- data/lib/xcmake/generator.rb +150 -0
- data/lib/xcmake/helpers/xcodeproj_helper.rb +24 -0
- data/lib/xcmake/logger.rb +36 -0
- data/lib/xcmake/source_builder/plist_builder.rb +16 -0
- data/lib/xcmake/source_builder/swift_builder.rb +19 -0
- data/lib/xcmake/version.rb +3 -0
- data/templates/default.plist.erb +26 -0
- data/templates/default.swift.erb +13 -0
- data/xcmake.gemspec +28 -0
- metadata +122 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 2961706110bfe1fab8a879beffd05f50aaadd42ad6ba83fc761400abd3c930cc
|
4
|
+
data.tar.gz: ee92a8f0cbbe81798e2d922db01bee9cb209213a2737d0d264115111ffe24860
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 11ddb88f9d19952058419e8a35fea38e05e351a9d17e0aec54edebf59d3ecca6998e8718283ff3b84c2eb3fe29cf752903e34f40ed93f2e07922dd7b17e74a3e
|
7
|
+
data.tar.gz: 9c3bed0e355f8163563dd569fdc5993151249804eb4b0fe52afa3bb08ca934fa98870c2f0a935e29e2d448da83b16a8f444285b9071445aadcccf18b068f2ed8
|
data/.gitignore
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
xcmake (0.1.0)
|
5
|
+
colorize (~> 0.8.1)
|
6
|
+
thor (~> 0.20.0)
|
7
|
+
xcodeproj (~> 1.5.7)
|
8
|
+
|
9
|
+
GEM
|
10
|
+
remote: https://rubygems.org/
|
11
|
+
specs:
|
12
|
+
CFPropertyList (3.0.0)
|
13
|
+
atomos (0.1.2)
|
14
|
+
claide (1.0.2)
|
15
|
+
colored2 (3.1.2)
|
16
|
+
colorize (0.8.1)
|
17
|
+
minitest (5.11.3)
|
18
|
+
nanaimo (0.2.5)
|
19
|
+
thor (0.20.0)
|
20
|
+
xcodeproj (1.5.7)
|
21
|
+
CFPropertyList (>= 2.3.3, < 4.0)
|
22
|
+
atomos (~> 0.1.2)
|
23
|
+
claide (>= 1.0.2, < 2.0)
|
24
|
+
colored2 (~> 3.1)
|
25
|
+
nanaimo (~> 0.2.4)
|
26
|
+
|
27
|
+
PLATFORMS
|
28
|
+
ruby
|
29
|
+
|
30
|
+
DEPENDENCIES
|
31
|
+
minitest (~> 5.0)
|
32
|
+
xcmake!
|
33
|
+
|
34
|
+
BUNDLED WITH
|
35
|
+
1.16.1
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2018 kenta.motoyanagi
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# Xcmake
|
2
|
+
|
3
|
+
Xcode resource genetator for command line.
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
gem 'xcmake'
|
11
|
+
```
|
12
|
+
|
13
|
+
And then execute:
|
14
|
+
|
15
|
+
$ bundle
|
16
|
+
|
17
|
+
Or install it yourself as:
|
18
|
+
|
19
|
+
$ gem install xcmake
|
20
|
+
|
21
|
+
## Usage
|
22
|
+
|
23
|
+
TODO
|
24
|
+
|
25
|
+
## License
|
26
|
+
|
27
|
+
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
data/Rakefile
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
require "fileutils"
|
2
|
+
require "bundler/gem_tasks"
|
3
|
+
require "rake/testtask"
|
4
|
+
|
5
|
+
Rake::TestTask.new(:test) do |t|
|
6
|
+
t.libs << "test"
|
7
|
+
t.libs << "lib"
|
8
|
+
t.test_files = FileList["test/**/*_test.rb"]
|
9
|
+
end
|
10
|
+
|
11
|
+
task :default => :test
|
12
|
+
|
13
|
+
namespace :project do
|
14
|
+
desc "Rebuilding Xcode test project"
|
15
|
+
task rebuild: %w(remove create)
|
16
|
+
|
17
|
+
desc "Create Xcode test project"
|
18
|
+
task :create do
|
19
|
+
Dir.chdir("test/test_project") do
|
20
|
+
Dir.mkdir("TestProject") unless Dir.exist?("TestProject")
|
21
|
+
exec("xcodegen")
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
desc "Remove Xcode test project"
|
26
|
+
task :remove do
|
27
|
+
Dir.glob("test/test_project/*") do |path|
|
28
|
+
FileUtils.rm_rf(path) unless File.file?(path)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/bin/setup
ADDED
data/bin/xcmake
ADDED
data/lib/xcmake.rb
ADDED
data/lib/xcmake/cli.rb
ADDED
@@ -0,0 +1,101 @@
|
|
1
|
+
require "yaml"
|
2
|
+
require "thor"
|
3
|
+
require "xcmake/logger"
|
4
|
+
|
5
|
+
module Xcmake
|
6
|
+
class Cli < Thor
|
7
|
+
include Xcmake::Logger
|
8
|
+
|
9
|
+
desc "target [NAME]", "Generate new target."
|
10
|
+
method_option :project, aliases: "-p", desc: "Project path. If unspecified, use `*.xcodeproj` in the current directory."
|
11
|
+
method_option :type, aliases: "-t", desc: "Target type. Default is 'framework'."
|
12
|
+
method_option :delete, aliases: "-d", desc: "Delete target."
|
13
|
+
def target(name)
|
14
|
+
project_path = options[:project] || default_project!
|
15
|
+
|
16
|
+
g = Xcmake::Generator.new(project_path)
|
17
|
+
|
18
|
+
if options[:delete]
|
19
|
+
g.delete_target(name)
|
20
|
+
else
|
21
|
+
type = options[:type] || "framework"
|
22
|
+
g.create_target(name, type.to_sym)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
desc "group [NAME]", "Generate new group."
|
27
|
+
method_option :project, aliases: "-p", desc: "Project path. If unspecified, use `*.xcodeproj` in the current directory."
|
28
|
+
method_option :delete, aliases: "-d", desc: "Delete group."
|
29
|
+
def group(name)
|
30
|
+
project_path = options[:project] || default_project!
|
31
|
+
|
32
|
+
g = Xcmake::Generator.new(project_path)
|
33
|
+
|
34
|
+
if options[:delete]
|
35
|
+
g.delete_group(name)
|
36
|
+
else
|
37
|
+
g.create_group(name)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
desc "source [NAME]", "Generate source file."
|
42
|
+
method_option :project, aliases: "-p", desc: "Project path. If unspecified, use `*.xcodeproj` in the current directory."
|
43
|
+
method_option :delete, aliases: "-d", desc: "Delete source file."
|
44
|
+
def source(name)
|
45
|
+
project_path = options[:project] || default_project!
|
46
|
+
|
47
|
+
g = Xcmake::Generator.new(project_path)
|
48
|
+
|
49
|
+
if options[:delete]
|
50
|
+
else
|
51
|
+
g.create_source(name)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
desc "scaffold [NAME]", "Generate scaffold files."
|
56
|
+
method_option :project, aliases: "-p", desc: "Project path. If unspecified, use `*.xcodeproj` in the current directory."
|
57
|
+
def scaffold(name)
|
58
|
+
project_path = options[:project] || default_project!
|
59
|
+
|
60
|
+
g = Xcmake::Generator.new(project_path)
|
61
|
+
|
62
|
+
structure = load_scaffold_structure(project_path)
|
63
|
+
|
64
|
+
structure["sources"].each do |s|
|
65
|
+
if s["target"]["name"] == s["group"]
|
66
|
+
group_path = s["target"]["name"]
|
67
|
+
elsif s["group"].to_s.empty?
|
68
|
+
group_path = s["target"]["name"]
|
69
|
+
else
|
70
|
+
group_path = "#{s["target"]["name"]}/#{s["group"]}"
|
71
|
+
end
|
72
|
+
|
73
|
+
g.create_target(s["target"]["name"], s["target"]["type"])
|
74
|
+
g.create_group(group_path) unless s["group"].to_s.empty?
|
75
|
+
g.create_source("#{group_path}/#{s['prefix']}#{name}#{s['suffix']}", nil)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
private
|
80
|
+
|
81
|
+
def default_project!
|
82
|
+
project_paths = Dir.glob("#{Dir.pwd}/*.xcodeproj")
|
83
|
+
|
84
|
+
if project_paths.empty?
|
85
|
+
log_error!("xcodeproj not found. please give option `-p [project path]` and try it.")
|
86
|
+
end
|
87
|
+
|
88
|
+
if project_paths.size > 1
|
89
|
+
log_error!("found many xcodeproj. please give option `-p [project path]` and try it.")
|
90
|
+
end
|
91
|
+
|
92
|
+
project_paths.first
|
93
|
+
end
|
94
|
+
|
95
|
+
def load_scaffold_structure(project_path, scaffold_config_file="scaffold.yml")
|
96
|
+
scaffold_path = File.join(project_path, "..", scaffold_config_file)
|
97
|
+
yaml_data = File.read(scaffold_path)
|
98
|
+
YAML.load(yaml_data)
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
@@ -0,0 +1,150 @@
|
|
1
|
+
require "fileutils"
|
2
|
+
require "pathname"
|
3
|
+
require "xcodeproj"
|
4
|
+
|
5
|
+
module Xcmake
|
6
|
+
class Generator
|
7
|
+
include Xcmake::Logger
|
8
|
+
include Xcmake::XcodeprojHelper
|
9
|
+
|
10
|
+
def initialize(project_path)
|
11
|
+
@project = Xcodeproj::Project.open(project_path)
|
12
|
+
end
|
13
|
+
|
14
|
+
def create_target(name, type, platform=:ios, lang=:swift)
|
15
|
+
find_target_with_path(name).tap do |target|
|
16
|
+
unless target.nil?
|
17
|
+
log_info("Target\t'#{name}' already exists.")
|
18
|
+
return
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
target = @project.new_target(type, name, platform, nil, nil, lang)
|
23
|
+
|
24
|
+
create_group(name)
|
25
|
+
create_source(
|
26
|
+
File.join(name, "Info.plist"),
|
27
|
+
File.expand_path("../../templates/default.plist.erb", __dir__)
|
28
|
+
)
|
29
|
+
|
30
|
+
@project.main_group.find_subpath(name).tap do |group|
|
31
|
+
target.add_file_references(group.files)
|
32
|
+
target.build_configuration_list.set_setting("INFOPLIST_FILE", "$(SRCROOT)/#{name}/Info.plist")
|
33
|
+
end
|
34
|
+
|
35
|
+
log_info("Target\t'#{name}' created!!")
|
36
|
+
@project.save
|
37
|
+
end
|
38
|
+
|
39
|
+
def delete_target(name)
|
40
|
+
log_info("`delete_target` now working...")
|
41
|
+
end
|
42
|
+
|
43
|
+
def create_group(name)
|
44
|
+
group_dir_path = File.join(project_root, name)
|
45
|
+
|
46
|
+
if group_paths.map(&:to_s).include?(group_dir_path)
|
47
|
+
log_info("Group\t'#{name}' already exists.")
|
48
|
+
return
|
49
|
+
end
|
50
|
+
|
51
|
+
groups = name.split("/")
|
52
|
+
base_path = File.join(project_root, @project.main_group.path.to_s)
|
53
|
+
create_group_recursive(groups, @project.main_group, base_path)
|
54
|
+
|
55
|
+
FileUtils.mkdir_p(group_dir_path)
|
56
|
+
|
57
|
+
log_info("Group\t'#{name}' created!!")
|
58
|
+
@project.save
|
59
|
+
end
|
60
|
+
|
61
|
+
def delete_group(name)
|
62
|
+
delete_group_recursive(name)
|
63
|
+
@project.save
|
64
|
+
end
|
65
|
+
|
66
|
+
def create_source(name, template=nil)
|
67
|
+
dir_path = File.dirname(name)
|
68
|
+
file_name = File.basename(name)
|
69
|
+
|
70
|
+
group = find_group_with_path(dir_path).tap do |r|
|
71
|
+
if r.nil?
|
72
|
+
log_error!("group path not found. please set NAME to [GROUP_PATH]/[FILE_NAME] and try it!")
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
File.join(group.real_path, file_name).tap do |file_path|
|
77
|
+
if File.exist?(file_path)
|
78
|
+
log_info("Source\t'#{name}' already exists.")
|
79
|
+
return
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
file_ref = group.new_file(file_name)
|
84
|
+
|
85
|
+
find_target_with_path(dir_path).tap { |r| r&.add_file_references([file_ref]) }
|
86
|
+
|
87
|
+
file_path = file_ref.real_path
|
88
|
+
file_ext = File.extname(file_path)
|
89
|
+
|
90
|
+
data =
|
91
|
+
case file_ext
|
92
|
+
when ".swift" then
|
93
|
+
params = parameter_for_swift(file_name, dir_path.split("/").first)
|
94
|
+
SwiftBuilder.new(template).build(params)
|
95
|
+
when ".plist" then
|
96
|
+
params = parameter_for_plist(:framework)
|
97
|
+
PlistBuilder.new(template).build(params)
|
98
|
+
else
|
99
|
+
log_error!("File type `#{file_ext}` is not supported.")
|
100
|
+
end
|
101
|
+
|
102
|
+
File.write(file_path, data)
|
103
|
+
|
104
|
+
log_info("Source\t'#{name}' created!!")
|
105
|
+
@project.save
|
106
|
+
end
|
107
|
+
|
108
|
+
private
|
109
|
+
|
110
|
+
def create_group_recursive(groups, parent_group, path)
|
111
|
+
new_group_name = groups.shift
|
112
|
+
new_group_path = File.join(path, new_group_name)
|
113
|
+
|
114
|
+
next_group = parent_group.children.find { |g| g.path == new_group_name }
|
115
|
+
|
116
|
+
if next_group.nil?
|
117
|
+
next_group = parent_group.new_group(new_group_name, new_group_path)
|
118
|
+
end
|
119
|
+
|
120
|
+
if !groups.empty?
|
121
|
+
create_group_recursive(groups, next_group, new_group_path)
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
def delete_group_recursive(path, main_target=true)
|
126
|
+
return if is_target_path?(path)
|
127
|
+
|
128
|
+
target_group = @project.main_group.find_subpath(path)
|
129
|
+
|
130
|
+
return if target_group.nil?
|
131
|
+
|
132
|
+
if main_target || target_group.children.empty?
|
133
|
+
FileUtils.rm_rf(target_group.real_path)
|
134
|
+
target_group.parent.clear
|
135
|
+
log_info("Removed group: #{path}")
|
136
|
+
end
|
137
|
+
|
138
|
+
next_path = Pathname.new(path).dirname.to_s
|
139
|
+
delete_group_recursive(next_path, false)
|
140
|
+
end
|
141
|
+
|
142
|
+
def parameter_for_swift(name, target, organaizer=nil)
|
143
|
+
{ name: name, target: target, organizer: organaizer }
|
144
|
+
end
|
145
|
+
|
146
|
+
def parameter_for_plist(type)
|
147
|
+
{ type: type }
|
148
|
+
end
|
149
|
+
end
|
150
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Xcmake
|
2
|
+
module XcodeprojHelper
|
3
|
+
def project_root
|
4
|
+
@project.path.dirname.to_s
|
5
|
+
end
|
6
|
+
|
7
|
+
def group_paths
|
8
|
+
@project.main_group.recursive_children_groups.map(&:real_path).uniq
|
9
|
+
end
|
10
|
+
|
11
|
+
def is_target_path?(path)
|
12
|
+
@project.targets.map(&:name).include?(path)
|
13
|
+
end
|
14
|
+
|
15
|
+
def find_group_with_path(path)
|
16
|
+
@project.main_group.find_subpath(path)
|
17
|
+
end
|
18
|
+
|
19
|
+
def find_target_with_path(path)
|
20
|
+
target_name = path.split("/").first
|
21
|
+
@project.targets.find { |t| t.name == target_name }
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require "logger"
|
2
|
+
require "colorize"
|
3
|
+
|
4
|
+
module Xcmake::Logger
|
5
|
+
def log_info(text)
|
6
|
+
stdout_logger.info(text.green)
|
7
|
+
end
|
8
|
+
|
9
|
+
def log_error(text)
|
10
|
+
stdout_logger.error(text.red)
|
11
|
+
end
|
12
|
+
|
13
|
+
def log_error!(text)
|
14
|
+
log_error(text)
|
15
|
+
exit 1
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def stdout_logger
|
21
|
+
create_logger(STDOUT)
|
22
|
+
end
|
23
|
+
|
24
|
+
def stderr_logger
|
25
|
+
create_logger(STDERR)
|
26
|
+
end
|
27
|
+
|
28
|
+
def create_logger(output)
|
29
|
+
logger = Logger.new(output)
|
30
|
+
logger.progname = "Xcmake"
|
31
|
+
logger.formatter = proc { |severity, datetime, progname, message|
|
32
|
+
"#{progname} : #{message}\n"
|
33
|
+
}
|
34
|
+
logger
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Xcmake
|
2
|
+
class PlistBuilder
|
3
|
+
include Xcmake::Logger
|
4
|
+
|
5
|
+
def initialize(template_path=nil)
|
6
|
+
template_path = template_path || File.expand_path("../../../templates/default.plist.erb", __dir__)
|
7
|
+
log_error!("Template not found: #{template_path}") unless File.exist?(template_path)
|
8
|
+
@template = File.read(template_path)
|
9
|
+
end
|
10
|
+
|
11
|
+
def build(params={})
|
12
|
+
params = params
|
13
|
+
ERB.new(@template, nil, "-").result(binding)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require "erb"
|
2
|
+
require "date"
|
3
|
+
|
4
|
+
module Xcmake
|
5
|
+
class SwiftBuilder
|
6
|
+
include Xcmake::Logger
|
7
|
+
|
8
|
+
def initialize(template_path=nil)
|
9
|
+
template_path = template_path || File.expand_path("../../../templates/default.swift.erb", __dir__)
|
10
|
+
log_error!("Template not found: #{template_path}") unless File.exist?(template_path)
|
11
|
+
@template = File.read(template_path)
|
12
|
+
end
|
13
|
+
|
14
|
+
def build(params={})
|
15
|
+
params = params
|
16
|
+
ERB.new(@template, nil, "-").result(binding)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
3
|
+
<plist version="1.0">
|
4
|
+
<dict>
|
5
|
+
<key>CFBundleDevelopmentRegion</key>
|
6
|
+
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
7
|
+
<key>CFBundleExecutable</key>
|
8
|
+
<string>$(EXECUTABLE_NAME)</string>
|
9
|
+
<key>CFBundleIdentifier</key>
|
10
|
+
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
11
|
+
<key>CFBundleInfoDictionaryVersion</key>
|
12
|
+
<string>6.0</string>
|
13
|
+
<key>CFBundleName</key>
|
14
|
+
<string>$(PRODUCT_NAME)</string>
|
15
|
+
<key>CFBundlePackageType</key>
|
16
|
+
<% if params[:type] == :framework -%>
|
17
|
+
<string>FMWK</string>
|
18
|
+
<key>CFBundleShortVersionString</key>
|
19
|
+
<% end -%>
|
20
|
+
<string>1.0</string>
|
21
|
+
<key>CFBundleVersion</key>
|
22
|
+
<string>$(CURRENT_PROJECT_VERSION)</string>
|
23
|
+
<key>NSPrincipalClass</key>
|
24
|
+
<string></string>
|
25
|
+
</dict>
|
26
|
+
</plist>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
//
|
2
|
+
// <%= params[:name] %>.swift
|
3
|
+
<% if !params[:target].nil? -%>
|
4
|
+
// <%= params[:target] %>
|
5
|
+
<% end; -%>
|
6
|
+
//
|
7
|
+
// Created by <%= `whoami`.chomp %> on <%= Date.today.strftime("%Y/%m/%d") %>.
|
8
|
+
<% if !params[:organizer].nil? -%>
|
9
|
+
// Copyright © <%= Date.today.strftime("%Y") %> <%= params[:organizer] %>. All rights reserved.
|
10
|
+
<% end -%>
|
11
|
+
//
|
12
|
+
|
13
|
+
import Foundation
|
data/xcmake.gemspec
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
lib = File.expand_path("../lib", __FILE__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
+
require "xcmake/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = "xcmake"
|
7
|
+
spec.version = Xcmake::VERSION
|
8
|
+
spec.authors = ["k-motoyan"]
|
9
|
+
spec.email = ["k.motoyan888@gmail.com"]
|
10
|
+
|
11
|
+
spec.summary = "Xcode resource genetator for command line."
|
12
|
+
spec.description = ""
|
13
|
+
spec.homepage = "https://github.com/k-motoyan/xcmake"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
17
|
+
f.match(%r{^(test|spec|features)/})
|
18
|
+
end
|
19
|
+
spec.bindir = "bin"
|
20
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
21
|
+
spec.require_paths = ["lib"]
|
22
|
+
|
23
|
+
spec.add_dependency "xcodeproj", "~> 1.5.7"
|
24
|
+
spec.add_dependency "thor", "~> 0.20.0"
|
25
|
+
spec.add_dependency "colorize", "~> 0.8.1"
|
26
|
+
|
27
|
+
spec.add_development_dependency "minitest", "~> 5.0"
|
28
|
+
end
|
metadata
ADDED
@@ -0,0 +1,122 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: xcmake
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- k-motoyan
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2018-04-09 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: xcodeproj
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.5.7
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.5.7
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: thor
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.20.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.20.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: colorize
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.8.1
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.8.1
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: minitest
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '5.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '5.0'
|
69
|
+
description: ''
|
70
|
+
email:
|
71
|
+
- k.motoyan888@gmail.com
|
72
|
+
executables:
|
73
|
+
- setup
|
74
|
+
- xcmake
|
75
|
+
extensions: []
|
76
|
+
extra_rdoc_files: []
|
77
|
+
files:
|
78
|
+
- ".gitignore"
|
79
|
+
- ".travis.yml"
|
80
|
+
- Gemfile
|
81
|
+
- Gemfile.lock
|
82
|
+
- LICENSE.txt
|
83
|
+
- README.md
|
84
|
+
- Rakefile
|
85
|
+
- bin/setup
|
86
|
+
- bin/xcmake
|
87
|
+
- lib/xcmake.rb
|
88
|
+
- lib/xcmake/cli.rb
|
89
|
+
- lib/xcmake/generator.rb
|
90
|
+
- lib/xcmake/helpers/xcodeproj_helper.rb
|
91
|
+
- lib/xcmake/logger.rb
|
92
|
+
- lib/xcmake/source_builder/plist_builder.rb
|
93
|
+
- lib/xcmake/source_builder/swift_builder.rb
|
94
|
+
- lib/xcmake/version.rb
|
95
|
+
- templates/default.plist.erb
|
96
|
+
- templates/default.swift.erb
|
97
|
+
- xcmake.gemspec
|
98
|
+
homepage: https://github.com/k-motoyan/xcmake
|
99
|
+
licenses:
|
100
|
+
- MIT
|
101
|
+
metadata: {}
|
102
|
+
post_install_message:
|
103
|
+
rdoc_options: []
|
104
|
+
require_paths:
|
105
|
+
- lib
|
106
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
112
|
+
requirements:
|
113
|
+
- - ">="
|
114
|
+
- !ruby/object:Gem::Version
|
115
|
+
version: '0'
|
116
|
+
requirements: []
|
117
|
+
rubyforge_project:
|
118
|
+
rubygems_version: 2.7.6
|
119
|
+
signing_key:
|
120
|
+
specification_version: 4
|
121
|
+
summary: Xcode resource genetator for command line.
|
122
|
+
test_files: []
|