1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
package com.vaadin.buildhelpers;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import com.vaadin.sass.ScssStylesheet;
/**
* Helper to combine css divided into separate per component dirs into one to
* optimize http requests.
*/
public class CompileDefaultTheme {
private static final String ARG_VERSION = "-version";
private static final String THEME_DIR = "./WebContent/VAADIN/themes/";
private static final String BASE = "base";
private static final String RUNO = "runo";
private static final String REINDEER = "reindeer";
private static final String LIFERAY = "liferay";
private static final String CHAMELEON = "chameleon";
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
String ver = null;
for (int i = 0; i < args.length; i++) {
if (ARG_VERSION.equals(args[i])) {
if (args.length >= i) {
ver = args[i + 1];
}
break;
}
}
for (String themeName : new String[] { BASE, RUNO, LIFERAY, CHAMELEON }) {
try {
processSassTheme(themeName, false, ver);
System.out.println("Compiling theme " + themeName
+ " successful");
} catch (Exception e) {
System.err.println("Compiling theme " + themeName + " failed");
e.printStackTrace();
}
}
// Compile Reindeer last, since it requires the spriting operation
// (makes testing the other themes a bit faster, since you don't need to
// wait for the spriting operation to finish before the theme CSS is
// compiled)
for (String themeName : new String[] { REINDEER }) {
try {
processSassTheme(themeName, true, ver);
System.out.println("Compiling theme " + themeName
+ " successful");
} catch (Exception e) {
System.err.println("Compiling theme " + themeName + " failed");
e.printStackTrace();
}
}
}
private static void processSassTheme(String themeName,
boolean useSmartSprites, String version) throws Exception {
StringBuffer cssHeader = new StringBuffer();
// Theme version
if (version == null) {
version = "9.9.9.INTERNAL-DEBUG-BUILD";
}
version = version.replaceAll("\\.", "_");
cssHeader.append(".v-theme-version:after {content:\"" + version
+ "\";}\n");
cssHeader.append(".v-theme-version-" + version + " {display: none;}\n");
String stylesCssDir = THEME_DIR + themeName + "/";
String stylesCssName = stylesCssDir + "styles.css";
// Process as SASS file
ScssStylesheet scss = ScssStylesheet.get(stylesCssDir + "styles.scss");
scss.compile();
BufferedWriter out = new BufferedWriter(new FileWriter(stylesCssName));
out.write(cssHeader.toString());
out.write(scss.toString());
out.close();
System.out.println("Compiled CSS to " + stylesCssName + " ("
+ scss.toString().length() + " bytes)");
if (useSmartSprites) {
createSprites(themeName);
System.out.println("Used SmartSprites to create sprites");
File oldCss = new File(stylesCssName);
oldCss.delete();
File newCss = new File(stylesCssDir + "styles-sprite.css");
boolean ok = newCss.renameTo(oldCss);
if (!ok) {
System.out.println("Rename " + newCss + " -> " + oldCss
+ " failed");
}
}
}
private static void createSprites(String themeName)
throws FileNotFoundException, IOException {
String[] parameters = new String[] { "--sprite-png-depth", "AUTO",
"--css-file-suffix", "-sprite", "--css-file-encoding", "UTF-8",
"--root-dir-path", THEME_DIR + themeName, "--log-level", "WARN" };
org.carrot2.labs.smartsprites.SmartSprites.main(parameters);
}
}
|