NAME
Rex::Apache::Build - Build your WebApp Package
DESCRIPTION
With this module you can prepare your WebApp for deployment.
SYNOPSIS
yui_path
"./yuicompressor-2.4.6.jar"
;
get_version_from
"webapp/lib/MyApp.pm"
,
qr{\$VERSION=([^;]+);}
;
get_version_from
"webapp/index.php"
,
qr{\$VERSION=([^;]+);}
;
task
"build"
,
sub
{
sprocketize;
sprocketize
"app/assets/javascript/*.js"
,
out
=>
"public/js/sprockets.js"
;
coffee;
coffee
"app/assets/coffee"
,
out
=>
"public/js"
;
sass;
sass
"app/assets/stylesheets"
,
out
=>
"public/stylesheets"
;
yui;
yui
compress
=>
"file1.js"
,
"file2.js"
,
"file3.css"
;
yui
compress
=>
glob
(
"public/javascript/*.js"
),
glob
(
"public/css/*.css"
);
build;
build
"webapp"
,
source
=>
"webapp/"
,
version
=>
"1.0"
;
};
EXPORTED FUNCTIONS
- yui_path($path_to_yui_compressor)
-
This function sets the path to the yui_compressor. If a relative path is given it will search from the path where the Rexfile is in.
- coffee_path($path_to_coffee)
-
This function sets the path to the coffee compiler. If a relative path is given it will search from the path where the Rexfile is in.
- sprocketize_path($path_to_sprocketize)
-
This function sets the path to the sprocketize compiler. If a relative path is given it will search from the path where the Rexfile is in.
- sass_path($path_to_sass)
-
This function sets the path to the sass compiler. If a relative path is given it will search from the path where the Rexfile is in.
- yui($action, @files)
-
Run a yui command.
task
"build"
,
sub
{
# this will compress the given files
yui
compress
=>
"file1.js"
,
"file2.js"
, ...;
# yui without any parameters will compress all files in public/javascripts
yui;
};
- build([$name, %options])
-
This function builds your package. Currently only tar.gz packages are supported.
# this will a package of the current directory named after the
# directory of the Rexfile and append the version provided by
# get_version_from() function
# This function builds a tar.gz archive.
task
"build"
,
sub
{
build;
};
# this will build a package of the current directory named "my-web-app" and
# append the version provided by get_version_from() function.
task
"build"
,
sub
{
build
"my-web-app"
;
};
# this function will build a package of the directory "html", name it
# "my-web-app" and append the version "1.0" to it.
task
"build"
,
sub
{
build
"my-web-app"
,
path
=>
"html"
,
version
=>
"1.0"
,
exclude
=> [
"yuicompressor.jar"
,
"foobar.html"
],
type
=>
"tgz"
;
};
- get_version_from($file, $regexp)
-
Get the version out of a file.
- sprocketize($path_to_js_files, %option)
-
This function calls the sprocketize command with the given options.
task
"build"
,
sub
{
sprocketize
"app/javascript/*.js"
,
include
=> [
qw|app/javascripts vendor/sprockets/prototype/src|
],
asset_root
=>
"public/js"
,
out
=>
"public/js/sprockets.js"
;
# to include more use an arrayRef
sprocketize [
"app/javascript/*.js"
,
"app/javascript/po/*.js"
],
include
=> [
qw|app/javascripts vendor/sprockets/prototype/src|
],
asset_root
=>
"public/js"
,
out
=>
"public/js/sprockets.js"
;
# if called without parameters
sprocketize;
# it will use the following defaults:
# - javascript (sprockets) in assets/javascripts/*.js
# - include assets/javascripts
# - asset_root public
# - out public/${name_of_directory_where_Rexfile_lives}.js
};
- coffee($path, %options)
-
Compile coffee files to javascript.
task
"build"
,
sub
{
# this command will build all files in "coffeesrc" and
# write the output to "javascripts"
coffee
"coffeesrc"
,
out
=>
"javascripts"
;
# without parameters it will build all files in assets/coffee
# and write the output to public/javascripts.
coffee;
};
- sass($input_dir, %option)
-
This command will compile all sass files in $input_dir.
task
"build"
,
sub
{
# this command will compile all sass files from app/assets/stylesheets
# and put the output into public/stylesheets.
sass
"app/assets/stylesheets"
,
out
=>
"public/stylesheets"
;
# The default is to build all files in assets/sass and put the output
# into public/css.
sass;
};