Skip to content

Commit 827c1ee

Browse files
committed
refactoring
1 parent ac063b6 commit 827c1ee

File tree

25 files changed

+703
-519
lines changed

25 files changed

+703
-519
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
/jbbp/target
12
/target/
23
/nbproject/
34
/.idea/

jbbp-plugins/jbbp-gradle/build.gradle

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,19 @@ version = jbbpVersion
66

77
apply plugin: 'groovy'
88
apply plugin: 'maven'
9+
apply plugin: "com.gradle.plugin-publish"
910

1011
sourceCompatibility = 1.6
1112
targetCompatibility = 1.6
1213

1314
dependencies {
1415
compile gradleApi()
1516

17+
compile "commons-io:commons-io:2.5"
18+
compile "com.igormaznitsa:jbbp:" + jbbpVersion
19+
compile "com.igormaznitsa:meta-annotations:" + metalibVersion
20+
compile "com.igormaznitsa:meta-utils:" + metalibVersion
21+
1622
testCompile 'junit:junit:4.12'
1723
}
1824

@@ -21,11 +27,15 @@ repositories {
2127
mavenLocal()
2228
}
2329

24-
dependencies {
25-
compile "commons-io:commons-io:2.5"
26-
compile "com.igormaznitsa:jbbp:" + jbbpVersion
27-
compile "com.igormaznitsa:meta-annotations:" + metalibVersion
28-
compile "com.igormaznitsa:meta-utils:" + metalibVersion
30+
buildscript {
31+
repositories {
32+
maven {
33+
url "https://plugins.gradle.org/m2/"
34+
}
35+
}
36+
dependencies {
37+
classpath "com.gradle.publish:plugin-publish-plugin:0.9.7"
38+
}
2939
}
3040

3141
sourceSets {
@@ -36,3 +46,17 @@ sourceSets {
3646
}
3747
}
3848
}
49+
50+
pluginBundle {
51+
website = 'http://www.igormaznitsa.com/'
52+
vcsUrl = 'https://github.com/raydac/java-binary-block-parser'
53+
description = 'JBBP translator!'
54+
tags = ['jbbp','converter']
55+
56+
plugins {
57+
JBBPPlugin {
58+
id = 'com.igormaznitsa.jbbp'
59+
displayName = 'Translator of JBBPscripts into executable sources'
60+
}
61+
}
62+
}
Lines changed: 32 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,54 +1,56 @@
11
package com.igormaznitsa.jbbp.plugin.gradle;
22

3-
import com.igormaznitsa.jbbp.plugin.common.converters.Target;
3+
import com.igormaznitsa.jbbp.plugin.common.converters.ParserFlags;
4+
import com.igormaznitsa.meta.common.utils.GetUtils;
5+
import org.apache.commons.io.FileUtils;
6+
import org.gradle.api.DefaultTask;
7+
import org.gradle.api.GradleException;
48
import org.gradle.api.file.FileVisitDetails;
59
import org.gradle.api.file.FileVisitor;
610
import org.gradle.api.tasks.*;
711

12+
import javax.annotation.Nonnull;
13+
import javax.annotation.Nullable;
814
import java.io.File;
15+
import java.io.IOException;
916
import java.util.HashSet;
1017
import java.util.Set;
1118

12-
public abstract class AbstractJBBPTask extends SourceTask {
13-
14-
@Input
15-
@Optional
16-
protected Target target = Target.JAVA_1_6;
17-
18-
@OutputDirectory
19-
@Optional
20-
protected File output = new File(getProject().getBuildDir(), "generated-src");
19+
public abstract class AbstractJBBPTask extends DefaultTask {
2120

2221
public AbstractJBBPTask() {
23-
this.source.add(getProject().fileTree("src/jbbp"));
24-
this.include("**/*.jbbp");
25-
}
26-
27-
public File getOutput() {
28-
return this.output;
29-
}
30-
31-
public void setOutput(final File file) {
32-
this.output = file;
33-
}
34-
35-
public Target getTarget() {
36-
return this.target;
22+
super();
3723
}
3824

39-
public void setTarget(final Target value) {
40-
this.target = value;
25+
@Nullable
26+
public static String getTextOrFileContent(@Nonnull final JBBPExtension extension, @Nullable final String text, @Nullable final File file) {
27+
String result = null;
28+
if (text!=null) {
29+
result = text;
30+
} else if (file != null) {
31+
try {
32+
result = FileUtils.readFileToString(file, GetUtils.ensureNonNull(extension.inEncoding,"UTF-8"));
33+
}catch(IOException ex){
34+
throw new GradleException("Can't read file "+file,ex);
35+
}
36+
}
37+
return result;
4138
}
4239

4340
@TaskAction
4441
public final void doAction() {
45-
doTaskAction();
42+
JBBPExtension ext = getProject().getExtensions().findByType(JBBPExtension.class);
43+
if (ext == null) {
44+
ext = new JBBPExtension(getProject());
45+
}
46+
doTaskAction(ext);
4647
}
4748

48-
protected Set<File> findScripts() {
49+
@Nonnull
50+
protected static Set<File> findScripts(@Nonnull final JBBPExtension ext) {
4951
final Set<File> result = new HashSet<File>();
5052

51-
this.getSource().visit(new FileVisitor() {
53+
ext.source.visit(new FileVisitor() {
5254
@Override
5355
public void visitDir(final FileVisitDetails fileVisitDetails) {
5456

@@ -62,6 +64,6 @@ public void visitFile(final FileVisitDetails fileVisitDetails) {
6264
return result;
6365
}
6466

65-
protected abstract void doTaskAction();
67+
protected abstract void doTaskAction(@Nonnull JBBPExtension extension);
6668

6769
}
Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,42 @@
11
package com.igormaznitsa.jbbp.plugin.gradle;
22

3+
import com.igormaznitsa.jbbp.plugin.common.converters.JBBPScriptTranslator;
4+
import com.igormaznitsa.jbbp.plugin.common.converters.ParserFlags;
5+
import com.igormaznitsa.jbbp.plugin.common.utils.CommonUtils;
6+
import org.gradle.api.GradleException;
7+
8+
import javax.annotation.Nonnull;
9+
import java.io.File;
10+
import java.io.IOException;
11+
import java.util.Set;
12+
313
public class JBBPCleanTask extends AbstractJBBPTask {
414

515
@Override
6-
protected void doTaskAction() {
16+
protected void doTaskAction(@Nonnull final JBBPExtension ext) {
17+
final JBBPScriptTranslator.Parameters parameters = new JBBPScriptTranslator.Parameters();
18+
19+
parameters
20+
.setPackageName(ext.packageName)
21+
.setOutputDir(ext.output);
22+
23+
for(final File aScript : findScripts(ext)) {
24+
getLogger().debug("Script file : "+aScript);
25+
parameters.setScriptFile(aScript);
26+
try {
27+
for (final File f : ext.target.getTranslator().translate(parameters, true)) {
28+
if (f.isFile()){
29+
if (f.delete()){
30+
getLogger().info("File "+f+" has been deleted");
31+
} else {
32+
getLogger().error("Can't delete file "+f);
33+
}
34+
}
35+
}
36+
}catch(IOException ex){
37+
throw new GradleException("Error during processing JBBP script "+aScript, ex);
38+
}
39+
}
740

841
}
942
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package com.igormaznitsa.jbbp.plugin.gradle;
2+
3+
import com.igormaznitsa.jbbp.plugin.common.converters.ParserFlags;
4+
import com.igormaznitsa.jbbp.plugin.common.converters.Target;
5+
import org.gradle.api.Project;
6+
import org.gradle.api.file.ConfigurableFileTree;
7+
import org.gradle.api.file.FileTree;
8+
import org.gradle.api.tasks.Input;
9+
import org.gradle.api.tasks.Optional;
10+
import org.gradle.api.tasks.OutputDirectory;
11+
12+
import javax.annotation.Nonnull;
13+
import java.io.File;
14+
import java.util.HashMap;
15+
import java.util.HashSet;
16+
import java.util.Map;
17+
import java.util.Set;
18+
19+
public class JBBPExtension {
20+
public static final String NAME = "jbbp";
21+
22+
public Target target = Target.JAVA_1_6;
23+
public boolean addGettersSetters = false;
24+
public boolean doAbstract = false;
25+
public Set<String> interfaces = new HashSet<String>();
26+
public Set<ParserFlags> parserFlags = new HashSet<ParserFlags>();
27+
public Set<String> customTypes = new HashSet<String>();
28+
public Map<String, String> mapSubClassInterfaces = new HashMap<String, String>();
29+
public String inEncoding = "UTF-8";
30+
public String outEncoding = "UTF-8";
31+
public File headCommentFile = null;
32+
public String headComment = null;
33+
public File customTextFile = null;
34+
public String customText = null;
35+
public String superClass = null;
36+
public String packageName = null;
37+
public File output;
38+
public ConfigurableFileTree source;
39+
40+
public JBBPExtension(@Nonnull final Project project) {
41+
this.source = project.fileTree("src/jbbp");
42+
this.source.include("**/*.jbbp");
43+
this.output = new File(project.getBuildDir(),"generated-jbbp-dir");
44+
}
45+
46+
}

0 commit comments

Comments
 (0)