feat: new project, project manager
This commit is contained in:
@@ -175,14 +175,6 @@ public class ScriptEngineService {
|
||||
return execute(new ScriptExecutionTask(source, null, config));
|
||||
}
|
||||
|
||||
public ScriptExecution execute(ScriptSource source, ScriptExecutionListener listener) {
|
||||
return execute(source, listener, ExecutionConfig.getDefault());
|
||||
}
|
||||
|
||||
public ScriptExecution execute(ScriptSource source) {
|
||||
return execute(source, null, ExecutionConfig.getDefault());
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onScriptExecution(ScriptExecutionEvent event) {
|
||||
if (event.getCode() == ScriptExecutionEvent.ON_START) {
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
package com.stardust.autojs.project;
|
||||
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
import java.util.zip.CRC32;
|
||||
|
||||
public class BuildInfo {
|
||||
|
||||
@SerializedName("build_time")
|
||||
private long mBuildTime;
|
||||
|
||||
@SerializedName("build_id")
|
||||
private String mBuildId;
|
||||
|
||||
@SerializedName("build_number")
|
||||
private long mBuildNumber;
|
||||
|
||||
public BuildInfo() {
|
||||
}
|
||||
|
||||
public long getBuildNumber() {
|
||||
return mBuildNumber;
|
||||
}
|
||||
|
||||
public void setBuildNumber(long buildNumber) {
|
||||
mBuildNumber = buildNumber;
|
||||
}
|
||||
|
||||
public long getBuildTime() {
|
||||
return mBuildTime;
|
||||
}
|
||||
|
||||
public void setBuildTime(long buildTime) {
|
||||
mBuildTime = buildTime;
|
||||
}
|
||||
|
||||
public String getBuildId() {
|
||||
return mBuildId;
|
||||
}
|
||||
|
||||
public void setBuildId(String buildId) {
|
||||
mBuildId = buildId;
|
||||
}
|
||||
|
||||
public static BuildInfo generate(long buildNumber) {
|
||||
BuildInfo info = new BuildInfo();
|
||||
info.setBuildNumber(buildNumber);
|
||||
info.setBuildTime(System.currentTimeMillis());
|
||||
info.setBuildId(generateBuildId(buildNumber, info.getBuildTime()));
|
||||
return info;
|
||||
}
|
||||
|
||||
private static String generateBuildId(long buildNumber, long buildTime) {
|
||||
CRC32 crc32 = new CRC32();
|
||||
crc32.update((buildNumber + "" + buildTime).getBytes());
|
||||
return String.format("%08X", crc32.getValue()) + "-" + buildNumber;
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,7 @@ package com.stardust.autojs.project;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
@@ -32,7 +33,7 @@ public class ProjectConfig {
|
||||
private String mVersionName;
|
||||
|
||||
@SerializedName("versionCode")
|
||||
private int mVersionCode;
|
||||
private int mVersionCode = -1;
|
||||
|
||||
@SerializedName("packageName")
|
||||
private String mPackageName;
|
||||
@@ -46,11 +47,40 @@ public class ProjectConfig {
|
||||
@SerializedName("launchConfig")
|
||||
private LaunchConfig mLaunchConfig;
|
||||
|
||||
@SerializedName("build")
|
||||
private BuildInfo mBuildInfo = new BuildInfo();
|
||||
|
||||
@SerializedName("icon")
|
||||
private String mIcon;
|
||||
|
||||
public static ProjectConfig fromJson(String json) {
|
||||
if (json == null) {
|
||||
return null;
|
||||
}
|
||||
return GSON.fromJson(json, ProjectConfig.class);
|
||||
ProjectConfig config = GSON.fromJson(json, ProjectConfig.class);
|
||||
if(!isValid(config)){
|
||||
return null;
|
||||
}
|
||||
return config;
|
||||
}
|
||||
|
||||
private static boolean isValid(ProjectConfig config) {
|
||||
if(TextUtils.isEmpty(config.getName())){
|
||||
return false;
|
||||
}
|
||||
if(TextUtils.isEmpty(config.getPackageName())){
|
||||
return false;
|
||||
}
|
||||
if(TextUtils.isEmpty(config.getVersionName())){
|
||||
return false;
|
||||
}
|
||||
if(TextUtils.isEmpty(config.getMainScriptFile())){
|
||||
return false;
|
||||
}
|
||||
if(config.getVersionCode() == -1){
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -81,6 +111,13 @@ public class ProjectConfig {
|
||||
return PFiles.join(projectDir, CONFIG_FILE_NAME);
|
||||
}
|
||||
|
||||
public BuildInfo getBuildInfo() {
|
||||
return mBuildInfo;
|
||||
}
|
||||
|
||||
public void setBuildInfo(BuildInfo buildInfo) {
|
||||
mBuildInfo = buildInfo;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return mName;
|
||||
@@ -166,4 +203,15 @@ public class ProjectConfig {
|
||||
return GSON.toJson(this);
|
||||
}
|
||||
|
||||
public String getIcon() {
|
||||
return mIcon;
|
||||
}
|
||||
|
||||
public void setIcon(String icon) {
|
||||
mIcon = icon;
|
||||
}
|
||||
|
||||
public String getBuildDir() {
|
||||
return "build";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
package com.stardust.autojs.project;
|
||||
|
||||
import com.stardust.autojs.ScriptEngineService;
|
||||
import com.stardust.autojs.execution.ExecutionConfig;
|
||||
import com.stardust.autojs.script.JavaScriptFileSource;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
public class ProjectLauncher {
|
||||
|
||||
private String mProjectDir;
|
||||
private File mMainScriptFile;
|
||||
private ProjectConfig mProjectConfig;
|
||||
|
||||
public ProjectLauncher(String projectDir) {
|
||||
mProjectDir = projectDir;
|
||||
mProjectConfig = ProjectConfig.fromProjectDir(projectDir);
|
||||
mMainScriptFile = new File(mProjectDir, mProjectConfig.getMainScriptFile());
|
||||
}
|
||||
|
||||
public void launch(ScriptEngineService service){
|
||||
service.execute(new JavaScriptFileSource(mMainScriptFile), new ExecutionConfig()
|
||||
.executePath(mProjectDir)
|
||||
.requirePath(mProjectDir));
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user