calatrava 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +9 -0
- data/.rvmrc +2 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +202 -0
- data/Plans.md +20 -0
- data/README.md +73 -0
- data/Rakefile +26 -0
- data/bin/calatrava +6 -0
- data/calatrava.gemspec +35 -0
- data/features/cli.feature +14 -0
- data/features/project.feature +48 -0
- data/features/step_definitions/template_steps.rb +8 -0
- data/features/support/env.rb +5 -0
- data/lib/calatrava/app.rb +30 -0
- data/lib/calatrava/manifest.rb +44 -0
- data/lib/calatrava/project.rb +218 -0
- data/lib/calatrava/resources_build_phase.rb +19 -0
- data/lib/calatrava/tasks/apache.rb +44 -0
- data/lib/calatrava/tasks/artifact.rb +24 -0
- data/lib/calatrava/tasks/assets.rb +6 -0
- data/lib/calatrava/tasks/automation.rb +38 -0
- data/lib/calatrava/tasks/bootstrap.rb +10 -0
- data/lib/calatrava/tasks/build.rb +1 -0
- data/lib/calatrava/tasks/configuration.rb +41 -0
- data/lib/calatrava/tasks/droid.rb +83 -0
- data/lib/calatrava/tasks/haml.rb +71 -0
- data/lib/calatrava/tasks/ios.rb +73 -0
- data/lib/calatrava/tasks/kernel.rb +52 -0
- data/lib/calatrava/tasks/precommit.rb +22 -0
- data/lib/calatrava/tasks/release.rb +17 -0
- data/lib/calatrava/tasks/shell.rb +17 -0
- data/lib/calatrava/tasks/web.rb +82 -0
- data/lib/calatrava/tasks.rb +93 -0
- data/lib/calatrava/template.rb +44 -0
- data/lib/calatrava/templates/.rvmrc.calatrava +2 -0
- data/lib/calatrava/templates/Gemfile.calatrava +4 -0
- data/lib/calatrava/templates/Rakefile +1 -0
- data/lib/calatrava/templates/assets/lib/ICanHaz.js +542 -0
- data/lib/calatrava/templates/assets/lib/underscore.js +1059 -0
- data/lib/calatrava/templates/assets/lib/zepto.js +1355 -0
- data/lib/calatrava/templates/build_env.sh +2 -0
- data/lib/calatrava/templates/config/environments.yml +17 -0
- data/lib/calatrava/templates/config/templates/env.coffee.erb +7 -0
- data/lib/calatrava/templates/config/templates/httpd.conf.erb +33 -0
- data/lib/calatrava/templates/droid/app/bridge.coffee +130 -0
- data/lib/calatrava/templates/droid/calatrava/ant/calatrava.xml +48 -0
- data/lib/calatrava/templates/droid/calatrava/calatrava-build.xml +91 -0
- data/lib/calatrava/templates/droid/calatrava/ivy.xml +8 -0
- data/lib/calatrava/templates/droid/calatrava/ivysettings.xml +12 -0
- data/lib/calatrava/templates/droid/calatrava/src/com/CALATRAVA_TMPL/AndroidManifest.xml.calatrava +20 -0
- data/lib/calatrava/templates/droid/calatrava/src/com/CALATRAVA_TMPL/ConversionForm.java.calatrava +27 -0
- data/lib/calatrava/templates/droid/calatrava/src/com/CALATRAVA_TMPL/Title.java.calatrava +23 -0
- data/lib/calatrava/templates/droid/calatrava/src/com/calatrava/CalatravaPage.java +13 -0
- data/lib/calatrava/templates/droid/calatrava/src/com/calatrava/bridge/AjaxRequestManager.java +166 -0
- data/lib/calatrava/templates/droid/calatrava/src/com/calatrava/bridge/AssetRepository.java +17 -0
- data/lib/calatrava/templates/droid/calatrava/src/com/calatrava/bridge/KernelBridge.java +25 -0
- data/lib/calatrava/templates/droid/calatrava/src/com/calatrava/bridge/Launcher.java +85 -0
- data/lib/calatrava/templates/droid/calatrava/src/com/calatrava/bridge/PageRegistry.java +225 -0
- data/lib/calatrava/templates/droid/calatrava/src/com/calatrava/bridge/RegisteredActivity.java +86 -0
- data/lib/calatrava/templates/droid/calatrava/src/com/calatrava/bridge/RequestLoader.java +31 -0
- data/lib/calatrava/templates/droid/calatrava/src/com/calatrava/bridge/RhinoService.java +212 -0
- data/lib/calatrava/templates/droid/calatrava/src/com/calatrava/shell/WebViewActivity.java +247 -0
- data/lib/calatrava/templates/droid/manifest.yml +1 -0
- data/lib/calatrava/templates/ios/Podfile.calatrava +5 -0
- data/lib/calatrava/templates/ios/manifest.yml +1 -0
- data/lib/calatrava/templates/ios/res/js/bridge.js +249 -0
- data/lib/calatrava/templates/ios/res/xibs/ProgressViewController.xib +334 -0
- data/lib/calatrava/templates/ios/res/xibs/WebViewController.xib +173 -0
- data/lib/calatrava/templates/ios/src/AppDelegate.h +8 -0
- data/lib/calatrava/templates/ios/src/AppDelegate.m +56 -0
- data/lib/calatrava/templates/ios/src/CALATRAVA_TMPL-Info.plist +45 -0
- data/lib/calatrava/templates/ios/src/CALATRAVA_TMPL-Prefix.pch +14 -0
- data/lib/calatrava/templates/ios/src/ConversionFormViewController.h +16 -0
- data/lib/calatrava/templates/ios/src/ConversionFormViewController.m +179 -0
- data/lib/calatrava/templates/ios/src/ConversionFormViewController.xib +357 -0
- data/lib/calatrava/templates/ios/src/en.lproj/InfoPlist.strings +2 -0
- data/lib/calatrava/templates/ios/src/main.m +10 -0
- data/lib/calatrava/templates/ios/test/AJAXConnectionTest.m +21 -0
- data/lib/calatrava/templates/ios/test/AppTests-Prefix.pch +8 -0
- data/lib/calatrava/templates/ios/test/CalatravaiOSTests-Info.plist +22 -0
- data/lib/calatrava/templates/ios/test/TWBridgePageRegistryTest.m +15 -0
- data/lib/calatrava/templates/ios/test/en.lproj/InfoPlist.strings +2 -0
- data/lib/calatrava/templates/kernel/.gitignore +1 -0
- data/lib/calatrava/templates/kernel/app/calatrava.coffee +8 -0
- data/lib/calatrava/templates/kernel/app/converter/controller.converter.coffee +50 -0
- data/lib/calatrava/templates/kernel/app/converter/init.converter.coffee +11 -0
- data/lib/calatrava/templates/kernel/app/pageHelper.coffee +17 -0
- data/lib/calatrava/templates/kernel/features/support/bridge.coffee +124 -0
- data/lib/calatrava/templates/kernel/features/support/spec_helper.js +49 -0
- data/lib/calatrava/templates/kernel/spec/converter/controller.converter.spec.coffee +37 -0
- data/lib/calatrava/templates/kernel/spec/environment.spec_helper.coffee +25 -0
- data/lib/calatrava/templates/kernel/spec/spec_helper.js +49 -0
- data/lib/calatrava/templates/kernel/spec/stubView.coffee +18 -0
- data/lib/calatrava/templates/kernel/watchr.rb +17 -0
- data/lib/calatrava/templates/package.json +20 -0
- data/lib/calatrava/templates/shell/layouts/single_page.haml +23 -0
- data/lib/calatrava/templates/shell/pages/converter/conversionForm.haml +12 -0
- data/lib/calatrava/templates/shell/pages/converter/page.conversionForm.coffee +42 -0
- data/lib/calatrava/templates/shell/shell.scss +1 -0
- data/lib/calatrava/templates/shell/support/shell.coffee +21 -0
- data/lib/calatrava/templates/web/apache/conf/mime.types +1357 -0
- data/lib/calatrava/templates/web/app/source/bridge.coffee +158 -0
- data/lib/calatrava/templates/web/app/source/init.coffee +14 -0
- data/lib/calatrava/templates/web/app/views/index.haml +18 -0
- data/lib/calatrava/templates/web/deploy/instance.sh +10 -0
- data/lib/calatrava/templates/web/manifest.yml +1 -0
- data/lib/calatrava/version.rb +3 -0
- data/lib/calatrava.rb +5 -0
- metadata +302 -0
@@ -0,0 +1,22 @@
|
|
1
|
+
namespace :precommit do
|
2
|
+
old_env = ''
|
3
|
+
|
4
|
+
task :dev_env do
|
5
|
+
ENV['CALATRAVA_ENV'] = 'development' unless ENV['CALATRAVA_ENV']
|
6
|
+
end
|
7
|
+
|
8
|
+
task :begin_automation do
|
9
|
+
old_env = ENV['CALATRAVA_ENV']
|
10
|
+
ENV['CALATRAVA_ENV'] = 'automation'
|
11
|
+
end
|
12
|
+
|
13
|
+
task :end_automation do
|
14
|
+
ENV['CALATRAVA_ENV'] = old_env
|
15
|
+
end
|
16
|
+
|
17
|
+
task :web_features => [:begin_automation, "configure:automation", "automation:acl:start", "automation:web:features", "automation:acl:stop", :end_automation]
|
18
|
+
|
19
|
+
desc "Run this before pushing"
|
20
|
+
task :mw => [:dev_env, "kernel:spec", "kernel:features", :web_features]
|
21
|
+
|
22
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
namespace :release do
|
2
|
+
|
3
|
+
promoted_path = 'promoted_dir'
|
4
|
+
|
5
|
+
directory promoted_path
|
6
|
+
|
7
|
+
desc "Acquires the promoted artifacts to be released"
|
8
|
+
task :files => promoted_path do
|
9
|
+
artifacts_url = "http://localhost:8080/job/#{ENV['PROMOTED_JOB_NAME']}/#{ENV['PROMOTED_NUMBER']}/artifact/artifacts/#{ENV['CALATRAVA_ENV']}"
|
10
|
+
|
11
|
+
cd promoted_path do
|
12
|
+
sh "curl -O '#{artifacts_url}/#{app_name}.ipa'"
|
13
|
+
sh "curl -O '#{artifacts_url}/#{app_name}.apk'"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
namespace :shell do
|
2
|
+
|
3
|
+
directory "build/shell/css"
|
4
|
+
directory "build/shell/js"
|
5
|
+
|
6
|
+
desc "Convert core scss to css"
|
7
|
+
task :scss => "build/shell/css" do
|
8
|
+
sh "sass --update shell/stylesheets"
|
9
|
+
cp_ne "shell/stylesheets/*.css", "build/shell/css"
|
10
|
+
end
|
11
|
+
|
12
|
+
desc "Build shell js files"
|
13
|
+
task :coffee => "build/shell/js" do
|
14
|
+
coffee "shell", "build/shell/js"
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
@@ -0,0 +1,82 @@
|
|
1
|
+
namespace :web do
|
2
|
+
|
3
|
+
desc "Creates html from haml using web layout"
|
4
|
+
task :haml => CONFIG[:web][:public] do
|
5
|
+
HamlSupport::compile "#{CONFIG[:web][:layout]}/index.haml", CONFIG[:web][:public]
|
6
|
+
end
|
7
|
+
|
8
|
+
desc "Compile web-specific coffee to javascript"
|
9
|
+
task :coffee => CONFIG[:web][:assets] do
|
10
|
+
coffee File.join(CONFIG[:web][:root], "app", "source"), CONFIG[:web][:js]
|
11
|
+
end
|
12
|
+
|
13
|
+
task :shared => ["shell:scss", "shell:coffee", "kernel:coffee",
|
14
|
+
CONFIG[:web][:css], CONFIG[:web][:imgs], CONFIG[:web][:js], CONFIG[:web][:fonts]] do
|
15
|
+
cp_ne "build/shell/css/*.css", CONFIG[:web][:css]
|
16
|
+
cp_ne "#{ASSETS_IMG_DIR}/*", CONFIG[:web][:imgs]
|
17
|
+
cp_ne "assets/lib/*.js", CONFIG[:web][:js]
|
18
|
+
|
19
|
+
web_manifest = Calatrava::Manifest.new('web')
|
20
|
+
|
21
|
+
web_manifest.js_files.each do |js_file|
|
22
|
+
sh "cp #{js_file} #{CONFIG[:web][:js]}"
|
23
|
+
end
|
24
|
+
|
25
|
+
web_manifest.load_file('web/app/views', 'scripts', :type => :haml, :include_pages => true)
|
26
|
+
|
27
|
+
cp_ne "build/shell/js/**/*.js", CONFIG[:web][:js]
|
28
|
+
cp_ne "build/kernel/js/*.js", CONFIG[:web][:js]
|
29
|
+
cp_ne "#{ASSETS_FONTS_DIR}/*", CONFIG[:web][:fonts]
|
30
|
+
end
|
31
|
+
|
32
|
+
task :app => [:shared, :haml, :coffee]
|
33
|
+
|
34
|
+
desc "Prepares config for the app"
|
35
|
+
task :config do
|
36
|
+
env_coffee = config_path("env.coffee")
|
37
|
+
coffee env_coffee, CONFIG[:web][:js]
|
38
|
+
end
|
39
|
+
|
40
|
+
desc "Build the web app"
|
41
|
+
task :build => [:app, :config]
|
42
|
+
|
43
|
+
desc "Publishes the built web app as an artifact"
|
44
|
+
task :publish => :build do
|
45
|
+
artifact_dir(CONFIG[:web][:public], 'web/public')
|
46
|
+
artifact config_path("mw.conf"), 'web'
|
47
|
+
artifact 'web/deploy_mw.sh', 'web'
|
48
|
+
end
|
49
|
+
|
50
|
+
namespace :apache do
|
51
|
+
|
52
|
+
file 'web/apache/public' do
|
53
|
+
cd 'web/apache' do
|
54
|
+
ln_s "../public", "public"
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
desc "launch a non-daemon apache instance on port 8888 which will serve our local app and also proxy to backend services"
|
59
|
+
task :start => [:build, 'web/apache/public', APACHE_LOGS_DIR] do
|
60
|
+
configure_apache
|
61
|
+
launch_apache
|
62
|
+
end
|
63
|
+
|
64
|
+
desc "Reload the apache configuration"
|
65
|
+
task :reload do
|
66
|
+
reload_apache
|
67
|
+
end
|
68
|
+
|
69
|
+
desc "Stop the apache configuration"
|
70
|
+
task :stop do
|
71
|
+
stop_apache
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
desc "Clean web public directory"
|
76
|
+
task :clean do
|
77
|
+
rm_rf CONFIG[:web][:public]
|
78
|
+
rm_rf APACHE_LOGS_DIR
|
79
|
+
rm_rf File.join(APACHE_DIR, 'conf', 'httpd.conf')
|
80
|
+
end
|
81
|
+
|
82
|
+
end
|
@@ -0,0 +1,93 @@
|
|
1
|
+
$: << File.dirname(__FILE__)
|
2
|
+
require 'calatrava'
|
3
|
+
|
4
|
+
Calatrava::Project.here('.')
|
5
|
+
|
6
|
+
def cp_ne(source, dest_dir)
|
7
|
+
cp Dir[source], dest_dir
|
8
|
+
end
|
9
|
+
|
10
|
+
ROOT_DIR = "."
|
11
|
+
BUILD_DIR = File.join(ROOT_DIR, 'build').freeze
|
12
|
+
|
13
|
+
SHELL_DIR = File.join(ROOT_DIR, 'shell').freeze
|
14
|
+
SHELL_LAYOUTS_DIR = File.join(SHELL_DIR, 'layouts').freeze
|
15
|
+
SHELL_VIEWS_DIR = File.join(SHELL_DIR, 'views').freeze
|
16
|
+
SHELL_PARTIALS_DIR = File.join(SHELL_DIR, 'partials').freeze
|
17
|
+
SHELL_JS_DIR = File.join(SHELL_DIR, 'support').freeze
|
18
|
+
|
19
|
+
FEATURES_DIR = File.join(ROOT_DIR, 'features').freeze
|
20
|
+
FEATURE_RESULTS_DIR = File.join(ROOT_DIR, 'results').freeze
|
21
|
+
|
22
|
+
|
23
|
+
KERNEL_DIR = File.join(ROOT_DIR, 'kernel').freeze
|
24
|
+
KERNEL_JS_DIR = File.join(KERNEL_DIR, 'app').freeze
|
25
|
+
KERNEL_SPEC_DIR = File.join(KERNEL_DIR, 'spec').freeze
|
26
|
+
|
27
|
+
BUILD_CORE_DIR = File.join(BUILD_DIR, 'core').freeze
|
28
|
+
BUILD_CORE_KERNEL_DIR = File.join(BUILD_CORE_DIR, 'kernel').freeze
|
29
|
+
BUILD_CORE_CSS_DIR = File.join(BUILD_CORE_DIR, 'stylesheets').freeze
|
30
|
+
|
31
|
+
ASSETS_DIR = File.join(ROOT_DIR, 'assets').freeze
|
32
|
+
ASSETS_IMG_DIR = File.join(ASSETS_DIR, 'images').freeze
|
33
|
+
ASSETS_LIB_DIR = File.join(ASSETS_DIR, 'lib').freeze
|
34
|
+
ASSETS_CSS_DIR = File.join(ASSETS_DIR, 'stylesheets').freeze
|
35
|
+
ASSETS_FONTS_DIR = File.join(ASSETS_DIR, 'fonts').freeze
|
36
|
+
|
37
|
+
APACHE_DIR = File.join(ROOT_DIR, 'web', 'apache').freeze
|
38
|
+
WEB_DIR = File.join(ROOT_DIR, 'web').freeze
|
39
|
+
APACHE_LOGS_DIR = File.join(APACHE_DIR, 'logs').freeze
|
40
|
+
|
41
|
+
CONFIG_DIR = File.join(ROOT_DIR, 'config').freeze
|
42
|
+
CONFIG_YAML = File.join(CONFIG_DIR, 'environments.yml').freeze
|
43
|
+
CONFIG_TEMPLATE_DIR = File.join(CONFIG_DIR, 'templates').freeze
|
44
|
+
CONFIG_RESULT_DIR = File.join(CONFIG_DIR, 'result').freeze
|
45
|
+
directory CONFIG_RESULT_DIR
|
46
|
+
|
47
|
+
CONFIG = {}
|
48
|
+
|
49
|
+
[:ios, :droid, :web].each do |os|
|
50
|
+
CONFIG[os] = {}
|
51
|
+
CONFIG[os][:root] = File.join(ROOT_DIR, os.to_s)
|
52
|
+
CONFIG[os][:public] = case os
|
53
|
+
when :droid
|
54
|
+
File.join(CONFIG[os][:root], Calatrava::Project.current.name, 'assets', 'hybrid').freeze
|
55
|
+
else
|
56
|
+
File.join(CONFIG[os][:root], 'public').freeze
|
57
|
+
end
|
58
|
+
CONFIG[os][:html] = File.join(CONFIG[os][:public], 'views').freeze
|
59
|
+
CONFIG[os][:assets] = case os
|
60
|
+
when :ios
|
61
|
+
File.join(CONFIG[os][:public], 'assets').freeze
|
62
|
+
else
|
63
|
+
CONFIG[os][:public]
|
64
|
+
end
|
65
|
+
CONFIG[os][:imgs] = File.join(CONFIG[os][:assets], 'images').freeze
|
66
|
+
CONFIG[os][:js] = File.join(CONFIG[os][:assets], 'scripts').freeze
|
67
|
+
CONFIG[os][:css] = File.join(CONFIG[os][:assets], 'styles').freeze
|
68
|
+
CONFIG[os][:fonts] = File.join(CONFIG[os][:assets], 'fonts').freeze
|
69
|
+
CONFIG[os][:layout] = File.join(CONFIG[os][:root], "app", "views").freeze
|
70
|
+
|
71
|
+
directory CONFIG[os][:public]
|
72
|
+
directory CONFIG[os][:html]
|
73
|
+
directory CONFIG[os][:assets]
|
74
|
+
directory CONFIG[os][:imgs]
|
75
|
+
directory CONFIG[os][:js]
|
76
|
+
directory CONFIG[os][:css]
|
77
|
+
directory CONFIG[os][:fonts]
|
78
|
+
end
|
79
|
+
|
80
|
+
CONFIG[:ios][:project_name] = Calatrava::Project.current.name
|
81
|
+
CONFIG[:ios][:app_dir] = File.join(CONFIG[:ios][:root], 'Source', Calatrava::Project.current.name)
|
82
|
+
CONFIG[:ios][:cucumber] = FEATURES_DIR
|
83
|
+
|
84
|
+
directory BUILD_CORE_DIR
|
85
|
+
directory BUILD_CORE_CSS_DIR
|
86
|
+
directory BUILD_CORE_KERNEL_DIR
|
87
|
+
|
88
|
+
Dir["#{File.join(File.dirname(__FILE__), 'tasks')}/*.rb"].each { |t| require t }
|
89
|
+
|
90
|
+
desc "Clean all directories"
|
91
|
+
task :clean => ["core:clean", "ios:clean", "bb:clean", "web:clean", "artifact:clean", "droid:clean"] do
|
92
|
+
rm_rf BUILD_DIR
|
93
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
class Dir
|
2
|
+
|
3
|
+
def self.walk(start_dir, &blk)
|
4
|
+
Dir["#{start_dir}/{*,.*}"].each do |item|
|
5
|
+
blk.call item
|
6
|
+
if File.directory?(item) && !(item =~ /\/\.$/) && !(item =~ /\/\.\.$/)
|
7
|
+
walk(item, &blk)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
13
|
+
|
14
|
+
module Calatrava
|
15
|
+
|
16
|
+
class Template
|
17
|
+
|
18
|
+
def initialize(directory)
|
19
|
+
@directory = directory
|
20
|
+
end
|
21
|
+
|
22
|
+
def target_name(item)
|
23
|
+
item.sub("#{@directory}/", "")
|
24
|
+
end
|
25
|
+
|
26
|
+
def walk_directories(&blk)
|
27
|
+
Dir.walk(@directory) do |item|
|
28
|
+
if File.directory?(item)
|
29
|
+
blk.call target_name(item)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def walk_files(&blk)
|
35
|
+
Dir.walk(@directory) do |item|
|
36
|
+
if File.file? item
|
37
|
+
blk.call(:path => item, :name => target_name(item))
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'calatrava/tasks'
|