Skip to content

Commit d6962e6

Browse files
authored
run prettier on commit, including for java files (#1808)
* run prettier on commit, including for java files # Conflicts: # smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/CommandGenerator.java # smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/PackageApiValidationGenerator.java # smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/AddProtocolConfig.java # smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/knowledge/ServiceClosure.java # smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/schema/SchemaGenerator.java * run prettier on commit, including for java files * wonky formatting test * prettier-checkstyle reconciliation
1 parent 5a56762 commit d6962e6

File tree

191 files changed

+9051
-6937
lines changed

Some content is hidden

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

191 files changed

+9051
-6937
lines changed

config/checkstyle/checkstyle.xml

Lines changed: 89 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,18 @@
55
-->
66

77
<!DOCTYPE module PUBLIC
8-
"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
9-
"https://checkstyle.org/dtds/configuration_1_3.dtd">
8+
"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
9+
"https://checkstyle.org/dtds/configuration_1_3.dtd">
1010

11-
<module name="Checker">
12-
<module name="SuppressWarningsFilter"/>
11+
<module name = "Checker">
12+
<property name="charset" value="UTF-8"/>
13+
14+
<property name="severity" value="error"/>
15+
16+
<property name="fileExtensions" value="java, properties, xml"/>
17+
<module name="BeforeExecutionExclusionFileFilter">
18+
<property name="fileNamePattern" value="module\-info\.java$"/>
19+
</module>
1320

1421
<module name="SuppressionFilter">
1522
<property name="file" value="${config_loc}/suppressions.xml"/>
@@ -30,12 +37,6 @@
3037
<property name="lineSeparator" value="lf_cr_crlf"/>
3138
</module>
3239

33-
<!-- See http://checkstyle.sf.net/config_sizes.html -->
34-
<module name="LineLength">
35-
<property name="max" value="${checkstyle.linelength}" default="120"/>
36-
<property name="ignorePattern" value="^package.*|^import.*|a href|href|http://|https://|ftp://"/>
37-
</module>
38-
3940
<!-- Checks for whitespace -->
4041
<!-- See http://checkstyle.sf.net/config_whitespace.html -->
4142
<module name="FileTabCharacter"/>
@@ -45,9 +46,81 @@
4546
</module>
4647

4748
<module name="TreeWalker">
48-
<!-- Make comments and annotations available for the suppression comment filter. -->
49-
<module name="SuppressWarningsHolder"/>
50-
<module name="SuppressionCommentFilter"/>
49+
<module name="OuterTypeFilename"/>
50+
<module name="NoLineWrap">
51+
<property name="tokens" value="PACKAGE_DEF, IMPORT, STATIC_IMPORT"/>
52+
</module>
53+
<module name="LeftCurly" />
54+
<module name="RightCurly" />
55+
<module name="WhitespaceAfter"/>
56+
<module name="WhitespaceAround">
57+
<property name="allowEmptyConstructors" value="true"/>
58+
<property name="allowEmptyLambdas" value="true"/>
59+
<property name="allowEmptyMethods" value="true"/>
60+
<property name="allowEmptyTypes" value="true"/>
61+
<property name="allowEmptyLoops" value="true"/>
62+
<property name="allowEmptyCatches" value="true"/>
63+
<property name="ignoreEnhancedForColon" value="false"/>
64+
<property name="tokens"
65+
value="ASSIGN, BAND, BAND_ASSIGN, BOR, BOR_ASSIGN, BSR, BSR_ASSIGN, BXOR,
66+
BXOR_ASSIGN, COLON, DIV, DIV_ASSIGN, DO_WHILE, EQUAL, GE, GT, LAMBDA, LAND,
67+
LCURLY, LE, LITERAL_CATCH, LITERAL_DO, LITERAL_ELSE, LITERAL_FINALLY,
68+
LITERAL_FOR, LITERAL_IF, LITERAL_RETURN, LITERAL_SWITCH, LITERAL_SYNCHRONIZED,
69+
LITERAL_TRY, LITERAL_WHILE, LOR, LT, MINUS, MINUS_ASSIGN, MOD, MOD_ASSIGN,
70+
NOT_EQUAL, PLUS, PLUS_ASSIGN, QUESTION, RCURLY, SL, SLIST, SL_ASSIGN, SR,
71+
SR_ASSIGN, STAR, STAR_ASSIGN, LITERAL_ASSERT, TYPE_EXTENSION_AND"/>
72+
<message key="ws.notFollowed"
73+
value="WhitespaceAround: ''{0}'' is not followed by whitespace. Empty blocks may only be represented as '{}' when not part of a multi-block statement (4.1.3)"/>
74+
<message key="ws.notPreceded"
75+
value="WhitespaceAround: ''{0}'' is not preceded with whitespace."/>
76+
</module>
77+
<module name="GenericWhitespace">
78+
<message key="ws.followed"
79+
value="GenericWhitespace ''{0}'' is followed by whitespace."/>
80+
<message key="ws.preceded"
81+
value="GenericWhitespace ''{0}'' is preceded with whitespace."/>
82+
<message key="ws.illegalFollow"
83+
value="GenericWhitespace ''{0}'' should followed by whitespace."/>
84+
<message key="ws.notPreceded"
85+
value="GenericWhitespace ''{0}'' is not preceded with whitespace."/>
86+
</module>
87+
<module name="OneStatementPerLine"/>
88+
<module name="ModifierOrder"/>
89+
<module name="EmptyLineSeparator">
90+
<property name="tokens"
91+
value="PACKAGE_DEF, IMPORT, STATIC_IMPORT, CLASS_DEF, INTERFACE_DEF, ENUM_DEF,
92+
STATIC_INIT, INSTANCE_INIT, CTOR_DEF, VARIABLE_DEF, RECORD_DEF,
93+
COMPACT_CTOR_DEF"/>
94+
<property name="allowNoEmptyLineBetweenFields" value="true"/>
95+
</module>
96+
<module name="SeparatorWrap">
97+
<property name="id" value="SeparatorWrapDot"/>
98+
<property name="tokens" value="DOT"/>
99+
<property name="option" value="nl"/>
100+
</module>
101+
<module name="SeparatorWrap">
102+
<property name="id" value="SeparatorWrapComma"/>
103+
<property name="tokens" value="COMMA"/>
104+
<property name="option" value="EOL"/>
105+
</module>
106+
107+
<module name="MethodParamPad">
108+
<property name="tokens"
109+
value="CTOR_DEF, LITERAL_NEW, METHOD_CALL, METHOD_DEF,
110+
SUPER_CTOR_CALL, ENUM_CONSTANT_DEF, RECORD_DEF"/>
111+
</module>
112+
<module name="NoWhitespaceBefore">
113+
<property name="tokens"
114+
value="COMMA, SEMI, POST_INC, POST_DEC, DOT,
115+
LABELED_STAT, METHOD_REF"/>
116+
<property name="allowLineBreaks" value="true"/>
117+
</module>
118+
<module name="ParenPad"/>
119+
<module name="AnnotationLocation">
120+
<property name="allowSamelineMultipleAnnotations" value="false"/>
121+
<property name="allowSamelineSingleParameterlessAnnotation" value="false"/>
122+
<property name="allowSamelineParameterizedAnnotation" value="false"/>
123+
</module>
51124

52125
<!-- Checks for imports -->
53126
<!-- See http://checkstyle.sf.net/config_import.html -->
@@ -58,27 +131,13 @@
58131
<module name="UnusedImports">
59132
<property name="processJavadoc" value="true"/>
60133
</module>
134+
61135
<module name="CustomImportOrder">
62136
<property name="sortImportsInGroupAlphabetically" value="true"/>
63137
<property name="separateLineBetweenGroups" value="true"/>
64138
<property name="customImportOrderRules" value="STATIC###THIRD_PARTY_PACKAGE"/>
139+
<property name="tokens" value="IMPORT, STATIC_IMPORT, PACKAGE_DEF"/>
65140
</module>
66-
<module name="AvoidStarImport"/>
67-
68-
<!-- Checks for Javadoc comments. -->
69-
<!-- See http://checkstyle.sf.net/config_javadoc.html -->
70-
<module name="JavadocMethod">
71-
<property name="allowMissingParamTags" value="true"/>
72-
<property name="allowMissingReturnTag" value="true"/>
73-
<property name="allowedAnnotations" value="Override, Test"/>
74-
</module>
75-
<module name="JavadocStyle"/>
76-
<module name="NonEmptyAtclauseDescription"/>
77-
<module name="AtclauseOrder">
78-
<property name="tagOrder" value="@param, @return, @throws, @deprecated"/>
79-
<property name="target" value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF, VARIABLE_DEF"/>
80-
</module>
81-
<module name="MissingOverride"/>
82141

83142
<!-- Checks for Naming Conventions. -->
84143
<!-- See http://checkstyle.sf.net/config_naming.html -->
@@ -97,65 +156,11 @@
97156
<property name="severity" value="warning"/>
98157
</module>
99158

100-
<!-- Checks for whitespace -->
101-
<!-- See http://checkstyle.sf.net/config_whitespace.html -->
102-
<module name="EmptyForIteratorPad"/>
103-
<module name="GenericWhitespace"/>
104-
<module name="MethodParamPad"/>
105-
<module name="NoWhitespaceAfter"/>
106-
<module name="NoWhitespaceBefore"/>
107-
<module name="OperatorWrap"/>
108-
<module name="ParenPad"/>
109-
<module name="TypecastParenPad"/>
110-
<module name="WhitespaceAfter"/>
111-
<module name="WhitespaceAround">
112-
<property name="allowEmptyConstructors" value="true"/>
113-
<property name="allowEmptyMethods" value="true"/>
114-
<property name="allowEmptyTypes" value="true"/>
115-
<property name="allowEmptyLoops" value="true"/>
116-
</module>
117-
<module name="SeparatorWrap">
118-
<property name="id" value="SeparatorWrapDot"/>
119-
<property name="tokens" value="DOT"/>
120-
<property name="option" value="nl"/>
121-
</module>
122-
<module name="SeparatorWrap">
123-
<property name="id" value="SeparatorWrapComma"/>
124-
<property name="tokens" value="COMMA"/>
125-
<property name="option" value="EOL"/>
126-
</module>
127-
<module name="EmptyLineSeparator">
128-
<property name="allowNoEmptyLineBetweenFields" value="true"/>
129-
</module>
130-
131159
<!-- Modifier Checks -->
132160
<!-- See http://checkstyle.sf.net/config_modifiers.html -->
133161
<module name="ModifierOrder"/>
134162
<module name="RedundantModifier"/>
135163

136-
<!-- Checks for blocks. You know, those {}'s -->
137-
<!-- See http://checkstyle.sf.net/config_blocks.html -->
138-
<!-- Braces must not be empty for most language constructs. -->
139-
<module name="EmptyBlock">
140-
<property name="option" value="TEXT"/>
141-
<property name="tokens" value="LITERAL_TRY, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE, LITERAL_SWITCH"/>
142-
</module>
143-
<module name="LeftCurly"/>
144-
<module name="NeedBraces">
145-
<property name="allowEmptyLoopBody" value="true"/>
146-
</module>
147-
<module name="RightCurly">
148-
<property name="id" value="RightCurlySame"/>
149-
<property name="tokens"
150-
value="LITERAL_TRY, LITERAL_CATCH, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE"/>
151-
</module>
152-
<module name="RightCurly">
153-
<property name="id" value="RightCurlyAlone"/>
154-
<property name="option" value="alone"/>
155-
<property name="tokens"
156-
value="CLASS_DEF, METHOD_DEF, LITERAL_FOR, LITERAL_WHILE, STATIC_INIT, INSTANCE_INIT"/>
157-
</module>
158-
159164
<!-- Checks for common coding problems -->
160165
<!-- See http://checkstyle.sf.net/config_coding.html -->
161166
<module name="EqualsHashCode"/>
@@ -193,4 +198,4 @@
193198
<property name="allowNonPrintableEscapes" value="true"/>
194199
</module>
195200
</module>
196-
</module>
201+
</module>

package.json

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,9 @@
5252
"happy-dom": "20.0.2",
5353
"husky": "^4.2.3",
5454
"jest": "29.7.0",
55+
"lint-staged": "^16.2.7",
5556
"prettier": "3.2.5",
57+
"prettier-plugin-java": "^2.7.7",
5658
"puppeteer": "^19.2.0",
5759
"rollup": "^4.52.2",
5860
"ts-jest": "29.1.2",
@@ -72,7 +74,13 @@
7274
"packageManager": "[email protected]",
7375
"husky": {
7476
"hooks": {
75-
"pre-commit": "yarn lint:dependencies && yarn lint:versions & yarn lint:api"
77+
"pre-commit": "lint-staged && yarn lint:dependencies && yarn lint:versions & yarn lint:api"
7678
}
79+
},
80+
"lint-staged": {
81+
"packages/**/src/**/*.ts": [
82+
"prettier --write"
83+
],
84+
"**/*.{ts,js,md,json,java}": "prettier --write"
7785
}
7886
}

prettier.config.js

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
module.exports = {
22
// Custom
33
printWidth: 120,
4-
trailingComma: "es5"
4+
trailingComma: "es5",
5+
plugins: ["prettier-plugin-java"],
6+
overrides: [
7+
{
8+
files: "*.java",
9+
options: {
10+
tabWidth: 4,
11+
},
12+
},
13+
],
514
};

smithy-typescript-codegen-test/example-weather-customizations/src/main/java/example/weather/ExampleWeatherCustomEndpointsRuntimeConfig.java

Lines changed: 51 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -16,44 +16,48 @@
1616
import software.amazon.smithy.typescript.codegen.TypeScriptDependency;
1717
import software.amazon.smithy.typescript.codegen.endpointsV2.EndpointsV2Generator;
1818
import software.amazon.smithy.typescript.codegen.integration.RuntimeClientPlugin;
19-
import software.amazon.smithy.typescript.codegen.integration.TypeScriptIntegration;
2019
import software.amazon.smithy.typescript.codegen.integration.RuntimeClientPlugin.Convention;
20+
import software.amazon.smithy.typescript.codegen.integration.TypeScriptIntegration;
2121
import software.amazon.smithy.utils.SmithyInternalApi;
2222

2323
@SmithyInternalApi
2424
public final class ExampleWeatherCustomEndpointsRuntimeConfig implements TypeScriptIntegration {
25+
2526
public static final String GENERIC_TEST_DIR = Paths.get(".", CodegenUtils.SOURCE_FOLDER, "generic").toString();
2627
public static final String INDEX_MODULE = GENERIC_TEST_DIR + "/index";
2728
public static final String INDEX_FILE = INDEX_MODULE + ".ts";
2829
public static final String ADD_CUSTOM_ENDPOINTS_FILE = GENERIC_TEST_DIR + "/customEndpoints" + ".ts";
30+
2931
public static final String getClientFile(ShapeId service) {
3032
return Paths.get(".", CodegenUtils.SOURCE_FOLDER, service.getName() + "Client.ts").toString();
3133
}
34+
3235
public static final ShapeId EXAMPLE_WEATHER_SERVICE_ID = ShapeId.from("example.weather#Weather");
33-
36+
3437
@Override
3538
public List<RuntimeClientPlugin> getClientPlugins() {
3639
return List.of(
3740
RuntimeClientPlugin.builder()
38-
.inputConfig(Symbol.builder()
39-
.namespace(INDEX_MODULE, "/")
40-
.name("GenericCustomEndpointsInputConfig")
41-
.build())
42-
.resolvedConfig(Symbol.builder()
43-
.namespace(INDEX_MODULE, "/")
44-
.name("GenericCustomEndpointsResolvedConfig")
45-
.build())
46-
.resolveFunction(Symbol.builder()
47-
.namespace(INDEX_MODULE, "/")
48-
.name("resolveGenericCustomEndpointsConfig")
49-
.build())
41+
.inputConfig(
42+
Symbol.builder().namespace(INDEX_MODULE, "/").name("GenericCustomEndpointsInputConfig").build()
43+
)
44+
.resolvedConfig(
45+
Symbol.builder().namespace(INDEX_MODULE, "/").name("GenericCustomEndpointsResolvedConfig").build()
46+
)
47+
.resolveFunction(
48+
Symbol.builder().namespace(INDEX_MODULE, "/").name("resolveGenericCustomEndpointsConfig").build()
49+
)
5050
.servicePredicate((m, s) -> isExampleWeatherService(s))
5151
.build(),
5252
RuntimeClientPlugin.builder()
5353
.withConventions(
54-
TypeScriptDependency.MIDDLEWARE_ENDPOINTS_V2.dependency, "Endpoint", Convention.HAS_CONFIG)
54+
TypeScriptDependency.MIDDLEWARE_ENDPOINTS_V2.dependency,
55+
"Endpoint",
56+
Convention.HAS_CONFIG
57+
)
5558
.servicePredicate((m, s) -> isExampleWeatherService(s))
56-
.build());
59+
.build()
60+
);
5761
}
5862

5963
@Override
@@ -66,34 +70,40 @@ public void customize(TypeScriptCodegenContext codegenContext) {
6670
return;
6771
}
6872

69-
codegenContext.writerDelegator().useFileWriter(INDEX_FILE, w -> {
70-
w.write("export * from \"./customEndpoints\";");
71-
});
73+
codegenContext
74+
.writerDelegator()
75+
.useFileWriter(INDEX_FILE, w -> {
76+
w.write("export * from \"./customEndpoints\";");
77+
});
7278

73-
codegenContext.writerDelegator().useFileWriter(ADD_CUSTOM_ENDPOINTS_FILE, w -> {
74-
w.addTypeImport("Provider", "__Provider", TypeScriptDependency.SMITHY_TYPES);
75-
w.addImport("normalizeProvider", null, TypeScriptDependency.UTIL_MIDDLEWARE);
76-
w.write("""
77-
export interface GenericCustomEndpointsInputConfig {
78-
region?: string | __Provider<string>;
79-
endpointProvider?: any;
80-
}
79+
codegenContext
80+
.writerDelegator()
81+
.useFileWriter(ADD_CUSTOM_ENDPOINTS_FILE, w -> {
82+
w.addTypeImport("Provider", "__Provider", TypeScriptDependency.SMITHY_TYPES);
83+
w.addImport("normalizeProvider", null, TypeScriptDependency.UTIL_MIDDLEWARE);
84+
w.write(
85+
"""
86+
export interface GenericCustomEndpointsInputConfig {
87+
region?: string | __Provider<string>;
88+
endpointProvider?: any;
89+
}
8190
82-
export interface GenericCustomEndpointsResolvedConfig {
83-
region: __Provider<string>;
84-
endpointProvider: any;
85-
}
91+
export interface GenericCustomEndpointsResolvedConfig {
92+
region: __Provider<string>;
93+
endpointProvider: any;
94+
}
8695
87-
export const resolveGenericCustomEndpointsConfig = <T>(config: T & GenericCustomEndpointsInputConfig): \
88-
T & GenericCustomEndpointsResolvedConfig => {
89-
return {
90-
...config,
91-
endpointProvider: normalizeProvider(config.endpointProvider || "www.amazon.com"),
92-
region: normalizeProvider(config.region || "us-west-2"),
93-
};
94-
}
95-
""");
96-
});
96+
export const resolveGenericCustomEndpointsConfig = <T>(config: T & GenericCustomEndpointsInputConfig): \
97+
T & GenericCustomEndpointsResolvedConfig => {
98+
return {
99+
...config,
100+
endpointProvider: normalizeProvider(config.endpointProvider || "www.amazon.com"),
101+
region: normalizeProvider(config.region || "us-west-2"),
102+
};
103+
}
104+
"""
105+
);
106+
});
97107
}
98108

99109
private static boolean isExampleWeatherService(ToShapeId toShapeId) {

0 commit comments

Comments
 (0)