calatrava 0.6.3 → 0.6.4
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.
- data/.gitignore +1 -1
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +4 -0
- data/CHANGES.markdown +67 -0
- data/Gemfile +1 -1
- data/Gemfile.lock +100 -0
- data/README.md +39 -3
- data/Rakefile +4 -0
- data/Vagrantfile +106 -0
- data/calatrava.gemspec +9 -4
- data/features/cli.feature +9 -0
- data/features/project.feature +15 -3
- data/features/sample_app.feature +5 -1
- data/features/support/calatrava_app.rb +1 -1
- data/features/support/env.rb +1 -1
- data/lib/calatrava/apache.rb +10 -31
- data/lib/calatrava/app.rb +7 -3
- data/lib/calatrava/app_builder.rb +11 -12
- data/lib/calatrava/configuration.rb +23 -6
- data/lib/calatrava/droid_app.rb +11 -2
- data/lib/calatrava/ios_app.rb +8 -1
- data/lib/calatrava/manifest.rb +0 -20
- data/lib/calatrava/mobile_web_app.rb +13 -9
- data/lib/calatrava/output_file.rb +53 -0
- data/lib/calatrava/platform.rb +12 -0
- data/lib/calatrava/project.rb +31 -3
- data/lib/calatrava/project_script.rb +15 -6
- data/lib/calatrava/tasks/assets.rb +2 -1
- data/lib/calatrava/tasks/bootstrap.rb +2 -3
- data/lib/calatrava/tasks/rake.rb +24 -0
- data/lib/calatrava/tasks.rb +1 -9
- data/lib/calatrava/templates/.ruby-gemset.calatrava +1 -0
- data/lib/calatrava/templates/.ruby-version +1 -0
- data/lib/calatrava/templates/droid/app/bridge.coffee +1 -1
- data/lib/calatrava/templates/droid/calatrava/CALATRAVA_TMPL/AndroidManifest.xml.calatrava +3 -4
- data/lib/calatrava/templates/droid/calatrava/CALATRAVA_TMPL/build.xml.calatrava +0 -4
- data/lib/calatrava/templates/droid/calatrava/ant/calatrava.xml +7 -3
- data/lib/calatrava/templates/droid/calatrava/{ivy.xml → ivy/ivy.xml} +0 -0
- data/lib/calatrava/templates/droid/calatrava/{ivysettings.xml → ivy/ivysettings.xml} +0 -0
- data/lib/calatrava/templates/droid/calatrava/src/com/CALATRAVA_TMPL/Bootstrap.java.calatrava +21 -0
- data/lib/calatrava/templates/droid/calatrava/src/com/CALATRAVA_TMPL/Title.java.calatrava +8 -15
- data/lib/calatrava/templates/droid/calatrava/src/com/calatrava/bridge/CalatravaApplication.java +87 -0
- data/lib/calatrava/templates/droid/calatrava/src/com/calatrava/bridge/PageRegistry.java +12 -9
- data/lib/calatrava/templates/droid/calatrava/src/com/calatrava/bridge/PluginRegistry.java +11 -5
- data/lib/calatrava/templates/droid/calatrava/src/com/calatrava/bridge/RegisteredActivity.java +6 -15
- data/lib/calatrava/templates/droid/calatrava/src/com/calatrava/bridge/RegisteredPlugin.java +1 -1
- data/lib/calatrava/templates/droid/calatrava/src/com/calatrava/bridge/RhinoService.java +27 -41
- data/lib/calatrava/templates/droid/calatrava/src/com/calatrava/shell/WebViewActivity.java +7 -8
- data/lib/calatrava/templates/ios/Podfile.calatrava +1 -1
- data/lib/calatrava/templates/ios/src/AppDelegate.h +6 -1
- data/lib/calatrava/templates/ios/src/AppDelegate.m +20 -0
- data/lib/calatrava/templates/kernel/app/calatrava.coffee +13 -5
- data/lib/calatrava/templates/kernel/plugins/alert.coffee +4 -1
- data/lib/calatrava/templates/kernel/spec/converter/controller.converter.spec.coffee +1 -1
- data/lib/calatrava/templates/kernel/spec/stubView.coffee +17 -3
- data/lib/calatrava/templates/package.json +0 -1
- data/lib/calatrava/templates/shell/pages/converter/page.conversionForm.coffee +7 -2
- data/lib/calatrava/templates/web/app/source/bridge.coffee +7 -7
- data/lib/calatrava/templates/web/app/source/init.coffee +1 -1
- data/lib/calatrava/version.rb +1 -1
- data/lib/calatrava.rb +4 -0
- data/spec/app_builder_spec.rb +2 -2
- data/spec/mobile_web_app_spec.rb +1 -1
- data/spec/output_file_spec.rb +33 -0
- metadata +104 -35
- data/.rvmrc +0 -2
- data/lib/calatrava/templates/.rvmrc.calatrava +0 -2
- data/lib/calatrava/templates/droid/calatrava/src/com/calatrava/bridge/Launcher.java +0 -86
- data/lib/calatrava/templates/ios/res/xibs/ProgressViewController.xib +0 -334
- data/lib/calatrava/templates/ios/res/xibs/WebViewController.xib +0 -173
- data/lib/calatrava/templates/web/deploy/instance.sh +0 -10
@@ -3,8 +3,8 @@ module Calatrava
|
|
3
3
|
class AppBuilder
|
4
4
|
include Rake::DSL
|
5
5
|
|
6
|
-
def initialize(output_dir, manifest)
|
7
|
-
@output_dir, @manifest = output_dir, manifest
|
6
|
+
def initialize(platform, output_dir, manifest)
|
7
|
+
@platform, @output_dir, @manifest = platform, output_dir, manifest
|
8
8
|
end
|
9
9
|
|
10
10
|
def build_dir ; @output_dir ; end
|
@@ -14,7 +14,8 @@ module Calatrava
|
|
14
14
|
def build_styles_dir ; "#{build_dir}/styles" ; end
|
15
15
|
|
16
16
|
def coffee_files
|
17
|
-
|
17
|
+
env_file = OutputFile.new(build_scripts_dir, Calatrava::Project.current.config.path('env.coffee'), ['configure:calatrava_env'])
|
18
|
+
@manifest.coffee_files.collect { |cf| OutputFile.new(build_scripts_dir, cf) } + [env_file]
|
18
19
|
end
|
19
20
|
|
20
21
|
def js_file(cf)
|
@@ -40,25 +41,23 @@ module Calatrava
|
|
40
41
|
|
41
42
|
app_files = haml_files.collect do |hf|
|
42
43
|
file "#{build_html_dir}/#{File.basename(hf, '.haml')}.html" => [build_html_dir, hf] do
|
43
|
-
HamlSupport::compile_hybrid_page hf, build_html_dir, :platform =>
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
app_files += coffee_files.collect do |cf|
|
48
|
-
file js_file(cf) => [build_scripts_dir, cf] do
|
49
|
-
coffee cf, build_scripts_dir
|
44
|
+
HamlSupport::compile_hybrid_page hf, build_html_dir, :platform => @platform
|
50
45
|
end
|
51
46
|
end
|
52
47
|
|
48
|
+
app_files += coffee_files.collect { |cf| cf.to_task }
|
53
49
|
app_files += @manifest.css_tasks(build_styles_dir)
|
54
|
-
app_files << file("#{build_dir}/load_file.txt" => [build_dir,
|
50
|
+
app_files << file("#{build_dir}/load_file.txt" => [build_dir,
|
51
|
+
@manifest.src_file,
|
52
|
+
transient("#{@platform}_coffee", @manifest.kernel_bootstrap)
|
53
|
+
]) do |t|
|
55
54
|
File.open(t.name, "w+") { |f| f.puts load_instructions }
|
56
55
|
end
|
57
56
|
|
58
57
|
task :shared => [build_images_dir, build_scripts_dir] do
|
59
58
|
cp_ne "assets/images/*", build_images_dir
|
60
59
|
cp_ne "assets/lib/*.js", build_scripts_dir
|
61
|
-
cp_ne "
|
60
|
+
cp_ne "#{@platform}/res/js/*.js", build_scripts_dir
|
62
61
|
end
|
63
62
|
|
64
63
|
task :app => [:shared] + app_files
|
@@ -6,10 +6,16 @@ module Calatrava
|
|
6
6
|
include Rake::DSL
|
7
7
|
|
8
8
|
@@extras = []
|
9
|
+
@@env = ENV['CALATRAVA_ENV'] || 'development'
|
10
|
+
|
9
11
|
def self.extra(&configurator)
|
10
12
|
@@extras << configurator
|
11
13
|
end
|
12
14
|
|
15
|
+
def self.env
|
16
|
+
@@env
|
17
|
+
end
|
18
|
+
|
13
19
|
def initialize
|
14
20
|
@runtime = {}
|
15
21
|
end
|
@@ -17,19 +23,30 @@ module Calatrava
|
|
17
23
|
def config_result_dir
|
18
24
|
"config/result"
|
19
25
|
end
|
26
|
+
|
20
27
|
def config_yaml
|
21
28
|
"config/environments.yml"
|
22
29
|
end
|
30
|
+
|
23
31
|
def config_template_dir
|
24
32
|
"config/templates"
|
25
33
|
end
|
34
|
+
|
26
35
|
def templates
|
27
36
|
Rake::FileList["#{config_template_dir}/*.erb"]
|
28
37
|
end
|
29
38
|
|
30
39
|
def config_for(environment)
|
31
40
|
@@extras.each { |e| e.call(self) }
|
32
|
-
@runtime.merge(
|
41
|
+
@runtime.merge(environments_yml[environment])
|
42
|
+
end
|
43
|
+
|
44
|
+
def environment_names
|
45
|
+
environments_yml.keys
|
46
|
+
end
|
47
|
+
|
48
|
+
def environments_yml
|
49
|
+
@environments_yml ||= YAML::load(File.open(config_yaml))
|
33
50
|
end
|
34
51
|
|
35
52
|
def runtime(key, value)
|
@@ -44,16 +61,16 @@ module Calatrava
|
|
44
61
|
end
|
45
62
|
|
46
63
|
def path(file)
|
47
|
-
env
|
48
|
-
puts "CALATRAVA_ENV = '#{env}'"
|
49
|
-
full_path = artifact_path(File.join(env, file))
|
50
|
-
full_path
|
64
|
+
artifact_path(File.join(Configuration.env, file))
|
51
65
|
end
|
52
66
|
|
53
67
|
def install_tasks
|
54
68
|
directory config_result_dir
|
55
69
|
|
56
|
-
|
70
|
+
puts "CALATRAVA_ENV = '#{Configuration.env}'"
|
71
|
+
transient :calatrava_env, Configuration.env
|
72
|
+
|
73
|
+
environment_names.each do |environment|
|
57
74
|
desc "Create config files for #{environment} environment"
|
58
75
|
task environment.to_sym => [:clean, config_result_dir] do
|
59
76
|
configuration = config_for(environment)
|
data/lib/calatrava/droid_app.rb
CHANGED
@@ -5,7 +5,7 @@ module Calatrava
|
|
5
5
|
|
6
6
|
def initialize(path, proj_name, manifest)
|
7
7
|
@path, @proj_name, @manifest = path, proj_name, manifest
|
8
|
-
@app_builder = AppBuilder.new("droid/#{@proj_name}/assets/calatrava", @manifest)
|
8
|
+
@app_builder = AppBuilder.new('droid', "droid/#{@proj_name}/assets/calatrava", @manifest)
|
9
9
|
end
|
10
10
|
|
11
11
|
def install_tasks
|
@@ -15,8 +15,17 @@ module Calatrava
|
|
15
15
|
coffee 'droid/app/bridge.coffee', @app_builder.build_scripts_dir
|
16
16
|
end
|
17
17
|
|
18
|
+
task :resolve => "droid/#{@proj_name}/ivy/ivy.xml" do
|
19
|
+
cd "droid/#{@proj_name}" do
|
20
|
+
sh "ant -f ant/calatrava.xml resolve"
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
desc "Bootstraps the Droid app"
|
25
|
+
task :bootstrap => :resolve
|
26
|
+
|
18
27
|
desc "Builds the Android app"
|
19
|
-
task :build => app_task do
|
28
|
+
task :build => [:resolve, app_task] do
|
20
29
|
cd "droid/#{@proj_name}" do
|
21
30
|
sh "ant clean debug"
|
22
31
|
end
|
data/lib/calatrava/ios_app.rb
CHANGED
@@ -5,7 +5,7 @@ module Calatrava
|
|
5
5
|
|
6
6
|
def initialize(path, manifest)
|
7
7
|
@path, @manifest = path, manifest
|
8
|
-
@app_builder = AppBuilder.new('ios/public', @manifest)
|
8
|
+
@app_builder = AppBuilder.new('ios', 'ios/public', @manifest)
|
9
9
|
end
|
10
10
|
|
11
11
|
def install_tasks
|
@@ -20,6 +20,13 @@ module Calatrava
|
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
|
+
desc "Bootstraps the iOS app"
|
24
|
+
task :bootstrap do
|
25
|
+
cd "ios" do
|
26
|
+
sh "pod install" if Calatrava.platform == :mac
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
23
30
|
desc "Clean ios public directory"
|
24
31
|
task :clean do
|
25
32
|
sh "rm -rf #{@app_builder.build_dir}"
|
data/lib/calatrava/manifest.rb
CHANGED
@@ -15,17 +15,6 @@ module Calatrava
|
|
15
15
|
@feature_list
|
16
16
|
end
|
17
17
|
|
18
|
-
def load_file(target_dir, js_load_path, options)
|
19
|
-
File.open("#{target_dir}/load_file.#{options[:type]}", "w+") do |f|
|
20
|
-
@feature_list.each do |feature|
|
21
|
-
coffee_files(feature, :include_pages => options[:include_pages]).each do |coffee_file|
|
22
|
-
js_src = File.join(js_load_path, File.basename(coffee_file, '.coffee') + ".js")
|
23
|
-
f.puts self.send(options[:type], js_src)
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
18
|
def coffee_files
|
30
19
|
[@shell, @kernel].collect do |src|
|
31
20
|
src.coffee_files + feature_files(src, :coffee)
|
@@ -45,7 +34,6 @@ module Calatrava
|
|
45
34
|
end
|
46
35
|
|
47
36
|
def css_tasks(output_dir)
|
48
|
-
mkdir_p output_dir
|
49
37
|
css_files.collect do |style_file|
|
50
38
|
file "#{output_dir}/#{File.basename(style_file, '.*')}.css" => [output_dir, style_file] do |t|
|
51
39
|
if style_file =~ /\.css$/
|
@@ -60,14 +48,6 @@ module Calatrava
|
|
60
48
|
def feature_files(source, type)
|
61
49
|
source.features.select { |f| @feature_list.include?(f[:name]) }.collect { |f| f[type] }.flatten
|
62
50
|
end
|
63
|
-
|
64
|
-
def haml(js_src)
|
65
|
-
%{%script(type="text/javascript" src="#{js_src}")}
|
66
|
-
end
|
67
|
-
|
68
|
-
def text(js_src)
|
69
|
-
js_src
|
70
|
-
end
|
71
51
|
end
|
72
52
|
|
73
53
|
end
|
@@ -11,6 +11,7 @@ module Calatrava
|
|
11
11
|
def build_dir ; "#{@path}/web/public" ; end
|
12
12
|
def scripts_build_dir ; "#{build_dir}/scripts" ; end
|
13
13
|
def styles_build_dir ; "#{build_dir}/styles" ; end
|
14
|
+
def images_build_dir ; "#{build_dir}/images" ; end
|
14
15
|
|
15
16
|
def coffee_files
|
16
17
|
Dir.chdir @path do
|
@@ -18,7 +19,8 @@ module Calatrava
|
|
18
19
|
core_coffee += @manifest.coffee_files.select { |cf| cf =~ /calatrava.coffee$/ }
|
19
20
|
web_coffee = Dir['web/app/source/*.coffee'] - core_coffee
|
20
21
|
mf_coffee = @manifest.coffee_files.reject { |cf| cf =~ /calatrava.coffee$/ }
|
21
|
-
|
22
|
+
env_file = OutputFile.new(scripts_build_dir, Calatrava::Project.current.config.path('env.coffee'), ['configure:calatrava_env'])
|
23
|
+
(core_coffee + web_coffee + mf_coffee).collect { |cf| OutputFile.new(scripts_build_dir, cf) } + [env_file]
|
22
24
|
end
|
23
25
|
end
|
24
26
|
|
@@ -27,27 +29,29 @@ module Calatrava
|
|
27
29
|
end
|
28
30
|
|
29
31
|
def scripts
|
30
|
-
coffee_files.collect
|
32
|
+
coffee_files.collect do |cf|
|
33
|
+
cf.output_path.gsub("#{build_dir}/", "")
|
34
|
+
end
|
31
35
|
end
|
32
36
|
|
33
37
|
def install_tasks
|
34
38
|
directory build_dir
|
35
39
|
directory scripts_build_dir
|
36
40
|
directory styles_build_dir
|
41
|
+
directory images_build_dir
|
37
42
|
|
38
|
-
app_files = coffee_files.collect
|
39
|
-
file "#{scripts_build_dir}/#{File.basename(cf, '.coffee')}.js" => [scripts_build_dir, cf] do
|
40
|
-
coffee cf, scripts_build_dir
|
41
|
-
end
|
42
|
-
end
|
43
|
+
app_files = coffee_files.collect { |cf| cf.to_task }
|
43
44
|
|
44
|
-
app_files << file("#{build_dir}/index.html" => [@manifest.src_file,
|
45
|
+
app_files << file("#{build_dir}/index.html" => [@manifest.src_file,
|
46
|
+
"web/app/views/index.haml",
|
47
|
+
transient('web_coffee', coffee_files),
|
48
|
+
transient('web_haml', haml_files)] + haml_files) do
|
45
49
|
HamlSupport::compile "web/app/views/index.haml", build_dir
|
46
50
|
end
|
47
51
|
|
48
52
|
app_files += @manifest.css_tasks(styles_build_dir)
|
49
53
|
|
50
|
-
task :shared do
|
54
|
+
task :shared => [images_build_dir, scripts_build_dir] do
|
51
55
|
cp_ne "assets/images/*", File.join(build_dir, 'images')
|
52
56
|
cp_ne "assets/lib/*.js", scripts_build_dir
|
53
57
|
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'pathname'
|
2
|
+
|
3
|
+
module Calatrava
|
4
|
+
|
5
|
+
class OutputFile
|
6
|
+
@@rules = {}
|
7
|
+
|
8
|
+
def self.rule(opts, &action)
|
9
|
+
start_ext = opts.keys[0]
|
10
|
+
@@rules[start_ext] = {:target => opts[start_ext], :action => action}
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.target_file(file_name)
|
14
|
+
start_ext = file_name.extname
|
15
|
+
Pathname.new(file_name.basename(start_ext).to_s + rule_for(start_ext)[:target])
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.action(file_name)
|
19
|
+
rule_for(file_name.extname)[:action]
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.rule_for(ext)
|
23
|
+
@@rules[ext]
|
24
|
+
end
|
25
|
+
|
26
|
+
include Rake::DSL
|
27
|
+
attr_reader :source_file, :dependencies
|
28
|
+
|
29
|
+
def initialize(output_dir, source_file, dependencies = [])
|
30
|
+
@output_dir = Pathname.new(output_dir)
|
31
|
+
@source_file = Pathname.new(source_file)
|
32
|
+
|
33
|
+
@dependencies = [@source_file.to_s, @output_dir.to_s]
|
34
|
+
@dependencies += dependencies if dependencies
|
35
|
+
end
|
36
|
+
|
37
|
+
def output_path
|
38
|
+
(@output_dir + OutputFile.target_file(@source_file)).to_s
|
39
|
+
end
|
40
|
+
alias :to_s :output_path
|
41
|
+
|
42
|
+
def to_task
|
43
|
+
file(output_path => @dependencies) do
|
44
|
+
OutputFile.action(@source_file).call(output_path.to_s, @source_file.to_s)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
OutputFile.rule '.coffee' => '.js' do |target, source|
|
50
|
+
coffee source, File.dirname(target)
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
data/lib/calatrava/project.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
module Calatrava
|
2
2
|
|
3
3
|
class Project
|
4
|
+
include Rake::DSL
|
4
5
|
|
5
6
|
def self.here(directory)
|
6
7
|
@@current = Project.new(directory)
|
@@ -27,9 +28,36 @@ module Calatrava
|
|
27
28
|
@config = Configuration.new
|
28
29
|
@kernel = Kernel.new(@path)
|
29
30
|
@shell = Shell.new(@path)
|
30
|
-
|
31
|
-
|
32
|
-
|
31
|
+
if platform? 'web'
|
32
|
+
@mobile_web = MobileWebApp.new(@path, Manifest.new(@path, 'web', @kernel, @shell))
|
33
|
+
end
|
34
|
+
if platform? 'ios'
|
35
|
+
@ios = IosApp.new(@path, Manifest.new(@path, 'ios', @kernel, @shell))
|
36
|
+
end
|
37
|
+
if platform? 'droid'
|
38
|
+
@droid = DroidApp.new(@path, @name, Manifest.new(@path, 'droid', @kernel, @shell))
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def install_tasks
|
43
|
+
namespace(:kernel) { kernel.install_tasks }
|
44
|
+
namespace(:configure) { config.install_tasks }
|
45
|
+
|
46
|
+
namespace(:droid) { droid.install_tasks } if platform?('droid')
|
47
|
+
namespace(:ios) { ios.install_tasks } if platform?('ios')
|
48
|
+
namespace(:web) { mobile_web.install_tasks } if platform?('web')
|
49
|
+
|
50
|
+
desc "Clean all apps"
|
51
|
+
task :clean => tasks_for_platforms(:clean)
|
52
|
+
task :build => tasks_for_platforms(:build)
|
53
|
+
end
|
54
|
+
|
55
|
+
def platform?(p)
|
56
|
+
@options[:platforms].include? p
|
57
|
+
end
|
58
|
+
|
59
|
+
def tasks_for_platforms(task)
|
60
|
+
@options[:platforms].collect { |p| "#{p}:#{task}" }
|
33
61
|
end
|
34
62
|
|
35
63
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'mustache'
|
2
2
|
require 'yaml'
|
3
|
-
require 'xcodeproj'
|
3
|
+
require 'xcodeproj' if Calatrava.platform == :mac
|
4
4
|
|
5
5
|
module Calatrava
|
6
6
|
|
@@ -13,6 +13,11 @@ module Calatrava
|
|
13
13
|
@slug = name.gsub(" ", "_").downcase
|
14
14
|
@title = @name[0..0].upcase + @name[1..-1]
|
15
15
|
@options = overrides
|
16
|
+
puts @options
|
17
|
+
|
18
|
+
@platforms = ['ios', 'droid', 'web'].select do |platform|
|
19
|
+
!@options["no-#{platform}"]
|
20
|
+
end
|
16
21
|
end
|
17
22
|
|
18
23
|
def sh(cmd)
|
@@ -21,7 +26,7 @@ module Calatrava
|
|
21
26
|
end
|
22
27
|
|
23
28
|
def dev?
|
24
|
-
@options
|
29
|
+
@options.dev?
|
25
30
|
end
|
26
31
|
|
27
32
|
def create(template)
|
@@ -29,14 +34,18 @@ module Calatrava
|
|
29
34
|
create_directory_tree(template)
|
30
35
|
create_files(template)
|
31
36
|
|
32
|
-
create_android_tree(template)
|
33
|
-
create_ios_tree(template)
|
37
|
+
create_android_tree(template) if @platforms.include?('droid')
|
38
|
+
create_ios_tree(template) if Calatrava.platform == :mac && @platforms.include?('ios')
|
39
|
+
|
40
|
+
['droid', 'ios', 'web'].each do |app|
|
41
|
+
FileUtils.rm_rf(File.join(@name, app)) unless @platforms.include?(app)
|
42
|
+
end
|
34
43
|
end
|
35
44
|
|
36
45
|
def create_project(template)
|
37
46
|
FileUtils.mkdir_p @name
|
38
47
|
File.open(File.join(@name, 'calatrava.yml'), "w+") do |f|
|
39
|
-
f.print({:
|
48
|
+
f.print({project_name: @name, platforms: @platforms}.to_yaml)
|
40
49
|
end
|
41
50
|
end
|
42
51
|
|
@@ -70,7 +79,7 @@ module Calatrava
|
|
70
79
|
|
71
80
|
def create_android_tree(template)
|
72
81
|
Dir.chdir(File.join(@name, "droid")) do
|
73
|
-
sh "android create project --name '#{@slug}' --path '#{@name}' --package com.#{@slug} --target android-
|
82
|
+
sh "android create project --name '#{@slug}' --path '#{@name}' --package com.#{@slug} --target android-#{@options[:'android-api']} --activity #{@title}"
|
74
83
|
|
75
84
|
Dir.walk("calatrava") do |item|
|
76
85
|
target_item = item.sub('calatrava', @name)
|
@@ -5,6 +5,7 @@ end
|
|
5
5
|
def coffee(in_dir_or_file, out_dir)
|
6
6
|
if !Dir["#{in_dir_or_file}/**/*.coffee"].empty? || File.exists?(in_dir_or_file)
|
7
7
|
$stdout.puts "coffee #{in_dir_or_file} -> #{out_dir}"
|
8
|
-
|
8
|
+
ok = system "node_modules/coffee-script/bin/coffee --compile --output #{out_dir} #{in_dir_or_file}"
|
9
|
+
fail "Error compiling CoffeeScript: '#{in_dir_or_file}'" if !ok
|
9
10
|
end
|
10
11
|
end
|
@@ -2,9 +2,8 @@ desc "Installs all required Ruby gems and Node.js packages for your new Calatrav
|
|
2
2
|
task :bootstrap do
|
3
3
|
sh "bundle install"
|
4
4
|
sh "npm install"
|
5
|
-
|
6
|
-
|
7
|
-
end
|
5
|
+
Rake::Task['ios:bootstrap'].invoke if Rake::Task.task_defined? 'ios:bootstrap'
|
6
|
+
Rake::Task['droid:bootstrap'].invoke if Rake::Task.task_defined? 'droid:bootstrap'
|
8
7
|
|
9
8
|
Rake::Task['configure:development'].invoke
|
10
9
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'digest/sha1'
|
2
|
+
|
3
|
+
module Rake
|
4
|
+
module DSL
|
5
|
+
|
6
|
+
def transient(name, value)
|
7
|
+
transients = File.join('.rake', 'transients')
|
8
|
+
FileUtils.mkdir_p transients
|
9
|
+
value_file = File.join(transients, name.to_s)
|
10
|
+
value_hash = Digest::SHA1.hexdigest(value.to_s)
|
11
|
+
if File.exists? value_file
|
12
|
+
previous_hash = IO.read(value_file)
|
13
|
+
FileUtils.rm value_file if previous_hash != value_hash
|
14
|
+
end
|
15
|
+
|
16
|
+
file value_file do
|
17
|
+
File.open(value_file, "w+") { |f| f.print value_hash }
|
18
|
+
end
|
19
|
+
task name => value_file
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
data/lib/calatrava/tasks.rb
CHANGED
@@ -5,13 +5,5 @@ Calatrava::Project.here('.')
|
|
5
5
|
|
6
6
|
Dir["#{File.join(File.dirname(__FILE__), 'tasks')}/*.rb"].each { |t| require t }
|
7
7
|
|
8
|
-
|
9
|
-
namespace(:configure) { Calatrava::Project.current.config.install_tasks }
|
10
|
-
namespace(:droid) { Calatrava::Project.current.droid.install_tasks }
|
11
|
-
namespace(:ios) { Calatrava::Project.current.ios.install_tasks }
|
12
|
-
namespace(:web) { Calatrava::Project.current.mobile_web.install_tasks }
|
8
|
+
Calatrava::Project.current.install_tasks
|
13
9
|
|
14
|
-
desc "Clean all apps"
|
15
|
-
task :clean => ['web:clean', 'ios:clean', 'droid:clean']
|
16
|
-
|
17
|
-
task :build => ['web:build', 'ios:build', 'droid:build']
|
@@ -0,0 +1 @@
|
|
1
|
+
{{ project_slug }}
|
@@ -0,0 +1 @@
|
|
1
|
+
ruby-1.9.3
|
@@ -3,8 +3,9 @@
|
|
3
3
|
package="com.{{ project_slug }}"
|
4
4
|
android:versionCode="1"
|
5
5
|
android:versionName="1.0">
|
6
|
-
<application android:label="@string/app_name"
|
7
|
-
|
6
|
+
<application android:label="@string/app_name"
|
7
|
+
android:name="{{ project_title }}">
|
8
|
+
<activity android:name=".Bootstrap"
|
8
9
|
android:label="@string/app_name">
|
9
10
|
<intent-filter>
|
10
11
|
<action android:name="android.intent.action.MAIN" />
|
@@ -14,7 +15,5 @@
|
|
14
15
|
<activity android:name=".ConversionForm"
|
15
16
|
android:label="@string/app_name">
|
16
17
|
</activity>
|
17
|
-
<service android:enabled="true"
|
18
|
-
android:name="com.calatrava.bridge.RhinoService"/>
|
19
18
|
</application>
|
20
19
|
</manifest>
|
@@ -50,10 +50,6 @@
|
|
50
50
|
<!-- Load the calatrava additions -->
|
51
51
|
<import file="ant/calatrava.xml" />
|
52
52
|
|
53
|
-
<!-- Calatrava configuration -->
|
54
|
-
<target name="-pre-build" depends="resolve">
|
55
|
-
</target>
|
56
|
-
|
57
53
|
<!-- extension targets. Uncomment the ones where you want to do custom work
|
58
54
|
in between standard targets -->
|
59
55
|
<!--
|
@@ -3,8 +3,12 @@
|
|
3
3
|
<!-- here is the version of ivy we will use. change this property to try a newer
|
4
4
|
version if you want -->
|
5
5
|
<property name="ivy.install.version" value="2.3.0-rc1" />
|
6
|
-
|
7
|
-
|
6
|
+
|
7
|
+
<!-- Paths to various ivy pieces. You probably don't need to change these -->
|
8
|
+
<property name="ivy.jar.dir" value="${basedir}/../ivy" />
|
9
|
+
<property name="ivy.jar.file" value="${ivy.jar.dir}/ivy.jar" />
|
10
|
+
<property name="ivy.dep.file" value="${ivy.jar.dir}/ivy.xml" />
|
11
|
+
<property name="ivy.settings.file" value="${ivy.jar.dir}/ivysettings.xml" />
|
8
12
|
|
9
13
|
<property name="build.dir" value="build" />
|
10
14
|
<property name="src.dir" value="src" />
|
@@ -34,7 +38,7 @@
|
|
34
38
|
|
35
39
|
<ivy:report />
|
36
40
|
|
37
|
-
<ivy:retrieve pattern="libs/[artifact]-[revision](-[classifier]).[ext]" conf="${ivy.configurations}" />
|
41
|
+
<ivy:retrieve pattern="../libs/[artifact]-[revision](-[classifier]).[ext]" conf="${ivy.configurations}" />
|
38
42
|
</target>
|
39
43
|
|
40
44
|
<target name="clean-ivy" description="--> clean the ivy installation">
|
File without changes
|
File without changes
|
@@ -0,0 +1,21 @@
|
|
1
|
+
package com.{{ project_slug }};
|
2
|
+
|
3
|
+
import android.app.Activity;
|
4
|
+
import android.os.Bundle;
|
5
|
+
|
6
|
+
import com.calatrava.bridge.CalatravaApplication;
|
7
|
+
|
8
|
+
public class Bootstrap extends Activity
|
9
|
+
{
|
10
|
+
@Override
|
11
|
+
public void onCreate(Bundle savedInstanceState)
|
12
|
+
{
|
13
|
+
super.onCreate(savedInstanceState);
|
14
|
+
setContentView(R.layout.main);
|
15
|
+
|
16
|
+
((CalatravaApplication)getApplication()).provideActivityContext(this);
|
17
|
+
|
18
|
+
// And then start your first feature
|
19
|
+
launchFlow("example.converter.start");
|
20
|
+
}
|
21
|
+
}
|
@@ -3,21 +3,14 @@ package com.{{ project_slug }};
|
|
3
3
|
import android.app.Activity;
|
4
4
|
import android.os.Bundle;
|
5
5
|
|
6
|
-
import com.calatrava.bridge.
|
6
|
+
import com.calatrava.bridge.CalatravaApplication;
|
7
7
|
|
8
|
-
public class {{ project_title }} extends
|
8
|
+
public class {{ project_title }} extends CalatravaApplication
|
9
9
|
{
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
Launcher.launchKernel("com.{{ project_slug }}", this, getApplication(), new Runnable() {
|
18
|
-
public void run() {
|
19
|
-
Launcher.launchFlow("example.converter.start");
|
20
|
-
}
|
21
|
-
});
|
22
|
-
}
|
10
|
+
@Override
|
11
|
+
public void onCreate()
|
12
|
+
{
|
13
|
+
// Call this to start Calatrava
|
14
|
+
bootCalatrava("com.{{ project_slug }}");
|
15
|
+
}
|
23
16
|
}
|