Skip to content

Commit

Permalink
Merge pull request #9 from gamerson/pr-16
Browse files Browse the repository at this point in the history
fix samples command
  • Loading branch information
gamerson committed May 20, 2016
2 parents bcbcc38 + a4f5db8 commit aaeb455
Showing 1 changed file with 63 additions and 38 deletions.
101 changes: 63 additions & 38 deletions com.liferay.blade.cli/src/com/liferay/blade/cli/SamplesCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -149,18 +149,59 @@ private void listSamples() {
WordUtils.wrap(StringUtils.join(samples, ", "), 80));
}

private String parseGradleScript(String script, String section) {
int begin = script.indexOf(section + " {") + section.length() + 2;
private String parseGradleScript(
String script, String section, boolean contentsOnly) {

int begin = script.indexOf(section + " {");
int end = begin;
int count = 0;

if (contentsOnly) {
begin += section.length() + 2;
}

while (true) {
char c = script.charAt(end);

if ((count != 0) && (c == '}')) {
count--;
}
else if (c == '{') {
count++;
}

if ((count == 0) && (c == '}')) {
if (!contentsOnly) {
end++;
}

break;
}

end++;
}

String newScript = script.substring(begin, end);

if (contentsOnly) {
return deindent(newScript);
}

return newScript;
}

private String removeGradleSection(String script, String section) {
int begin = script.indexOf(section + " {");
int end = begin;
int count = 0;

if (begin == -1) {
return script;
}

while (true) {
char c = script.charAt(end);

if ((count != 0) && (c == '}')) {
count--;
}
Expand All @@ -169,66 +210,50 @@ else if (c == '{') {
}

end++;

if ((count == 0) && (c == '}')) {
break;
}
}

return script.substring(begin, end);
return removeGradleSection(
script.substring(0, begin) + script.substring(end, script.length()),
section);
}

private void updateBuildGradle(File dir) throws Exception {
File bladeRepo = new File(_blade.getCacheDir(), _BLADE_REPO_NAME);

File parentBuildGradleFile = new File(
bladeRepo, "liferay-gradle/build.gradle");

String parentScript = parseGradleScript(
Util.read(parentBuildGradleFile), "subprojects");

File sampleGradleFile = new File(dir, "build.gradle");

String script = Util.read(sampleGradleFile);

if (Util.isWorkspace(dir)) {
parentScript = parseGradleScript(parentScript, "dependencies");
if (!Util.isWorkspace(dir)) {
File parentBuildGradleFile = new File(
bladeRepo, "liferay-gradle/build.gradle");

if (script.contains("dependencies")) {
String dependencies = parseGradleScript(script, "dependencies");

script = script.replace(
dependencies, parentScript + dependencies);
}
else {
script += "\ndependencies {\n" + deindent(parentScript) + "}";
}
}
else {
if (script.contains("dependencies")) {
String dependencies = parseGradleScript(script, "dependencies");
String parentBuildScript = parseGradleScript(
Util.read(parentBuildGradleFile), "buildscript", false);

String parentDependencies = parseGradleScript(
parentScript, "dependencies");
String parentSubprojectsScript = parseGradleScript(
Util.read(parentBuildGradleFile), "subprojects", true);

parentScript = parentScript.replace(
parentDependencies, parentDependencies + dependencies);
parentSubprojectsScript = removeGradleSection(
parentSubprojectsScript, "buildscript");

int begin = script.indexOf("dependencies");
int end = script.indexOf("}", begin) + 1;
System.out.println(parentSubprojectsScript);

script = script.replace(
script.substring(begin, end), deindent(parentScript));
}
else {
script += deindent(parentScript);
}
script = parentBuildScript + parentSubprojectsScript + script;
}

Files.write(sampleGradleFile.toPath(), script.getBytes());
}

private static final String _BLADE_REPO_ARCHIVE_NAME =
"liferay-blade-samples-master.zip";
"liferay-blade-samples-master.zip";

private static final String _BLADE_REPO_NAME =
"liferay-blade-samples-master";
"liferay-blade-samples-master";

private static final String _BLADE_REPO_URL =
"https://github.com/liferay/liferay-blade-samples/archive/master.zip";
Expand Down

0 comments on commit aaeb455

Please sign in to comment.