diff --git a/.editorconfig b/.editorconfig index c57b9d7..c434eb5 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,153 +1,89 @@ -# editorconfig.org +# EditorConfig is awesome:http://EditorConfig.org # top-most EditorConfig file root = true -# Default settings: -# A newline ending every file -# Use 4 spaces as indentation +# Don't use tabs for indentation. [*] -insert_final_newline = true indent_style = space # (Please don't specify an indent_size here; that has too many unintended consequences.) - # Code files [*.{cs,csx,vb,vbx}] indent_size = 4 -# XML project files -[*.{csproj,vbproj,vcxproj,vcxproj.filters,proj,projitems,shproj}] -indent_size = 2 - -# XML config files -[*.{props,targets,ruleset,stylecop,xml,config,nuspec,resx,vsixmanifest,vsct}] -indent_size = 2 - -# JSON files -[*.json] +# Xml project files +[*.{csproj,vbproj,vcxproj,vcxproj.filters,proj,projitems,shproj,msbuildproj,props,targets}] indent_size = 2 -# Powershell files -[*.ps1] +# Xml config files +[*.{ruleset,config,nuspec,resx,vsixmanifest,vsct}] indent_size = 2 -# Shell script files -[*.sh] -end_of_line = lf +# YAML files +[*.{yaml,yml}] indent_size = 2 -# Yaml devops files -[*.{yml,yaml}] +# JSON files +[*.json] indent_size = 2 -# Shell scripts -[*.sh] -end_of_line = lf -[*.{cmd, bat}] -end_of_line = crlf - - -# C# files -[*.cs] -# New line preferences -csharp_new_line_before_open_brace = all -csharp_new_line_before_else = true -csharp_new_line_before_catch = true -csharp_new_line_before_finally = true -csharp_new_line_before_members_in_object_initializers = true -csharp_new_line_before_members_in_anonymous_types = true -csharp_new_line_within_query_expression_clauses = true - -# Indentation preferences -csharp_indent_block_contents = true -csharp_indent_braces = false -csharp_indent_case_contents = true -csharp_indent_switch_labels = true -csharp_indent_labels = flush_left - -# avoid this. unless absolutely necessary +# Dotnet code style settings: +[*.{cs,vb}] +# Sort using and Import directives with System.* appearing first +dotnet_sort_system_directives_first = true +# Avoid "this." and "Me." if not necessary dotnet_style_qualification_for_field = false:suggestion dotnet_style_qualification_for_property = false:suggestion dotnet_style_qualification_for_method = false:suggestion dotnet_style_qualification_for_event = false:suggestion -# Prefer "var" everywhere -csharp_style_var_for_built_in_types = true:suggestion -csharp_style_var_when_type_is_apparent = true:suggestion -csharp_style_var_elsewhere = true:suggestion - -# use language keywords instead of BCL types +# Use language keywords instead of framework type names for type references dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion dotnet_style_predefined_type_for_member_access = true:suggestion -# name all constant fields using PascalCase -dotnet_naming_rule.constant_fields_should_be_pascal_case.severity = suggestion -dotnet_naming_rule.constant_fields_should_be_pascal_case.symbols = constant_fields -dotnet_naming_rule.constant_fields_should_be_pascal_case.style = pascal_case_style +# Suggest more modern language features when available +dotnet_style_object_initializer = true:suggestion +dotnet_style_collection_initializer = true:suggestion +dotnet_style_coalesce_expression = true:suggestion +dotnet_style_null_propagation = true:suggestion +dotnet_style_explicit_tuple_names = true:suggestion -dotnet_naming_symbols.constant_fields.applicable_kinds = field -dotnet_naming_symbols.constant_fields.required_modifiers = const +# CSharp code style settings: -dotnet_naming_style.pascal_case_style.capitalization = pascal_case +# IDE0040: Add accessibility modifiers +dotnet_style_require_accessibility_modifiers = omit_if_default:error -# internal and private fields should be _camelCase -dotnet_naming_rule.camel_case_for_private_internal_fields.severity = suggestion -dotnet_naming_rule.camel_case_for_private_internal_fields.symbols = private_internal_fields -dotnet_naming_rule.camel_case_for_private_internal_fields.style = camel_case +# IDE0040: Add accessibility modifiers +dotnet_diagnostic.IDE0040.severity = error -dotnet_naming_symbols.private_internal_fields.applicable_kinds = field -dotnet_naming_symbols.private_internal_fields.applicable_accessibilities = private, internal +[*.cs] +# Prefer "var" everywhere +csharp_style_var_for_built_in_types = true:suggestion +csharp_style_var_when_type_is_apparent = true:suggestion +csharp_style_var_elsewhere = true:suggestion -# Code style defaults -dotnet_sort_system_directives_first = true -csharp_preserve_single_line_blocks = true -csharp_preserve_single_line_statements = false +# Prefer method-like constructs to have an expression-body +csharp_style_expression_bodied_methods = true:none +csharp_style_expression_bodied_constructors = true:none +csharp_style_expression_bodied_operators = true:none -# Expression-level preferences -dotnet_style_object_initializer = true:suggestion -dotnet_style_collection_initializer = true:suggestion -dotnet_style_explicit_tuple_names = true:suggestion -dotnet_style_coalesce_expression = true:suggestion -dotnet_style_null_propagation = true:suggestion +# Prefer property-like constructs to have an expression-body +csharp_style_expression_bodied_properties = true:none +csharp_style_expression_bodied_indexers = true:none +csharp_style_expression_bodied_accessors = true:none -# Expression-bodied members -csharp_style_expression_bodied_methods = when_on_single_line:suggestion -csharp_style_expression_bodied_constructors = when_on_single_line:suggestion -csharp_style_expression_bodied_operators = when_on_single_line:suggestion -csharp_style_expression_bodied_properties = when_on_single_line:suggestion -csharp_style_expression_bodied_indexers = when_on_single_line:suggestion -csharp_style_expression_bodied_accessors = when_on_single_line:suggestion - -# Pattern matching -csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion -csharp_style_pattern_matching_over_as_with_null_check = true:suggestion +# Suggest more modern language features when available +csharp_style_pattern_matching_over_is_with_cast_check = true:error +csharp_style_pattern_matching_over_as_with_null_check = true:error csharp_style_inlined_variable_declaration = true:suggestion - -# Null checking preferences csharp_style_throw_expression = true:suggestion csharp_style_conditional_delegate_call = true:suggestion -# 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 = do_not_ignore -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 +# Newline settings +csharp_new_line_before_open_brace = all +csharp_new_line_before_else = true +csharp_new_line_before_catch = true +csharp_new_line_before_finally = true +csharp_new_line_before_members_in_object_initializers = true +csharp_new_line_before_members_in_anonymous_types = true diff --git a/.gitattributes b/.gitattributes index 624569f..7c37579 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,9 +1,7 @@ -# This file is understood by git 1.7.2 and higher. Everyone should -# be on this version by now. - # sln, csproj files (and friends) are always CRLF, even on linux *.sln text eol=crlf *.proj text eol=crlf +*.csproj text eol=crlf # These are windows specific files which we may as well ensure are # always crlf on checkout @@ -16,15 +14,11 @@ *.config text *.h text *.cs text -*.csproj text *.md text *.tt text *.txt text -*.vspackage text -*.vspackage.diagram text # Some must always be checked out as lf so enforce that for those files # If these are not lf then bash/cygwin on windows will not be able to # excute the files -*.sh text eol=lf - +*.sh text eol=lf \ No newline at end of file diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..ef77f21 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,4 @@ +custom: https://paypal.me/kzu +patreon: danielkzu +open_collective: kzu +liberapay: kzu diff --git a/.github/ISSUE_TEMPLATE/bug.md b/.github/ISSUE_TEMPLATE/bug.md new file mode 100644 index 0000000..67f7595 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug.md @@ -0,0 +1,50 @@ +--- +name: Bug Report +about: Create a report to help us fix a problem. +title: '' +labels: 'bug' +assignees: '' +--- + +## Describe the Bug + + + +## Steps to Reproduce + + + +```c# +public class ReproTest +{ + [Fact] + public void Repro() + { + // arrange + + // act + + // assert + } +} +``` + +## Expected Behavior + + + +## Exception with Stack Trace + + + +```text +Put the exception with stack trace here. +``` + +## Version Info + + + +## Additional Info + + diff --git a/.github/ISSUE_TEMPLATE/feature.md b/.github/ISSUE_TEMPLATE/feature.md new file mode 100644 index 0000000..0b3de9d --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature.md @@ -0,0 +1,33 @@ +--- +name: Feature Request +about: Suggest an idea to make the project better. +title: '' +labels: 'enhancement' +assignees: '' +--- + +## Problem Statement + + + +## Desired Solution + + + +## Alternatives You've Considered + + + +## Additional Context + + diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..9bd9700 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,9 @@ +# Please see the documentation for all configuration options: +# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates + +version: 2 +updates: +- package-ecosystem: nuget + directory: / + schedule: + interval: weekly \ No newline at end of file diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..091c421 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,75 @@ +# Builds and runs tests in all three supported OSes +# Pushes CI feed if secrets.SLEET_CONNECTION is provided + +name: build +on: + push: + branches: [ main, dev, 'feature/*', 'rel/*' ] + pull_request: + types: [opened, synchronize, reopened] + +env: + DOTNET_NOLOGO: true + +defaults: + run: + shell: bash + +jobs: + build: + name: build-${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, windows-latest, macOS-latest] + steps: + - name: 🤘 checkout + uses: actions/checkout@v2 + with: + submodules: recursive + fetch-depth: 0 + + - name: ⚙ dotnet 5.0.x + uses: actions/setup-dotnet@v1 + with: + dotnet-version: 5.0.x + - name: ⚙ dotnet 3.1.x + uses: actions/setup-dotnet@v1 + with: + dotnet-version: 3.1.x + - name: ⚙ dotnet 2.1.x + uses: actions/setup-dotnet@v1 + with: + dotnet-version: 2.1.x + + - name: ✓ check formatting + run: | + dotnet tool update -g --version 4.1.* dotnet-format >nul || dotnet tool list -g + dotnet format -f src --check -v:diag + + - name: 🙏 build + run: dotnet build -bl:build.binlog -p:VersionLabel="$GITHUB_REF.$GITHUB_RUN_NUMBER" + + - name: 🧪 test + run: dotnet test --no-build -m:1 --blame-hang --blame-hang-timeout 5m -d $GITHUB_WORKSPACE/logs/${{ matrix.os }}.txt -r $GITHUB_WORKSPACE/logs + + - name: 📦 pack + run: dotnet pack -bl:pack.binlog -p:VersionLabel="$GITHUB_REF.$GITHUB_RUN_NUMBER" + + - name: 🔼 logs + if: always() + uses: actions/upload-artifact@v2 + with: + name: ${{ matrix.os }} + path: | + *.binlog + logs/**/*.* + + # Only push CI package to sleet feed if building on ubuntu (fastest) + - name: 🚀 sleet + env: + SLEET_CONNECTION: ${{ secrets.SLEET_CONNECTION }} + if: matrix.os == 'ubuntu-latest' && env.SLEET_CONNECTION != '' + run: | + dotnet tool install -g --version 3.2.0 sleet + sleet push bin --config none -f --verbose -p "SLEET_FEED_CONTAINER=nuget" -p "SLEET_FEED_CONNECTIONSTRING=${{ secrets.SLEET_CONNECTION }}" -p "SLEET_FEED_TYPE=azure" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..afbcfad --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,53 @@ +# Builds a final release version and pushes to nuget.org +# whenever a release is published. +# Requires: secrets.NUGET_API_KEY + +name: release +on: + release: + types: [published] + +env: + DOTNET_NOLOGO: true + Configuration: Release + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: 🤘 checkout + uses: actions/checkout@v2 + with: + submodules: recursive + fetch-depth: 0 + + - name: ⚙ dotnet 5.0.x + uses: actions/setup-dotnet@v1 + with: + dotnet-version: 5.0.x + - name: ⚙ dotnet 3.1.x + uses: actions/setup-dotnet@v1 + with: + dotnet-version: 3.1.x + - name: ⚙ dotnet 2.1.x + uses: actions/setup-dotnet@v1 + with: + dotnet-version: 2.1.x + + - name: 🙏 build + run: dotnet build -bl:build.binlog -p:version=${GITHUB_REF#refs/*/v} + + - name: 🧪 test + run: dotnet test --no-build -m:1 + + - name: 📦 pack + run: dotnet pack -bl:pack.binlog -p:version=${GITHUB_REF#refs/*/v} + + - name: 🔼 logs + if: ${{ always() }} + uses: actions/upload-artifact@v2 + with: + path: '*.binlog' + + - name: 🚀 nuget + run: dotnet nuget push ./bin/**/*.nupkg -s https://api.nuget.org/v3/index.json -k ${{secrets.NUGET_API_KEY}} --skip-duplicate \ No newline at end of file diff --git a/.github/workflows/tag.yml b/.github/workflows/tag.yml new file mode 100644 index 0000000..3f42147 --- /dev/null +++ b/.github/workflows/tag.yml @@ -0,0 +1,51 @@ +# Creates a draft release whenever a tag v* is pushed, +# with a changelog from the previous tag. If the tag +# contains a label, the release is flagged as a prerelease. + +name: tag +on: + push: + tags: [ 'v*' ] + +jobs: + release: + runs-on: ubuntu-latest + steps: + - name: 🤘 checkout + uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: 🏷 current + run: echo "CURRENT_TAG=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV + - name: 🏷 since + run: echo "SINCE_TAG=$(git describe --abbrev=0 --tags $(git rev-list --tags --skip=1 --max-count=1))" >> $GITHUB_ENV + - name: 🚧 prerelease + run: echo "PRERELEASE=true" >> $GITHUB_ENV + if: contains(env.CURRENT_TAG, '-') + + - name: ⚙ changelog + uses: faberNovel/github-changelog-generator-action@master + if: env.SINCE_TAG != '' + with: + options: --token ${{ secrets.GITHUB_TOKEN }} --since-tag ${{ env.SINCE_TAG }} + + - name: ⚙ changelog + uses: faberNovel/github-changelog-generator-action@master + if: env.SINCE_TAG == '' + with: + options: --token ${{ secrets.GITHUB_TOKEN }} + + - name: 😺 changelog + run: cat CHANGELOG.md + + - name: 🖉 release + uses: actions/create-release@v1 + with: + release_name: ${{ env.CURRENT_TAG }} + tag_name: ${{ env.CURRENT_TAG }} + draft: true + prerelease: ${{ env.PRERELEASE }} + body_path: CHANGELOG.md + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.github_changelog_generator b/.github_changelog_generator new file mode 100644 index 0000000..955932c --- /dev/null +++ b/.github_changelog_generator @@ -0,0 +1,4 @@ +usernames-as-github-logins=true +header-label= +add_issues_wo_labels=false +exclude-labels=dependencies,duplicate,question,invalid,wontfix \ No newline at end of file diff --git a/.gitignore b/.gitignore index 3996028..23fe6bd 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,7 @@ pack *.tmp *.cache *.binlog +*.zip .nuget *.lock.json diff --git a/.netconfig b/.netconfig new file mode 100644 index 0000000..43ce697 --- /dev/null +++ b/.netconfig @@ -0,0 +1,87 @@ +[file] + url = https://github.com/kzu/oss +[file ".netconfig"] + url = https://github.com/kzu/oss/blob/main/.netconfig + skip +[file "readme.md"] + url = https://github.com/kzu/oss/blob/main/readme.md + skip +[file "src/icon.png"] + url = https://github.com/kzu/oss/blob/main/src/icon.png + skip +[file ".editorconfig"] + url = https://github.com/kzu/oss/blob/main/.editorconfig + etag = 985aa022503959d35b03c870f07ae604cead7580d260775235ef6665aa9a6cbe + weak +[file ".gitattributes"] + url = https://github.com/kzu/oss/blob/main/.gitattributes + etag = 7acb32f5fa6d4ccd9c824605a7c2b8538497f0068c165567807d393dcf4d6bb7 + weak +[file ".github/FUNDING.yml"] + url = https://github.com/kzu/oss/blob/main/.github/FUNDING.yml + etag = dbc0e0c56e48bf06a70f50ba2fdaf6f048bb81ac8558b743c8e919487da3bfcf + weak +[file ".github/ISSUE_TEMPLATE/bug.md"] + url = https://github.com/kzu/oss/blob/main/.github/ISSUE_TEMPLATE/bug.md + etag = 026852ba1f1921f3a043bb5e09cd7a2c3d9a33ec51f48e524dc3a2ab72de3141 + weak +[file ".github/ISSUE_TEMPLATE/feature.md"] + url = https://github.com/kzu/oss/blob/main/.github/ISSUE_TEMPLATE/feature.md + etag = c5b7de1bc9eaf1f2ae6d1d2021e68084a5b1ab4800e9f129416d2838c128cad1 + weak +[file ".github/dependabot.yml"] + url = https://github.com/kzu/oss/blob/main/.github/dependabot.yml + etag = 2fc8a0d2b47091b058ae3e1f68333492044b49a684621f4939a0bce5bff869d5 + weak +[file ".github/workflows/build.yml"] + url = https://github.com/kzu/oss/blob/main/.github/workflows/build.yml + etag = eb800461e98fdb7fe1ef58c8d6566d4b321efea736c013d4eb5e81550ccbd8ca + weak +[file ".github/workflows/release.yml"] + url = https://github.com/kzu/oss/blob/main/.github/workflows/release.yml + etag = 1fd3c055d5d5206763903af7f2f56d4e37d33d5d6ac3921bfcbc80b7c8f38818 + weak +[file ".github/workflows/tag.yml"] + url = https://github.com/kzu/oss/blob/main/.github/workflows/tag.yml + etag = 26e271cf76e00c6922552af104b1e496103bdfa75ebef253447594207b10153e + weak +[file ".github_changelog_generator"] + url = https://github.com/kzu/oss/blob/main/.github_changelog_generator + etag = a724e0cbbad99a04e6cd3738a5f3ec5416dd5f29ae7073e7afe5471e73107e42 + weak +[file ".gitignore"] + url = https://github.com/kzu/oss/blob/main/.gitignore + etag = 4698b35abed1f3941de6bed08bc80278c30569de3ead5b878b27b4bb79f8718a + weak +[file "Directory.Build.rsp"] + url = https://github.com/kzu/oss/blob/main/Directory.Build.rsp + etag = 6a6c6e1d3895df953abf14c82b0899e3eea75cdcd679f6212dcfea15183d73d6 + weak +[file "_config.yml"] + url = https://github.com/kzu/oss/blob/main/_config.yml + etag = c7f2063ead734d0afc383a07c35da2864a221311da8e1c0c6fea8939e932d2ab + weak +[file "code-of-conduct.md"] + url = https://github.com/kzu/oss/blob/main/code-of-conduct.md + etag = 4857c01bb695f09bf6912d778951c3065d9dd565e5de3d0827f40432d0e4c613 + weak +[file "license.txt"] + url = https://github.com/kzu/oss/blob/main/license.txt + etag = 2c6335b37e4ae05eea7c01f5d0c9d82b49c488f868a8b5ba7bff7c6ff01f3994 + weak +[file "security.md"] + url = https://github.com/kzu/oss/blob/main/security.md + etag = 80070e3a380796b13d180b82f43694eac9e7a29d8d2f8549ccb2920fd5c88828 + weak +[file "src/Directory.Build.props"] + url = https://github.com/kzu/oss/blob/main/src/Directory.Build.props + etag = 5b0cf9c055f179dc0b0f15a7e6dfbc6b8ea4b949eec61c0f3000afa2198970a6 + weak +[file "src/Directory.Build.targets"] + url = https://github.com/kzu/oss/blob/main/src/Directory.Build.targets + etag = 6e628510436de9303695f2f8c8fb743b698a0d93adc8e4c127bbbae0f74166b7 + weak +[file "src/kzu.snk"] + url = https://github.com/kzu/oss/blob/main/src/kzu.snk + etag = b8d789b5b6bea017cdcc8badcea888ad78de3e34298efca922054e9fb0e7b6b9 + weak diff --git a/Directory.Build.rsp b/Directory.Build.rsp new file mode 100644 index 0000000..7c0dbc1 --- /dev/null +++ b/Directory.Build.rsp @@ -0,0 +1,5 @@ +# See https://docs.microsoft.com/en-us/visualstudio/msbuild/msbuild-response-files +-nr:false +-m:1 +-v:m +-clp:Summary;ForceNoAlign \ No newline at end of file diff --git a/VisualStudio.sln b/VisualStudio.sln index 02461f2..e612b52 100644 --- a/VisualStudio.sln +++ b/VisualStudio.sln @@ -3,17 +3,15 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 16 VisualStudioVersion = 16.0.29728.133 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "VisualStudio", "VisualStudio\VisualStudio.csproj", "{8CBD9F8C-F635-4E55-A593-91FFDB2312AF}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "VisualStudio", "src\VisualStudio\VisualStudio.csproj", "{8CBD9F8C-F635-4E55-A593-91FFDB2312AF}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{8722AC17-A90B-406B-850A-C1B8EB89056D}" ProjectSection(SolutionItems) = preProject .editorconfig = .editorconfig - azure-pipelines.yml = azure-pipelines.yml - GitInfo.txt = GitInfo.txt README.md = README.md EndProjectSection EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "VisualStudio.Tests", "VisualStudio.Tests\VisualStudio.Tests.csproj", "{D379D36D-60D5-4CB4-B34C-B86FF9E3F956}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "VisualStudio.Tests", "src\VisualStudio.Tests\VisualStudio.Tests.csproj", "{D379D36D-60D5-4CB4-B34C-B86FF9E3F956}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/VisualStudio/Directory.Build.props b/VisualStudio/Directory.Build.props deleted file mode 100644 index 0933f97..0000000 --- a/VisualStudio/Directory.Build.props +++ /dev/null @@ -1,69 +0,0 @@ - - - - false - true - - - - false - true - - - - $(CI) - true - true - - $(SYSTEM_PULLREQUEST_SOURCEBRANCH) - $(BUILD_SOURCEBRANCH) - $(GitBranch.Substring(11)) - - $(GitBranch.Substring(4)) - $(GitBranch.Replace('/', '-')) - - - - $(BUILD_SOURCEVERSION) - $(GitSha.Substring(0, 9)) - - - - $(SYSTEM_PULLREQUEST_SOURCECOMMITID) - $(GitSha.Substring(0, 9)) - - - - kzu - - false - MIT - https://github.com/kzu/dotnet-vs - icon-128.png - dotnet vs - - - - true - Latest - - false - - true - NU5105;$(NoWarn) - - - true - - $(PackOnBuild) - $(MSBuildThisFileDirectory)..\bin - $(DefaultExcludeItems);*.binlog - - - - - - - - diff --git a/VisualStudio/Directory.Build.targets b/VisualStudio/Directory.Build.targets deleted file mode 100644 index d965b28..0000000 --- a/VisualStudio/Directory.Build.targets +++ /dev/null @@ -1,125 +0,0 @@ - - - - - false - - - - - - - - - - - $(GitBranch.Replace('/', '-')) - - -$(GitBranch) - $(PR) - - - - - - - - - - - - - @(VersionMetadata -> '%(Identity)', '-') - +$(VersionMetadataLabel) - $(GitSemVerDashLabel).$(GitCommits) - - $(GitSemVerMajor).$(GitSemVerMinor).$(GitSemVerPatch)$(GitSemVerDashLabel)$(VersionMetadataPlusLabel) - $(GitSemVerMajor).$(GitSemVerMinor).$(GitSemVerPatch)$(GitSemVerDashLabel) - $(BuildVersion) - $(BuildVersion) - - - - - <_Parameter1>Version - <_Parameter2>$(Version) - - - <_Parameter1>PackageVersion - <_Parameter2>$(PackageVersion) - - - <_Parameter1>BuildVersion - <_Parameter2>$(BuildVersion) - - - - - - $(Description) - -Built by https://build.azdo.io/kzu/oss/$(BUILD_BUILDID) from $(PackageProjectUrl)/tree/$(GitCommit) - - - - - - - - - <_Parameter1>AssemblyVersion - <_Parameter2>$(AssemblyVersion) - - - <_Parameter1>FileVersion - <_Parameter2>$(FileVersion) - - - <_Parameter1>InformationalVersion - <_Parameter2>$(InformationalVersion) - - - - - - - - <_Parameter1>%(AssemblyMetadata.Identity) - <_Parameter2>%(AssemblyMetadata.Value) - - - <_Parameter1 Condition="'%(InternalsVisibleTo.Key)' != ''">%(InternalsVisibleTo.Identity), PublicKey=%(InternalsVisibleTo.Key) - <_Parameter1 Condition="'%(InternalsVisibleTo.Key)' == '' and '$(PublicKey)' != ''">%(InternalsVisibleTo.Identity), PublicKey=$(PublicKey) - <_Parameter1 Condition="'%(InternalsVisibleTo.Key)' == '' and '$(PublicKey)' == ''">%(InternalsVisibleTo.Identity) - - - - - - - - - - - - - diff --git a/VisualStudio/Properties/launchSettings.json b/VisualStudio/Properties/launchSettings.json deleted file mode 100644 index 65c36cc..0000000 --- a/VisualStudio/Properties/launchSettings.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "profiles": { - "VisualStudio": { - "commandName": "Project", - "commandLineArgs": "client master exp --startServer --sync" - } - } -} \ No newline at end of file diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..f980e76 --- /dev/null +++ b/_config.yml @@ -0,0 +1 @@ +theme: jekyll-theme-slate diff --git a/azure-pipelines.yml b/azure-pipelines.yml deleted file mode 100644 index e9fbb7b..0000000 --- a/azure-pipelines.yml +++ /dev/null @@ -1,73 +0,0 @@ -variables: -- group: Sleet -- name: Configuration - value: Release -- name: PackageOutputPath - value: $(Build.ArtifactStagingDirectory) -- name: DotNetVersion - value: 3.1.x -- name: SleetVersion - value: 3.2.0 -- name: PowerShellVersion - value: 7.0.0 - -stages: - -- stage: Build - jobs: - - job: Build - pool: - vmImage: 'windows-2019' - steps: - - checkout: self - submodules: recursive - clean: true - - - task: MSBuild@1 - displayName: Build - inputs: - configuration: $(Configuration) - msbuildArguments: -r - - - task: VSTest@2 - displayName: Test - inputs: - testAssemblyVer2: '**/bin/**/*Tests.dll' - runInParallel: true - codeCoverageEnabled: false - publishRunAttachments: true - diagnosticsEnabled: false - rerunFailedTests: true - - - task: PublishBuildArtifacts@1 - displayName: Upload - condition: succeeded() - inputs: - PathtoPublish: $(Build.ArtifactStagingDirectory) - ArtifactName: package - ArtifactType: Container - - - task: UseDotNet@2 - displayName: 'Use .NETCore $(DotNetVersion)' - inputs: - packageType: runtime - version: $(DotNetVersion) - performMultiLevelLookup: true - - - script: dotnet tool update -g --version $(PowerShellVersion) PowerShell >nul || dotnet tool list -g - displayName: 'Use PowerShell $(PowerShellVersion)' - - - pwsh: | - if ((dotnet tool list -g | select-string sleet) -ne $null) { - if ((dotnet tool list -g | select-string sleet | select-string $(SleetVersion)) -eq $null) { - dotnet tool uninstall -g sleet - } else { - return - } - } - dotnet tool install -g Sleet --version $(SleetVersion) - displayName: 'Use Sleet $(SleetVersion)' - - - script: 'sleet push --config none $(Build.ArtifactStagingDirectory) -f --verbose -p "SLEET_FEED_CONNECTIONSTRING=$(SLEET_FEED_CONNECTIONSTRING)"' - displayName: 'Push Package' - condition: ne(variables['System.PullRequest.IsFork'], 'true') \ No newline at end of file diff --git a/code-of-conduct.md b/code-of-conduct.md new file mode 100644 index 0000000..775f221 --- /dev/null +++ b/code-of-conduct.md @@ -0,0 +1,6 @@ +# Code of Conduct + +This project has adopted the code of conduct defined by the Contributor Covenant +to clarify expected behavior in our community. + +For more information, see the [.NET Foundation Code of Conduct](https://dotnetfoundation.org/code-of-conduct). diff --git a/LICENSE b/license.txt similarity index 93% rename from LICENSE rename to license.txt index 0498a9a..83969dc 100644 --- a/LICENSE +++ b/license.txt @@ -1,6 +1,6 @@ -MIT License +The MIT License (MIT) -Copyright (c) 2020 Daniel Cazzulino +Copyright (c) Daniel Cazzulino and Contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -19,3 +19,4 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + diff --git a/README.md b/readme.md similarity index 100% rename from README.md rename to readme.md diff --git a/security.md b/security.md new file mode 100644 index 0000000..a17430a --- /dev/null +++ b/security.md @@ -0,0 +1,9 @@ +# Security Policy + +## Reporting a Vulnerability + +Security issues and bugs should be reported privately by emailing hello@clarius.org. +You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your +original message and ping [@kzu](https://twitter.com/kzu) on Twitter. + +Please do not open issues for anything you think might have a security implication. \ No newline at end of file diff --git a/src/Directory.Build.props b/src/Directory.Build.props new file mode 100644 index 0000000..f752ee9 --- /dev/null +++ b/src/Directory.Build.props @@ -0,0 +1,125 @@ + + + + + kzu + Copyright (C) Daniel Cazzulino and Contributors. All rights reserved. + false + MIT + icon.png + + true + true + + $([System.IO.Path]::GetFullPath('$(MSBuildThisFileDirectory)..\bin')) + + + true + + https://pkg.kzu.io/index.json;https://api.nuget.org/v3/index.json;$(RestoreSources) + + + + + + + + + Latest + + + false + + embedded + true + enable + + + $(MSBuildProjectName) + $(MSBuildProjectName.IndexOf('.')) + $(MSBuildProjectName.Substring(0, $(RootNamespaceDot))) + + + $(DefaultItemExcludes);*.binlog;*.zip;*.rsp;*.items;**/TestResults/**/*.* + + + $(MSBuildThisFileDirectory)kzu.snk + + 002400000480000094000000060200000024000052534131000400000100010051155fd0ee280be78d81cc979423f1129ec5dd28edce9cd94fd679890639cad54c121ebdb606f8659659cd313d3b3db7fa41e2271158dd602bb0039a142717117fa1f63d93a2d288a1c2f920ec05c4858d344a45d48ebd31c1368ab783596b382b611d8c92f9c1b3d338296aa21b12f3bc9f34de87756100c172c52a24bad2db + 00352124762f2aa5 + true + + true + true + true + true + + + true + + + + + 42.42.42 + + + + <_VersionLabel>$(VersionLabel.Replace('refs/heads/', '')) + + <_VersionLabel Condition="$(_VersionLabel.Contains('refs/pull/'))">$(VersionLabel.TrimEnd('.0123456789')) + + <_VersionLabel>$(_VersionLabel.Replace('refs/pull/', 'pr')) + + <_VersionLabel>$(_VersionLabel.Replace('/merge', '')) + + <_VersionLabel>$(_VersionLabel.Replace('/', '-')) + + + $(_VersionLabel) + + + + + + + + + + + + + + false + + true + + + + + $(CI) + + + + diff --git a/src/Directory.Build.targets b/src/Directory.Build.targets new file mode 100644 index 0000000..7ec685d --- /dev/null +++ b/src/Directory.Build.targets @@ -0,0 +1,129 @@ + + + + + + false + + + + + 1.0.0 + $(VersionPrefix)-$(VersionSuffix) + $(VersionPrefix) + + + + + $(PackFolder) + $(PackFolderPath.Replace('\$(TargetFramework)', '')) + $(IntermediateOutputPath)$(PackFolderPath)\ + $(OutputPath)$(PackFolderPath)\ + $(OutputPath) + + + + + $(DefineConstants);$(TargetFramework.ToUpperInvariant().TrimEnd('0').TrimEnd('.').Replace('.', '')) + + + + + + + + + + + + + + + + + + + + + + + + + $(Description) + +Built from $(RepositoryUrl)/tree/$(SourceRevisionId.Substring(0, 9)) + $(Description) + + + + + + + + + + + + + + + + + + + + + + + i.ItemSpec)) + { + Log.LogMessage(MessageImportance.High, "{0}: {1}", itemName, item.ItemSpec); + foreach (var name in item.MetadataNames.OfType().OrderBy(_ => _)) + { + try + { + Log.LogMessage(MessageImportance.High, "\t{0}={1}", name, item.GetMetadata(name)); + } + catch { } + } + } + ]]> + + + + + diff --git a/src/Directory.props b/src/Directory.props new file mode 100644 index 0000000..3e9c160 --- /dev/null +++ b/src/Directory.props @@ -0,0 +1,12 @@ + + + + + + disable + false + + + + + diff --git a/VisualStudio.Tests/ChooserTests.cs b/src/VisualStudio.Tests/ChooserTests.cs similarity index 100% rename from VisualStudio.Tests/ChooserTests.cs rename to src/VisualStudio.Tests/ChooserTests.cs index 0f65074..27793e0 100644 --- a/VisualStudio.Tests/ChooserTests.cs +++ b/src/VisualStudio.Tests/ChooserTests.cs @@ -1,6 +1,6 @@ using System; -using System.Linq; using System.IO; +using System.Linq; using System.Threading.Tasks; using Xunit; using Xunit.Abstractions; diff --git a/VisualStudio.Tests/CommandFactoryTests.cs b/src/VisualStudio.Tests/CommandFactoryTests.cs similarity index 100% rename from VisualStudio.Tests/CommandFactoryTests.cs rename to src/VisualStudio.Tests/CommandFactoryTests.cs diff --git a/VisualStudio.Tests/Commands/ClientCommandTests.cs b/src/VisualStudio.Tests/Commands/ClientCommandTests.cs similarity index 100% rename from VisualStudio.Tests/Commands/ClientCommandTests.cs rename to src/VisualStudio.Tests/Commands/ClientCommandTests.cs index 6c6f174..2298da4 100644 --- a/VisualStudio.Tests/Commands/ClientCommandTests.cs +++ b/src/VisualStudio.Tests/Commands/ClientCommandTests.cs @@ -1,15 +1,15 @@ using System; -using System.Linq; using System.Collections.Generic; +using System.Collections.Immutable; using System.Diagnostics; using System.IO; +using System.Linq; using System.Text; using System.Threading.Tasks; using Mono.Options; using vswhere; using Xunit; using Xunit.Abstractions; -using System.Collections.Immutable; using DevEnv = vswhere.VisualStudioInstance; namespace VisualStudio.Tests diff --git a/VisualStudio.Tests/Commands/GenerateReadmeCommandTests.cs b/src/VisualStudio.Tests/Commands/GenerateReadmeCommandTests.cs similarity index 100% rename from VisualStudio.Tests/Commands/GenerateReadmeCommandTests.cs rename to src/VisualStudio.Tests/Commands/GenerateReadmeCommandTests.cs diff --git a/VisualStudio.Tests/OutputHelperTextWriter.cs b/src/VisualStudio.Tests/OutputHelperTextWriter.cs similarity index 100% rename from VisualStudio.Tests/OutputHelperTextWriter.cs rename to src/VisualStudio.Tests/OutputHelperTextWriter.cs diff --git a/VisualStudio.Tests/ProgramTests.cs b/src/VisualStudio.Tests/ProgramTests.cs similarity index 100% rename from VisualStudio.Tests/ProgramTests.cs rename to src/VisualStudio.Tests/ProgramTests.cs diff --git a/VisualStudio.Tests/VisualStudio.Tests.csproj b/src/VisualStudio.Tests/VisualStudio.Tests.csproj similarity index 100% rename from VisualStudio.Tests/VisualStudio.Tests.csproj rename to src/VisualStudio.Tests/VisualStudio.Tests.csproj diff --git a/VisualStudio.Tests/VisualStudioInstanceExtensions.cs b/src/VisualStudio.Tests/VisualStudioInstanceExtensions.cs similarity index 100% rename from VisualStudio.Tests/VisualStudioInstanceExtensions.cs rename to src/VisualStudio.Tests/VisualStudioInstanceExtensions.cs diff --git a/VisualStudio.Tests/VisualStudioOptionsTests.cs b/src/VisualStudio.Tests/VisualStudioOptionsTests.cs similarity index 100% rename from VisualStudio.Tests/VisualStudioOptionsTests.cs rename to src/VisualStudio.Tests/VisualStudioOptionsTests.cs index 4c5fe51..2db61fa 100644 --- a/VisualStudio.Tests/VisualStudioOptionsTests.cs +++ b/src/VisualStudio.Tests/VisualStudioOptionsTests.cs @@ -1,6 +1,6 @@ using System; -using System.Linq; using System.Collections.Generic; +using System.Linq; using Xunit; namespace VisualStudio.Tests diff --git a/VisualStudio.Tests/VisualStudioPredicateBuilderTests.cs b/src/VisualStudio.Tests/VisualStudioPredicateBuilderTests.cs similarity index 100% rename from VisualStudio.Tests/VisualStudioPredicateBuilderTests.cs rename to src/VisualStudio.Tests/VisualStudioPredicateBuilderTests.cs index 180db94..860c1b8 100644 --- a/VisualStudio.Tests/VisualStudioPredicateBuilderTests.cs +++ b/src/VisualStudio.Tests/VisualStudioPredicateBuilderTests.cs @@ -1,7 +1,7 @@ using System; using System.Threading.Tasks; -using Xunit; using vswhere; +using Xunit; namespace VisualStudio.Tests { diff --git a/VisualStudio/Channel.cs b/src/VisualStudio/Channel.cs similarity index 100% rename from VisualStudio/Channel.cs rename to src/VisualStudio/Channel.cs diff --git a/VisualStudio/Chooser.cs b/src/VisualStudio/Chooser.cs similarity index 100% rename from VisualStudio/Chooser.cs rename to src/VisualStudio/Chooser.cs index cf7158a..b9da15b 100644 --- a/VisualStudio/Chooser.cs +++ b/src/VisualStudio/Chooser.cs @@ -1,9 +1,9 @@ using System; -using System.Linq; using System.Collections.Generic; +using System.Diagnostics; using System.IO; +using System.Linq; using vswhere; -using System.Diagnostics; namespace VisualStudio { diff --git a/VisualStudio/Command.cs b/src/VisualStudio/Command.cs similarity index 100% rename from VisualStudio/Command.cs rename to src/VisualStudio/Command.cs diff --git a/VisualStudio/CommandDescriptor.cs b/src/VisualStudio/CommandDescriptor.cs similarity index 100% rename from VisualStudio/CommandDescriptor.cs rename to src/VisualStudio/CommandDescriptor.cs diff --git a/VisualStudio/CommandFactory.cs b/src/VisualStudio/CommandFactory.cs similarity index 100% rename from VisualStudio/CommandFactory.cs rename to src/VisualStudio/CommandFactory.cs index 494ddd7..1c5f439 100644 --- a/VisualStudio/CommandFactory.cs +++ b/src/VisualStudio/CommandFactory.cs @@ -1,9 +1,9 @@ using System; -using System.Linq; using System.Collections.Generic; using System.Collections.Immutable; -using System.Threading.Tasks; using System.IO; +using System.Linq; +using System.Threading.Tasks; using Microsoft.DotNet; namespace VisualStudio diff --git a/VisualStudio/Commands.cs b/src/VisualStudio/Commands.cs similarity index 93% rename from VisualStudio/Commands.cs rename to src/VisualStudio/Commands.cs index 1b86266..217ec11 100644 --- a/VisualStudio/Commands.cs +++ b/src/VisualStudio/Commands.cs @@ -25,7 +25,7 @@ public class System public class DotNetConfig { - public const string Section = ThisAssembly.Metadata.AssemblyName; + public const string Section = ThisAssembly.Project.AssemblyName; public const string SubSection = "alias"; public static Config GetConfig(bool global = false) => diff --git a/VisualStudio/Commands/AliasCommand.cs b/src/VisualStudio/Commands/AliasCommand.cs similarity index 100% rename from VisualStudio/Commands/AliasCommand.cs rename to src/VisualStudio/Commands/AliasCommand.cs index eb8759c..5f871d4 100644 --- a/VisualStudio/Commands/AliasCommand.cs +++ b/src/VisualStudio/Commands/AliasCommand.cs @@ -1,6 +1,6 @@ using System; -using System.Linq; using System.IO; +using System.Linq; using System.Threading.Tasks; namespace VisualStudio diff --git a/VisualStudio/Commands/AliasCommandDescriptor.cs b/src/VisualStudio/Commands/AliasCommandDescriptor.cs similarity index 100% rename from VisualStudio/Commands/AliasCommandDescriptor.cs rename to src/VisualStudio/Commands/AliasCommandDescriptor.cs index a7a2f7b..856d5c2 100644 --- a/VisualStudio/Commands/AliasCommandDescriptor.cs +++ b/src/VisualStudio/Commands/AliasCommandDescriptor.cs @@ -1,7 +1,7 @@ using System; -using System.Linq; using System.Collections.Generic; using System.Collections.Immutable; +using System.Linq; namespace VisualStudio { diff --git a/VisualStudio/Commands/ClientCommand.cs b/src/VisualStudio/Commands/ClientCommand.cs similarity index 100% rename from VisualStudio/Commands/ClientCommand.cs rename to src/VisualStudio/Commands/ClientCommand.cs index c780c48..ed35234 100644 --- a/VisualStudio/Commands/ClientCommand.cs +++ b/src/VisualStudio/Commands/ClientCommand.cs @@ -1,9 +1,9 @@ using System; -using System.Linq; using System.Collections.Generic; +using System.Diagnostics; using System.IO; +using System.Linq; using System.Threading.Tasks; -using System.Diagnostics; using DevEnv = vswhere.VisualStudioInstance; namespace VisualStudio diff --git a/VisualStudio/Commands/ClientCommandDescriptor.cs b/src/VisualStudio/Commands/ClientCommandDescriptor.cs similarity index 100% rename from VisualStudio/Commands/ClientCommandDescriptor.cs rename to src/VisualStudio/Commands/ClientCommandDescriptor.cs diff --git a/VisualStudio/Commands/ConfigCommand.cs b/src/VisualStudio/Commands/ConfigCommand.cs similarity index 100% rename from VisualStudio/Commands/ConfigCommand.cs rename to src/VisualStudio/Commands/ConfigCommand.cs diff --git a/VisualStudio/Commands/ConfigCommandDescriptor.cs b/src/VisualStudio/Commands/ConfigCommandDescriptor.cs similarity index 100% rename from VisualStudio/Commands/ConfigCommandDescriptor.cs rename to src/VisualStudio/Commands/ConfigCommandDescriptor.cs diff --git a/VisualStudio/Commands/GenerateReadmeCommand.cs b/src/VisualStudio/Commands/GenerateReadmeCommand.cs similarity index 97% rename from VisualStudio/Commands/GenerateReadmeCommand.cs rename to src/VisualStudio/Commands/GenerateReadmeCommand.cs index 33fda6a..9fb732c 100644 --- a/VisualStudio/Commands/GenerateReadmeCommand.cs +++ b/src/VisualStudio/Commands/GenerateReadmeCommand.cs @@ -21,7 +21,7 @@ public override async Task ExecuteAsync(TextWriter output) var content = (await Descriptor.ReadCommandTemplateContentAsync(command.Key)) .Replace("{CommandName}", command.Key) .Replace("{Description}", command.Value.Description) - .Replace("{Usage}", $"Usage: {ThisAssembly.Metadata.AssemblyName} {command.Key} [options]") + .Replace("{Usage}", $"Usage: {ThisAssembly.Project.AssemblyName} {command.Key} [options]") .Replace("{Options}", commandOptions.ToString()); commandsBuilder.AppendLine(); diff --git a/VisualStudio/Commands/GenerateReadmeCommandDescriptor.cs b/src/VisualStudio/Commands/GenerateReadmeCommandDescriptor.cs similarity index 100% rename from VisualStudio/Commands/GenerateReadmeCommandDescriptor.cs rename to src/VisualStudio/Commands/GenerateReadmeCommandDescriptor.cs index 9f7726a..d767b0f 100644 --- a/VisualStudio/Commands/GenerateReadmeCommandDescriptor.cs +++ b/src/VisualStudio/Commands/GenerateReadmeCommandDescriptor.cs @@ -1,7 +1,7 @@ using System; -using System.Linq; using System.Collections.Generic; using System.IO; +using System.Linq; using System.Reflection; using System.Threading.Tasks; using Mono.Options; diff --git a/VisualStudio/Commands/InstallCommand.cs b/src/VisualStudio/Commands/InstallCommand.cs similarity index 100% rename from VisualStudio/Commands/InstallCommand.cs rename to src/VisualStudio/Commands/InstallCommand.cs diff --git a/VisualStudio/Commands/InstallCommandDescriptor.cs b/src/VisualStudio/Commands/InstallCommandDescriptor.cs similarity index 100% rename from VisualStudio/Commands/InstallCommandDescriptor.cs rename to src/VisualStudio/Commands/InstallCommandDescriptor.cs diff --git a/VisualStudio/Commands/KillCommand.cs b/src/VisualStudio/Commands/KillCommand.cs similarity index 100% rename from VisualStudio/Commands/KillCommand.cs rename to src/VisualStudio/Commands/KillCommand.cs index b71b3d1..c999ad6 100644 --- a/VisualStudio/Commands/KillCommand.cs +++ b/src/VisualStudio/Commands/KillCommand.cs @@ -1,7 +1,7 @@ using System; -using System.Linq; using System.Diagnostics; using System.IO; +using System.Linq; using System.Threading.Tasks; using vswhere; diff --git a/VisualStudio/Commands/KillCommandDescriptor.cs b/src/VisualStudio/Commands/KillCommandDescriptor.cs similarity index 100% rename from VisualStudio/Commands/KillCommandDescriptor.cs rename to src/VisualStudio/Commands/KillCommandDescriptor.cs diff --git a/VisualStudio/Commands/LogCommand.cs b/src/VisualStudio/Commands/LogCommand.cs similarity index 100% rename from VisualStudio/Commands/LogCommand.cs rename to src/VisualStudio/Commands/LogCommand.cs diff --git a/VisualStudio/Commands/LogCommandDescriptor.cs b/src/VisualStudio/Commands/LogCommandDescriptor.cs similarity index 100% rename from VisualStudio/Commands/LogCommandDescriptor.cs rename to src/VisualStudio/Commands/LogCommandDescriptor.cs diff --git a/VisualStudio/Commands/ModifyCommand.cs b/src/VisualStudio/Commands/ModifyCommand.cs similarity index 96% rename from VisualStudio/Commands/ModifyCommand.cs rename to src/VisualStudio/Commands/ModifyCommand.cs index c0290e7..5e640d7 100644 --- a/VisualStudio/Commands/ModifyCommand.cs +++ b/src/VisualStudio/Commands/ModifyCommand.cs @@ -1,6 +1,6 @@ -using System.Linq; -using System.Collections.Generic; +using System.Collections.Generic; using System.IO; +using System.Linq; using System.Threading.Tasks; using vswhere; diff --git a/VisualStudio/Commands/ModifyCommandDescriptor.cs b/src/VisualStudio/Commands/ModifyCommandDescriptor.cs similarity index 100% rename from VisualStudio/Commands/ModifyCommandDescriptor.cs rename to src/VisualStudio/Commands/ModifyCommandDescriptor.cs diff --git a/VisualStudio/Commands/RunCommand.cs b/src/VisualStudio/Commands/RunCommand.cs similarity index 99% rename from VisualStudio/Commands/RunCommand.cs rename to src/VisualStudio/Commands/RunCommand.cs index d03415e..d0d9fd1 100644 --- a/VisualStudio/Commands/RunCommand.cs +++ b/src/VisualStudio/Commands/RunCommand.cs @@ -1,8 +1,8 @@ using System; -using System.Linq; using System.Collections.Generic; using System.Diagnostics; using System.IO; +using System.Linq; using System.Threading.Tasks; using vswhere; @@ -10,7 +10,7 @@ namespace VisualStudio { class RunCommand : Command { - static readonly ToolSettings settings = new ToolSettings(ThisAssembly.Metadata.AssemblyName); + static readonly ToolSettings settings = new ToolSettings(ThisAssembly.Project.AssemblyName); readonly WhereService whereService; diff --git a/VisualStudio/Commands/RunCommandDescriptor.cs b/src/VisualStudio/Commands/RunCommandDescriptor.cs similarity index 100% rename from VisualStudio/Commands/RunCommandDescriptor.cs rename to src/VisualStudio/Commands/RunCommandDescriptor.cs index 4cd97b0..ec6e030 100644 --- a/VisualStudio/Commands/RunCommandDescriptor.cs +++ b/src/VisualStudio/Commands/RunCommandDescriptor.cs @@ -1,6 +1,6 @@ using System; -using System.Linq; using System.Collections.Generic; +using System.Linq; using Mono.Options; namespace VisualStudio diff --git a/VisualStudio/Commands/SaveCommand.cs b/src/VisualStudio/Commands/SaveCommand.cs similarity index 100% rename from VisualStudio/Commands/SaveCommand.cs rename to src/VisualStudio/Commands/SaveCommand.cs diff --git a/VisualStudio/Commands/SaveCommandDescriptor.cs b/src/VisualStudio/Commands/SaveCommandDescriptor.cs similarity index 100% rename from VisualStudio/Commands/SaveCommandDescriptor.cs rename to src/VisualStudio/Commands/SaveCommandDescriptor.cs index d2322e3..7fb9402 100644 --- a/VisualStudio/Commands/SaveCommandDescriptor.cs +++ b/src/VisualStudio/Commands/SaveCommandDescriptor.cs @@ -1,7 +1,7 @@ using System; -using System.Linq; using System.Collections.Generic; using System.Collections.Immutable; +using System.Linq; namespace VisualStudio { diff --git a/VisualStudio/Commands/UpdateCommand.cs b/src/VisualStudio/Commands/UpdateCommand.cs similarity index 100% rename from VisualStudio/Commands/UpdateCommand.cs rename to src/VisualStudio/Commands/UpdateCommand.cs index 9b18446..6b477d5 100644 --- a/VisualStudio/Commands/UpdateCommand.cs +++ b/src/VisualStudio/Commands/UpdateCommand.cs @@ -1,7 +1,7 @@ using System; -using System.Linq; using System.Collections.Generic; using System.IO; +using System.Linq; using System.Threading.Tasks; using vswhere; diff --git a/VisualStudio/Commands/UpdateCommandDescriptor.cs b/src/VisualStudio/Commands/UpdateCommandDescriptor.cs similarity index 100% rename from VisualStudio/Commands/UpdateCommandDescriptor.cs rename to src/VisualStudio/Commands/UpdateCommandDescriptor.cs diff --git a/VisualStudio/Commands/UpdateSelfCommand.cs b/src/VisualStudio/Commands/UpdateSelfCommand.cs similarity index 100% rename from VisualStudio/Commands/UpdateSelfCommand.cs rename to src/VisualStudio/Commands/UpdateSelfCommand.cs diff --git a/VisualStudio/Commands/UpdateSelfCommandDescriptor.cs b/src/VisualStudio/Commands/UpdateSelfCommandDescriptor.cs similarity index 100% rename from VisualStudio/Commands/UpdateSelfCommandDescriptor.cs rename to src/VisualStudio/Commands/UpdateSelfCommandDescriptor.cs index ca79a99..7ca190f 100644 --- a/VisualStudio/Commands/UpdateSelfCommandDescriptor.cs +++ b/src/VisualStudio/Commands/UpdateSelfCommandDescriptor.cs @@ -1,7 +1,7 @@ using System; -using System.Linq; using System.Collections.Generic; using System.Collections.Immutable; +using System.Linq; namespace VisualStudio { diff --git a/VisualStudio/Commands/WhereCommand.cs b/src/VisualStudio/Commands/WhereCommand.cs similarity index 100% rename from VisualStudio/Commands/WhereCommand.cs rename to src/VisualStudio/Commands/WhereCommand.cs index 165224a..4ff6bb1 100644 --- a/VisualStudio/Commands/WhereCommand.cs +++ b/src/VisualStudio/Commands/WhereCommand.cs @@ -1,9 +1,9 @@ using System; -using System.Linq; +using System.Collections.Generic; using System.IO; +using System.Linq; using System.Threading.Tasks; using vswhere; -using System.Collections.Generic; namespace VisualStudio { diff --git a/VisualStudio/Commands/WhereCommandDescriptor.cs b/src/VisualStudio/Commands/WhereCommandDescriptor.cs similarity index 100% rename from VisualStudio/Commands/WhereCommandDescriptor.cs rename to src/VisualStudio/Commands/WhereCommandDescriptor.cs diff --git a/VisualStudio/DefaultTextWriter.cs b/src/VisualStudio/DefaultTextWriter.cs similarity index 100% rename from VisualStudio/DefaultTextWriter.cs rename to src/VisualStudio/DefaultTextWriter.cs diff --git a/VisualStudio/Docs/README.md b/src/VisualStudio/Docs/README.md similarity index 100% rename from VisualStudio/Docs/README.md rename to src/VisualStudio/Docs/README.md diff --git a/VisualStudio/Docs/config.md b/src/VisualStudio/Docs/config.md similarity index 100% rename from VisualStudio/Docs/config.md rename to src/VisualStudio/Docs/config.md diff --git a/VisualStudio/Docs/default.md b/src/VisualStudio/Docs/default.md similarity index 100% rename from VisualStudio/Docs/default.md rename to src/VisualStudio/Docs/default.md diff --git a/VisualStudio/Docs/install.md b/src/VisualStudio/Docs/install.md similarity index 100% rename from VisualStudio/Docs/install.md rename to src/VisualStudio/Docs/install.md diff --git a/VisualStudio/Docs/kill.md b/src/VisualStudio/Docs/kill.md similarity index 100% rename from VisualStudio/Docs/kill.md rename to src/VisualStudio/Docs/kill.md diff --git a/VisualStudio/Docs/log.md b/src/VisualStudio/Docs/log.md similarity index 100% rename from VisualStudio/Docs/log.md rename to src/VisualStudio/Docs/log.md diff --git a/VisualStudio/Docs/modify.md b/src/VisualStudio/Docs/modify.md similarity index 100% rename from VisualStudio/Docs/modify.md rename to src/VisualStudio/Docs/modify.md diff --git a/VisualStudio/Docs/run.md b/src/VisualStudio/Docs/run.md similarity index 100% rename from VisualStudio/Docs/run.md rename to src/VisualStudio/Docs/run.md diff --git a/VisualStudio/Docs/update.md b/src/VisualStudio/Docs/update.md similarity index 100% rename from VisualStudio/Docs/update.md rename to src/VisualStudio/Docs/update.md diff --git a/VisualStudio/Docs/where.md b/src/VisualStudio/Docs/where.md similarity index 100% rename from VisualStudio/Docs/where.md rename to src/VisualStudio/Docs/where.md diff --git a/VisualStudio/ErrorCodes.cs b/src/VisualStudio/ErrorCodes.cs similarity index 100% rename from VisualStudio/ErrorCodes.cs rename to src/VisualStudio/ErrorCodes.cs diff --git a/VisualStudio/GitInfo.txt b/src/VisualStudio/GitInfo.txt similarity index 100% rename from VisualStudio/GitInfo.txt rename to src/VisualStudio/GitInfo.txt diff --git a/VisualStudio/IOptions.cs b/src/VisualStudio/IOptions.cs similarity index 100% rename from VisualStudio/IOptions.cs rename to src/VisualStudio/IOptions.cs diff --git a/VisualStudio/ITextWriter.cs b/src/VisualStudio/ITextWriter.cs similarity index 100% rename from VisualStudio/ITextWriter.cs rename to src/VisualStudio/ITextWriter.cs diff --git a/VisualStudio/InstallerService.cs b/src/VisualStudio/InstallerService.cs similarity index 91% rename from VisualStudio/InstallerService.cs rename to src/VisualStudio/InstallerService.cs index 77033ab..fece206 100644 --- a/VisualStudio/InstallerService.cs +++ b/src/VisualStudio/InstallerService.cs @@ -1,8 +1,8 @@ using System; -using System.Linq; using System.Collections.Generic; using System.Diagnostics; using System.IO; +using System.Linq; using System.Net.Http; using System.Text; using System.Threading.Tasks; @@ -63,13 +63,13 @@ string MapChannel(Channel? channel) string MapSku(Sku? sku) => sku switch - { - Sku.Professional => "professional", - Sku.Enterprise => "enterprise", - Sku.BuildTools => "buildtools", - Sku.TestAgent => "testagent", - _ => "community" - }; + { + Sku.Professional => "professional", + Sku.Enterprise => "enterprise", + Sku.BuildTools => "buildtools", + Sku.TestAgent => "testagent", + _ => "community" + }; async Task DownloadAsync(string bootstrapperUrl, TextWriter output) { @@ -79,11 +79,11 @@ async Task DownloadAsync(string bootstrapperUrl, TextWriter output) using var response = await client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead); response.EnsureSuccessStatusCode(); - + var filePath = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString(), new Uri(bootstrapperUrl).Segments.Last()); Directory.CreateDirectory(Path.GetDirectoryName(filePath)); using var httpStream = await response.Content.ReadAsStreamAsync(); - + using var fileStream = File.Create(filePath); await httpStream.CopyToAsync(fileStream, 8 * 1024); diff --git a/VisualStudio/MarkdownOptionsTextWriter.cs b/src/VisualStudio/MarkdownOptionsTextWriter.cs similarity index 100% rename from VisualStudio/MarkdownOptionsTextWriter.cs rename to src/VisualStudio/MarkdownOptionsTextWriter.cs index c88466b..5cca7a1 100644 --- a/VisualStudio/MarkdownOptionsTextWriter.cs +++ b/src/VisualStudio/MarkdownOptionsTextWriter.cs @@ -1,7 +1,7 @@ using System; +using System.Collections.Immutable; using System.Linq; using System.Text; -using System.Collections.Immutable; using Mono.Options; namespace VisualStudio diff --git a/VisualStudio/NuGet.Config b/src/VisualStudio/NuGet.Config similarity index 100% rename from VisualStudio/NuGet.Config rename to src/VisualStudio/NuGet.Config diff --git a/VisualStudio/OptionSet.cs b/src/VisualStudio/OptionSet.cs similarity index 100% rename from VisualStudio/OptionSet.cs rename to src/VisualStudio/OptionSet.cs diff --git a/VisualStudio/Options.cs b/src/VisualStudio/Options.cs similarity index 100% rename from VisualStudio/Options.cs rename to src/VisualStudio/Options.cs index c6e14da..7b55f23 100644 --- a/VisualStudio/Options.cs +++ b/src/VisualStudio/Options.cs @@ -1,9 +1,9 @@ using System; -using System.Linq; using System.Collections.Generic; +using System.Collections.Immutable; using System.IO; +using System.Linq; using Mono.Options; -using System.Collections.Immutable; namespace VisualStudio { diff --git a/VisualStudio/Options/ChannelOption.cs b/src/VisualStudio/Options/ChannelOption.cs similarity index 100% rename from VisualStudio/Options/ChannelOption.cs rename to src/VisualStudio/Options/ChannelOption.cs diff --git a/VisualStudio/Options/ClientOptions.cs b/src/VisualStudio/Options/ClientOptions.cs similarity index 100% rename from VisualStudio/Options/ClientOptions.cs rename to src/VisualStudio/Options/ClientOptions.cs diff --git a/VisualStudio/Options/DebugOption.cs b/src/VisualStudio/Options/DebugOption.cs similarity index 100% rename from VisualStudio/Options/DebugOption.cs rename to src/VisualStudio/Options/DebugOption.cs diff --git a/VisualStudio/Options/ExperimentalOption.cs b/src/VisualStudio/Options/ExperimentalOption.cs similarity index 100% rename from VisualStudio/Options/ExperimentalOption.cs rename to src/VisualStudio/Options/ExperimentalOption.cs diff --git a/VisualStudio/Options/FilterOption.cs b/src/VisualStudio/Options/FilterOption.cs similarity index 100% rename from VisualStudio/Options/FilterOption.cs rename to src/VisualStudio/Options/FilterOption.cs diff --git a/VisualStudio/Options/FirstOption.cs b/src/VisualStudio/Options/FirstOption.cs similarity index 100% rename from VisualStudio/Options/FirstOption.cs rename to src/VisualStudio/Options/FirstOption.cs diff --git a/VisualStudio/Options/GlobalOption.cs b/src/VisualStudio/Options/GlobalOption.cs similarity index 100% rename from VisualStudio/Options/GlobalOption.cs rename to src/VisualStudio/Options/GlobalOption.cs diff --git a/VisualStudio/Options/HelpOption.cs b/src/VisualStudio/Options/HelpOption.cs similarity index 100% rename from VisualStudio/Options/HelpOption.cs rename to src/VisualStudio/Options/HelpOption.cs diff --git a/VisualStudio/Options/ListOption.cs b/src/VisualStudio/Options/ListOption.cs similarity index 100% rename from VisualStudio/Options/ListOption.cs rename to src/VisualStudio/Options/ListOption.cs diff --git a/VisualStudio/Options/NicknameOption.cs b/src/VisualStudio/Options/NicknameOption.cs similarity index 100% rename from VisualStudio/Options/NicknameOption.cs rename to src/VisualStudio/Options/NicknameOption.cs diff --git a/VisualStudio/Options/SaveOption.cs b/src/VisualStudio/Options/SaveOption.cs similarity index 100% rename from VisualStudio/Options/SaveOption.cs rename to src/VisualStudio/Options/SaveOption.cs diff --git a/VisualStudio/Options/SelectAllOption.cs b/src/VisualStudio/Options/SelectAllOption.cs similarity index 100% rename from VisualStudio/Options/SelectAllOption.cs rename to src/VisualStudio/Options/SelectAllOption.cs diff --git a/VisualStudio/Options/SelectPropertyOption.cs b/src/VisualStudio/Options/SelectPropertyOption.cs similarity index 100% rename from VisualStudio/Options/SelectPropertyOption.cs rename to src/VisualStudio/Options/SelectPropertyOption.cs diff --git a/VisualStudio/Options/SelfOption.cs b/src/VisualStudio/Options/SelfOption.cs similarity index 100% rename from VisualStudio/Options/SelfOption.cs rename to src/VisualStudio/Options/SelfOption.cs diff --git a/VisualStudio/Options/SkuOption.cs b/src/VisualStudio/Options/SkuOption.cs similarity index 100% rename from VisualStudio/Options/SkuOption.cs rename to src/VisualStudio/Options/SkuOption.cs diff --git a/VisualStudio/Options/VersionOption.cs b/src/VisualStudio/Options/VersionOption.cs similarity index 100% rename from VisualStudio/Options/VersionOption.cs rename to src/VisualStudio/Options/VersionOption.cs diff --git a/VisualStudio/Options/VisualStudioOptions.cs b/src/VisualStudio/Options/VisualStudioOptions.cs similarity index 100% rename from VisualStudio/Options/VisualStudioOptions.cs rename to src/VisualStudio/Options/VisualStudioOptions.cs index def3e72..6fb1ae0 100644 --- a/VisualStudio/Options/VisualStudioOptions.cs +++ b/src/VisualStudio/Options/VisualStudioOptions.cs @@ -1,7 +1,7 @@ using System; -using Mono.Options; using System.Collections.Generic; using System.IO; +using Mono.Options; namespace VisualStudio { diff --git a/VisualStudio/Options/WorkloadOptions.cs b/src/VisualStudio/Options/WorkloadOptions.cs similarity index 100% rename from VisualStudio/Options/WorkloadOptions.cs rename to src/VisualStudio/Options/WorkloadOptions.cs index 73446c5..20c212f 100644 --- a/VisualStudio/Options/WorkloadOptions.cs +++ b/src/VisualStudio/Options/WorkloadOptions.cs @@ -1,7 +1,7 @@ using System; -using System.Linq; using System.Collections.Generic; using System.Collections.Immutable; +using System.Linq; using Mono.Options; namespace VisualStudio diff --git a/VisualStudio/ProcessExtensions.cs b/src/VisualStudio/ProcessExtensions.cs similarity index 100% rename from VisualStudio/ProcessExtensions.cs rename to src/VisualStudio/ProcessExtensions.cs index fbf7f02..d4edf5b 100644 --- a/VisualStudio/ProcessExtensions.cs +++ b/src/VisualStudio/ProcessExtensions.cs @@ -1,7 +1,7 @@ using System; -using System.Linq; using System.Diagnostics; using System.IO; +using System.Linq; using System.Management; namespace VisualStudio diff --git a/VisualStudio/Program.cs b/src/VisualStudio/Program.cs similarity index 92% rename from VisualStudio/Program.cs rename to src/VisualStudio/Program.cs index 814e2e7..0fde6b5 100644 --- a/VisualStudio/Program.cs +++ b/src/VisualStudio/Program.cs @@ -69,7 +69,7 @@ public async Task RunAsync() writer.WriteLine(); } - writer.WriteLine($"Usage: {ThisAssembly.Metadata.AssemblyName} {commandName} [options] [--save=]"); + writer.WriteLine($"Usage: {ThisAssembly.Project.AssemblyName} {commandName} [options] [--save=]"); ex.CommandDescriptor.ShowUsage(writer); ShowExamples(commandName); @@ -88,14 +88,14 @@ public async Task RunAsync() protected virtual void ShowVersion() { - output.WriteLine($"{ThisAssembly.Metadata.AssemblyName} {ThisAssembly.Metadata.Version}"); + output.WriteLine($"{ThisAssembly.Project.AssemblyName} {ThisAssembly.Info.InformationalVersion}"); output.WriteLine(); } protected virtual void ShowUsage() { output.WriteLine(); - output.WriteLine($"Usage: {ThisAssembly.Metadata.AssemblyName} [command] [options|-?|-h|--help] [--save=ALIAS[--global]]"); + output.WriteLine($"Usage: {ThisAssembly.Project.AssemblyName} [command] [options|-?|-h|--help] [--save=ALIAS[--global]]"); output.WriteLine(); output.WriteLine("Supported commands:"); diff --git a/VisualStudio/Properties/.gitignore b/src/VisualStudio/Properties/.gitignore similarity index 100% rename from VisualStudio/Properties/.gitignore rename to src/VisualStudio/Properties/.gitignore diff --git a/VisualStudio/ShowUsageException.cs b/src/VisualStudio/ShowUsageException.cs similarity index 100% rename from VisualStudio/ShowUsageException.cs rename to src/VisualStudio/ShowUsageException.cs diff --git a/VisualStudio/Sku.cs b/src/VisualStudio/Sku.cs similarity index 100% rename from VisualStudio/Sku.cs rename to src/VisualStudio/Sku.cs diff --git a/VisualStudio/StringExtensions.cs b/src/VisualStudio/StringExtensions.cs similarity index 100% rename from VisualStudio/StringExtensions.cs rename to src/VisualStudio/StringExtensions.cs diff --git a/VisualStudio/ToolSettings.cs b/src/VisualStudio/ToolSettings.cs similarity index 100% rename from VisualStudio/ToolSettings.cs rename to src/VisualStudio/ToolSettings.cs diff --git a/VisualStudio/VisualStudio.csproj b/src/VisualStudio/VisualStudio.csproj similarity index 72% rename from VisualStudio/VisualStudio.csproj rename to src/VisualStudio/VisualStudio.csproj index 3c8f3e1..fdbf5c8 100644 --- a/VisualStudio/VisualStudio.csproj +++ b/src/VisualStudio/VisualStudio.csproj @@ -17,11 +17,10 @@ - - + @@ -29,7 +28,6 @@ - @@ -38,11 +36,4 @@ - - - <_Parameter1>AssemblyName - <_Parameter2>$(AssemblyName) - - - diff --git a/VisualStudio/VisualStudioInstanceExtensions.cs b/src/VisualStudio/VisualStudioInstanceExtensions.cs similarity index 98% rename from VisualStudio/VisualStudioInstanceExtensions.cs rename to src/VisualStudio/VisualStudioInstanceExtensions.cs index 47a448e..dc2977c 100644 --- a/VisualStudio/VisualStudioInstanceExtensions.cs +++ b/src/VisualStudio/VisualStudioInstanceExtensions.cs @@ -25,6 +25,6 @@ public static Channel GetChannel(this VisualStudioInstance vsInstance) "VisualStudio.16.IntPreview" => Channel.IntPreview, "VisualStudio.16.int.main" => Channel.Main, _ => throw new ArgumentException($"Invalid ChannelId {vsInstance.ChannelId}. Must be one of {string.Join(", ", Enum.GetNames(typeof(Channel)).Select(x => x.ToLowerInvariant()))}.", "sku"), - }; + }; } } diff --git a/VisualStudio/VisualStudioPredicateBuilder.cs b/src/VisualStudio/VisualStudioPredicateBuilder.cs similarity index 100% rename from VisualStudio/VisualStudioPredicateBuilder.cs rename to src/VisualStudio/VisualStudioPredicateBuilder.cs diff --git a/VisualStudio/WhereException.cs b/src/VisualStudio/WhereException.cs similarity index 100% rename from VisualStudio/WhereException.cs rename to src/VisualStudio/WhereException.cs diff --git a/VisualStudio/WhereService.cs b/src/VisualStudio/WhereService.cs similarity index 100% rename from VisualStudio/WhereService.cs rename to src/VisualStudio/WhereService.cs diff --git a/VisualStudio/msbuild.rsp b/src/VisualStudio/msbuild.rsp similarity index 100% rename from VisualStudio/msbuild.rsp rename to src/VisualStudio/msbuild.rsp diff --git a/VisualStudio/vswhere.cs b/src/VisualStudio/vswhere.cs similarity index 100% rename from VisualStudio/vswhere.cs rename to src/VisualStudio/vswhere.cs diff --git a/docs/img/icon-128.png b/src/icon.png similarity index 100% rename from docs/img/icon-128.png rename to src/icon.png diff --git a/src/kzu.snk b/src/kzu.snk new file mode 100644 index 0000000..8e181ae Binary files /dev/null and b/src/kzu.snk differ