From 141193e4c8e5a38f2f92d6113727a94605782391 Mon Sep 17 00:00:00 2001 From: Joshua Granick Date: Wed, 22 Oct 2014 14:19:56 -0700 Subject: [PATCH] Add support for 'openfl' style command --- tools/CommandLineTools.hx | 125 +++++++++++++++++++++++--------- tools/helpers/FlashHelper.hx | 2 +- tools/helpers/LogHelper.hx | 8 +- tools/helpers/StringHelper.hx | 16 ++++ tools/project/PlatformTarget.hx | 18 ++--- tools/utils/CreateTemplate.hx | 76 +++++++++---------- tools/utils/PlatformSetup.hx | 99 ++++++++++++++++++++++++- 7 files changed, 257 insertions(+), 87 deletions(-) diff --git a/tools/CommandLineTools.hx b/tools/CommandLineTools.hx index d23f02c23..c51833677 100644 --- a/tools/CommandLineTools.hx +++ b/tools/CommandLineTools.hx @@ -25,6 +25,10 @@ import utils.PlatformSetup; class CommandLineTools { + public static var commandName = "lime"; + public static var defaultLibrary = "lime"; + public static var defaultLibraryName = "Lime"; + private var additionalArguments:Array ; private var command:String; private var debug:Bool; @@ -59,6 +63,15 @@ class CommandLineTools { processArguments (); version = getVersion (); + if (targetFlags.exists ("openfl")) { + + LogHelper.accentColor = "\x1b[36;1m"; + commandName = "openfl"; + defaultLibrary = "openfl"; + defaultLibraryName = "OpenFL"; + + } + if (LogHelper.verbose && command != "") { displayInfo (); @@ -618,7 +631,22 @@ class CommandLineTools { if (sampleName == null) { - if (FileSystem.exists (PathHelper.combine (PathHelper.getHaxelib (new Haxelib ("lime")), "samples/" + sampleName))) { + var sampleExists = false; + var defines = new Map (); + defines.set ("create", 1); + var project = HXProject.fromHaxelib (new Haxelib (defaultLibrary), defines); + + for (samplePath in project.samplePaths) { + + if (FileSystem.exists (PathHelper.combine (samplePath, sampleName))) { + + sampleExists = true; + + } + + } + + if (sampleExists) { CreateTemplate.createSample (words, userDefines); @@ -628,7 +656,7 @@ class CommandLineTools { } else if (projectName == "" || projectName == null) { - CreateTemplate.listSamples ("lime", userDefines); + CreateTemplate.listSamples (defaultLibrary, userDefines); } else { @@ -646,7 +674,7 @@ class CommandLineTools { } else { - CreateTemplate.listSamples ("lime", userDefines); + CreateTemplate.listSamples (defaultLibrary, userDefines); } @@ -658,16 +686,16 @@ class CommandLineTools { displayInfo (); LogHelper.println (""); - LogHelper.println (" \x1b[32;1mUsage:\x1b[0m \x1b[1mlime\x1b[0m setup \x1b[3;37m(target)\x1b[0m"); - LogHelper.println (" \x1b[32;1mUsage:\x1b[0m \x1b[1mlime\x1b[0m clean|update|build|run|test|display \x1b[3;37m\x1b[0m (target) \x1b[3;37m[options]\x1b[0m"); - LogHelper.println (" \x1b[32;1mUsage:\x1b[0m \x1b[1mlime\x1b[0m create (template) \x1b[3;37m(directory)\x1b[0m"); - LogHelper.println (" \x1b[32;1mUsage:\x1b[0m \x1b[1mlime\x1b[0m rebuild (target)\x1b[3;37m,(target),...\x1b[0m"); - LogHelper.println (" \x1b[32;1mUsage:\x1b[0m \x1b[1mlime\x1b[0m install|remove|upgrade "); - LogHelper.println (" \x1b[32;1mUsage:\x1b[0m \x1b[1mlime\x1b[0m help"); + LogHelper.println (" " + LogHelper.accentColor + "Usage:\x1b[0m \x1b[1m" + commandName + "\x1b[0m setup \x1b[3;37m(target)\x1b[0m"); + LogHelper.println (" " + LogHelper.accentColor + "Usage:\x1b[0m \x1b[1m" + commandName + "\x1b[0m clean|update|build|run|test|display \x1b[3;37m\x1b[0m (target) \x1b[3;37m[options]\x1b[0m"); + LogHelper.println (" " + LogHelper.accentColor + "Usage:\x1b[0m \x1b[1m" + commandName + "\x1b[0m create (template) \x1b[3;37m(directory)\x1b[0m"); + LogHelper.println (" " + LogHelper.accentColor + "Usage:\x1b[0m \x1b[1m" + commandName + "\x1b[0m rebuild (target)\x1b[3;37m,(target),...\x1b[0m"); + LogHelper.println (" " + LogHelper.accentColor + "Usage:\x1b[0m \x1b[1m" + commandName + "\x1b[0m install|remove|upgrade "); + LogHelper.println (" " + LogHelper.accentColor + "Usage:\x1b[0m \x1b[1m" + commandName + "\x1b[0m help"); LogHelper.println (""); - LogHelper.println (" \x1b[32;1mCommands:\x1b[0m "); + LogHelper.println (" " + LogHelper.accentColor + "Commands:" + LogHelper.resetColor); LogHelper.println (""); - LogHelper.println (" \x1b[1msetup\x1b[0m -- Setup Lime or a specific platform"); + LogHelper.println (" \x1b[1msetup\x1b[0m -- Setup " + defaultLibraryName + " or a specific platform"); LogHelper.println (" \x1b[1mclean\x1b[0m -- Remove the target build directory if it exists"); LogHelper.println (" \x1b[1mupdate\x1b[0m -- Copy assets for the specified project/target"); LogHelper.println (" \x1b[1mbuild\x1b[0m -- Compile and package for the specified project/target"); @@ -681,7 +709,7 @@ class CommandLineTools { LogHelper.println (" \x1b[1mupgrade\x1b[0m -- Upgrade a library from haxelib"); LogHelper.println (" \x1b[1mhelp\x1b[0m -- Show this information"); LogHelper.println (""); - LogHelper.println (" \x1b[32;1mTargets:\x1b[0m "); + LogHelper.println (" " + LogHelper.accentColor + "Targets:" + LogHelper.resetColor); LogHelper.println (""); LogHelper.println (" \x1b[1mandroid\x1b[0m -- Create an Android application"); LogHelper.println (" \x1b[1mblackberry\x1b[0m -- Create a BlackBerry application"); @@ -695,7 +723,7 @@ class CommandLineTools { LogHelper.println (" \x1b[1mwebos\x1b[0m -- Create a webOS application"); LogHelper.println (" \x1b[1mwindows\x1b[0m -- Create a Windows application"); LogHelper.println (""); - LogHelper.println (" \x1b[32;1mOptions:\x1b[0m "); + LogHelper.println (" " + LogHelper.accentColor + "Options:" + LogHelper.resetColor); LogHelper.println (""); LogHelper.println (" \x1b[1m-D\x1b[0;3mvalue\x1b[0m -- Specify a define to use when processing other commands"); LogHelper.println (" \x1b[1m-debug\x1b[0m -- Use debug configuration instead of release"); @@ -712,7 +740,7 @@ class CommandLineTools { LogHelper.println (" \x1b[3m(html5)\x1b[0m \x1b[1m-minify\x1b[0m -- Minify output using the Google Closure compiler"); LogHelper.println (" \x1b[3m(html5)\x1b[0m \x1b[1m-minify -yui\x1b[0m -- Minify output using the YUI compressor"); LogHelper.println (""); - LogHelper.println (" \x1b[32;1mProject Overrides:\x1b[0m "); + LogHelper.println (" " + LogHelper.accentColor + "Project Overrides:" + LogHelper.resetColor); LogHelper.println (""); LogHelper.println (" \x1b[1m--app-\x1b[0;3moption=value\x1b[0m -- Override a project setting"); LogHelper.println (" \x1b[1m--meta-\x1b[0;3moption=value\x1b[0m -- Override a project setting"); @@ -736,21 +764,40 @@ class CommandLineTools { } - LogHelper.println ("\x1b[32;1m ___ \x1b[0m"); - LogHelper.println ("\x1b[32m/\x1b[1m\\_ \\ __ \x1b[0m"); - LogHelper.println ("\x1b[32m\\//\x1b[1m\\ \\ \x1b[0m\x1b[32m/\x1b[1m\\\x1b[0m\x1b[32m_\x1b[1m\\ ___ ___ __ \x1b[0m"); - LogHelper.println ("\x1b[32m \\ \x1b[1m\\ \\ \x1b[0m\x1b[32m\\/\x1b[1m\\ \\ /' __` __`\\ /'__`\\ \x1b[0m"); - LogHelper.println ("\x1b[32m \\\x1b[1m_\\ \\_\x1b[0m\x1b[32m\\ \x1b[1m\\ \\\x1b[0m\x1b[32m/\x1b[1m\\ \\\x1b[0m\x1b[32m/\x1b[1m\\ \\\x1b[0m\x1b[32m/\x1b[1m\\ \\\x1b[0m\x1b[32m/\x1b[1m\\ __/ \x1b[0m"); - LogHelper.println ("\x1b[32m /\x1b[1m\\____\\\x1b[0m\x1b[32m\\ \x1b[1m\\_\\ \\_\\ \\_\\ \\_\\ \\____\\\x1b[0m"); - LogHelper.println ("\x1b[32m \\/____/ \\/_/\\/_/\\/_/\\/_/\\/____/\x1b[0m"); - - LogHelper.println (""); - LogHelper.println ("\x1b[1mLime Command-Line Tools\x1b[0;1m (" + version + ")\x1b[0m"); - + if (targetFlags.exists ("openfl")) { + + LogHelper.println (" .d88 88b. \x1b[0m\x1b[1;36m888888b 888 \x1b[0m"); + LogHelper.println ("d88P\" \"Y88b \x1b[0m\x1b[1;36m888 888 \x1b[0m"); + LogHelper.println ("888 888 \x1b[0m\x1b[1;36m888 888 \x1b[0m"); + LogHelper.println ("888 888 88888b. .d88b. 88888b. \x1b[0m\x1b[1;36m8888888 888 \x1b[0m"); + LogHelper.println ("888 888 888 \"88b d8P Y8b 888 \"88b \x1b[0m\x1b[1;36m888 888 \x1b[0m"); + LogHelper.println ("888 888 888 888 88888888 888 888 \x1b[0m\x1b[1;36m888 888 \x1b[0m"); + LogHelper.println ("Y88b. .d88P 888 d88P Y8b. 888 888 \x1b[0m\x1b[1;36m888 888 \x1b[0m"); + LogHelper.println (" \"Y88 88P\" 88888P\" \"Y8888 888 888 \x1b[0m\x1b[1;36m888 \"Y888P \x1b[0m"); + LogHelper.println (" 888 "); + LogHelper.println (" 888 \x1b[0m"); + + LogHelper.println (""); + LogHelper.println ("\x1b[1mOpenFL Command-Line Tools\x1b[0;1m (" + getVersion (new Haxelib ("openfl")) + "-L" + StringHelper.generateUUID (5, null, StringHelper.generateHashCode (version)) + ")\x1b[0m"); + + } else { + + LogHelper.println ("\x1b[32;1m ___ \x1b[0m"); + LogHelper.println ("\x1b[32m/\x1b[1m\\_ \\ __ \x1b[0m"); + LogHelper.println ("\x1b[32m\\//\x1b[1m\\ \\ \x1b[0m\x1b[32m/\x1b[1m\\\x1b[0m\x1b[32m_\x1b[1m\\ ___ ___ __ \x1b[0m"); + LogHelper.println ("\x1b[32m \\ \x1b[1m\\ \\ \x1b[0m\x1b[32m\\/\x1b[1m\\ \\ /' __` __`\\ /'__`\\ \x1b[0m"); + LogHelper.println ("\x1b[32m \\\x1b[1m_\\ \\_\x1b[0m\x1b[32m\\ \x1b[1m\\ \\\x1b[0m\x1b[32m/\x1b[1m\\ \\\x1b[0m\x1b[32m/\x1b[1m\\ \\\x1b[0m\x1b[32m/\x1b[1m\\ \\\x1b[0m\x1b[32m/\x1b[1m\\ __/ \x1b[0m"); + LogHelper.println ("\x1b[32m /\x1b[1m\\____\\\x1b[0m\x1b[32m\\ \x1b[1m\\_\\ \\_\\ \\_\\ \\_\\ \\____\\\x1b[0m"); + LogHelper.println ("\x1b[32m \\/____/ \\/_/\\/_/\\/_/\\/_/\\/____/\x1b[0m"); + + LogHelper.println (""); + LogHelper.println ("\x1b[1mLime Command-Line Tools\x1b[0;1m (" + version + ")\x1b[0m"); + + } if (showHint) { - LogHelper.println ("Use \x1b[3mlime setup\x1b[0m to configure platforms or \x1b[3mlime help\x1b[0m for more commands"); + LogHelper.println ("Use \x1b[3m" + commandName + " setup\x1b[0m to configure platforms or \x1b[3m" + commandName + " help\x1b[0m for more commands"); } @@ -953,7 +1000,7 @@ class CommandLineTools { if (FileSystem.exists (config)) { - LogHelper.info ("", "\x1b[32;1mReading HXCPP config: " + config + "\x1b[0m"); + LogHelper.info ("", LogHelper.accentColor + "Reading HXCPP config: " + config + LogHelper.resetColor); return new ProjectXMLParser (config); @@ -968,9 +1015,15 @@ class CommandLineTools { } - private function getVersion ():String { + private function getVersion (haxelib:Haxelib = null):String { - var json = Json.parse (File.getContent (PathHelper.getHaxelib (new Haxelib ("lime")) + "/haxelib.json")); + if (haxelib == null) { + + haxelib = new Haxelib ("lime"); + + } + + var json = Json.parse (File.getContent (PathHelper.getHaxelib (haxelib) + "/haxelib.json")); return json.version; } @@ -978,7 +1031,7 @@ class CommandLineTools { private function initializeProject (project:HXProject = null, targetName:String = ""):HXProject { - LogHelper.info ("", "\x1b[32;1mInitializing project...\x1b[0m"); + LogHelper.info ("", LogHelper.accentColor + "Initializing project..." + LogHelper.resetColor); var projectFile = ""; @@ -1025,7 +1078,7 @@ class CommandLineTools { } else { - LogHelper.info ("", "\x1b[32;1mUsing project file: " + projectFile + "\x1b[0m"); + LogHelper.info ("", LogHelper.accentColor + "Using project file: " + projectFile + LogHelper.resetColor); } @@ -1238,7 +1291,7 @@ class CommandLineTools { private function platformSetup ():Void { - LogHelper.info ("", "\x1b[32;1mRunning command: SETUP\x1b[0m"); + LogHelper.info ("", LogHelper.accentColor + "Running command: SETUP" + LogHelper.resetColor); if (words.length == 0) { @@ -1535,13 +1588,13 @@ class CommandLineTools { var project = initializeProject (null, "firefox"); - LogHelper.info ("", "\x1b[32;1mUsing publishing target: FIREFOX MARKETPLACE\x1b[0m"); + LogHelper.info ("", LogHelper.accentColor + "Using publishing target: FIREFOX MARKETPLACE" + LogHelper.resetColor); if (FirefoxMarketplace.isValid (project)) { buildProject (project, "build"); - LogHelper.info ("", "\n\x1b[32;1mRunning command: PUBLISH\x1b[0m"); + LogHelper.info ("", "\n" + LogHelper.accentColor + "Running command: PUBLISH" + LogHelper.resetColor); FirefoxMarketplace.publish (project); @@ -1561,9 +1614,9 @@ class CommandLineTools { } - LogHelper.info ("", "\x1b[32;1mRunning command: " + command.toUpperCase () + "\x1b[0m"); + LogHelper.info ("", LogHelper.accentColor + "Running command: " + command.toUpperCase () + LogHelper.resetColor); - var name = "lime"; + var name = defaultLibrary; if (words.length > 0) { diff --git a/tools/helpers/FlashHelper.hx b/tools/helpers/FlashHelper.hx index 151cd04c1..536b9bcaa 100644 --- a/tools/helpers/FlashHelper.hx +++ b/tools/helpers/FlashHelper.hx @@ -815,7 +815,7 @@ class FlashHelper { } - if (embed != "" || id > 0) { + if (assets.length > 0) { project.haxeflags.push ("-swf-lib " + project.app.path + "/flash/obj/assets.swf"); project.haxedefs.set ("flash-use-stage", ""); diff --git a/tools/helpers/LogHelper.hx b/tools/helpers/LogHelper.hx index b2a227d6e..fa7a163d6 100644 --- a/tools/helpers/LogHelper.hx +++ b/tools/helpers/LogHelper.hx @@ -11,9 +11,11 @@ import sys.io.Process; class LogHelper { - public static var enableColor:Bool = true; - public static var mute:Bool; - public static var verbose:Bool = false; + public static var accentColor = "\x1b[32;1m"; + public static var enableColor = true; + public static var mute = false; + public static var resetColor = "\x1b[0m"; + public static var verbose = false; private static var colorCodes:EReg = ~/\x1b\[[^m]+m/g; private static var colorSupported:Null; diff --git a/tools/helpers/StringHelper.hx b/tools/helpers/StringHelper.hx index 65771a7d0..29ad048ea 100644 --- a/tools/helpers/StringHelper.hx +++ b/tools/helpers/StringHelper.hx @@ -154,6 +154,22 @@ class StringHelper { } + public static function generateHashCode (value:String):Int { + + var hash = 5381; + var length = value.length; + + for (i in 0...value.length) { + + hash = ((hash << 5) + hash) + value.charCodeAt (i); + + } + + return hash; + + } + + public static function generateUUID (length:Int, radix:Null = null, seed:Null = null):String { var chars = uuidChars.split (""); diff --git a/tools/project/PlatformTarget.hx b/tools/project/PlatformTarget.hx index 99812e5be..33db787a6 100644 --- a/tools/project/PlatformTarget.hx +++ b/tools/project/PlatformTarget.hx @@ -25,7 +25,7 @@ class PlatformTarget { public function execute ():Void { - LogHelper.info ("", "\x1b[32;1mUsing target platform: " + Std.string (project.target).toUpperCase () + "\x1b[0m"); + LogHelper.info ("", LogHelper.accentColor + "Using target platform: " + Std.string (project.target).toUpperCase () + LogHelper.resetColor); var metaFields = Meta.getFields (Type.getClass (this)); @@ -38,42 +38,42 @@ class PlatformTarget { //if (!Reflect.hasField (metaFields.clean, "ignore") && (command == "clean" || targetFlags.exists ("clean"))) { if (!Reflect.hasField (metaFields.clean, "ignore") && (command == "clean" || (project.targetFlags.exists ("clean") && command != "rebuild"))) { - LogHelper.info ("", "\n\x1b[32;1mRunning command: CLEAN\x1b[0m"); + LogHelper.info ("", LogHelper.accentColor + "Running command: CLEAN" + LogHelper.resetColor); clean (); } if (!Reflect.hasField (metaFields.rebuild, "ignore") && (command == "rebuild" || project.targetFlags.exists ("rebuild"))) { - LogHelper.info ("", "\n\x1b[32;1mRunning command: REBUILD\x1b[0m"); + LogHelper.info ("", "\n" + LogHelper.accentColor + "Running command: REBUILD" + LogHelper.resetColor); rebuild (); } if (!Reflect.hasField (metaFields.update, "ignore") && (command == "update" || command == "build" || command == "test")) { - LogHelper.info ("", "\n\x1b[32;1mRunning command: UPDATE\x1b[0m"); + LogHelper.info ("", "\n" + LogHelper.accentColor + "Running command: UPDATE" + LogHelper.resetColor); update (); } if (!Reflect.hasField (metaFields.build, "ignore") && (command == "build" || command == "test")) { - LogHelper.info ("", "\n\x1b[32;1mRunning command: BUILD\x1b[0m"); + LogHelper.info ("", "\n" + LogHelper.accentColor + "Running command: BUILD" + LogHelper.resetColor); build (); } if (!Reflect.hasField (metaFields.install, "ignore") && (command == "install" || command == "run" || command == "test")) { - LogHelper.info ("", "\n\x1b[32;1mRunning command: INSTALL\x1b[0m"); + LogHelper.info ("", "\n" + LogHelper.accentColor + "Running command: INSTALL" + LogHelper.resetColor); install (); } if (!Reflect.hasField (metaFields.run, "ignore") && (command == "run" || command == "rerun" || command == "test")) { - LogHelper.info ("", "\n\x1b[32;1mRunning command: RUN\x1b[0m"); + LogHelper.info ("", "\n" + LogHelper.accentColor + "Running command: RUN" + LogHelper.resetColor); run (); } @@ -82,7 +82,7 @@ class PlatformTarget { if (traceEnabled || command == "trace") { - LogHelper.info ("", "\n\x1b[32;1mRunning command: TRACE\x1b[0m"); + LogHelper.info ("", "\n" + LogHelper.accentColor + "Running command: TRACE" + LogHelper.resetColor); this.trace (); } @@ -91,7 +91,7 @@ class PlatformTarget { if (!Reflect.hasField (metaFields.uninstall, "ignore") && (command == "uninstall")) { - LogHelper.info ("", "\n\x1b[32;1mRunning command: UNINSTALL\x1b[0m"); + LogHelper.info ("", "\n" + LogHelper.accentColor + "Running command: UNINSTALL" + LogHelper.resetColor); uninstall (); } diff --git a/tools/utils/CreateTemplate.hx b/tools/utils/CreateTemplate.hx index 1b2e6b263..727edf508 100644 --- a/tools/utils/CreateTemplate.hx +++ b/tools/utils/CreateTemplate.hx @@ -114,7 +114,7 @@ class CreateTemplate { if (projectName == "project") { - projectName = "lime"; + projectName = CommandLineTools.defaultLibrary; if (sampleName != null) { @@ -126,7 +126,7 @@ class CreateTemplate { if (projectName == null || projectName == "") { - projectName = "lime"; + projectName = CommandLineTools.defaultLibrary; } @@ -270,35 +270,41 @@ class CreateTemplate { var projectName = null; var sampleName = null; + var outputPath = null; if (colonIndex == -1 && words.length > 1) { projectName = words[0]; sampleName = words[1]; + if (words.length > 2) { + + outputPath = words[2]; + + } + } else { projectName = words[0].substring (0, colonIndex); sampleName = words[0].substr (colonIndex + 1); + if (words.length > 1) { + + outputPath = words[1]; + + } + } if (projectName == null || projectName == "") { - projectName = "lime"; + projectName = CommandLineTools.defaultLibrary; } - /*if (projectName == null && projectName == "") { - - LogHelper.error ("You must specify a project name when using \"lime create\""); - return; - - }*/ - if (sampleName == null || sampleName == "") { - LogHelper.error ("You must specify a sample name to copy when using \"lime create\""); + LogHelper.error ("You must specify a sample name to copy when using \"" + CommandLineTools.commandName + " create\""); return; } @@ -307,38 +313,34 @@ class CreateTemplate { defines.set ("create", 1); var project = HXProject.fromHaxelib (new Haxelib (projectName), defines); + if (project == null && outputPath == null) { + + outputPath = sampleName; + sampleName = projectName; + projectName = CommandLineTools.defaultLibrary; + project = HXProject.fromHaxelib (new Haxelib (projectName), defines); + + } + if (project != null) { + if (outputPath == null) { + + outputPath = sampleName; + + } + var samplePaths = project.samplePaths.copy (); samplePaths.reverse (); for (samplePath in samplePaths) { var sourcePath = PathHelper.combine (samplePath, sampleName); - var targetName = sampleName; - - if (colonIndex > -1) { - - if (words.length > 1) { - - targetName = words[1]; - - } - - } else { - - if (words.length > 2) { - - targetName = words[2]; - - } - - } if (FileSystem.exists (sourcePath)) { - PathHelper.mkdir (targetName); - FileHelper.recursiveCopy (sourcePath, PathHelper.tryFullPath (targetName)); + PathHelper.mkdir (outputPath); + FileHelper.recursiveCopy (sourcePath, PathHelper.tryFullPath (outputPath)); return; } @@ -404,20 +406,20 @@ class CreateTemplate { if (templates.length == 0) { - projectName = "library"; + projectName = CommandLineTools.defaultLibrary; } LogHelper.println ("\x1b[1mYou must specify a template when using the 'create' command.\x1b[0m"); LogHelper.println (""); - LogHelper.println (" \x1b[32;1mUsage:\x1b[0m \x1b[1mlime\x1b[0m create extension \"ExtensionName\""); - LogHelper.println (" \x1b[32;1mUsage:\x1b[0m \x1b[1mlime\x1b[0m create " + projectName + " project \x1b[3;37m\"OutputDirectory\"\x1b[0m"); - LogHelper.println (" \x1b[32;1mUsage:\x1b[0m \x1b[1mlime\x1b[0m create " + projectName + " (sample) \x1b[3;37m\"OutputDirectory\"\x1b[0m"); + LogHelper.println (" " + LogHelper.accentColor + "Usage:\x1b[0m \x1b[1m" + CommandLineTools.commandName + "\x1b[0m create extension \"ExtensionName\""); + LogHelper.println (" " + LogHelper.accentColor + "Usage:\x1b[0m \x1b[1m" + CommandLineTools.commandName + "\x1b[0m create " + projectName + " project \x1b[3;37m\"OutputDirectory\"\x1b[0m"); + LogHelper.println (" " + LogHelper.accentColor + "Usage:\x1b[0m \x1b[1m" + CommandLineTools.commandName + "\x1b[0m create " + projectName + " (sample) \x1b[3;37m\"OutputDirectory\"\x1b[0m"); if (templates.length > 0) { LogHelper.println (""); - LogHelper.println (" \x1b[32;1mAvailable Samples:\x1b[0m"); + LogHelper.println (" " + LogHelper.accentColor + "Available Samples:\x1b[0m"); LogHelper.println (""); for (template in templates) { diff --git a/tools/utils/PlatformSetup.hx b/tools/utils/PlatformSetup.hx index 5baec5faa..e5400bc43 100644 --- a/tools/utils/PlatformSetup.hx +++ b/tools/utils/PlatformSetup.hx @@ -466,10 +466,24 @@ class PlatformSetup { } - case "lime", "": + case "lime": setupLime (); + case "openfl": + + setupOpenFL (); + + case "": + + switch (CommandLineTools.defaultLibrary) { + + case "lime": setupLime (); + case "openfl": setupOpenFL (); + default: setupHaxelib (new Haxelib (CommandLineTools.defaultLibrary)); + + } + default: setupHaxelib (new Haxelib (target)); @@ -1803,6 +1817,89 @@ class PlatformSetup { } + public static function setupOpenFL ():Void { + + setupHaxelib (new Haxelib ("openfl")); + + var haxePath = Sys.getEnv ("HAXEPATH"); + + if (PlatformHelper.hostPlatform == Platform.WINDOWS) { + + if (haxePath == null || haxePath == "") { + + haxePath = "C:\\HaxeToolkit\\haxe\\"; + + } + + File.copy (PathHelper.getHaxelib (new Haxelib ("lime")) + "\\templates\\\\bin\\lime.bat", haxePath + "\\lime.bat"); + File.copy (PathHelper.getHaxelib (new Haxelib ("lime")) + "\\templates\\\\bin\\lime.sh", haxePath + "\\lime"); + File.copy (PathHelper.getHaxelib (new Haxelib ("openfl")) + "\\templates\\\\bin\\openfl.bat", haxePath + "\\openfl.bat"); + File.copy (PathHelper.getHaxelib (new Haxelib ("openfl")) + "\\templates\\\\bin\\openfl.sh", haxePath + "\\openfl"); + + } else { + + if (haxePath == null || haxePath == "") { + + haxePath = "/usr/lib/haxe"; + + } + + var installedCommand = false; + var answer = YES; + + if (targetFlags.exists ("y")) { + + Sys.println ("Do you want to install the \"openfl\" command? [y/n/a] y"); + + } else { + + answer = CLIHelper.ask ("Do you want to install the \"openfl\" command?"); + + } + + if (answer == YES || answer == ALWAYS) { + + try { + + ProcessHelper.runCommand ("", "sudo", [ "cp", "-f", PathHelper.getHaxelib (new Haxelib ("lime")) + "/templates/bin/lime.sh", "/usr/bin/lime" ], false); + ProcessHelper.runCommand ("", "sudo", [ "chmod", "755", "/usr/bin/lime" ], false); + ProcessHelper.runCommand ("", "sudo", [ "cp", "-f", PathHelper.getHaxelib (new Haxelib ("openfl")) + "/templates/bin/openfl.sh", "/usr/bin/openfl" ], false); + ProcessHelper.runCommand ("", "sudo", [ "chmod", "755", "/usr/bin/openfl" ], false); + installedCommand = true; + + } catch (e:Dynamic) {} + + } + + if (!installedCommand) { + + Sys.println (""); + Sys.println ("To finish setup, we recommend you either..."); + Sys.println (""); + Sys.println (" a) Manually add an alias called \"openfl\" to run \"haxelib run openfl\""); + Sys.println (" b) Run the following commands:"); + Sys.println (""); + Sys.println ("sudo cp \"" + PathHelper.getHaxelib (new Haxelib ("lime")) + "/templates/bin/lime.sh\" /usr/bin/lime"); + Sys.println ("sudo chmod 755 /usr/bin/lime"); + Sys.println ("sudo cp \"" + PathHelper.getHaxelib (new Haxelib ("openfl")) + "/templates/bin/openfl.sh\" /usr/bin/openfl"); + Sys.println ("sudo chmod 755 /usr/bin/openfl"); + Sys.println (""); + + } + + } + + if (PlatformHelper.hostPlatform == Platform.MAC) { + + var defines = getDefines (); + defines.set ("MAC_USE_CURRENT_SDK", "1"); + writeConfig (defines.get ("HXCPP_CONFIG"), defines); + + } + + } + + public static function setupTizen ():Void { var answer = CLIHelper.ask ("Download and install the Tizen SDK?");