Skip to content
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
23 changes: 23 additions & 0 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name: Lint CI

on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]

jobs:
build:

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 22
cache: 'npm'
- run: npm install
- run: npm run lint

34 changes: 34 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
name: Test CI

on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]

jobs:
build:

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 22
cache: 'npm'
- name: Setup Chrome
uses: browser-actions/setup-chrome@v2
id: setup-chrome
with:
install-dependencies: true
- run: npm install
- run: npm run build
- name: Run headless test
uses: coactions/setup-xvfb@v1
with:
run: npm run test-travis
env:
CHROME_BIN: ${{ steps.setup-chrome.outputs.chrome-path }}

3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

# node-waf configuration
.lock-wscript
/.lock-waf_darwin_build
/.lock-waf_*_build

# Dependency directory
# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git
Expand All @@ -13,4 +13,5 @@
/tmp/
/src/js/index.js
/dist.zip
/dist/
/build/
12 changes: 0 additions & 12 deletions .travis.yml

This file was deleted.

80 changes: 50 additions & 30 deletions gulpfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,10 @@ var stringify = require('stringify');
var del = require('del');
var inline = require('gulp-inline');
var htmlmin = require('gulp-htmlmin');
var sass = require('gulp-sass');
var sass = require('gulp-sass')(require('sass'));
var sourceMaps = require('gulp-sourcemaps');
var autoprefixer = require('gulp-autoprefixer');
var uglify = require('gulp-uglify');
var sassify = require('sassify');
var autoprefixify = require('./src/scripts/vendor/autoprefixify');
var insert = require('gulp-insert');
var clayPackage = require('./package.json');
Expand All @@ -22,21 +21,12 @@ var sassIncludePaths = [].concat(
'src/styles'
);

var sassifyOptions = {
base64Encode: false,
sourceMap: false,
sourceMapEmbed: false,
sourceMapContents: false,
outputStyle: 'compact',
includePaths: sassIncludePaths
};

var autoprefixerOptions = {
browsers: ['Android 4', 'iOS 8'],
cascade: false
};

var stringifyOptions = ['.html', '.tpl'];
var stringifyOptions = ['.html', '.tpl', '.css'];
var versionMessage = '/* Clay - https://github.com/pebble/clay - Version: ' +
clayPackage.version +
' - Build Date: ' + new Date().toISOString() + ' */\n';
Expand All @@ -45,29 +35,44 @@ gulp.task('clean-js', function() {
return del(['tmp/config-page.js']);
});

gulp.task('js', ['clean-js'], function() {
/**
* @returns {string}
*/
function taskJs() {
return browserify('src/scripts/config-page.js', { debug: true })
.transform('deamdify')
.bundle()
.pipe(source('config-page.js'))
.pipe(gulp.dest('./tmp/'));
});
}

gulp.task('js', gulp.series('clean-js', taskJs));

gulp.task('clean-sass', function() {
return del(['tmp/config-page.scss']);
});
gulp.task('sass', ['clean-sass'], function() {
gulp.src('./src/styles/config-page.scss')

/**
* @returns {string}
*/
function taskSass() {
return gulp.src(['./src/styles/config-page.scss',
'./src/styles/clay/components/*.scss'])
.pipe(sourceMaps.init())
.pipe(sass({
includePaths: sassIncludePaths
loadPaths: sassIncludePaths
}).on('error', sass.logError))
.pipe(autoprefixer(autoprefixerOptions))
.pipe(sourceMaps.write('./'))
.pipe(gulp.dest('tmp'));
});
}

gulp.task('inlineHtml', ['js', 'sass'], function() {
gulp.task('sass', gulp.series('clean-sass', taskSass));

/**
* @returns {string}
*/
function taskInlineHtml() {
return gulp.src('src/config-page.html')
.pipe(inline())
.pipe(htmlmin({
Expand All @@ -80,17 +85,21 @@ gulp.task('inlineHtml', ['js', 'sass'], function() {
minifyCSS: true
}))
.pipe(gulp.dest('tmp/'));
});
}

gulp.task('clay', ['inlineHtml'], function() {
gulp.task('inlineHtml', gulp.series('js', 'sass', taskInlineHtml));

/**
* @returns {string}
*/
function taskClay() {
return browserify('index.js', {
debug: false,
standalone: clayPackage.name
})
.transform('deamdify')
.transform(stringify(stringifyOptions))
.transform(sassify, sassifyOptions)
.transform(autoprefixify, autoprefixerOptions)
// .transform(autoprefixify, autoprefixerOptions)
.require(require.resolve('./index'), {expose: clayPackage.name})
.exclude('message_keys')
.bundle()
Expand All @@ -101,24 +110,35 @@ gulp.task('clay', ['inlineHtml'], function() {
}))
.pipe(insert.prepend(versionMessage))
.pipe(gulp.dest('./src/js'));
});
}

gulp.task('clay', gulp.series('inlineHtml', taskClay));

gulp.task('dev-js', ['js', 'sass'], function() {
/**
* @returns {string}
*/
function taskDevJs() {
return browserify('dev/dev.js', { debug: true })
.transform(stringify(stringifyOptions))
.transform('deamdify')
.transform(sassify, sassifyOptions)
.transform(autoprefixify, autoprefixerOptions)
.ignore('message_keys')
.bundle()
.pipe(source('dev.js'))
.pipe(gulp.dest('./tmp/'));
});
}

gulp.task('dev-js', gulp.series('js', 'sass', taskDevJs));

gulp.task('default', ['clay']);
gulp.task('default', gulp.series('clay'));

gulp.task('dev', ['dev-js'], function() {
/**
* @returns {string}
*/
function taskDev() {
gulp.watch('src/styles/**/*.scss', ['sass']);
gulp.watch(['src/scripts/**/*.js', 'src/templates/**/*.tpl'], ['js']);
gulp.watch(['src/**', 'dev/**/*.js'], ['dev-js']);
});
}

gulp.task('dev', gulp.series('dev-js', taskDev));
Loading