Skip to content

Commit c224719

Browse files
authored
Merge pull request #199 from cedricziel/multi-build
Add multi module build for more..plugins
2 parents 36ff48c + 8ba8d25 commit c224719

File tree

267 files changed

+2037
-37
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

267 files changed

+2037
-37
lines changed

.editorconfig

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# EditorConfig helps developers define and maintain consistent
2+
# coding styles between different editors and IDEs
3+
# editorconfig.org
4+
5+
root = true
6+
7+
[*]
8+
indent_style = space
9+
indent_size = 4
10+
end_of_line = lf
11+
charset = utf-8
12+
trim_trailing_whitespace = true
13+
insert_final_newline = true
14+
15+
[*.md]
16+
trim_trailing_whitespace = false
17+
18+
[*.bnf]
19+
indent_size = 2

.travis.yml

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,18 @@ cache:
1616

1717
matrix:
1818
include:
19-
- env: IDEA_VERSION="IU-182.3341.11" PHP_PLUGIN_VERSION="182.3341.34" PSI_VIEWER_PLUGIN_VERSION=182.2757.2 DEPLOY=true
20-
# - env: IDEA_VERSION="IU-173.4127.17" PHP_PLUGIN_VERSION="173.4127.13"
21-
# allow_failures:
22-
# - env: IDEA_VERSION="IU-173.4127.17" PHP_PLUGIN_VERSION="173.4127.13"
19+
- env: IDEA_VERSION="IU-2018.1.5" PHP_PLUGIN_VERSION="181.5281.35" PSI_VIEWER_PLUGIN_VERSION="2018.1.2" SINCE_BUILD="181" UNTIL_BUILD="181.*"
20+
- env: IDEA_VERSION="IU-182.3341.11" PHP_PLUGIN_VERSION="182.3341.34" PSI_VIEWER_PLUGIN_VERSION="182.2757.2" SINCE_BUILD="182" UNTIL_BUILD="182.*"
21+
allow_failures:
22+
- env: IDEA_VERSION="IU-182.3341.11" PHP_PLUGIN_VERSION="182.3341.34" PSI_VIEWER_PLUGIN_VERSION=182.2757.2 SINCE_BUILD="182" UNTIL_BUILD="182.*"
2323

2424
before_install:
2525
- "export ORG_GRADLE_PROJECT_ideaVersion=${IDEA_VERSION}"
2626
- "export ORG_GRADLE_PROJECT_ideaType=${IDEA_TYPE}"
2727
- "export ORG_GRADLE_PROJECT_phpPluginVersion=${PHP_PLUGIN_VERSION}"
2828
- "export ORG_GRADLE_PROJECT_psiViewerPluginVersion=${PSI_VIEWER_PLUGIN_VERSION}"
29+
- "export ORG_GRADLE_PROJECT_customSinceBuild=${SINCE_BUILD}"
30+
- "export ORG_GRADLE_PROJECT_customUntilBuild=${UNTIL_BUILD}"
2931
- java -version
3032

3133
script:
@@ -35,12 +37,15 @@ script:
3537
deploy:
3638
provider: releases
3739
api_key: "${GITHUB_KEY}"
38-
file: build/distributions/TYPO3*.zip
40+
file:
41+
- lang-fluid/build/distributions/TYPO3*.zip
42+
- lang-typoscript/build/distributions/TYPO3*.zip
43+
- typo3-cms/build/distributions/TYPO3*.zip
3944
skip_cleanup: true
4045
file_glob: true
4146
on:
4247
tags: true
4348
condition: "$TRAVIS_TAG =~ ^v[0-9]+.*$"
4449

4550
after_deploy:
46-
- "./gradlew publishPlugin"
51+
- "./gradlew :typo3-cms:publishPlugin"

build.gradle

Lines changed: 59 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,45 +4,81 @@ buildscript {
44
repositories {
55
mavenCentral()
66

7+
maven { url "https://jetbrains.bintray.com/intellij-third-party-dependencies" }
8+
9+
maven { url 'https://jitpack.io' }
710
maven { url 'http://dl.bintray.com/jetbrains/intellij-plugin-service' }
811
}
12+
13+
dependencies {
14+
classpath "com.github.JetBrains:gradle-grammar-kit-plugin:${grammarKitPluginVersion}"
15+
}
916
}
1017

1118
plugins {
1219
id "org.jetbrains.intellij" version "0.3.4"
13-
id 'com.palantir.git-version' version "0.9.1"
20+
id 'com.palantir.git-version' version "0.11.0"
1421
}
1522

16-
apply plugin: 'idea'
17-
apply plugin: 'org.jetbrains.intellij'
18-
apply plugin: 'java'
19-
20-
intellij {
21-
version ideaVersion
22-
pluginName 'TYPO3 CMS Plugin'
23-
plugins = [
24-
"com.jetbrains.php:${phpPluginVersion}",
25-
'CSS',
26-
'java-i18n',
27-
'properties',
28-
'yaml',
29-
"PsiViewer:${psiViewerPluginVersion}"
30-
]
31-
downloadSources !Boolean.valueOf(System.getenv('CI'))
23+
def details = versionDetails()
24+
25+
group 'com.cedricziel.idea'
26+
27+
allprojects {
28+
apply plugin: 'java'
29+
sourceCompatibility = javaVersion
30+
targetCompatibility = javaTargetVersion
31+
tasks.withType(JavaCompile) { options.encoding = 'UTF-8' }
32+
33+
if (details.isCleanTag) {
34+
version = "${details.lastTag}.$customSinceBuild"
35+
} else {
36+
version = "${details.lastTag}.$customSinceBuild.${details.gitHash}-SNAPSHOT"
37+
}
38+
39+
intellij {
40+
version ideaVersion
41+
updateSinceUntilBuild true
42+
}
43+
44+
patchPluginXml {
45+
if (customSinceBuild) {
46+
sinceBuild customSinceBuild
47+
}
48+
if (customUntilBuild) {
49+
untilBuild customUntilBuild
50+
}
51+
}
52+
}
53+
54+
subprojects {
55+
apply plugin: 'idea'
56+
apply plugin: 'org.jetbrains.grammarkit'
57+
apply plugin: 'org.jetbrains.intellij'
58+
apply plugin: 'java'
59+
60+
repositories {
61+
mavenCentral()
62+
}
63+
64+
intellij {
65+
version ideaVersion
66+
downloadSources !Boolean.valueOf(System.getenv('CI'))
67+
sameSinceUntilBuild Boolean.valueOf(isEAP)
68+
}
3269

3370
publishPlugin {
3471
username System.getenv('IJ_REPO_USERNAME')
3572
password System.getenv('IJ_REPO_PASSWORD')
3673
}
3774

38-
patchPluginXml {
39-
sinceBuild '173'
40-
untilBuild '182.*'
75+
grammarKit {
76+
grammarKitRelease = "2017.1.4"
77+
jflexRelease = jFlexRelease
4178
}
42-
}
4379

44-
group 'com.cedricziel'
45-
version gitVersion()
80+
test.testLogging.exceptionFormat = TestExceptionFormat.FULL
81+
}
4682

4783
wrapper {
4884
gradleVersion '4.8'

gradle.properties

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,18 @@
1+
javaVersion = 1.8
2+
javaTargetVersion = 1.8
3+
4+
buildNumber = SNAPSHOT
5+
isEAP = false
6+
customSinceBuild = 182
7+
customUntilBuild = 182.*
8+
9+
jFlexRelease = 1.7.0-1
10+
grammarKitPluginVersion = 2018.1.3
11+
112
ideaVersion = IU-182.3341.11
213
phpPluginVersion = 182.3341.34
314
psiViewerPluginVersion = 182.2757.2
415

5-
#ideaVersion = IU-2018.1.4
6-
#phpPluginVersion = 181.5087.24
7-
#ideaVersion = IU-2017.3.3
8-
#phpPluginVersion = 173.4301.34
16+
#ideaVersion = IU-2018.1.5
17+
#phpPluginVersion = 181.5281.35
18+
#psiViewerPluginVersion = 2018.1.2

lang-fluid/.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
build
2+
gen

lang-fluid/build.gradle

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
buildscript {
2+
repositories {
3+
mavenCentral()
4+
5+
maven { url "https://jetbrains.bintray.com/intellij-third-party-dependencies" }
6+
7+
maven { url 'https://jitpack.io' }
8+
maven { url 'http://dl.bintray.com/jetbrains/intellij-plugin-service' }
9+
}
10+
11+
dependencies {
12+
classpath "com.github.JetBrains:gradle-grammar-kit-plugin:2018.1.2"
13+
}
14+
}
15+
16+
import org.jetbrains.grammarkit.tasks.GenerateLexer
17+
import org.jetbrains.grammarkit.tasks.GenerateParser
18+
19+
def genRoot = file('gen')
20+
sourceSets {
21+
main {
22+
java.srcDirs += genRoot
23+
resources.srcDir 'resources'
24+
}
25+
test {
26+
java.srcDir 'test'
27+
resources.srcDirs 'testData'
28+
}
29+
}
30+
31+
idea {
32+
module {
33+
generatedSourceDirs += genRoot
34+
}
35+
}
36+
37+
intellij {
38+
version ideaVersion
39+
pluginName 'TYPO3 Fluid Plugin'
40+
plugins = [
41+
"com.jetbrains.php:${phpPluginVersion}",
42+
'uml',
43+
'CSS',
44+
'java-i18n',
45+
'properties',
46+
'yaml',
47+
"PsiViewer:${psiViewerPluginVersion}"
48+
]
49+
}
50+
51+
publishPlugin {
52+
channels 'nightly'
53+
}
54+
55+
task generateFluidLexer(type: GenerateLexer) {
56+
source = "src/main/grammars/FluidLexer.flex"
57+
targetDir = "gen/com/cedricziel/idea/fluid/lang/lexer"
58+
targetClass = "_FluidLexer"
59+
}
60+
61+
task generateFluidParser(type: GenerateParser) {
62+
source = "src/main/grammars/FluidParser.bnf"
63+
targetRoot = 'gen'
64+
pathToParser = '/com/cedricziel/idea/fluid/lang/parser/FluidParserGenerated.java'
65+
pathToPsiRoot = '/com/cedricziel/idea/fluid/lang/psi'
66+
}
67+
68+
compileJava {
69+
dependsOn generateFluidParser, generateFluidLexer
70+
}
71+
72+
clean.doLast {
73+
file('gen').deleteDir()
74+
}

lang-fluid/src/README.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# TYPO3 Fluid plugin for IntelliJ based IDEs
2+
3+
This plugin is in an early draft stage. The project aims to provide
4+
a fully OpenSource plugin for the Fluid Template Language.
5+
6+
## Thoughts
7+
8+
In no particular order, these are measures we can implement to make sure,
9+
the language integrates nicely in the context. What's needed, is both
10+
an integration into the HTML Language (which is XML, internally), and
11+
a template language that resembles the inline syntax.
12+
13+
* use TemplateLanguage to be able to embed the fluid inside any outer template
14+
* use XmlAttributeDescriptorsProvider (https://github.com/JetBrains/intellij-plugins/blob/master/AngularJS/src/org/angularjs/codeInsight/attributes/AngularJSAttributeDescriptorsProvider.java)
15+
to provide valid XML attributes
16+
* use HtmlXmlExtension to fix XML Validation errors (https://github.com/JetBrains/intellij-plugins/blob/master/AngularJS/src/org/angularjs/codeInsight/AngularJSHtmlExtension.java)
17+
this should be used to implicitly provide namespaces (such as f, which is always available)
18+
* IntentionAndInspectionFilter to filter external inspections on a element
19+
(https://github.com/JetBrains/intellij-plugins/blob/master/AngularJS/src/org/angularjs/codeInsight/AngularJSInspectionFilter.java)
20+
* provide tags and element descriptors
21+
https://github.com/JetBrains/intellij-plugins/blob/master/AngularJS/src/org/angularjs/codeInsight/tags/AngularJSTagDescriptorsProvider.java
22+
* Extend XMLLanguage and replace if applicable? https://github.com/JetBrains/intellij-plugins/blob/master/AngularJS/src/org/angularjs/html/Angular2HTMLLanguage.java
23+
* add PostfixTemplateProvider for easier loops
24+
* add LiveTemplateProvider
25+
* allow Injection of other languages through `AbstractLanguageInjectionSupport`
26+
27+
## License
28+
29+
MIT
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
package com.cedricziel.idea.fluid.lang.lexer;
2+
3+
import com.intellij.lexer.FlexLexer;
4+
5+
import com.intellij.psi.TokenType;
6+
import com.intellij.psi.tree.IElementType;
7+
8+
import com.cedricziel.idea.fluid.lang.psi.FluidTypes;
9+
10+
%%
11+
12+
%{
13+
public _FluidLexer() {
14+
this((java.io.Reader) null);
15+
}
16+
%}
17+
18+
%class _FluidLexer
19+
%implements FlexLexer
20+
%function advance
21+
%type IElementType
22+
%unicode
23+
24+
WS = \s
25+
26+
INTEGER_NUMBER = 0|[1-9]\d*
27+
FLOAT_NUMBER = [0-9]*\.[0-9]+([eE][-+]?[0-9]+)?|[0-9]+[eE][-+]?[0-9]+
28+
IDENTIFIER = [\p{Alpha}_][\p{Alnum}_:]*
29+
30+
%state EXPRESSION
31+
%state SINGLE_QUOTED_STRING
32+
%state DOUBLE_QUOTED_STRING
33+
%state TERNARY_BRANCHES_OP
34+
%state COMMENT
35+
36+
%%
37+
38+
<YYINITIAL> {
39+
"{" { yybegin(EXPRESSION); return FluidTypes.EXPR_START; }
40+
"<!--/*" { yybegin(COMMENT); return FluidTypes.COMMENT_START; }
41+
"}" { yybegin(YYINITIAL); return FluidTypes.EXPR_END; }
42+
43+
"true" { return FluidTypes.BOOLEAN_LITERAL; }
44+
"false" { return FluidTypes.BOOLEAN_LITERAL; }
45+
"TRUE" { return FluidTypes.BOOLEAN_LITERAL; }
46+
"FALSE" { return FluidTypes.BOOLEAN_LITERAL; }
47+
48+
"'" { yybegin(SINGLE_QUOTED_STRING); return FluidTypes.SINGLE_QUOTE; }
49+
\" { yybegin(DOUBLE_QUOTED_STRING); return FluidTypes.DOUBLE_QUOTE; }
50+
{INTEGER_NUMBER} { return FluidTypes.INTEGER_NUMBER; }
51+
{FLOAT_NUMBER} { return FluidTypes.FLOAT_NUMBER; }
52+
{IDENTIFIER} { return FluidTypes.IDENTIFIER; }
53+
54+
"(" { return FluidTypes.LEFT_PARENTH; }
55+
")" { return FluidTypes.RIGHT_PARENTH; }
56+
"." { return FluidTypes.DOT; }
57+
"," { return FluidTypes.COMMA; }
58+
"!" { return FluidTypes.NOT; }
59+
"&&" { return FluidTypes.AND; }
60+
"||" { return FluidTypes.OR; }
61+
62+
"=" { return FluidTypes.ASSIGN; }
63+
"==" { return FluidTypes.EQ; }
64+
"!=" { return FluidTypes.NEQ; }
65+
"<" { return FluidTypes.LT; }
66+
">" { return FluidTypes.GT; }
67+
"<=" { return FluidTypes.LEQ; }
68+
">=" { return FluidTypes.GEQ; }
69+
"?" { return FluidTypes.TERNARY_QUESTION_OP; }
70+
71+
{WS}+ { return TokenType.WHITE_SPACE; }
72+
73+
[^] { yybegin(YYINITIAL); return TokenType.BAD_CHARACTER; }
74+
}
75+
76+
<COMMENT> {
77+
"*/-->" { yybegin(YYINITIAL); return FluidTypes.COMMENT_END; }
78+
[^] { return FluidTypes.COMMENT_CONTENT; }
79+
}

0 commit comments

Comments
 (0)