From 612fba33042a6eef8130d6119626a012884efd33 Mon Sep 17 00:00:00 2001 From: Kei <7330724+keiichi-morisato@users.noreply.github.com> Date: Tue, 3 Aug 2021 11:13:31 -0700 Subject: [PATCH] Initial commit --- .clang-format | 82 ++++++ .clang-tidy | 1 + .gitattributes | 63 +++++ .gitignore | 363 +++++++++++++++++++++++++++ GitVersion.yml | 26 ++ LICENSE | 29 +++ PROJECTNAME.sln | 54 ++++ README.md | 37 +++ azure-pipelines.yml | 91 +++++++ nuget/Siddiq-Software-Avatar.png | Bin 0 -> 35348 bytes nuget/SiddiqSoft.PROJECTNAME.nuspec | 43 ++++ nuget/SiddiqSoft.PROJECTNAME.targets | 8 + src/projectname.hpp | 44 ++++ tests/basic_tests.vcxproj | 114 +++++++++ tests/packages.config | 5 + tests/test.cpp | 46 ++++ 16 files changed, 1006 insertions(+) create mode 100644 .clang-format create mode 100644 .clang-tidy create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 GitVersion.yml create mode 100644 LICENSE create mode 100644 PROJECTNAME.sln create mode 100644 README.md create mode 100644 azure-pipelines.yml create mode 100644 nuget/Siddiq-Software-Avatar.png create mode 100644 nuget/SiddiqSoft.PROJECTNAME.nuspec create mode 100644 nuget/SiddiqSoft.PROJECTNAME.targets create mode 100644 src/projectname.hpp create mode 100644 tests/basic_tests.vcxproj create mode 100644 tests/packages.config create mode 100644 tests/test.cpp diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..1a3646b --- /dev/null +++ b/.clang-format @@ -0,0 +1,82 @@ +# Visual Studio generated .clang-format file + +# The style options in this file are a best effort attempt to replicate the +# current IDE formatting configuration from Tools > Options. The following +# style options, however, should be verified: +# AfterClass, AfterControlStatement, AfterEnum, AfterFunction, AfterNamespace, +# AfterStruct, AfterUnion + +AccessModifierOffset: -4 + +AlignAfterOpenBracket: Align # ours is Align +AlignConsecutiveDeclarations: true +AlignOperands: true +AlignTrailingComments: true +AlignConsecutiveAssignments: true +AlignEscapedNewlines: DontAlign + +AllowShortBlocksOnASingleLine: true +AllowShortFunctionsOnASingleLine: Inline +AllowShortIfStatementsOnASingleLine: true +AllowShortLoopsOnASingleLine: false +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakBeforeMultilineStrings : false +AllowAllParametersOfDeclarationOnNextLine : false +AllowShortCaseLabelsOnASingleLine : true + +BinPackArguments : false +BinPackParameters : false + +BasedOnStyle: WebKit +BraceWrapping: + AfterClass: true # TODO: verify +# AfterControlStatement: true # TODO: verify +# AfterEnum: true # TODO: verify + AfterFunction: true # TODO: verify +# AfterNamespace: true # TODO: verify +# AfterStruct: true # TODO: verify +# AfterUnion: true # TODO: verify + BeforeCatch: true + BeforeElse: true +# IndentBraces: false +# SplitEmptyFunction: true +# SplitEmptyRecord: true + +BreakBeforeBraces: Allman +BreakConstructorInitializers: BeforeComma +BreakBeforeTernaryOperators : true +BreakBeforeBinaryOperators : None +BreakInheritanceList : BeforeComma + +ContinuationIndentWidth : 8 +ColumnLimit: 132 +Cpp11BracedListStyle: true +IndentCaseLabels: false +IndentPPDirectives: None +IndentWidth: 4 +PointerAlignment: Left +SpaceAfterCStyleCast: false +SpaceBeforeAssignmentOperators: true +SpaceBeforeParens: ControlStatements +SpaceInEmptyParentheses: false +SpacesInCStyleCastParentheses: false +SpacesInSquareBrackets: false +MaxEmptyLinesToKeep: 2 +NamespaceIndentation: All +CompactNamespaces : false +FixNamespaceComments : true +Standard: Cpp11 +TabWidth: 4 +UseTab: AlignWithSpaces +SortIncludes: false +SortUsingDeclarations: false +IncludeBlocks : Preserve +ReflowComments: false + +ConstructorInitializerAllOnOneLineOrOnePerLine: false +ConstructorInitializerIndentWidth: 4 +SpacesInParentheses: false +KeepEmptyLinesAtTheStartOfBlocks : false + +#StatmentMacros: ['TEST_CLASS', 'TEST_CLASS_INITIALIZE', 'TEST_CLASS_CLEANUP', 'TEST_METHOD'] + \ No newline at end of file diff --git a/.clang-tidy b/.clang-tidy new file mode 100644 index 0000000..2472728 --- /dev/null +++ b/.clang-tidy @@ -0,0 +1 @@ +Checks: 'modernize-*,cppcoreguidelines-*,-modernize-use-trailing-return-type,-cppcoreguidelines-avoid-magic-numbers' \ No newline at end of file diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..1ff0c42 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,63 @@ +############################################################################### +# Set default behavior to automatically normalize line endings. +############################################################################### +* text=auto + +############################################################################### +# Set default behavior for command prompt diff. +# +# This is need for earlier builds of msysgit that does not have it on by +# default for csharp files. +# Note: This is only used by command line +############################################################################### +#*.cs diff=csharp + +############################################################################### +# Set the merge driver for project and solution files +# +# Merging from the command prompt will add diff markers to the files if there +# are conflicts (Merging from VS is not affected by the settings below, in VS +# the diff markers are never inserted). Diff markers may cause the following +# file extensions to fail to load in VS. An alternative would be to treat +# these files as binary and thus will always conflict and require user +# intervention with every merge. To do so, just uncomment the entries below +############################################################################### +#*.sln merge=binary +#*.csproj merge=binary +#*.vbproj merge=binary +#*.vcxproj merge=binary +#*.vcproj merge=binary +#*.dbproj merge=binary +#*.fsproj merge=binary +#*.lsproj merge=binary +#*.wixproj merge=binary +#*.modelproj merge=binary +#*.sqlproj merge=binary +#*.wwaproj merge=binary + +############################################################################### +# behavior for image files +# +# image files are treated as binary by default. +############################################################################### +#*.jpg binary +#*.png binary +#*.gif binary + +############################################################################### +# diff behavior for common document formats +# +# Convert binary document formats to text before diffing them. This feature +# is only available from the command line. Turn it on by uncommenting the +# entries below. +############################################################################### +#*.doc diff=astextplain +#*.DOC diff=astextplain +#*.docx diff=astextplain +#*.DOCX diff=astextplain +#*.dot diff=astextplain +#*.DOT diff=astextplain +#*.pdf diff=astextplain +#*.PDF diff=astextplain +#*.rtf diff=astextplain +#*.RTF diff=astextplain diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9491a2f --- /dev/null +++ b/.gitignore @@ -0,0 +1,363 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Mono auto generated files +mono_crash.* + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +[Ww][Ii][Nn]32/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +[Oo]ut/ +[Ll]og/ +[Ll]ogs/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUnit +*.VisualState.xml +TestResult.xml +nunit-*.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ + +# ASP.NET Scaffolding +ScaffoldingReadMe.txt + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_h.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Coverlet is a free, cross platform Code Coverage Tool +coverage*.json +coverage*.xml +coverage*.info + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# NuGet Symbol Packages +*.snupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx +*.appxbundle +*.appxupload + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!?*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser +*- [Bb]ackup.rdl +*- [Bb]ackup ([0-9]).rdl +*- [Bb]ackup ([0-9][0-9]).rdl + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# CodeRush personal settings +.cr/personal + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + +# BeatPulse healthcheck temp database +healthchecksdb + +# Backup folder for Package Reference Convert tool in Visual Studio 2017 +MigrationBackup/ + +# Ionide (cross platform F# VS Code tools) working folder +.ionide/ + +# Fody - auto-generated XML schema +FodyWeavers.xsd \ No newline at end of file diff --git a/GitVersion.yml b/GitVersion.yml new file mode 100644 index 0000000..a71174c --- /dev/null +++ b/GitVersion.yml @@ -0,0 +1,26 @@ +mode: ContinuousDelivery +branches: + master: + regex: (master|main) + mode: ContinuousDelivery + tag: + increment: Patch + prevent-increment-of-merged-branch-version: true + track-merge-target: false + feature: + regex: feature(s)?[/-] + mode: ContinuousDeployment + develop: + regex: dev(elop)?(ment)?$ + mode: ContinuousDeployment + tag: alpha + hotfix: + regex: hotfix(es)?[/-] + mode: ContinuousDeployment + tag: beta + release: + regex: release(s)?[/-] + mode: ContinuousDeployment + tag: rc +ignore: + sha: [] diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..4b9ee25 --- /dev/null +++ b/LICENSE @@ -0,0 +1,29 @@ +BSD 3-Clause License + +Copyright (c) 2021, Siddiq Software LLC +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/PROJECTNAME.sln b/PROJECTNAME.sln new file mode 100644 index 0000000..addbba6 --- /dev/null +++ b/PROJECTNAME.sln @@ -0,0 +1,54 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.31515.178 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{8A6E91C4-25AE-43E1-A2A8-6D020B8B3287}" + ProjectSection(SolutionItems) = preProject + src\projectname.hpp = src\projectname.hpp + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{179E7FDB-7795-456D-AC2D-66670D708FC3}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "nuget", "nuget", "{873751D6-FA0D-4290-8014-73F7F8ED2187}" + ProjectSection(SolutionItems) = preProject + nuget\Siddiq-Software-Avatar.png = nuget\Siddiq-Software-Avatar.png + nuget\SiddiqSoft.PROJECTNAME.nuspec = nuget\SiddiqSoft.PROJECTNAME.nuspec + nuget\SiddiqSoft.PROJECTNAME.targets = nuget\SiddiqSoft.PROJECTNAME.targets + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{6701C4F1-73DF-4979-81F2-189F00F01151}" + ProjectSection(SolutionItems) = preProject + .clang-format = .clang-format + .clang-tidy = .clang-tidy + .gitattributes = .gitattributes + .gitignore = .gitignore + azure-pipelines.yml = azure-pipelines.yml + GitVersion.yml = GitVersion.yml + LICENSE = LICENSE + README.md = README.md + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "basic_tests", "tests\basic_tests.vcxproj", "{025C9280-6302-401E-949F-F82DF4D47204}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {025C9280-6302-401E-949F-F82DF4D47204}.Debug|x64.ActiveCfg = Debug|x64 + {025C9280-6302-401E-949F-F82DF4D47204}.Debug|x64.Build.0 = Debug|x64 + {025C9280-6302-401E-949F-F82DF4D47204}.Release|x64.ActiveCfg = Release|x64 + {025C9280-6302-401E-949F-F82DF4D47204}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {025C9280-6302-401E-949F-F82DF4D47204} = {179E7FDB-7795-456D-AC2D-66670D708FC3} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {58ECAD81-0BE8-4DF7-8F5B-7098036D04E7} + EndGlobalSection +EndGlobal diff --git a/README.md b/README.md new file mode 100644 index 0000000..a0657b5 --- /dev/null +++ b/README.md @@ -0,0 +1,37 @@ +PROJECTNAME : PROJECTDESCRIPTION +------------------------------------------- + +[![CodeQL](https://github.com/SiddiqSoft/PROJECTNAME/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/SiddiqSoft/PROJECTNAME/actions/workflows/codeql-analysis.yml) +[![Build Status](https://dev.azure.com/siddiqsoft/siddiqsoft/_apis/build/status/SiddiqSoft.PROJECTNAME?branchName=main)](https://dev.azure.com/siddiqsoft/siddiqsoft/_build/latest?definitionId=DEFINITIONID&branchName=main) +![](https://img.shields.io/nuget/v/SiddiqSoft.PROJECTNAME) +![](https://img.shields.io/github/v/tag/SiddiqSoft/PROJECTNAME) +![](https://img.shields.io/azure-devops/tests/siddiqsoft/siddiqsoft/DEFINITIONID) +![](https://img.shields.io/azure-devops/coverage/siddiqsoft/siddiqsoft/DEFINITIONID) + + +# Objective + + +# Requirements +- The build and tests are for Visual Studio 2019 under x64. + +# Usage +- Use the nuget [SiddiqSoft.PROJECTNAME](https://www.nuget.org/packages/SiddiqSoft.PROJECTNAME/) +- Copy paste..whatever works. + +
+ +- [ ] Replace "PROJECTNAME" with your new project name +- [ ] Replace "PROJECTDESCRIPTION" with your project description +- [ ] Replace "DEFINITIONID" in the badges to reflect the Azure Pipelines definition id +- [ ] Renamed the nuget files to replace the PROJECTNAME +- [ ] Update the nuspec file +- [ ] Update the README (pay attention to the badge links) + + +
+ + +

+© 2021 Siddiq Software LLC. All rights reserved. +

diff --git a/azure-pipelines.yml b/azure-pipelines.yml new file mode 100644 index 0000000..7e8750a --- /dev/null +++ b/azure-pipelines.yml @@ -0,0 +1,91 @@ +trigger: + batch: true + branches: + include: + - main + - develop + - release/* + paths: + exclude: + - README.md + +pool: + name: Default + demands: + - msbuild + - visualstudio + - vstest + +variables: + buildPlatform: 'x64' + +steps: +- task: NuGetToolInstaller@1 + displayName: 'Use NuGet 5.10.0' + inputs: + versionSpec: '5.10.0' + checkLatest: true + +- task: GitVersion@5 + inputs: + runtime: 'core' + configFilePath: 'GitVersion.yml' + +- script: echo %Action%%BuildVersion% + displayName: 'Set build version' + env: + Action: '##vso[build.updatebuildnumber]' + BuildVersion: $(GitVersion.NugetVersionV2) + +- task: NuGetCommand@2 + displayName: 'NuGet restore' + inputs: + command: 'restore' + restoreSolution: '**/*.sln' + feedsToUse: 'select' + vstsFeed: 'ec2759e0-0587-4306-8a8d-8695f15e2336' + continueOnError: true + +- task: VSBuild@1 + displayName: 'Build solution RELEASE' + inputs: + solution: '**/*.sln' + platform: 'x64' + configuration: 'Release' + maximumCpuCount: true + msbuildArchitecture: 'x64' + +- task: CmdLine@2 + inputs: + script: | + echo Running googletest + cd output\Release + basic_tests.exe --gtest_output=xml:..\..\TestResults\ + +- task: PublishTestResults@2 + displayName: 'Publish Release Test Results **/TEST-*.xml' + inputs: + testResultsFormat: 'JUnit' + testResultsFiles: '**/TestResults/basic_tests.xml' + mergeTestResults: true + buildPlatform: 'x64' + buildConfiguration: 'Release' + continueOnError: true + +- task: NuGetCommand@2 + displayName: 'NuGet pack' + inputs: + command: 'pack' + packagesToPack: 'nuget/*.nuspec' + versioningScheme: 'off' + buildProperties: 'VERSION=$(build.buildNumber)' + condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) + +- task: NuGetCommand@2 + displayName: 'NuGet push' + inputs: + command: 'push' + packagesToPush: '$(Build.ArtifactStagingDirectory)/**/*.nupkg;!$(Build.ArtifactStagingDirectory)/**/*.symbols.nupkg;build/*.nupkg;!build/*symbols.nupkg' + nuGetFeedType: 'external' + publishFeedCredentials: 'sqs-nuget' + condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) diff --git a/nuget/Siddiq-Software-Avatar.png b/nuget/Siddiq-Software-Avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..eecdc5f0343fe6d8623f2053cdbb1a175c21329a GIT binary patch literal 35348 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 literal 0 HcmV?d00001 diff --git a/nuget/SiddiqSoft.PROJECTNAME.nuspec b/nuget/SiddiqSoft.PROJECTNAME.nuspec new file mode 100644 index 0000000..be89e79 --- /dev/null +++ b/nuget/SiddiqSoft.PROJECTNAME.nuspec @@ -0,0 +1,43 @@ + + + + + + + SiddiqSoft.RWLContainer + $VERSION$ + SiddiqSoft + stdcpp reader-writer lock container class + unique_lock shared_lock reader-writer container lock native nativepackage cpp + https://github.com/SiddiqSoft/RWLContainer + true + BSD-3-Clause + docs\Siddiq-Software-Avatar.png + docs\README.md + + Copyright (c) 2021 Siddiq Software LLC + + + + + + + + + + + + + + + + diff --git a/nuget/SiddiqSoft.PROJECTNAME.targets b/nuget/SiddiqSoft.PROJECTNAME.targets new file mode 100644 index 0000000..ae59fb3 --- /dev/null +++ b/nuget/SiddiqSoft.PROJECTNAME.targets @@ -0,0 +1,8 @@ + + + + + $(MSBuildThisFileDirectory)include;%(AdditionalIncludeDirectories) + + + \ No newline at end of file diff --git a/src/projectname.hpp b/src/projectname.hpp new file mode 100644 index 0000000..6911e83 --- /dev/null +++ b/src/projectname.hpp @@ -0,0 +1,44 @@ +/* + PROJECTNAME : PROJECTDESCRIPTION + + BSD 3-Clause License + + Copyright (c) 2021, Siddiq Software LLC + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + 3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#pragma once +#ifndef PROJECTNAME_HPP +#define PROJECTNAME_HPP + + +namespace siddiqsoft +{ +} // namespace siddiqsoft + +#endif // !PROJECTNAME_HPP diff --git a/tests/basic_tests.vcxproj b/tests/basic_tests.vcxproj new file mode 100644 index 0000000..c19538d --- /dev/null +++ b/tests/basic_tests.vcxproj @@ -0,0 +1,114 @@ + + + + + Debug + x64 + + + Release + x64 + + + + {025c9280-6302-401e-949f-f82df4d47204} + Win32Proj + 10.0 + Application + v142 + Unicode + + + + + true + true + + + + true + + + + + + + + $(SolutionDir)output\$(Configuration)\ + true + false + + + $(SolutionDir)output\$(Configuration)\ + true + false + + + + + + + + + + + + + + + + NotUsing + + + Disabled + _WIN64;X64;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebug + Level3 + + stdcpplatest + false + $(SolutionDir)docs + stdc17 + + + true + Console + + + + + + + + NotUsing + + + _WIN64;X64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + MultiThreaded + Level3 + ProgramDatabase + + stdcpplatest + false + $(SolutionDir)docs + stdc17 + + + true + Console + true + true + + + + + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + + \ No newline at end of file diff --git a/tests/packages.config b/tests/packages.config new file mode 100644 index 0000000..0204b20 --- /dev/null +++ b/tests/packages.config @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/tests/test.cpp b/tests/test.cpp new file mode 100644 index 0000000..0621eee --- /dev/null +++ b/tests/test.cpp @@ -0,0 +1,46 @@ +/* + PROJECTNAME + PROJECTDESCRIPTION + + BSD 3-Clause License + + Copyright (c) 2021, Siddiq Software LLC + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + 3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "gtest/gtest.h" + +#include "nlohmann/json.hpp" +#include "../src/projectname.hpp" + + +TEST(projectname, test1) +{ + EXPECT_TRUE(false); +} +