Skip to content

Commit 6bdc982

Browse files
committed
Show only the error message when built tool fails
Colorize the error outputs
1 parent 15ea13c commit 6bdc982

10 files changed

Lines changed: 123 additions & 44 deletions

File tree

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,5 @@ bin/
2020
.settings
2121

2222
.classpath
23-
android-runtime.iml
23+
android-runtime.iml
24+
test-app/build-tools/*.log

build.gradle

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,10 @@ task copyFilesToProjectTemeplate {
278278
into "$DIST_FRAMEWORK_PATH/app/libs/runtime-libs"
279279
rename "runtime-optimized-with-inspector-release.aar", "nativescript-optimized-with-inspector.aar"
280280
}
281+
copy {
282+
from "$TEST_APP_PATH/app/gradle-helpers/BuildToolTask.gradle"
283+
into "$DIST_FRAMEWORK_PATH/app/gradle-helpers"
284+
}
281285
copy {
282286
from "$TEST_APP_PATH/app/build.gradle"
283287
into "$DIST_FRAMEWORK_PATH/app"
@@ -287,12 +291,12 @@ task copyFilesToProjectTemeplate {
287291
into "$DIST_FRAMEWORK_PATH"
288292
}
289293
copy {
290-
from "$TEST_APP_PATH/paths.gradle"
291-
into "$DIST_FRAMEWORK_PATH"
294+
from "$TEST_APP_PATH/gradle-helpers/paths.gradle"
295+
into "$DIST_FRAMEWORK_PATH/gradle-helpers"
292296
}
293297
copy {
294-
from "$TEST_APP_PATH/user_properties_reader.gradle"
295-
into "$DIST_FRAMEWORK_PATH"
298+
from "$TEST_APP_PATH/gradle-helpers/user_properties_reader.gradle"
299+
into "$DIST_FRAMEWORK_PATH/gradle-helpers"
296300
}
297301
copy {
298302
from "$TEST_APP_PATH/gradle"

test-app/app/build.gradle

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,12 @@ import java.nio.file.Files
2727
import java.nio.file.Paths
2828
import java.nio.file.StandardCopyOption
2929
import java.security.MessageDigest
30+
import org.gradle.internal.logging.text.StyledTextOutputFactory
3031

3132
apply plugin: "com.android.application"
33+
apply from: "gradle-helpers/BuildToolTask.gradle"
34+
def outLogger = services.get(StyledTextOutputFactory).create("colouredOutputLogger")
35+
gradle.useLogger(new BuildAdapter())
3236

3337
def enableKotlin = (project.hasProperty("useKotlin") && project.useKotlin == "true")
3438

@@ -464,7 +468,7 @@ tasks.whenTaskAdded({ org.gradle.api.DefaultTask currentTask ->
464468
///////////////////////////// EXECUTUION PHASE /////////////////////////////////////
465469
////////////////////////////////////////////////////////////////////////////////////
466470

467-
task runSbg(type: JavaExec) {
471+
task runSbg(type: BuildToolTask) {
468472
dependsOn "collectAllJars"
469473
if (!findProject(':static-binding-generator').is(null)) {
470474
dependsOn ':static-binding-generator:jar'
@@ -484,6 +488,8 @@ task runSbg(type: JavaExec) {
484488
paramz.add("-show-deprecation-warnings")
485489
}
486490

491+
setOutputs outLogger
492+
487493
args paramz
488494

489495
doFirst {
@@ -695,7 +701,7 @@ task collectAllJars {
695701
}
696702
}
697703

698-
task buildMetadata(type: JavaExec) {
704+
task buildMetadata(type: BuildToolTask) {
699705
if (!findProject(':android-metadata-generator').is(null)) {
700706
dependsOn ':android-metadata-generator:jar'
701707
}
@@ -749,11 +755,13 @@ task buildMetadata(type: JavaExec) {
749755
workingDir "$BUILD_TOOLS_PATH"
750756
main "-jar"
751757

758+
setOutputs outLogger
759+
752760
args "android-metadata-generator.jar"
753761
}
754762
}
755763

756-
task generateTypescriptDefinitions(type: JavaExec) {
764+
task generateTypescriptDefinitions(type: BuildToolTask) {
757765
if (!findProject(':dts-generator').is(null)) {
758766
dependsOn ':dts-generator:jar'
759767
}
@@ -785,6 +793,9 @@ task generateTypescriptDefinitions(type: JavaExec) {
785793

786794
logger.info("Task generateTypescriptDefinitions: Call dts-generator.jar with arguments: " + paramz.toString().replaceAll(',', ''))
787795
println "Task generateTypescriptDefinitions: Call dts-generator.jar with arguments: " + paramz.toString().replaceAll(',', '')
796+
797+
setOutputs outLogger
798+
788799
args paramz.toArray()
789800
}
790801
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
import static org.gradle.internal.logging.text.StyledTextOutput.Style
2+
3+
class BuildToolTask extends JavaExec {
4+
void setOutputs(def logger) {
5+
def logFile = new File("$workingDir/${name}.log")
6+
if(logFile.exists()) {
7+
logFile.delete()
8+
}
9+
standardOutput new FileOutputStream(logFile)
10+
errorOutput new FailureOutputStream(logger, logFile)
11+
}
12+
}
13+
14+
class FailureOutputStream extends OutputStream {
15+
private logger
16+
private File logFile
17+
private currentLine = ""
18+
private firstWrite = true
19+
FailureOutputStream(inLogger, inLogFile) {
20+
logger = inLogger
21+
logFile = inLogFile
22+
}
23+
24+
@Override
25+
void write(int i) throws IOException {
26+
if(firstWrite) {
27+
println ""
28+
firstWrite = false
29+
}
30+
currentLine += String.valueOf((char) i)
31+
}
32+
33+
@Override
34+
void flush() {
35+
if(currentLine?.trim()) {
36+
logger.withStyle(Style.Failure).println currentLine.trim()
37+
currentLine = ""
38+
}
39+
}
40+
41+
@Override
42+
void close() {
43+
if(!firstWrite && logFile.exists()) {
44+
logger.withStyle(Style.Info).println "Detailed log here: ${logFile.getAbsolutePath()}\n"
45+
}
46+
super.close()
47+
}
48+
}
49+
50+
ext.BuildToolTask = BuildToolTask

test-app/build-tools/android-metadata-generator/src/src/com/telerik/metadata/Generator.java

Lines changed: 27 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -19,33 +19,39 @@ public class Generator {
1919
/**
2020
* @param args
2121
*/
22-
public static void main(String[] args) throws Exception {
23-
String metadataOutputDir = "bin";
24-
List<String> params = null;
25-
22+
public static void main(String[] args) {
2623
try {
27-
metadataOutputDir = getFileRows(MDG_OUTPUT_DIR).get(0);
28-
} catch (Exception e) {
29-
throw new InvalidParameterException(String.format("You need to pass a file containing a single line: the output dir for the metadata generator1\n", e.getMessage()));
30-
}
31-
try {
32-
params = getFileRows(MDG_JAVA_DEPENDENCIES);
33-
} catch (Exception e) {
34-
throw new InvalidParameterException(String.format("You need to pass a file containing a list of jar/class paths, so metadata can be generated for them!\n", e.getMessage()));
35-
}
24+
String metadataOutputDir;
25+
List<String> params;
3626

37-
TreeNode root = Builder.build(params);
27+
try {
28+
metadataOutputDir = getFileRows(MDG_OUTPUT_DIR).get(0);
29+
} catch (Exception e) {
30+
throw new InvalidParameterException(String.format("You need to pass a file containing a single line: the output dir for the metadata generator1\n", e.getMessage()));
31+
}
32+
try {
33+
params = getFileRows(MDG_JAVA_DEPENDENCIES);
34+
} catch (Exception e) {
35+
throw new InvalidParameterException(String.format("You need to pass a file containing a list of jar/class paths, so metadata can be generated for them!\n", e.getMessage()));
36+
}
3837

39-
FileOutputStream ovs = new FileOutputStream(new File(metadataOutputDir, "treeValueStream.dat"));
40-
FileStreamWriter outValueStream = new FileStreamWriter(ovs);
38+
TreeNode root = Builder.build(params);
4139

42-
FileOutputStream ons = new FileOutputStream(new File(metadataOutputDir, "treeNodeStream.dat"));
43-
FileStreamWriter outNodeStream = new FileStreamWriter(ons);
40+
FileOutputStream ovs = new FileOutputStream(new File(metadataOutputDir, "treeValueStream.dat"));
41+
FileStreamWriter outValueStream = new FileStreamWriter(ovs);
4442

45-
FileOutputStream oss = new FileOutputStream(new File(metadataOutputDir, "treeStringsStream.dat"));
46-
FileStreamWriter outStringsStream = new FileStreamWriter(oss);
43+
FileOutputStream ons = new FileOutputStream(new File(metadataOutputDir, "treeNodeStream.dat"));
44+
FileStreamWriter outNodeStream = new FileStreamWriter(ons);
4745

48-
new Writer(outNodeStream, outValueStream, outStringsStream).writeTree(root);
46+
FileOutputStream oss = new FileOutputStream(new File(metadataOutputDir, "treeStringsStream.dat"));
47+
FileStreamWriter outStringsStream = new FileStreamWriter(oss);
48+
49+
new Writer(outNodeStream, outValueStream, outStringsStream).writeTree(root);
50+
} catch (Exception ex) {
51+
System.err.println(String.format("Error executing Metadata Generator: %s", ex.getMessage()));
52+
ex.printStackTrace(System.out);
53+
System.exit(1);
54+
}
4955
}
5056

5157
public static List<String> getFileRows(String filename) throws IOException {

test-app/build-tools/static-binding-generator/src/main/java/org/nativescript/staticbindinggenerator/Main.java

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -35,22 +35,29 @@ public class Main {
3535
inputJsFiles = new ArrayList<>();
3636
}
3737

38-
public static void main(String[] args) throws IOException, ClassNotFoundException {
39-
InputParameters.parseCommand(args);
38+
public static void main(String[] args) {
39+
try {
40+
InputParameters.parseCommand(args);
41+
42+
validateInput();
4043

41-
validateInput();
44+
getWorkerExcludeFile();
4245

43-
getWorkerExcludeFile();
46+
List<DataRow> rows = Generator.getRows(dependenciesFile);
47+
GetInterfaceNames.generateInterfaceFile(rows);
48+
generateJsInputFile();
49+
runJsParser();
4450

45-
List<DataRow> rows = Generator.getRows(dependenciesFile);
46-
GetInterfaceNames.generateInterfaceFile(rows);
47-
generateJsInputFile();
48-
runJsParser();
51+
// generate java bindings
52+
String inputBindingFilename = Paths.get(System.getProperty("user.dir"), SBG_BINDINGS_NAME).toString();
53+
Generator generator = new Generator(outputDir, rows, isSuppressCallJSMethodExceptionsEnabled());
4954

50-
// generate java bindings
51-
String inputBindingFilename = Paths.get(System.getProperty("user.dir"), SBG_BINDINGS_NAME).toString();
52-
Generator generator = new Generator(outputDir, rows, isSuppressCallJSMethodExceptionsEnabled());
53-
generator.writeBindings(inputBindingFilename);
55+
generator.writeBindings(inputBindingFilename);
56+
} catch (Exception ex) {
57+
System.err.println(String.format("Error executing Static Binding Generator: %s", ex.getMessage()));
58+
ex.printStackTrace(System.out);
59+
System.exit(1);
60+
}
5461
}
5562

5663
/*

test-app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ buildscript {
44

55
def initialize = { ->
66
def userDir = "${rootProject.projectDir}/../.."
7-
apply from: "$rootDir/user_properties_reader.gradle"
8-
apply from: "$rootDir/paths.gradle"
7+
apply from: "$rootDir/gradle-helpers/user_properties_reader.gradle"
8+
apply from: "$rootDir/gradle-helpers/paths.gradle"
99
rootProject.ext.userDefinedGradleProperties = getUserProperties("${getAppResourcesPath(userDir)}/Android")
1010
}
1111
initialize()
File renamed without changes.

0 commit comments

Comments
 (0)