Skip to content

Commit 334dcdd

Browse files
Initial commit
0 parents  commit 334dcdd

Some content is hidden

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

57 files changed

+4685
-0
lines changed

.editorconfig

Lines changed: 178 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,178 @@
1+
root = true
2+
3+
[*]
4+
charset = utf-8
5+
end_of_line = CRLF
6+
indent_style = space
7+
indent_size = 4
8+
insert_final_newline = false
9+
trim_trailing_whitespace = true
10+
11+
[*.sln]
12+
indent_style = tab
13+
14+
[*.{csproj,vbproj,vcxproj,vcxproj.filters}]
15+
indent_size = 2
16+
17+
[*.{xml,config,props,targets,nuspec,ruleset}]
18+
indent_size = 2
19+
20+
[*.{yml,yaml}]
21+
indent_size = 2
22+
23+
[*.json]
24+
indent_size = 2
25+
26+
[*.md]
27+
trim_trailing_whitespace = false
28+
29+
[*.sh]
30+
end_of_line = lf
31+
32+
[*.cs]
33+
# Sort using and Import directives with System.* appearing first
34+
dotnet_sort_system_directives_first = true
35+
dotnet_separate_import_directive_groups = false
36+
37+
# Avoid "this." and "Me." if not necessary
38+
dotnet_style_qualification_for_field = false:refactoring
39+
dotnet_style_qualification_for_property = false:refactoring
40+
dotnet_style_qualification_for_method = false:refactoring
41+
dotnet_style_qualification_for_event = false:refactoring
42+
43+
# Use language keywords instead of framework type names for type references
44+
dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion
45+
dotnet_style_predefined_type_for_member_access = true:suggestion
46+
47+
# Suggest more modern language features when available
48+
dotnet_style_object_initializer = true:suggestion
49+
dotnet_style_collection_initializer = true:suggestion
50+
dotnet_style_coalesce_expression = true:suggestion
51+
dotnet_style_null_propagation = true:suggestion
52+
dotnet_style_explicit_tuple_names = true:suggestion
53+
54+
# Non-private static fields are PascalCase
55+
dotnet_naming_rule.non_private_static_fields_should_be_pascal_case.severity = suggestion
56+
dotnet_naming_rule.non_private_static_fields_should_be_pascal_case.symbols = non_private_static_fields
57+
dotnet_naming_rule.non_private_static_fields_should_be_pascal_case.style = non_private_static_field_style
58+
dotnet_naming_symbols.non_private_static_fields.applicable_kinds = field
59+
dotnet_naming_symbols.non_private_static_fields.applicable_accessibilities = public, protected, internal, protected_internal, private_protected
60+
dotnet_naming_symbols.non_private_static_fields.required_modifiers = static
61+
dotnet_naming_style.non_private_static_field_style.capitalization = pascal_case
62+
63+
# Non-private readonly fields are PascalCase
64+
dotnet_naming_rule.non_private_readonly_fields_should_be_pascal_case.severity = suggestion
65+
dotnet_naming_rule.non_private_readonly_fields_should_be_pascal_case.symbols = non_private_readonly_fields
66+
dotnet_naming_rule.non_private_readonly_fields_should_be_pascal_case.style = non_private_readonly_field_style
67+
dotnet_naming_symbols.non_private_readonly_fields.applicable_kinds = field
68+
dotnet_naming_symbols.non_private_readonly_fields.applicable_accessibilities = public, protected, internal, protected_internal, private_protected
69+
dotnet_naming_symbols.non_private_readonly_fields.required_modifiers = readonly
70+
dotnet_naming_style.non_private_readonly_field_style.capitalization = pascal_case
71+
72+
# Constants are PascalCase
73+
dotnet_naming_rule.constants_should_be_pascal_case.severity = suggestion
74+
dotnet_naming_rule.constants_should_be_pascal_case.symbols = constants
75+
dotnet_naming_rule.constants_should_be_pascal_case.style = constant_style
76+
dotnet_naming_symbols.constants.applicable_kinds = field, local
77+
dotnet_naming_symbols.constants.required_modifiers = const
78+
dotnet_naming_style.constant_style.capitalization = pascal_case
79+
80+
# Instance fields are camelCase and start with _
81+
dotnet_naming_rule.instance_fields_should_be_camel_case.severity = suggestion
82+
dotnet_naming_rule.instance_fields_should_be_camel_case.symbols = instance_fields
83+
dotnet_naming_rule.instance_fields_should_be_camel_case.style = instance_field_style
84+
dotnet_naming_symbols.instance_fields.applicable_kinds = field
85+
dotnet_naming_style.instance_field_style.capitalization = camel_case
86+
dotnet_naming_style.instance_field_style.required_prefix = _
87+
88+
# Locals and parameters are camelCase
89+
dotnet_naming_rule.locals_should_be_camel_case.severity = suggestion
90+
dotnet_naming_rule.locals_should_be_camel_case.symbols = locals_and_parameters
91+
dotnet_naming_rule.locals_should_be_camel_case.style = camel_case_style
92+
dotnet_naming_symbols.locals_and_parameters.applicable_kinds = parameter, local
93+
dotnet_naming_style.camel_case_style.capitalization = camel_case
94+
95+
# Local functions are PascalCase
96+
dotnet_naming_rule.local_functions_should_be_pascal_case.severity = suggestion
97+
dotnet_naming_rule.local_functions_should_be_pascal_case.symbols = local_functions
98+
dotnet_naming_rule.local_functions_should_be_pascal_case.style = local_function_style
99+
dotnet_naming_symbols.local_functions.applicable_kinds = local_function
100+
dotnet_naming_style.local_function_style.capitalization = pascal_case
101+
102+
# By default, name items with PascalCase
103+
dotnet_naming_rule.members_should_be_pascal_case.severity = suggestion
104+
dotnet_naming_rule.members_should_be_pascal_case.symbols = all_members
105+
dotnet_naming_rule.members_should_be_pascal_case.style = pascal_case_style
106+
dotnet_naming_symbols.all_members.applicable_kinds = *
107+
dotnet_naming_style.pascal_case_style.capitalization = pascal_case
108+
109+
# Newline settings
110+
csharp_new_line_before_open_brace = all
111+
csharp_new_line_before_else = true
112+
csharp_new_line_before_catch = true
113+
csharp_new_line_before_finally = true
114+
csharp_new_line_before_members_in_object_initializers = true
115+
csharp_new_line_before_members_in_anonymous_types = true
116+
csharp_new_line_between_query_expression_clauses = true
117+
118+
# Indentation preferences
119+
csharp_indent_block_contents = true
120+
csharp_indent_braces = false
121+
csharp_indent_case_contents = true
122+
csharp_indent_case_contents_when_block = true
123+
csharp_indent_switch_labels = true
124+
csharp_indent_labels = flush_left
125+
126+
# Prefer "var" everywhere
127+
csharp_style_var_for_built_in_types = true:suggestion
128+
csharp_style_var_when_type_is_apparent = true:suggestion
129+
csharp_style_var_elsewhere = true:suggestion
130+
131+
# Prefer method-like constructs to have a block body
132+
csharp_style_expression_bodied_methods = false:none
133+
csharp_style_expression_bodied_constructors = false:none
134+
csharp_style_expression_bodied_operators = false:none
135+
136+
# Prefer property-like constructs to have an expression-body
137+
csharp_style_expression_bodied_properties = true:none
138+
csharp_style_expression_bodied_indexers = true:none
139+
csharp_style_expression_bodied_accessors = true:none
140+
141+
# Suggest more modern language features when available
142+
csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion
143+
csharp_style_pattern_matching_over_as_with_null_check = true:suggestion
144+
csharp_style_inlined_variable_declaration = true:suggestion
145+
csharp_style_throw_expression = true:suggestion
146+
csharp_style_conditional_delegate_call = true:suggestion
147+
148+
# Space preferences
149+
csharp_space_after_cast = false
150+
csharp_space_after_colon_in_inheritance_clause = true
151+
csharp_space_after_comma = true
152+
csharp_space_after_dot = false
153+
csharp_space_after_keywords_in_control_flow_statements = true
154+
csharp_space_after_semicolon_in_for_statement = true
155+
csharp_space_around_binary_operators = before_and_after
156+
csharp_space_around_declaration_statements = do_not_ignore
157+
csharp_space_before_colon_in_inheritance_clause = true
158+
csharp_space_before_comma = false
159+
csharp_space_before_dot = false
160+
csharp_space_before_open_square_brackets = false
161+
csharp_space_before_semicolon_in_for_statement = false
162+
csharp_space_between_empty_square_brackets = false
163+
csharp_space_between_method_call_empty_parameter_list_parentheses = false
164+
csharp_space_between_method_call_name_and_opening_parenthesis = false
165+
csharp_space_between_method_call_parameter_list_parentheses = false
166+
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
167+
csharp_space_between_method_declaration_name_and_open_parenthesis = false
168+
csharp_space_between_method_declaration_parameter_list_parentheses = false
169+
csharp_space_between_parentheses = false
170+
csharp_space_between_square_brackets = false
171+
172+
# Blocks are allowed
173+
csharp_prefer_braces = true:silent
174+
csharp_preserve_single_line_blocks = true
175+
csharp_preserve_single_line_statements = true
176+
177+
# warning RS0037: PublicAPI.txt is missing '#nullable enable'
178+
dotnet_diagnostic.RS0037.severity = none

.github/workflows/ci.yaml

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
name: Continuous Integration
2+
on: pull_request
3+
4+
env:
5+
# Set the DOTNET_SKIP_FIRST_TIME_EXPERIENCE environment variable to stop wasting time caching packages
6+
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
7+
# Disable sending usage data to Microsoft
8+
DOTNET_CLI_TELEMETRY_OPTOUT: true
9+
10+
jobs:
11+
build:
12+
name: Build
13+
if: "!contains(github.event.head_commit.message, 'skip-ci')"
14+
strategy:
15+
matrix:
16+
kind: ['linux', 'windows', 'macOS']
17+
include:
18+
- kind: linux
19+
os: ubuntu-latest
20+
- kind: windows
21+
os: windows-latest
22+
- kind: macOS
23+
os: macos-latest
24+
runs-on: ${{ matrix.os }}
25+
steps:
26+
- name: Checkout
27+
uses: actions/checkout@v2
28+
with:
29+
fetch-depth: 0
30+
31+
- name: 'Get Git tags'
32+
run: git fetch --tags
33+
shell: bash
34+
35+
- name: Setup dotnet
36+
uses: actions/setup-dotnet@v1
37+
with:
38+
dotnet-version: 3.1.301
39+
40+
- name: Build
41+
shell: bash
42+
run: |
43+
dotnet tool restore
44+
dotnet cake

.github/workflows/publish.yaml

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
name: Publish
2+
3+
on:
4+
push:
5+
tags:
6+
- '*'
7+
branches:
8+
- main
9+
10+
env:
11+
# Set the DOTNET_SKIP_FIRST_TIME_EXPERIENCE environment variable to stop wasting time caching packages
12+
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
13+
# Disable sending usage data to Microsoft
14+
DOTNET_CLI_TELEMETRY_OPTOUT: true
15+
16+
jobs:
17+
18+
###################################################
19+
# BUILD
20+
###################################################
21+
22+
build:
23+
name: Build
24+
if: "!contains(github.event.head_commit.message, 'skip-ci')"
25+
strategy:
26+
matrix:
27+
kind: ['linux', 'windows', 'macOS']
28+
include:
29+
- kind: linux
30+
os: ubuntu-latest
31+
- kind: windows
32+
os: windows-latest
33+
- kind: macOS
34+
os: macos-latest
35+
runs-on: ${{ matrix.os }}
36+
steps:
37+
- name: Checkout
38+
uses: actions/checkout@v2
39+
with:
40+
fetch-depth: 0
41+
42+
- name: 'Get Git tags'
43+
run: git fetch --tags
44+
shell: bash
45+
46+
- name: Setup dotnet
47+
uses: actions/setup-dotnet@v1
48+
with:
49+
dotnet-version: 3.1.301
50+
51+
- name: Build
52+
shell: bash
53+
run: |
54+
dotnet tool restore
55+
dotnet cake
56+
57+
###################################################
58+
# PUBLISH
59+
###################################################
60+
61+
publish:
62+
name: Publish
63+
needs: [build]
64+
if: "!contains(github.event.head_commit.message, 'skip-ci')"
65+
runs-on: ubuntu-latest
66+
steps:
67+
- name: Checkout
68+
uses: actions/checkout@v2
69+
with:
70+
fetch-depth: 0
71+
72+
- name: 'Get Git tags'
73+
run: git fetch --tags
74+
shell: bash
75+
76+
- name: Setup dotnet
77+
uses: actions/setup-dotnet@v1
78+
with:
79+
dotnet-version: 3.1.301
80+
81+
- name: Publish
82+
shell: bash
83+
run: |
84+
dotnet tool restore
85+
dotnet cake --target="publish" \
86+
--nuget-key="${{secrets.NUGET_API_KEY}}" \
87+
--github-key="${{secrets.GITHUB_TOKEN}}"

0 commit comments

Comments
 (0)