Changes build process from ant to fquery.

This commit is contained in:
Lars Jung 2012-08-02 14:35:25 +02:00
parent 3349108f7e
commit 8682e202a9
11 changed files with 186 additions and 181 deletions

18
.gitignore vendored
View File

@ -1,20 +1,4 @@
# Build folders to ignore
build
build.local.*
release
# Sublime
local
*.sublime-*
# Numerous always-ignore extensions
*.diff
*.err
*.orig
*.log
*.rej
*.swo
*.swp
*.vi
*~
*.sass-cache

View File

@ -1,15 +0,0 @@
# project
project.name = h5ai
project.version = 0.21-pre
# src
src.dir = src
# build
build.dir = build
release.dir = release
# tools
tool.wepp = wepp
tool.jshint = jshint

117
build.xml
View File

@ -1,117 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<project
name="h5ai"
basedir="."
default="release"
>
<target name="init">
<property file="build.properties" />
<tstamp>
<format property="build.stamp" pattern="yyyy-MM-dd-HHmmss" />
</tstamp>
<property name="build.label" value="${project.name} ${project.version} b${build.stamp}" />
<echo>Build: ${build.label}</echo>
</target>
<target name="clean" depends="init">
<delete dir="${build.dir}" />
<delete dir="${release.dir}" />
</target>
<target name="build-prepare" depends="clean">
<mkdir dir="${build.dir}" />
<copy todir="${build.dir}">
<fileset dir="${src.dir}" />
</copy>
<copy todir="${build.dir}/_h5ai">
<fileset file="LICENSE.txt" />
<fileset file="README.md" />
</copy>
<replace dir="${build.dir}">
<replacefilter token="%BUILD%" value="${build.label}" />
<replacefilter token="%BUILD_NAME%" value="${project.name}" />
<replacefilter token="%BUILD_VERSION%" value="${project.version}" />
<replacefilter token="%BUILD_STAMP%" value="${build.stamp}" />
</replace>
</target>
<target name="build" depends="build-prepare">
<wepp-dir-min dir="${build.dir}/_h5ai/css" todir="${build.dir}/_h5ai/css" />
<wepp-dir-min dir="${build.dir}/_h5ai/js" todir="${build.dir}/_h5ai/js" />
</target>
<target name="build-uncompressed" depends="build-prepare">
<wepp-dir dir="${build.dir}/_h5ai/css" todir="${build.dir}/_h5ai/css" />
<wepp-dir dir="${build.dir}/_h5ai/js" todir="${build.dir}/_h5ai/js" />
</target>
<target name="release" depends="build">
<mkdir dir="${release.dir}" />
<zip destfile="${release.dir}/${project.name}-${project.version}.zip" basedir="${build.dir}" />
</target>
<target name="jshint" depends="init">
<apply executable="${tool.jshint}" verbose="true" parallel="true">
<srcfile />
<arg line="--config jshint.json" />
<arg line="--show-non-errors" />
<fileset dir="${src.dir}/_h5ai/js">
<patternset>
<include name="**/*.js" />
<exclude name="inc/lib/**/*" />
<exclude name="modernizr*" />
</patternset>
</fileset>
</apply>
</target>
<macrodef name="wepp-args">
<attribute name="args" default="" />
<sequential>
<exec executable="${tool.wepp}" failonerror="true">
<arg line="@{args}" />
</exec>
</sequential>
</macrodef>
<macrodef name="wepp">
<attribute name="file" />
<attribute name="tofile" />
<sequential>
<wepp-args args="--nc --inFile '@{file}' --outFile '@{toFile}'" />
</sequential>
</macrodef>
<macrodef name="wepp-min">
<attribute name="file" />
<attribute name="tofile" />
<sequential>
<wepp-args args="--inFile '@{file}' --outFile '@{toFile}'" />
</sequential>
</macrodef>
<macrodef name="wepp-dir">
<attribute name="dir" />
<attribute name="todir" />
<sequential>
<wepp-args args="--nc --inDir '@{dir}' --outDir '@{todir}'" />
<delete dir="@{todir}/inc" >
<fileset dir="." includes="@{todir}/**/*.less" />
</delete>
</sequential>
</macrodef>
<macrodef name="wepp-dir-min">
<attribute name="dir" />
<attribute name="todir" />
<sequential>
<wepp-args args="--inDir '@{dir}' --outDir '@{todir}'" />
<delete dir="@{todir}/inc" >
<fileset dir="." includes="@{todir}/**/*.less" />
</delete>
</sequential>
</macrodef>
</project>

View File

@ -1,21 +0,0 @@
{
// Enforcing Options
"bitwise": true,
"curly": true,
"eqeqeq": true,
"forin": true,
"latedef": true,
"newcap": true,
"noempty": true,
"plusplus": true,
"trailing": true,
"undef": true,
// Environments
"browser": true,
// Globals
"predef": [
"modulejs"
]
}

174
makefile.js Normal file
View File

@ -0,0 +1,174 @@
/*jshint node: true */
'use strict';
var path = require('path'),
child_process = require('child_process'),
moment = require('moment');
var version = '0.21-dev-30',
root = path.resolve(__dirname),
src = path.join(root, 'src'),
build = path.join(root, 'build'),
jshint = {
// Enforcing Options
bitwise: true,
curly: true,
eqeqeq: true,
forin: true,
latedef: true,
newcap: true,
noempty: true,
plusplus: true,
trailing: true,
undef: true,
// Environments
browser: true,
// Globals
predef: [
'modulejs'
]
},
mapper = function (blob) {
return blob.source.replace(src, build).replace(/\.less$/, '.css');
},
mapperRoot = function (blob) {
return blob.source.replace(root, build + '/_h5ai');
};
module.exports = function (make, $) {
var stamp, replacements;
make.defaults('build');
make.before = function () {
stamp = moment();
replacements = {
version: version,
stamp: stamp.format('YYYY-MM-DD HH:mm:ss')
};
$.info({ method: 'before', message: version + ' ' + replacements.stamp.human });
};
make.target('inc', [], 'increase build number, if any')
.sync(function () {
var re = /-(\d+)$/;
var match = version.match(re);
if (match) {
var number = parseInt(match[1], 10) + 1;
var newVersion = version.replace(re, '-' + number);
$('makefile.js').replace([[version, newVersion]]).write($.OVERWRITE, 'makefile.js');
version = newVersion;
replacements.version = version;
$.ok({ method: 'inc', message: 'version is now ' + version });
}
});
make.target('clean', [], 'delete build folder')
.sync(function () {
$.rmfr($.I_AM_SURE, build);
});
make.target('lint', [], 'lint all JavaScript files with JSHint')
.sync(function () {
$(src + '/_h5ai/js: **/*.js, ! *.min.js, ! inc/lib/**')
.jshint(jshint);
});
make.target('build', [], 'build all updated files')
.sync(function () {
$(src + ': _h5ai/js/*.js')
.modified(mapper, $(src + ': _h5ai/js/**'))
.includify()
.uglifyjs()
.write($.OVERWRITE, mapper);
$(src + ': _h5ai/css/*.less')
.modified(mapper, $(src + ': _h5ai/css/**'))
.less()
.cssmin()
.write($.OVERWRITE, mapper);
$(src + ': **, **/*/.*, ! _h5ai/js/**, ! _h5ai/css/**')
.modified(mapper)
.mustache(replacements)
.write($.OVERWRITE, mapper);
$(root + ': README*, LICENSE*')
.modified(mapperRoot)
.write($.OVERWRITE, mapperRoot);
});
make.target('build-uncompressed', [], 'build all updated files without compression')
.sync(function () {
$(src + ': _h5ai/js/*.js')
.modified(mapper, $(src + ': _h5ai/js/**'))
.includify()
// .uglifyjs()
.write($.OVERWRITE, mapper);
$(src + ': _h5ai/css/*.less')
.modified(mapper, $(src + ': _h5ai/css/**'))
.less()
// .cssmin()
.write($.OVERWRITE, mapper);
$(src + ': **, **/*/.*, ! _h5ai/js/**, ! _h5ai/css/**')
.modified(mapper)
.mustache(replacements)
.write($.OVERWRITE, mapper);
$(root + ': README*, LICENSE*')
.modified(mapperRoot)
.write($.OVERWRITE, mapperRoot);
});
make.target('release', ['inc', 'clean', 'build'], 'create a zipball')
.async(function (done, fail) {
var target = path.join(build, 'h5ai-' + version + '.zip'),
command = 'zip -ro ' + target + ' _h5ai',
options = { cwd: build };
child_process.exec(command, options, function (error, stdout, stderr) {
if (error === null) {
$.ok({ method: 'zip', message: target });
done();
} else {
$.error({ method: 'zip', message: stderr });
fail();
}
});
});
};

View File

@ -1,5 +1,5 @@
################################
# h5ai %BUILD_VERSION%
# h5ai {{version}}
# customized .htaccess
################################
@ -19,5 +19,5 @@ IndexOptions NameWidth=*
IndexOptions SuppressDescription
IndexOptions SuppressHTMLPreamble
IndexOptions SuppressRules
IndexOptions Type=text/html;h5ai=%BUILD_VERSION%
IndexOptions Type=text/html;h5ai={{version}}
IndexOptions XHTML

View File

@ -24,7 +24,7 @@
</div>
<div id="bottombar" class="clearfix">
<span class="left">
<a id="h5ai-reference" href="http://larsjung.de/h5ai" title="h5ai project page">h5ai %BUILD_VERSION%</a>
<a id="h5ai-reference" href="http://larsjung.de/h5ai" title="h5ai project page">h5ai {{version}}</a>
<span class="hideOnJs noJsMsg"> ⚡ JavaScript is disabled! ⚡ </span>
<span class="oldBrowser"> ⚡ Some features disabled! Works best in <a href="http://browsehappy.com">modern browsers</a>. ⚡ </span>
</span>

View File

@ -1,5 +1,5 @@
/*
* h5ai %BUILD_VERSION%
* h5ai {{version}}
*
* Configuration
* options, types and localization

View File

@ -1,6 +1,6 @@
<?php
/*
* h5ai %BUILD_VERSION%
* h5ai {{version}}
*
* PHP Configuration
* filesystem paths and file ignore rules

View File

@ -6,7 +6,7 @@
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>h5ai %BUILD_VERSION% server details</title>
<title>h5ai {{version}} server details</title>
<meta name="description" content="h5ai server details">
<meta name="viewport" content="width=device-width">
<link rel="shortcut icon" type="image/png" href="/_h5ai/images/h5ai-16x16.png">
@ -17,8 +17,8 @@
</head>
<body id="h5ai-info">
<h1>h5ai</h1>
<span class="build-version">version %BUILD_VERSION%</span>
<span class="build-stamp">%BUILD_STAMP%</span>
<span class="build-version">version {{version}}</span>
<span class="build-stamp">{{stamp}}</span>
<h2>server supports</h2>
<ul id="tests">
<li class="test" data-id="php"><span class="test-label">php version</span><span class="test-result">?</span>
@ -54,7 +54,7 @@
</ul>
<div id="bottombar" class="clearfix">
<span class="left">
<a id="h5ai-reference" href="http://larsjung.de/h5ai" title="h5ai project page">h5ai %BUILD_VERSION%</a>
<a id="h5ai-reference" href="http://larsjung.de/h5ai" title="h5ai project page">h5ai {{version}}</a>
<span class="hideOnJs noJsMsg"> ⚡ JavaScript is disabled! ⚡ </span>
<span class="oldBrowser"> ⚡ Some features disabled! Works best in <a href="http://browsehappy.com">modern browsers</a>. ⚡ </span>
</span>

View File

@ -1,4 +1,4 @@
<?php header("Content-type: text/html;h5ai=%BUILD_VERSION%"); ?>
<?php header("Content-type: text/html;h5ai={{version}}"); ?>
<!DOCTYPE html>
<!--[if lt IE 7]> <html class="no-js ie6 oldie" lang="en"> <![endif]-->
<!--[if IE 7]> <html class="no-js ie7 oldie" lang="en"> <![endif]-->
@ -25,7 +25,7 @@
</div>
<div id="bottombar" class="clearfix">
<span class="left">
<a id="h5ai-reference" href="http://larsjung.de/h5ai" title="h5ai project page">h5ai %BUILD_VERSION%</a>
<a id="h5ai-reference" href="http://larsjung.de/h5ai" title="h5ai project page">h5ai {{version}}</a>
<span class="hideOnJs noJsMsg"> JavaScript is disabled! </span>
<span class="oldBrowser"> Some features disabled! Works best in <a href="http://browsehappy.com">modern browsers</a>. </span>
</span>