Files
lime/tools/helpers/TizenHelper.hx
2014-10-16 09:53:57 -07:00

230 lines
4.8 KiB
Haxe

package helpers;
import haxe.crypto.Crc32;
import haxe.io.Bytes;
import haxe.io.Eof;
import helpers.PathHelper;
import helpers.PlatformHelper;
import helpers.ProcessHelper;
import project.Haxelib;
import project.HXProject;
import project.Platform;
import sys.FileSystem;
class TizenHelper {
private static var cacheID:String = null;
private static var cacheUUID:String = null;
public static function createPackage (project:HXProject, workingDirectory:String, targetPath:String):Void {
var keystore = null;
var password = null;
if (project.certificate != null) {
keystore = PathHelper.tryFullPath (project.certificate.path);
password = project.certificate.password;
if (password == null) {
password = prompt ("Keystore password", true);
Sys.println ("");
}
}
if (keystore == null) {
var templatePaths = [ PathHelper.combine (PathHelper.getHaxelib (new Haxelib ("lime")), "templates") ].concat (project.templatePaths);
keystore = PathHelper.findTemplate (templatePaths, "bin/debug.p12");
password = "1234";
}
var packageName = getUUID (project) + "-" + project.meta.version + "-";
if (project.targetFlags.exists ("simulator")) {
packageName += "i386";
} else {
packageName += "arm";
}
packageName += ".tpk";
if (FileSystem.exists (PathHelper.combine (workingDirectory, packageName))) {
try {
FileSystem.deleteFile ((PathHelper.combine (workingDirectory, packageName)));
} catch (e:Dynamic) {}
}
runCommand (project, workingDirectory, "native-packaging" , [ "--sign-author-key", keystore, "--sign-author-pwd", password ]);
}
public static function getUUID (project:HXProject):String {
if (cacheID != project.meta.packageName) {
if (project.meta.packageName != null || project.meta.packageName.length == 10 || project.meta.packageName.indexOf (".") == -1) {
var bytes = Bytes.ofString (project.meta.packageName);
var crc = Crc32.make (bytes);
cacheUUID = StringHelper.generateUUID (10, null, crc);
} else {
cacheUUID = project.meta.packageName;
}
cacheID = project.meta.packageName;
}
return cacheUUID;
}
public static function install (project:HXProject, workingDirectory:String):Void {
var packageName = getUUID (project) + "-" + project.meta.version + "-";
if (project.targetFlags.exists ("simulator")) {
packageName += "i386";
} else {
packageName += "arm";
}
packageName += ".tpk";
runCommand (project, "", "native-install", [ "--package", FileSystem.fullPath (workingDirectory + "/" + packageName) ]);
}
public static function launch (project:HXProject):Void {
runCommand (project, "", "native-run", [ "--package", getUUID (project) ]);
}
private static function prompt (name:String, ?passwd:Bool):String {
Sys.print (name + ": ");
if (passwd) {
var s = new StringBuf ();
var c;
while ((c = Sys.getChar(false)) != 13)
s.addChar (c);
return s.toString ();
}
try {
return Sys.stdin ().readLine ();
} catch (e:Eof) {
return "";
}
}
private static function runCommand (project:HXProject, workingDirectory:String, command:String, args:Array<String>):Void {
var sdkDirectory = "";
if (project.environment.exists ("TIZEN_SDK")) {
sdkDirectory = project.environment.get ("TIZEN_SDK");
} else {
if (PlatformHelper.hostPlatform == Platform.WINDOWS) {
sdkDirectory = "C:\\Development\\Tizen\\tizen-sdk";
} else {
sdkDirectory = "~/Development/Tizen/tizen-sdk";
}
}
ProcessHelper.runCommand (workingDirectory, PathHelper.combine (sdkDirectory, "tools/ide/bin/" + command), args);
}
public static function trace (project:HXProject, follow:Bool = true):Void {
/*var args = [];
if (follow) {
args.push ("-f");
}
args.push (project.meta.packageName);
runPalmCommand (project, "", "log", args);*/
var sdkDirectory = "";
if (project.environment.exists ("TIZEN_SDK")) {
sdkDirectory = project.environment.get ("TIZEN_SDK");
} else {
if (PlatformHelper.hostPlatform == Platform.WINDOWS) {
sdkDirectory = "C:\\Development\\Tizen\\tizen-sdk";
} else {
sdkDirectory = "~/Development/Tizen/tizen-sdk";
}
}
//var args = [ "--package", project.meta.packageName ];
//var args = [ "dlog", project.meta.packageName + ":V", "*:E" ];
var args = [ "dlog", project.app.file + ":V", "*:F" ];
ProcessHelper.runCommand ("", PathHelper.combine (sdkDirectory, "tools/sdb"), [ "dlog", "-c" ]);
ProcessHelper.runCommand ("", PathHelper.combine (sdkDirectory, "tools/sdb"), args);
//runCommand (project, "", "native-debug", [ "-p", project.meta.packageName ]);
}
}