diff --git a/.editorconfig b/.editorconfig index 1172014..8fbf34b 100644 --- a/.editorconfig +++ b/.editorconfig @@ -5,12 +5,14 @@ root = true [*] end_of_line = CRLF +trim_trailing_whitespace = true -[*.ps1] -indent_style = space -indent_size = 4 +[*.md] +trim_trailing_whitespace = false -[*.cs] +[*.{bat,ps1}] +charset = utf-8-bom +end_of_line = crlf indent_style = space indent_size = 4 @@ -20,4 +22,4 @@ indent_size = 4 [*.js] indent_style = tab -indent_size = 2 +indent_size = 2 \ No newline at end of file diff --git a/Source/.editorconfig b/Source/.editorconfig new file mode 100644 index 0000000..5a0258f --- /dev/null +++ b/Source/.editorconfig @@ -0,0 +1,241 @@ + +# This may not be needed, but kept for compatibility with VS +[*.{sln,csproj}] +end_of_line = crlf +indent_size = 2 + +# C# files +[*.cs] + +#### Core EditorConfig Options #### + +# Indentation and spacing +indent_size = 4 +indent_style = space +tab_width = 4 + +# New line preferences +end_of_line = crlf +insert_final_newline = true + +#### .NET Coding Conventions #### + +# Organize usings +dotnet_separate_import_directive_groups = true +dotnet_sort_system_directives_first = true +file_header_template = unset + +# this. and Me. preferences +dotnet_style_qualification_for_event = false:warning +dotnet_style_qualification_for_field = false:warning +dotnet_style_qualification_for_method = false:warning +dotnet_style_qualification_for_property = false:warning + +# Language keywords vs BCL types preferences +dotnet_style_predefined_type_for_locals_parameters_members = true:warning +dotnet_style_predefined_type_for_member_access = true:warning + +# Parentheses preferences +dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:silent +dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:silent +dotnet_style_parentheses_in_other_operators = never_if_unnecessary:silent +dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:silent + +# Modifier preferences +dotnet_style_require_accessibility_modifiers = for_non_interface_members:warning + +# Expression-level preferences +dotnet_style_coalesce_expression = true:suggestion +dotnet_style_collection_initializer = true:suggestion +dotnet_style_explicit_tuple_names = true:suggestion +dotnet_style_null_propagation = true:suggestion +dotnet_style_object_initializer = true:suggestion +dotnet_style_operator_placement_when_wrapping = beginning_of_line +dotnet_style_prefer_auto_properties = true:silent +dotnet_style_prefer_compound_assignment = true:suggestion +dotnet_style_prefer_conditional_expression_over_assignment = true:silent +dotnet_style_prefer_conditional_expression_over_return = true:silent +dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion +dotnet_style_prefer_inferred_tuple_names = true:suggestion +dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion +dotnet_style_prefer_simplified_boolean_expressions = true:suggestion +dotnet_style_prefer_simplified_interpolation = true:suggestion + +# Field preferences +dotnet_style_readonly_field = true:suggestion + +# Parameter preferences +dotnet_code_quality_unused_parameters = all:suggestion + +#### C# Coding Conventions #### + +# var preferences +csharp_style_var_elsewhere = false:silent +csharp_style_var_for_built_in_types = false:silent +csharp_style_var_when_type_is_apparent = false:silent + +# Expression-bodied members +csharp_style_expression_bodied_accessors = true:silent +csharp_style_expression_bodied_constructors = false:silent +csharp_style_expression_bodied_indexers = true:silent +csharp_style_expression_bodied_lambdas = true:silent +csharp_style_expression_bodied_local_functions = false:silent +csharp_style_expression_bodied_methods = false:silent +csharp_style_expression_bodied_operators = false:silent +csharp_style_expression_bodied_properties = true:silent + +# Pattern matching preferences +csharp_style_pattern_matching_over_as_with_null_check = true:suggestion +csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion +csharp_style_prefer_switch_expression = true:suggestion + +# Null-checking preferences +csharp_style_conditional_delegate_call = true:suggestion + +# Modifier preferences +csharp_prefer_static_local_function = true:suggestion +csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:silent + +# Code-block preferences +csharp_prefer_braces = true:silent +csharp_prefer_simple_using_statement = true:suggestion + +# Expression-level preferences +csharp_prefer_simple_default_expression = true:suggestion +csharp_style_deconstructed_variable_declaration = true:suggestion +csharp_style_inlined_variable_declaration = true:suggestion +csharp_style_pattern_local_over_anonymous_function = true:suggestion +csharp_style_prefer_index_operator = true:suggestion +csharp_style_prefer_range_operator = true:suggestion +csharp_style_throw_expression = true:suggestion +csharp_style_unused_value_assignment_preference = discard_variable:suggestion +csharp_style_unused_value_expression_statement_preference = discard_variable:silent + +# 'using' directive preferences +csharp_using_directive_placement = outside_namespace:warning + +#### C# Formatting Rules #### + +# New line preferences +csharp_new_line_before_catch = true +csharp_new_line_before_else = true +csharp_new_line_before_finally = true +csharp_new_line_before_members_in_anonymous_types = true +csharp_new_line_before_members_in_object_initializers = true +csharp_new_line_before_open_brace = all +csharp_new_line_between_query_expression_clauses = true + +# Indentation preferences +csharp_indent_block_contents = true +csharp_indent_braces = false +csharp_indent_case_contents = true +csharp_indent_case_contents_when_block = false +csharp_indent_labels = flush_left +csharp_indent_switch_labels = true + +# Space preferences +csharp_space_after_cast = false +csharp_space_after_colon_in_inheritance_clause = true +csharp_space_after_comma = true +csharp_space_after_dot = false +csharp_space_after_keywords_in_control_flow_statements = true +csharp_space_after_semicolon_in_for_statement = true +csharp_space_around_binary_operators = before_and_after +csharp_space_around_declaration_statements = false +csharp_space_before_colon_in_inheritance_clause = true +csharp_space_before_comma = false +csharp_space_before_dot = false +csharp_space_before_open_square_brackets = false +csharp_space_before_semicolon_in_for_statement = false +csharp_space_between_empty_square_brackets = false +csharp_space_between_method_call_empty_parameter_list_parentheses = false +csharp_space_between_method_call_name_and_opening_parenthesis = false +csharp_space_between_method_call_parameter_list_parentheses = false +csharp_space_between_method_declaration_empty_parameter_list_parentheses = false +csharp_space_between_method_declaration_name_and_open_parenthesis = false +csharp_space_between_method_declaration_parameter_list_parentheses = false +csharp_space_between_parentheses = false +csharp_space_between_square_brackets = false + +# Wrapping preferences +csharp_preserve_single_line_blocks = true +csharp_preserve_single_line_statements = false + +#### Naming styles #### + +# Naming rules + +dotnet_naming_rule.interface_should_be_begins_with_i.severity = warning +dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface +dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i + +dotnet_naming_rule.types_should_be_pascal_case.severity = warning +dotnet_naming_rule.types_should_be_pascal_case.symbols = types +dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case + +dotnet_naming_rule.method_should_be_pascal_case.severity = warning +dotnet_naming_rule.method_should_be_pascal_case.symbols = method +dotnet_naming_rule.method_should_be_pascal_case.style = pascal_case + +dotnet_naming_rule.public_or_protected_field_should_be_pascal_case.severity = warning +dotnet_naming_rule.public_or_protected_field_should_be_pascal_case.symbols = public_or_protected_field +dotnet_naming_rule.public_or_protected_field_should_be_pascal_case.style = pascal_case + +dotnet_naming_rule.private_or_internal_static_field_should_be_pascal_case.severity = warning +dotnet_naming_rule.private_or_internal_static_field_should_be_pascal_case.symbols = private_or_internal_static_field +dotnet_naming_rule.private_or_internal_static_field_should_be_pascal_case.style = pascal_case + +dotnet_naming_rule.private_or_internal_field_should_be_camelcase_with_underscore.severity = warning +dotnet_naming_rule.private_or_internal_field_should_be_camelcase_with_underscore.symbols = private_or_internal_field +dotnet_naming_rule.private_or_internal_field_should_be_camelcase_with_underscore.style = camelcase_with_underscore + +dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = warning +dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members +dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case + +# Symbol specifications + +dotnet_naming_symbols.interface.applicable_kinds = interface +dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected +dotnet_naming_symbols.interface.required_modifiers = + +dotnet_naming_symbols.method.applicable_kinds = method +dotnet_naming_symbols.method.applicable_accessibilities = public +dotnet_naming_symbols.method.required_modifiers = + +dotnet_naming_symbols.public_or_protected_field.applicable_kinds = field +dotnet_naming_symbols.public_or_protected_field.applicable_accessibilities = public, protected +dotnet_naming_symbols.public_or_protected_field.required_modifiers = + +dotnet_naming_symbols.private_or_internal_field.applicable_kinds = field +dotnet_naming_symbols.private_or_internal_field.applicable_accessibilities = internal, private, private_protected +dotnet_naming_symbols.private_or_internal_field.required_modifiers = + +dotnet_naming_symbols.private_or_internal_static_field.applicable_kinds = field +dotnet_naming_symbols.private_or_internal_static_field.applicable_accessibilities = internal, private, private_protected +dotnet_naming_symbols.private_or_internal_static_field.required_modifiers = static + +dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum +dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected +dotnet_naming_symbols.types.required_modifiers = + +dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method +dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected +dotnet_naming_symbols.non_field_members.required_modifiers = + +# Naming styles + +dotnet_naming_style.pascal_case.required_prefix = +dotnet_naming_style.pascal_case.required_suffix = +dotnet_naming_style.pascal_case.word_separator = +dotnet_naming_style.pascal_case.capitalization = pascal_case + +dotnet_naming_style.begins_with_i.required_prefix = I +dotnet_naming_style.begins_with_i.required_suffix = +dotnet_naming_style.begins_with_i.word_separator = +dotnet_naming_style.begins_with_i.capitalization = pascal_case + +dotnet_naming_style.camelcase_with_underscore.required_prefix = _ +dotnet_naming_style.camelcase_with_underscore.required_suffix = +dotnet_naming_style.camelcase_with_underscore.word_separator = +dotnet_naming_style.camelcase_with_underscore.capitalization = camel_case \ No newline at end of file diff --git a/Source/Cake.Chocolatey.Module.Tests/Cake.Chocolatey.Module.Tests.csproj b/Source/Cake.Chocolatey.Module.Tests/Cake.Chocolatey.Module.Tests.csproj index 6d60baa..86d4c94 100644 --- a/Source/Cake.Chocolatey.Module.Tests/Cake.Chocolatey.Module.Tests.csproj +++ b/Source/Cake.Chocolatey.Module.Tests/Cake.Chocolatey.Module.Tests.csproj @@ -1,24 +1,28 @@ - - - - netcoreapp3.1 - - - - - all + + + + netcoreapp3.1 + + + + + all + + + all - - all + + runtime; build; native; contentfiles; analyzers; buildtransitive + all - - - - - - - - - + + + + + + + + + diff --git a/Source/Cake.Chocolatey.Module.Tests/packages.config b/Source/Cake.Chocolatey.Module.Tests/packages.config deleted file mode 100644 index 5f2156d..0000000 --- a/Source/Cake.Chocolatey.Module.Tests/packages.config +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/Source/Cake.Chocolatey.Module/Cake.Chocolatey.Module.ruleset b/Source/Cake.Chocolatey.Module.ruleset similarity index 97% rename from Source/Cake.Chocolatey.Module/Cake.Chocolatey.Module.ruleset rename to Source/Cake.Chocolatey.Module.ruleset index be6bff4..7ce5887 100644 --- a/Source/Cake.Chocolatey.Module/Cake.Chocolatey.Module.ruleset +++ b/Source/Cake.Chocolatey.Module.ruleset @@ -1,78 +1,78 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/Cake.Chocolatey.Module.sln b/Source/Cake.Chocolatey.Module.sln index 8d5eb1b..26f03c7 100644 --- a/Source/Cake.Chocolatey.Module.sln +++ b/Source/Cake.Chocolatey.Module.sln @@ -7,6 +7,12 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cake.Chocolatey.Module", "C EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cake.Chocolatey.Module.Tests", "Cake.Chocolatey.Module.Tests\Cake.Chocolatey.Module.Tests.csproj", "{1A12838D-0FD6-448E-834F-23927CF9D91E}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SolutionItems", "SolutionItems", "{9EB0B68C-69C5-40C0-97FE-2524B51F60B2}" + ProjectSection(SolutionItems) = preProject + Directory.Build.props = Directory.Build.props + Directory.Build.targets = Directory.Build.targets + EndProjectSection +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU diff --git a/Source/Cake.Chocolatey.Module/Cake.Chocolatey.Module.csproj b/Source/Cake.Chocolatey.Module/Cake.Chocolatey.Module.csproj index 75f038e..c7e82e4 100644 --- a/Source/Cake.Chocolatey.Module/Cake.Chocolatey.Module.csproj +++ b/Source/Cake.Chocolatey.Module/Cake.Chocolatey.Module.csproj @@ -2,16 +2,44 @@ netstandard2.0 true + $(ProjectDir)../Cake.Chocolatey.Module.ruleset + + + + + + - Cake.Chocolatey.Module.ruleset - - - TRACE;DEBUG;NETSTANDARD + + Gary Ewan Park + Copyright (c) Cake Contributions 2016 - Present + Cake Module that extends Cake with ability to install tools using Chocolatey. +This version was build for Cake v$(CakeVersion) + MIT + https://github.com/cake-contrib/Cake.Chocolatey.Module + cake;script;build;chocolatey;module;cake-build;cake-module + $(PackageProjectUrl).git + This version was build for Cake v$(CakeVersion). +For details see $(PackageProjectUrl)/releases + 0.0.0 - + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + diff --git a/Source/Cake.Chocolatey.Module/ChocolateyContentResolver.cs b/Source/Cake.Chocolatey.Module/ChocolateyContentResolver.cs index 51605eb..9a82043 100644 --- a/Source/Cake.Chocolatey.Module/ChocolateyContentResolver.cs +++ b/Source/Cake.Chocolatey.Module/ChocolateyContentResolver.cs @@ -5,11 +5,14 @@ using Cake.Core.IO; using Cake.Core.Packaging; +using JetBrains.Annotations; + namespace Cake.Chocolatey.Module { /// /// Locates and lists contents of Chocolatey Packages. /// + [UsedImplicitly] public class ChocolateyContentResolver : IChocolateyContentResolver { private readonly IFileSystem _fileSystem; @@ -108,4 +111,4 @@ private IEnumerable GetFiles(DirectoryPath path, PackageReference package return collection.Select(p => _fileSystem.GetFile(p)).ToArray(); } } -} \ No newline at end of file +} diff --git a/Source/Cake.Chocolatey.Module/ChocolateyModule.cs b/Source/Cake.Chocolatey.Module/ChocolateyModule.cs index a7bad18..f92f605 100644 --- a/Source/Cake.Chocolatey.Module/ChocolateyModule.cs +++ b/Source/Cake.Chocolatey.Module/ChocolateyModule.cs @@ -2,12 +2,15 @@ using Cake.Core.Composition; using Cake.Core.Packaging; +using JetBrains.Annotations; + namespace Cake.Chocolatey.Module { /// /// The module responsible for registering /// default types in the Cake.Chocolatey.Module assembly. /// + [PublicAPI] public sealed class ChocolateyModule : ICakeModule { /// @@ -25,4 +28,4 @@ public void Register(ICakeContainerRegistrar registrar) registrar.RegisterType().As().Singleton(); } } -} \ No newline at end of file +} diff --git a/Source/Cake.Chocolatey.Module/ChocolateyPackageInstaller.cs b/Source/Cake.Chocolatey.Module/ChocolateyPackageInstaller.cs index 62a26bd..12a1a98 100644 --- a/Source/Cake.Chocolatey.Module/ChocolateyPackageInstaller.cs +++ b/Source/Cake.Chocolatey.Module/ChocolateyPackageInstaller.cs @@ -27,33 +27,13 @@ public sealed class ChocolateyPackageInstaller : IPackageInstaller /// The process runner. /// The log. /// The Chocolatey Package Content Resolver. - /// the configuration + /// the configuration. public ChocolateyPackageInstaller(ICakeEnvironment environment, IProcessRunner processRunner, ICakeLog log, IChocolateyContentResolver contentResolver, ICakeConfiguration config) { - if (environment == null) - { - throw new ArgumentNullException(nameof(environment)); - } - - if (processRunner == null) - { - throw new ArgumentNullException(nameof(processRunner)); - } - - if (log == null) - { - throw new ArgumentNullException(nameof(log)); - } - - if (contentResolver == null) - { - throw new ArgumentNullException(nameof(contentResolver)); - } - - _environment = environment; - _processRunner = processRunner; - _log = log; - _contentResolver = contentResolver; + _environment = environment ?? throw new ArgumentNullException(nameof(environment)); + _processRunner = processRunner ?? throw new ArgumentNullException(nameof(processRunner)); + _log = log ?? throw new ArgumentNullException(nameof(log)); + _contentResolver = contentResolver ?? throw new ArgumentNullException(nameof(contentResolver)); _config = config; } @@ -164,4 +144,4 @@ private static ProcessArgumentBuilder GetArguments( return arguments; } } -} \ No newline at end of file +} diff --git a/Source/Cake.Chocolatey.Module/Constants.cs b/Source/Cake.Chocolatey.Module/Constants.cs index 530655a..0591f4d 100644 --- a/Source/Cake.Chocolatey.Module/Constants.cs +++ b/Source/Cake.Chocolatey.Module/Constants.cs @@ -1,19 +1,19 @@ namespace Cake.Chocolatey.Module { /// - /// Constants Class + /// Constants Class. /// internal static class Constants { /// - /// Chocolatey Constants + /// Chocolatey Constants. /// public static class Chocolatey { /// - /// The config key name for overriding the default chocolatey package source + /// The config key name for overriding the default chocolatey package source. /// public const string Source = "Chocolatey_Source"; } } -} \ No newline at end of file +} diff --git a/Source/Cake.Chocolatey.Module/packages.config b/Source/Cake.Chocolatey.Module/packages.config deleted file mode 100644 index b455fbb..0000000 --- a/Source/Cake.Chocolatey.Module/packages.config +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/Source/Directory.Build.props b/Source/Directory.Build.props new file mode 100644 index 0000000..35525a1 --- /dev/null +++ b/Source/Directory.Build.props @@ -0,0 +1,5 @@ + + + 0.33.0 + + \ No newline at end of file diff --git a/Source/Directory.Build.targets b/Source/Directory.Build.targets new file mode 100644 index 0000000..86e3c03 --- /dev/null +++ b/Source/Directory.Build.targets @@ -0,0 +1,28 @@ + + + + + + + $(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb + true + true + $([System.IO.Path]::Combine('$(IntermediateOutputPath)','$(TargetFrameworkMoniker).AssemblyAttributes$(DefaultLanguageSourceExtension)')) + + + + + + + + + + + <_LocalTopLevelSourceRoot Include="@(SourceRoot)" Condition="'%(SourceRoot.NestedRoot)' == ''"/> + + + diff --git a/Source/stylecop.json b/Source/stylecop.json new file mode 100644 index 0000000..3d7a981 --- /dev/null +++ b/Source/stylecop.json @@ -0,0 +1,22 @@ +{ + "$schema": "https://raw.githubusercontent.com/DotNetAnalyzers/StyleCopAnalyzers/master/StyleCop.Analyzers/StyleCop.Analyzers/Settings/stylecop.schema.json", + "settings": { + "indentation": { + "indentationSize": 4, + "tabSize": 4, + "useTabs": false + }, + "orderingRules": { + "usingDirectivesPlacement": "outsideNamespace", + "blankLinesBetweenUsingGroups": "allow", + "systemUsingDirectivesFirst": true + }, + "documentationRules": { + "xmlHeader": false, + "documentExposedElements": true, + "documentInternalElements": false, + "documentPrivateElements": false, + "documentPrivateFields": false + } + } +} \ No newline at end of file diff --git a/nuspec/nuget/Cake.Chocolatey.Module.nuspec b/nuspec/nuget/Cake.Chocolatey.Module.nuspec deleted file mode 100644 index 9c36ab4..0000000 --- a/nuspec/nuget/Cake.Chocolatey.Module.nuspec +++ /dev/null @@ -1,23 +0,0 @@ - - - - Cake.Chocolatey.Module - 0.0.0 - gep13 - gep13, cake-contrib - Cake Chocolatey Module. - Cake Module that extends Cake with ability to install tools using Chocolatey. - MIT - - https://github.com/cake-contrib/Cake.Chocolatey.Module/ - https://cdn.jsdelivr.net/gh/cake-contrib/graphics/png/cake-contrib-medium.png - false - Copyright (c) Cake Contributions 2016 - Present - Cake, Script, Build, Chocolatey, Module - - - - - - - diff --git a/recipe.cake b/recipe.cake index 7f14fff..cf52115 100644 --- a/recipe.cake +++ b/recipe.cake @@ -10,7 +10,8 @@ BuildParameters.SetParameters(context: Context, repositoryName: "Cake.Chocolatey.Module", shouldRunCodecov: false, shouldPostToGitter: false, - appVeyorAccountName: "cakecontrib"); + appVeyorAccountName: "cakecontrib", + shouldRunDotNetCorePack: true); BuildParameters.PrintParameters(Context);