From cb405efd266c172fb38de168b12edb960a1ef9a9 Mon Sep 17 00:00:00 2001 From: shmyga Date: Wed, 25 Apr 2018 22:04:09 +0300 Subject: [PATCH] added readme and example --- .gitignore | 3 +- README.md | 170 +++++++++++++++++++++++++++++++++++++ example/gulpfile.js | 52 ++++++++++++ example/package.json | 14 +++ example/resources/icon.jpg | Bin 0 -> 16228 bytes example/src/Main.hx | 14 +++ haxetool/core.js | 4 +- haxetool/haxe.js | 4 +- package.json | 4 +- template/project.xml | 1 + 10 files changed, 261 insertions(+), 5 deletions(-) create mode 100644 README.md create mode 100644 example/gulpfile.js create mode 100644 example/package.json create mode 100644 example/resources/icon.jpg create mode 100644 example/src/Main.hx diff --git a/.gitignore b/.gitignore index c08ef50..d6e6f8f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ /.idea -/node_modules +node_modules/ +target/ package-lock.json \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..108492e --- /dev/null +++ b/README.md @@ -0,0 +1,170 @@ +# Gulp HaXe Tool + +## Introducing + +### Dignity + +* Automatically download HaXe SDK, FlashPlayer, Adobe AIR SDK. +* Universal project config for simple HaXe build and OpenFL build. +* Branch project config for many build presets (many OpenFL apps in one project). +* Packaging linux output in DEB. +* Create html wrapper for flash output. + +### Flaws + +* Hardcode build output in {projectDir}/target (need param in Project.Config). +* HTML5 run output not caught. +* Adobe AIR Build System in progress. +* Packaging Windows application in progress (with [Inno Setup](http://www.jrsoftware.org/isinfo.php)) + +### Dependencies + +* [Neko VM](https://nekovm.org/download/) + + +## API + +### Project.Config + +#### constructor + +* **meta**: meta information + * **title**: application title + * **filename**: application filename + * **icon**: path to icon file + * **pack**: package name for OpenFL + * **author**: author name for DEB packaging + * **company**: company name for OpenFL + * **version**: application version +* **name**: name for output directory +* **libs**: list of haxe dependencies +* **sources**: list of HaXe sources +* **assets**: list of resources +* **main**: main class name +* **macros**: list of macros + +### Project + +#### constructor + +* **buildSystem**: Project.BuildSystem +* **platforms**: Project.Platform (list supported) +* **config**: Project.Config + +#### bind + +* **module** + +create gulp tasks in module: + +``` +::build +::run +::pack (optionaly if supported) +``` + +eg: ```gulp app:flash:build``` + +## Example + +[package.json](example/package.json) +```json +{ + "name": "app", + "version": "0.0.1", + "devDependencies": { + "gulp": "^4.0.0", + "gulp-clean": "^0.4.0", + "gulp-haxetool": "file:../../gulp-haxetool" + }, + "haxeDependencies": { + "lime": "6.0.1", + "openfl": "7.0.0", + "hxcpp": "3.4.188" + } +} +``` + +[src/Main.hx](example/src/Main.hx) +```haxe +import flash.display.Shape; +import flash.Lib; + +class Main { + + public static function main() { + trace("Hello world!"); + var shape = new Shape(); + shape.graphics.beginFill(0x00ff00); + shape.graphics.drawCircle(50, 50, 20); + shape.graphics.endFill(); + Lib.current.addChild(shape); + } +} +``` + +[gulpfile.js](example/gulpfile.js) +```javascript +const gulp = require('gulp'); +const gulpClean = require('gulp-clean'); +const packageInfo = require('./package.json'); +const {Sdk, Haxe, Project} = require('gulp-haxetool'); + +//Sdk.dir = '/opt/sdk'; + +exports.clean = function clean() { + return gulp.src('target/*', {read: false}).pipe(gulpClean()); +}; + +exports.install = function install() { + const haxe = new Haxe(); + return haxe.prepare().then(() => haxe.install(packageInfo.haxeDependencies)); +}; + +const config = new Project.Config({ + meta: { + title: 'Application', + filename: 'app', + icon: './resources/icon.jpg', + pack: 'com.example', + author: 'Anonim ', + company: 'Any company', + version: packageInfo.version, + }, + name: 'app', + libs: packageInfo.haxeDependencies, + sources: ['src'], + assets: ['resources'], + main: 'Main', +}); + +const project = new Project( + Project.BuildSystem.OPENFL, + [ + Project.Platform.FLASH, + Project.Platform.HTML5, + Project.Platform.LINUX, + ], + config +).bind(module, gulp); + +module.exports.default = gulp.series( + exports.clean, + exports.install, + module.exports['app:flash:build'], + module.exports['app:html5:build'], + module.exports['app:linux:build'], + module.exports['app:flash:pack'], + module.exports['app:linux:pack'], +); +``` + +Build for all platforms: `gulp default` + +Build app for specific platform: `gulp app:flash:build` + +Run flash app in flashplayer: `gulp app:flash:run` + +Run html5 app in brpwser: `gulp app:html5:tun` + +Run linux app native: `gulp app:linux:run` diff --git a/example/gulpfile.js b/example/gulpfile.js new file mode 100644 index 0000000..91fb93c --- /dev/null +++ b/example/gulpfile.js @@ -0,0 +1,52 @@ +const gulp = require('gulp'); +const gulpClean = require('gulp-clean'); +const packageInfo = require('./package.json'); +const {Sdk, Haxe, Project} = require('gulp-haxetool'); + +//Sdk.dir = '/opt/sdk'; + +exports.clean = function clean() { + return gulp.src('target/*', {read: false}).pipe(gulpClean()); +}; + +exports.install = function install() { + const haxe = new Haxe(); + return haxe.prepare().then(() => haxe.install(packageInfo.haxeDependencies)); +}; + +const config = new Project.Config({ + meta: { + title: 'Application', + filename: 'app', + icon: './resources/icon.jpg', + pack: 'com.example', + author: 'Anonim ', + company: 'Any company', + version: packageInfo.version, + }, + name: 'app', + libs: packageInfo.haxeDependencies, + sources: ['src'], + assets: ['resources'], + main: 'Main', +}); + +const project = new Project( + Project.BuildSystem.OPENFL, + [ + Project.Platform.FLASH, + Project.Platform.HTML5, + Project.Platform.LINUX, + ], + config +).bind(module, gulp); + +module.exports.default = gulp.series( + exports.clean, + exports.install, + module.exports['app:flash:build'], + module.exports['app:html5:build'], + module.exports['app:linux:build'], + module.exports['app:flash:pack'], + module.exports['app:linux:pack'], +); \ No newline at end of file diff --git a/example/package.json b/example/package.json new file mode 100644 index 0000000..967c901 --- /dev/null +++ b/example/package.json @@ -0,0 +1,14 @@ +{ + "name": "app", + "version": "0.0.1", + "devDependencies": { + "gulp": "^4.0.0", + "gulp-clean": "^0.4.0", + "gulp-haxetool": "file:../../gulp-haxetool" + }, + "haxeDependencies": { + "lime": "6.0.1", + "openfl": "7.0.0", + "hxcpp": "3.4.188" + } +} diff --git a/example/resources/icon.jpg b/example/resources/icon.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7dbb6efb1571c97053b428de4f1ba0504d792c8a GIT binary patch literal 16228 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 m path.resolve(cwd, item))); if (params.assets !== undefined) this.assets = this.assets.concat(params.assets.map(item => path.resolve(cwd, item))); if (params.libs !== undefined) this.libs = this.libs.concat(Array.isArray(params.libs) ? params.libs : Object.entries(params.libs).map(([k, v]) => ({name: k, version: v}))); if (params.macros !== undefined) this.macros = this.macros.concat(params.macros); if (params.meta !== undefined) this.meta = {...this.meta, ...params.meta}; + if (this.meta.icon) this.icon = path.resolve(cwd, this.meta.icon) } branch(params) { diff --git a/haxetool/haxe.js b/haxetool/haxe.js index 1bc1d71..4974ead 100755 --- a/haxetool/haxe.js +++ b/haxetool/haxe.js @@ -22,7 +22,9 @@ class Haxe extends Sdk { return `${this.binPath}/${name}.exe`; } else if (Sdk.System.isLinux) { const binPath = `${this.binPath}/${name}`; - fs.chmodSync(binPath, 0o755); + if (fs.existsSync(binPath)) { + fs.chmodSync(binPath, 0o755); + } return binPath; } throw `Unsupported OS: ${os.type()}`; diff --git a/package.json b/package.json index ead7cc3..663f663 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "gulp-haxetool", - "version": "0.0.7", - "description": "Haxe tool for gulp", + "version": "0.0.8", + "description": "HaXe Tool for Gulp", "main": "index.js", "dependencies": { "ansi-colors": "^1.1.0", diff --git a/template/project.xml b/template/project.xml index 3f960e5..0a7e1bb 100644 --- a/template/project.xml +++ b/template/project.xml @@ -2,6 +2,7 @@ + <% sources.forEach(function(item) { %> <% }); %> <% assets.forEach(function(item) { %>