Skip to content
This repository was archived by the owner on Apr 4, 2019. It is now read-only.

[WIP] Globals + canary bower artifact repo deployment #300

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,5 @@ before_script:
after_script:
- sleep 10
- killall sc
after_success:
- "./bin/bower_build"
64 changes: 47 additions & 17 deletions Brocfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ var removeFile = require('broccoli-file-remover');
var transpileES6 = require('broccoli-es6-module-transpiler');
var jsHint = require('broccoli-jshint');
var handlebarsInlinedTrees = require('./build-support/handlebars-inliner');
var getVersion = require('git-repo-version');
var gitVersion = require('git-repo-version');

var packages = require('./packages');

Expand All @@ -18,11 +18,11 @@ var demos = new Funnel('demos', {
destDir: '/demos'
});

var ES6Tokenizer = new Funnel(bower+'/simple-html-tokenizer/lib/');
var ES6Tokenizer = new Funnel(bower + '/simple-html-tokenizer/lib/');
dependableTrees['simple-html-tokenizer'] = ES6Tokenizer;

var npm = 'node_modules';
var MorphRange = new Funnel(npm+'/morph-range/lib/');
var MorphRange = new Funnel(npm + '/morph-range/lib/');
dependableTrees['morph-range'] = MorphRange;

dependableTrees['syntax-handlebars-inliner'] = handlebarsInlinedTrees.syntax;
Expand Down Expand Up @@ -53,7 +53,7 @@ function getPackageTrees(packageName, dependencies) {
// main lib file
libTrees.push(getPackageLibTree(packageName));
// dependencies of lib
for (var i=0;i<(dependencies.lib || []).length;i++) {
for (var i = 0; i < (dependencies.lib || []).length; i++) {
var depName = dependencies.lib[i];
libTrees.push(getDependencyTree(depName));
}
Expand All @@ -65,7 +65,7 @@ function getPackageTrees(packageName, dependencies) {
destDir: '/' + packageName + '-tests'
}));
// dependencies of tests
for (var i=0;i<(dependencies.test || []).length;i++) {
for (var i = 0; i < (dependencies.test || []).length; i++) {
var depName = dependencies.test[i];
testTrees.push(getDependencyTree(depName));
}
Expand All @@ -78,12 +78,12 @@ function getPackageTrees(packageName, dependencies) {

var test = new Funnel('tests', {
srcDir: '/',
files: [ 'index.html', 'packages-config.js' ],
files: ['index.html', 'packages-config.js'],
destDir: '/tests'
});

test = replace(test, {
files: [ 'tests/packages-config.js' ],
files: ['tests/packages-config.js'],
pattern: {
match: /\{\{PACKAGES_CONFIG\}\}/g,
replacement: JSON.stringify(packages, null, 2)
Expand All @@ -92,7 +92,7 @@ test = replace(test, {

var loader = new Funnel(bower, {
srcDir: '/loader',
files: [ 'loader.js' ],
files: ['loader.js'],
destDir: '/assets'
});

Expand All @@ -103,7 +103,7 @@ var qunit = new Funnel(bower, {

var cliSauce = new Funnel('./node_modules/ember-cli-sauce', {
srcDir: '/vendor',
files: [ 'export-test-results.js' ],
files: ['export-test-results.js'],
destDir: '/tests'
});

Expand Down Expand Up @@ -137,8 +137,8 @@ for (var packageName in packages.dependencies) {
});
trees.push(pickedCjsLib);
var pickedCjsMain = new Funnel(transpiledCjsLib, {
srcDir: packageName+'.js',
destDir: '/cjs/' + packageName+'.js'
srcDir: packageName + '.js',
destDir: '/cjs/' + packageName + '.js'
});
trees.push(pickedCjsMain);

Expand All @@ -148,7 +148,7 @@ for (var packageName in packages.dependencies) {
var jsHintLibTree = new Funnel(libTree, {
include: [new RegExp(packageName), new RegExp(packageName + '.+\.js$')],
exclude: [/htmlbars-(syntax|util)\/handlebars/],
destDir: packageName+'-tests/'
destDir: packageName + '-tests/'
});
jsHintLibTree = removeFile(jsHintLibTree, {
srcFile: 'htmlbars-runtime.js' // Uses ES6 `module` syntax. Breaks jsHint
Expand All @@ -167,16 +167,46 @@ for (var packageName in packages.dependencies) {
// CJS tests
var transpiledCjsTests = transpileES6(mergeTrees(testTrees), { type: 'cjs' });
var movedCjsTests = new Funnel(transpiledCjsTests, {
srcDir: packageName+'-tests/',
destDir: '/cjs/'+packageName+"-tests/"
srcDir: packageName + '-tests/',
destDir: '/cjs/' + packageName + '-tests/'
});
trees.push(movedCjsTests);
}

trees = replace(mergeTrees(trees, {overwrite: true}), {
files: [ 'es6/htmlbars.js', 'es6/htmlbars-compiler/template-compiler.js', 'amd/htmlbars.js', 'cjs/htmlbars.js' ],
// Bower
var generatedBowerConfig = new Funnel('build-support', {
srcDir: '/',
destDir: '/',
files: ['bower.json']
});
generatedBowerConfig = replace(generatedBowerConfig, {
files: ['bower.json'],
pattern: {
match: /BOWER_VERSION_STRING_PLACEHOLDER/,
replacement: function() {
// remove leading `v` (since by default our tags use a `v` prefix)
return gitVersion().replace(/^v/, '');
}
}
});
trees.push(generatedBowerConfig);

// Globals lib
var globalizedBuildSupport = new Funnel('build-support', {
srcDir: '/',
files: ['iife-start.js', 'globalize.js', 'iife-stop.js'],
destDir: '/'
});
var globalsLib = concatFiles(mergeTrees([globalizedBuildSupport].concat(trees), { overwrite: true }), {
inputFiles: ['iife-start.js', 'assets/loader.js', 'amd/htmlbars.amd.js', 'globalize.js', 'iife-stop.js'],
outputFile: '/globals/htmlbars.js'
});
trees.push(globalsLib);

trees = replace(mergeTrees(trees, { overwrite: true }), {
files: ['es6/htmlbars.js', 'es6/htmlbars-compiler/template-compiler.js', 'amd/htmlbars.js', 'cjs/htmlbars.js'],
patterns: [
{ match: /VERSION_STRING_PLACEHOLDER/g, replacement: getVersion() }
{ match: /VERSION_STRING_PLACEHOLDER/g, replacement: gitVersion() }
]
});

Expand Down
48 changes: 48 additions & 0 deletions bin/bower_build
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
#!/usr/bin/env bash

git config --global user.email "[email protected]"
git config --global user.name "Tomster"

# Repos
SRC_REPO="tildeio/htmlbars"
BUILDS_REPO="tildeio/htmlbars-builds"

# Name of source repo as it should appear in commit messages
SRC_NAME="htmlbars"

# User associated with the GH_TOKEN
USER="tildeio"

# Ensure that no directories within dist will be copied when script is run.
INCLUDED_FILES=`find find -maxdepth 1 -type f`

echo -e "SRC_REPO: ${SRC_REPO}\n"
echo -e "BUILDS_REPO: ${BUILDS_REPO}\n"
echo -e "INCLUDED_FILES: ${INCLUDED_FILES}\n"
echo -e "CURRENT_BRANCH: ${TRAVIS_BRANCH}\n"

# Set channel to publish to. If no suitable branch is found exit successfully.
case $TRAVIS_BRANCH in
"master" )
CHANNEL="canary" ;;
* )
echo "Not a bower release branch. Exiting!"
exit 0 ;;
esac
echo -e "CHANNEL: ${CHANNEL}\n"

# Send output to /dev/null to prevent GH_TOKEN leak on error
git clone --branch ${CHANNEL} https://${USER}:${GH_TOKEN}@github.com/${BUILDS_REPO}.git bower_build &> /dev/null
rm -rf bower_build/*
cp -r ${INCLUDED_FILES} bower_build/
cd bower_build
git remote rm origin

# Send output to /dev/null to prevent GH_TOKEN leak on error
git remote add origin https://${USER}:${GH_TOKEN}@github.com/${BUILDS_REPO}.git &> /dev/null
git add -A
git commit -m "${SRC_NAME}: https://github.com/${SRC_REPO}/commits/${TRAVIS_COMMIT}."

# Send output to /dev/null to prevent GH_TOKEN leak on error
git push -fq origin ${CHANNEL} &> /dev/null
echo -e "Done\n"
8 changes: 8 additions & 0 deletions build-support/bower.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"name": "htmlbars",
"version": "BOWER_VERSION_STRING_PLACEHOLDER",
"license": "MIT",
"ignore": [],
"dependencies": {},
"devDependencies": {}
}
1 change: 1 addition & 0 deletions build-support/globalize.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
this.HTMLBars = requireModule("htmlbars");
1 change: 1 addition & 0 deletions build-support/iife-start.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
(function() {
1 change: 1 addition & 0 deletions build-support/iife-stop.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
}).call(this);