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
data/.gitignore
CHANGED
data/.ruby-gemset
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
calatrava
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ruby-1.9.3-p392
|
data/.travis.yml
ADDED
data/CHANGES.markdown
CHANGED
@@ -1,3 +1,50 @@
|
|
1
|
+
## v0.6.4
|
2
|
+
|
3
|
+
New features:
|
4
|
+
* All app types are now optional: disable app types with `--no-web`,
|
5
|
+
`--no-droid` and `--no-ios` when creating your Calatrava project.
|
6
|
+
* You can specify the Android API version when creating a project with
|
7
|
+
`--android-api <version>`. It currently defaults to API 17.
|
8
|
+
|
9
|
+
Minor improvements:
|
10
|
+
* The `stubView` for stubbing pages when testing controllers now
|
11
|
+
provides more direct access to the last render view message.
|
12
|
+
* Android dependencies are resolved during bootstrap, and then
|
13
|
+
externally to the `ant` build to avoid `CLASSPATH` issues.
|
14
|
+
* Fail the build if a CoffeeScript file fails to compile.
|
15
|
+
|
16
|
+
Bugs fixed:
|
17
|
+
* [Issue #28][i28]: Support Linux for creating projects and running
|
18
|
+
the build.
|
19
|
+
* [Issue #35][i35]: Allow app specific environment keys.
|
20
|
+
* [Issue #31][i31]: Working with image assets will break the
|
21
|
+
web:apache:start task. Now creates the `images` output directory as
|
22
|
+
required.
|
23
|
+
* [Issue #26][i26]: Empty JS strings passed to JS functions are not
|
24
|
+
escaped properly.
|
25
|
+
* [iOS Issue #3][ios-i3]: Prevent app from crashing when invoking
|
26
|
+
plugin callback.
|
27
|
+
* [Issue #34][i34]: [web] Custom headers are not propagated to the
|
28
|
+
ajax request.
|
29
|
+
* [Issue #32][i32]: calatrava.bridge.request() seems to require an
|
30
|
+
optional "body" under iOS. One of `contentType` or `customHeaders`
|
31
|
+
was also required, this too has been fixed.
|
32
|
+
* [Issue #39][i39]: [ios] Network activity spinner
|
33
|
+
* [Issue #40][i40]: calatrava.bridge.request() seems to require a
|
34
|
+
"failure" callback in the browser, although documented as "optional"
|
35
|
+
* [Issue #42][i42]: Fixes the MobileWeb app loading issue. Pages were
|
36
|
+
hidden by default, but the `show` and `hide` implementations for the
|
37
|
+
converter page were incomplete.
|
38
|
+
* [Issue #43][i43]: Close the load_file.txt reader after loading
|
39
|
+
files, on Android.
|
40
|
+
* [iOS Issue #1][ios-i1]: Don't trigger all JS file loads at the same
|
41
|
+
time as this can fail to load some files in large sets.
|
42
|
+
* [iOS Issue #4][ios-i4]: Calatrava apps should be able to open URLs
|
43
|
+
using other apps on iOS.
|
44
|
+
* [Issue #25][i25]: Recreate `load_file.txt` during the build, if new
|
45
|
+
files have been added. Also will re-copy configuration files if you
|
46
|
+
change environments.
|
47
|
+
|
1
48
|
## v0.6.3
|
2
49
|
|
3
50
|
Bugs fixed:
|
@@ -52,8 +99,15 @@ Changes that will affect existing projects:
|
|
52
99
|
|
53
100
|
## Contributors:
|
54
101
|
* [Giles Alexander](https://github.com/gga)
|
102
|
+
* [Pete Hodgson](https://github.com/moredip)
|
55
103
|
* [Vivek Jain](https://github.com/vivekjain10)
|
56
104
|
* [Renaud Tircher](https://github.com/rtircher)
|
105
|
+
* [Marcin Kwiatkowski](https://github.com/marcinkwiatkowski)
|
106
|
+
* [Pat Kua](https://github.com/thekua)
|
107
|
+
* [Maria Gomez](https://github.com/mariagomez)
|
108
|
+
* [Kalyan Akella](https://github.com/KalyanAkella)
|
109
|
+
* [Filipe Esperandio](https://github.com/filipesperandio)
|
110
|
+
* [Christoph Burgmer](https://github.com/cburgmer)
|
57
111
|
|
58
112
|
[i5]: https://github.com/calatrava/calatrava/issues/5
|
59
113
|
[i12]: https://github.com/calatrava/calatrava/issues/12
|
@@ -64,3 +118,16 @@ Changes that will affect existing projects:
|
|
64
118
|
[i23]: https://github.com/calatrava/calatrava/issues/23
|
65
119
|
[i24]: https://github.com/calatrava/calatrava/issues/24
|
66
120
|
[i25]: https://github.com/calatrava/calatrava/issues/25
|
121
|
+
[i28]: https://github.com/calatrava/calatrava/pull/28
|
122
|
+
[i35]: https://github.com/calatrava/calatrava/pull/35
|
123
|
+
[i31]: https://github.com/calatrava/calatrava/issues/31
|
124
|
+
[i26]: https://github.com/calatrava/calatrava/issues/26
|
125
|
+
[ios-i3]: https://github.com/calatrava/calatrava-ios/pull/3
|
126
|
+
[i34]: https://github.com/calatrava/calatrava/issues/34
|
127
|
+
[i32]: https://github.com/calatrava/calatrava/issues/32
|
128
|
+
[i39]: https://github.com/calatrava/calatrava/issues/39
|
129
|
+
[i40]: https://github.com/calatrava/calatrava/issues/40
|
130
|
+
[i42]: https://github.com/calatrava/calatrava/issues/42
|
131
|
+
[i43]: https://github.com/calatrava/calatrava/issues/43
|
132
|
+
[ios-i1]: https://github.com/calatrava/calatrava-ios/issues/1
|
133
|
+
[ios-i4]: https://github.com/calatrava/calatrava-ios/pull/4
|
data/Gemfile
CHANGED
data/Gemfile.lock
ADDED
@@ -0,0 +1,100 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
calatrava (0.6.4)
|
5
|
+
cocoapods (~> 0.16.0)
|
6
|
+
cucumber (~> 1.2.1)
|
7
|
+
haml (~> 3.1.7)
|
8
|
+
mustache (~> 0.99.4)
|
9
|
+
rake (>= 0.9.5)
|
10
|
+
sass (~> 3.2.3)
|
11
|
+
thor (~> 0.16.0)
|
12
|
+
watir-webdriver (~> 0.6.1)
|
13
|
+
xcodeproj (>= 0.4.0)
|
14
|
+
|
15
|
+
GEM
|
16
|
+
remote: https://rubygems.org/
|
17
|
+
specs:
|
18
|
+
activesupport (3.2.13)
|
19
|
+
i18n (= 0.6.1)
|
20
|
+
multi_json (~> 1.0)
|
21
|
+
addressable (2.3.4)
|
22
|
+
aruba (0.5.1)
|
23
|
+
childprocess (~> 0.3.6)
|
24
|
+
cucumber (>= 1.1.1)
|
25
|
+
rspec-expectations (>= 2.7.0)
|
26
|
+
builder (3.1.4)
|
27
|
+
childprocess (0.3.6)
|
28
|
+
ffi (~> 1.0, >= 1.0.6)
|
29
|
+
cocoapods (0.16.4)
|
30
|
+
activesupport (~> 3.2.6)
|
31
|
+
colored (~> 1.2)
|
32
|
+
escape (~> 0.0.4)
|
33
|
+
faraday (~> 0.8.1)
|
34
|
+
json (~> 1.7.3)
|
35
|
+
octokit (~> 1.7)
|
36
|
+
open4 (~> 1.3.0)
|
37
|
+
rake (~> 10.0.0)
|
38
|
+
xcodeproj (~> 0.5.0)
|
39
|
+
colored (1.2)
|
40
|
+
cucumber (1.2.1)
|
41
|
+
builder (>= 2.1.2)
|
42
|
+
diff-lcs (>= 1.1.3)
|
43
|
+
gherkin (~> 2.11.0)
|
44
|
+
json (>= 1.4.6)
|
45
|
+
diff-lcs (1.1.3)
|
46
|
+
escape (0.0.4)
|
47
|
+
faraday (0.8.7)
|
48
|
+
multipart-post (~> 1.1)
|
49
|
+
faraday_middleware (0.9.0)
|
50
|
+
faraday (>= 0.7.4, < 0.9)
|
51
|
+
ffi (1.2.0)
|
52
|
+
gherkin (2.11.5)
|
53
|
+
json (>= 1.4.6)
|
54
|
+
haml (3.1.8)
|
55
|
+
hashie (2.0.4)
|
56
|
+
i18n (0.6.1)
|
57
|
+
json (1.7.5)
|
58
|
+
multi_json (1.7.2)
|
59
|
+
multipart-post (1.2.0)
|
60
|
+
mustache (0.99.4)
|
61
|
+
netrc (0.7.7)
|
62
|
+
octokit (1.24.0)
|
63
|
+
addressable (~> 2.2)
|
64
|
+
faraday (~> 0.8)
|
65
|
+
faraday_middleware (~> 0.9)
|
66
|
+
hashie (~> 2.0)
|
67
|
+
multi_json (~> 1.3)
|
68
|
+
netrc (~> 0.7.7)
|
69
|
+
open4 (1.3.0)
|
70
|
+
rake (10.0.4)
|
71
|
+
rspec (2.12.0)
|
72
|
+
rspec-core (~> 2.12.0)
|
73
|
+
rspec-expectations (~> 2.12.0)
|
74
|
+
rspec-mocks (~> 2.12.0)
|
75
|
+
rspec-core (2.12.0)
|
76
|
+
rspec-expectations (2.12.0)
|
77
|
+
diff-lcs (~> 1.1.3)
|
78
|
+
rspec-mocks (2.12.0)
|
79
|
+
rubyzip (0.9.9)
|
80
|
+
sass (3.2.8)
|
81
|
+
selenium-webdriver (2.32.1)
|
82
|
+
childprocess (>= 0.2.5)
|
83
|
+
multi_json (~> 1.0)
|
84
|
+
rubyzip
|
85
|
+
websocket (~> 1.0.4)
|
86
|
+
thor (0.16.0)
|
87
|
+
watir-webdriver (0.6.3)
|
88
|
+
selenium-webdriver (>= 2.18.0)
|
89
|
+
websocket (1.0.7)
|
90
|
+
xcodeproj (0.5.5)
|
91
|
+
activesupport (~> 3.2.13)
|
92
|
+
colored (~> 1.2)
|
93
|
+
|
94
|
+
PLATFORMS
|
95
|
+
ruby
|
96
|
+
|
97
|
+
DEPENDENCIES
|
98
|
+
aruba
|
99
|
+
calatrava!
|
100
|
+
rspec
|
data/README.md
CHANGED
@@ -1,14 +1,18 @@
|
|
1
|
+
[](https://travis-ci.org/calatrava/calatrava)
|
2
|
+
|
1
3
|
# Dependencies
|
2
4
|
|
3
5
|
It should be as easy to get started with Calatrava as
|
4
6
|
possible. However, there are still a small number of dependencies that
|
5
7
|
need to be installed beforehand.
|
6
8
|
|
7
|
-
*Note*: Currently, Calatrava only supports development
|
8
|
-
will probably always be the case for iOS apps
|
9
|
-
|
9
|
+
*Note*: Currently, Calatrava only supports fully-featured development
|
10
|
+
on Macs. This will probably always be the case for iOS apps. Linux
|
11
|
+
support for Android and Mobile Web is in progress. Windows is a
|
10
12
|
little further off. Pull requests welcomed.
|
11
13
|
|
14
|
+
## Mac dependencies
|
15
|
+
|
12
16
|
1. [rvm](http://rvm.io). Calatrava projects are configured to use
|
13
17
|
`rvm` by default. You could use Calatrava without it, but you will
|
14
18
|
then need to make sure you have Ruby 1.9.3 installed however you
|
@@ -32,6 +36,37 @@ need to be installed beforehand.
|
|
32
36
|
5. [Node.js](http://nodejs.org/). Only used to run tests, not part of
|
33
37
|
any production code. Again, if you're on a Mac I recommend
|
34
38
|
installing using homebrew.
|
39
|
+
|
40
|
+
## Linux
|
41
|
+
|
42
|
+
*Note:* Support for Linux is limited to running the Android and Mobile
|
43
|
+
Web builds. Please note the following restrictions:
|
44
|
+
|
45
|
+
* If you generate a new project using calatrava, the iOS part will not
|
46
|
+
be generated.
|
47
|
+
* Only the `web:\*` and `droid:\*` and `kernel:\*` tasks will work.
|
48
|
+
|
49
|
+
Here are the dependencies for Linux:
|
50
|
+
|
51
|
+
1. [rvm](http://rvm.io). Calatrava projects are configured to use
|
52
|
+
`rvm` by default. You could use Calatrava without it, but you will
|
53
|
+
then need to make sure you have Ruby 1.9.3 installed however you
|
54
|
+
prefer.
|
55
|
+
|
56
|
+
2. [bundler](http://gembundler.com/). Install in either your `rvm`
|
57
|
+
global gemset, or wherever else makes sense for your setup.
|
58
|
+
|
59
|
+
4. [Android SDK](http://developer.android.com/sdk/index.html) —
|
60
|
+
the `android` command is expected to be on the path.
|
61
|
+
|
62
|
+
5. [Node.js](http://nodejs.org/) and [NPM](https://npmjs.org/). Only
|
63
|
+
used to run tests, not part of any production code.
|
64
|
+
|
65
|
+
6. [Apache2](http://httpd.apache.org/). Used for hosting the mobile
|
66
|
+
web versions. Some flavours of Linux will not come with this
|
67
|
+
shipped. On Ubuntu systems, this can be installed with the
|
68
|
+
following command: `sudo apt-get install apache2` (from
|
69
|
+
[this page](https://help.ubuntu.com/10.04/serverguide/httpd.html))
|
35
70
|
|
36
71
|
# Getting Started
|
37
72
|
|
@@ -76,3 +111,4 @@ mobile app.
|
|
76
111
|
The `--dev` switch will create a new project that refers to the
|
77
112
|
`calatrava` gem as a path on disk. This is much more convenient if
|
78
113
|
you're experimenting with Calatrava, or working on it.
|
114
|
+
|
data/Rakefile
CHANGED
@@ -16,6 +16,10 @@ namespace :test do
|
|
16
16
|
Cucumber::Rake::Task.new(:wip) do |t|
|
17
17
|
t.cucumber_opts = "features --format pretty --tags @wip --wip"
|
18
18
|
end
|
19
|
+
|
20
|
+
Cucumber::Rake::Task.new(:travis) do |t|
|
21
|
+
t.cucumber_opts = "features --format pretty --tags @travis"
|
22
|
+
end
|
19
23
|
end
|
20
24
|
end
|
21
25
|
|
data/Vagrantfile
ADDED
@@ -0,0 +1,106 @@
|
|
1
|
+
# -*- mode: ruby -*-
|
2
|
+
# vi: set ft=ruby :
|
3
|
+
|
4
|
+
Vagrant.configure("2") do |config|
|
5
|
+
config.vm.box = "quantal64"
|
6
|
+
|
7
|
+
# The url from where the 'config.vm.box' box will be fetched if it
|
8
|
+
# doesn't already exist on the user's system.
|
9
|
+
config.vm.box_url = "http://cloud-images.ubuntu.com/vagrant/quantal/current/quantal-server-cloudimg-amd64-vagrant-disk1.box"
|
10
|
+
|
11
|
+
# Create a forwarded port mapping which allows access to a specific port
|
12
|
+
# within the machine from a port on the host machine. In the example below,
|
13
|
+
# accessing "localhost:8080" will access port 80 on the guest machine.
|
14
|
+
# config.vm.network :forwarded_port, guest: 80, host: 8080
|
15
|
+
|
16
|
+
# Create a private network, which allows host-only access to the machine
|
17
|
+
# using a specific IP.
|
18
|
+
# config.vm.network :private_network, ip: "192.168.33.10"
|
19
|
+
|
20
|
+
# Create a public network, which generally matched to bridged network.
|
21
|
+
# Bridged networks make the machine appear as another physical device on
|
22
|
+
# your network.
|
23
|
+
# config.vm.network :public_network
|
24
|
+
|
25
|
+
# Share an additional folder to the guest VM. The first argument is
|
26
|
+
# the path on the host to the actual folder. The second argument is
|
27
|
+
# the path on the guest to mount the folder. And the optional third
|
28
|
+
# argument is a set of non-required options.
|
29
|
+
# config.vm.synced_folder "../data", "/vagrant_data"
|
30
|
+
|
31
|
+
# Provider-specific configuration so you can fine-tune various
|
32
|
+
# backing providers for Vagrant. These expose provider-specific options.
|
33
|
+
# Example for VirtualBox:
|
34
|
+
#
|
35
|
+
# config.vm.provider :virtualbox do |vb|
|
36
|
+
# # Don't boot with headless mode
|
37
|
+
# vb.gui = true
|
38
|
+
#
|
39
|
+
# # Use VBoxManage to customize the VM. For example to change memory:
|
40
|
+
# vb.customize ["modifyvm", :id, "--memory", "1024"]
|
41
|
+
# end
|
42
|
+
#
|
43
|
+
# View the documentation for the provider you're using for more
|
44
|
+
# information on available options.
|
45
|
+
|
46
|
+
# Enable provisioning with Puppet stand alone. Puppet manifests
|
47
|
+
# are contained in a directory path relative to this Vagrantfile.
|
48
|
+
# You will need to create the manifests directory and a manifest in
|
49
|
+
# the file base.pp in the manifests_path directory.
|
50
|
+
#
|
51
|
+
# An example Puppet manifest to provision the message of the day:
|
52
|
+
#
|
53
|
+
# # group { "puppet":
|
54
|
+
# # ensure => "present",
|
55
|
+
# # }
|
56
|
+
# #
|
57
|
+
# # File { owner => 0, group => 0, mode => 0644 }
|
58
|
+
# #
|
59
|
+
# # file { '/etc/motd':
|
60
|
+
# # content => "Welcome to your Vagrant-built virtual machine!
|
61
|
+
# # Managed by Puppet.\n"
|
62
|
+
# # }
|
63
|
+
#
|
64
|
+
# config.vm.provision :puppet do |puppet|
|
65
|
+
# puppet.manifests_path = "manifests"
|
66
|
+
# puppet.manifest_file = "init.pp"
|
67
|
+
# end
|
68
|
+
|
69
|
+
# Enable provisioning with chef solo, specifying a cookbooks path, roles
|
70
|
+
# path, and data_bags path (all relative to this Vagrantfile), and adding
|
71
|
+
# some recipes and/or roles.
|
72
|
+
#
|
73
|
+
# config.vm.provision :chef_solo do |chef|
|
74
|
+
# chef.cookbooks_path = "../my-recipes/cookbooks"
|
75
|
+
# chef.roles_path = "../my-recipes/roles"
|
76
|
+
# chef.data_bags_path = "../my-recipes/data_bags"
|
77
|
+
# chef.add_recipe "mysql"
|
78
|
+
# chef.add_role "web"
|
79
|
+
#
|
80
|
+
# # You may also specify custom JSON attributes:
|
81
|
+
# chef.json = { :mysql_password => "foo" }
|
82
|
+
# end
|
83
|
+
|
84
|
+
# Enable provisioning with chef server, specifying the chef server URL,
|
85
|
+
# and the path to the validation key (relative to this Vagrantfile).
|
86
|
+
#
|
87
|
+
# The Opscode Platform uses HTTPS. Substitute your organization for
|
88
|
+
# ORGNAME in the URL and validation key.
|
89
|
+
#
|
90
|
+
# If you have your own Chef Server, use the appropriate URL, which may be
|
91
|
+
# HTTP instead of HTTPS depending on your configuration. Also change the
|
92
|
+
# validation key to validation.pem.
|
93
|
+
#
|
94
|
+
# config.vm.provision :chef_client do |chef|
|
95
|
+
# chef.chef_server_url = "https://api.opscode.com/organizations/ORGNAME"
|
96
|
+
# chef.validation_key_path = "ORGNAME-validator.pem"
|
97
|
+
# end
|
98
|
+
#
|
99
|
+
# If you're using the Opscode platform, your validator client is
|
100
|
+
# ORGNAME-validator, replacing ORGNAME with your organization name.
|
101
|
+
#
|
102
|
+
# If you have your own Chef Server, the default validation client name is
|
103
|
+
# chef-validator, unless you changed the configuration.
|
104
|
+
#
|
105
|
+
# chef.validation_client_name = "ORGNAME-validator"
|
106
|
+
end
|
data/calatrava.gemspec
CHANGED
@@ -1,6 +1,7 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
1
|
+
# -*- encoding: utf-8; mode: ruby -*-
|
2
2
|
$:.push File.expand_path("../lib", __FILE__)
|
3
3
|
require "calatrava/version"
|
4
|
+
require "calatrava/platform"
|
4
5
|
|
5
6
|
Gem::Specification.new do |s|
|
6
7
|
s.name = "calatrava"
|
@@ -21,13 +22,17 @@ Gem::Specification.new do |s|
|
|
21
22
|
s.add_development_dependency "rspec"
|
22
23
|
s.add_development_dependency "aruba"
|
23
24
|
|
24
|
-
s.add_runtime_dependency "rake", "
|
25
|
+
s.add_runtime_dependency "rake", ">= 0.9.5"
|
26
|
+
|
25
27
|
s.add_runtime_dependency "thor", "~> 0.16.0"
|
26
28
|
s.add_runtime_dependency "haml", "~> 3.1.7"
|
27
29
|
s.add_runtime_dependency "sass", "~> 3.2.3"
|
28
30
|
s.add_runtime_dependency "mustache", "~> 0.99.4"
|
29
31
|
s.add_runtime_dependency "cucumber", "~> 1.2.1"
|
30
32
|
s.add_runtime_dependency "watir-webdriver", "~> 0.6.1"
|
31
|
-
|
32
|
-
|
33
|
+
|
34
|
+
if Calatrava.platform == :mac
|
35
|
+
s.add_runtime_dependency "xcodeproj", ">= 0.4.0"
|
36
|
+
s.add_runtime_dependency "cocoapods", "~> 0.16.0"
|
37
|
+
end
|
33
38
|
end
|
data/features/cli.feature
CHANGED
@@ -12,3 +12,12 @@ Feature: Command line interface
|
|
12
12
|
Given an empty file named "alt-template-file"
|
13
13
|
When I run `calatrava create project --template alt-template-file`
|
14
14
|
Then the output should contain "template must be a directory"
|
15
|
+
|
16
|
+
Scenario: Android command-line parameters
|
17
|
+
When I run `calatrava create droid_test --android-api 17`
|
18
|
+
Then the exit status should be 0
|
19
|
+
And a file named "droid_test/droid/droid_test/project.properties" should exist
|
20
|
+
And the file "droid_test/droid/droid_test/project.properties" should contain:
|
21
|
+
"""
|
22
|
+
target=android-17
|
23
|
+
"""
|
data/features/project.feature
CHANGED
@@ -11,13 +11,24 @@ Feature: Projects
|
|
11
11
|
| simple |
|
12
12
|
| simple/config |
|
13
13
|
| simple/droid |
|
14
|
-
| simple/features |
|
15
14
|
| simple/ios |
|
16
15
|
| simple/kernel |
|
17
16
|
| simple/shell |
|
18
17
|
| simple/web |
|
19
18
|
And the file "simple/calatrava.yml" should contain "project_name: simple"
|
20
19
|
|
20
|
+
Scenario Outline: Should allow app types to be excluded
|
21
|
+
When I run `calatrava create simple --no-<app>`
|
22
|
+
Then the exit status should be 0
|
23
|
+
And a directory named "simple/<app>" should not exist
|
24
|
+
|
25
|
+
Examples:
|
26
|
+
| app |
|
27
|
+
| ios |
|
28
|
+
| droid |
|
29
|
+
| web |
|
30
|
+
|
31
|
+
@travis
|
21
32
|
Scenario: Templates can have deeply nested directories and files
|
22
33
|
Given the following directories exist:
|
23
34
|
| nested |
|
@@ -27,7 +38,7 @@ Feature: Projects
|
|
27
38
|
| nested/sample |
|
28
39
|
| nested/.config |
|
29
40
|
| nested/dir/sub/sample2 |
|
30
|
-
When I run `calatrava create proj --template nested`
|
41
|
+
When I run `calatrava create proj --template nested --no-droid --no-ios`
|
31
42
|
Then the following directories should exist:
|
32
43
|
| proj |
|
33
44
|
| proj/dir |
|
@@ -37,12 +48,13 @@ Feature: Projects
|
|
37
48
|
| proj/.config |
|
38
49
|
| proj/dir/sub/sample2 |
|
39
50
|
|
51
|
+
@travis
|
40
52
|
Scenario: Template files can themselves be templates
|
41
53
|
Given a directory named "template"
|
42
54
|
And a file named "template/.tmpl.calatrava" with:
|
43
55
|
"""
|
44
56
|
Sample {{ project_name }}
|
45
57
|
"""
|
46
|
-
When I run `calatrava create templatized --template template`
|
58
|
+
When I run `calatrava create templatized --template template --no-droid --no-ios`
|
47
59
|
Then a file named "templatized/.tmpl" should exist
|
48
60
|
And the file "templatized/.tmpl" should contain "Sample templatized"
|
data/features/sample_app.feature
CHANGED
@@ -4,6 +4,7 @@ Feature: Sample App
|
|
4
4
|
As a new calatrava user
|
5
5
|
I want a new Calatrava project to contain a working sample app
|
6
6
|
|
7
|
+
@travis
|
7
8
|
Scenario: Create a sample project
|
8
9
|
When I create an app named "sample"
|
9
10
|
And I cd to "sample"
|
@@ -11,6 +12,7 @@ Feature: Sample App
|
|
11
12
|
And I run `rake bootstrap`
|
12
13
|
Then the exit status should be 0
|
13
14
|
|
15
|
+
@travis
|
14
16
|
Scenario: Sample app kernel
|
15
17
|
When I create an app named "sample"
|
16
18
|
And I cd to "sample"
|
@@ -19,9 +21,11 @@ Feature: Sample App
|
|
19
21
|
And I run `rake kernel:spec`
|
20
22
|
Then the exit status should be 0
|
21
23
|
|
24
|
+
@travis
|
22
25
|
Scenario: Mobile web sample app
|
23
26
|
When I create an app named "sample"
|
24
27
|
And I cd to "sample"
|
25
28
|
And I run `bundle install`
|
26
29
|
And I run `rake bootstrap`
|
27
|
-
And I
|
30
|
+
And I run `rake web:build`
|
31
|
+
Then the exit status should be 0
|
data/features/support/env.rb
CHANGED
@@ -5,7 +5,7 @@ ENV['PATH'] = "#{File.expand_path(File.dirname(__FILE__) + '/../../bin')}#{File:
|
|
5
5
|
ENV['RUBYLIB'] = "#{File.expand_path(File.dirname(__FILE__) + '/../../lib')}#{File::PATH_SEPARATOR}#{ENV['RUBYLIB']}"
|
6
6
|
|
7
7
|
Before do
|
8
|
-
@aruba_timeout_seconds =
|
8
|
+
@aruba_timeout_seconds = 80
|
9
9
|
end
|
10
10
|
|
11
11
|
class CalatravaWorld
|
data/lib/calatrava/apache.rb
CHANGED
@@ -18,21 +18,10 @@ module Calatrava
|
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
-
def apache_dir
|
22
|
-
|
23
|
-
end
|
24
|
-
|
25
|
-
def apache_public_dir
|
26
|
-
"#{apache_dir}/public"
|
27
|
-
end
|
28
|
-
|
29
|
-
def apache_logs_dir
|
30
|
-
"#{apache_dir}/logs"
|
31
|
-
end
|
32
|
-
|
33
|
-
def apache_conf_dir
|
34
|
-
"#{apache_dir}/conf"
|
35
|
-
end
|
21
|
+
def apache_dir ; "web/apache" ; end
|
22
|
+
def apache_public_dir ; "#{apache_dir}/public" ; end
|
23
|
+
def apache_logs_dir ; "#{apache_dir}/logs" ; end
|
24
|
+
def apache_conf_dir ; "#{apache_dir}/conf"; end
|
36
25
|
|
37
26
|
def httpd(command, opts = {})
|
38
27
|
ensure_httpd
|
@@ -47,19 +36,7 @@ module Calatrava
|
|
47
36
|
end
|
48
37
|
end
|
49
38
|
|
50
|
-
def configure_apache
|
51
|
-
cp Calatrava::Project.current.config.path("httpd.conf"), apache_conf_dir
|
52
|
-
end
|
53
|
-
|
54
39
|
def launch_apache(opts = {})
|
55
|
-
if !opts[:background]
|
56
|
-
puts
|
57
|
-
puts "\t\t" + "*"*40
|
58
|
-
puts "\t\t" + "*** STARTING APACHE ON PORT 8888 ***"
|
59
|
-
puts "\t\t" + "*"*40
|
60
|
-
puts
|
61
|
-
end
|
62
|
-
|
63
40
|
httpd :start, opts
|
64
41
|
end
|
65
42
|
|
@@ -93,14 +70,16 @@ module Calatrava
|
|
93
70
|
end
|
94
71
|
end
|
95
72
|
|
73
|
+
file "#{apache_conf_dir}/httpd.conf" => 'configure:calatrava_env' do
|
74
|
+
cp Calatrava::Project.current.config.path("httpd.conf"), apache_conf_dir
|
75
|
+
end
|
76
|
+
|
96
77
|
desc "launch a non-daemon apache instance on port 8888 which will serve our local app and also proxy to backend services"
|
97
|
-
task :start => ['web:build', apache_public_dir, apache_logs_dir] do
|
98
|
-
configure_apache
|
78
|
+
task :start => ['web:build', apache_public_dir, apache_logs_dir, "#{apache_conf_dir}/httpd.conf"] do
|
99
79
|
launch_apache
|
100
80
|
end
|
101
81
|
|
102
|
-
task :background => ['web:build', apache_public_dir, apache_logs_dir] do
|
103
|
-
configure_apache
|
82
|
+
task :background => ['web:build', apache_public_dir, apache_logs_dir, "#{apache_conf_dir}/httpd.conf"] do
|
104
83
|
launch_apache :background => true
|
105
84
|
end
|
106
85
|
|
data/lib/calatrava/app.rb
CHANGED
@@ -5,13 +5,17 @@ module Calatrava
|
|
5
5
|
class App < Thor
|
6
6
|
|
7
7
|
desc "create <project-name>", "creates a new calatrava app project"
|
8
|
-
method_options :template => File.join(File.dirname(__FILE__), 'templates'),
|
8
|
+
method_options :template => File.join(File.dirname(__FILE__), 'templates'),
|
9
|
+
:dev => false,
|
10
|
+
:'no-ios' => false,
|
11
|
+
:'no-droid' => false,
|
12
|
+
:'no-web' => false,
|
13
|
+
:'android-api' => '17'
|
9
14
|
def create(project_name)
|
10
15
|
die "template must exist" unless File.exist?(options[:template])
|
11
16
|
die "template must be a directory" unless File.directory?(options[:template])
|
12
17
|
|
13
|
-
proj = ProjectScript.new(project_name,
|
14
|
-
:is_dev => options.dev?)
|
18
|
+
proj = ProjectScript.new(project_name, options)
|
15
19
|
proj.create(Template.new(options[:template]))
|
16
20
|
end
|
17
21
|
|