From 7aa94ffa9006f5277e5843fd9c14f7e5b2c090d9 Mon Sep 17 00:00:00 2001 From: kislovdm Date: Tue, 9 Jan 2024 21:19:16 +0300 Subject: [PATCH] init --- .gitignore | 193 +++++++++++++++++++ src/CodeCoverageExtractor.csproj | 19 ++ src/Program.cs | 28 +++ src/nupkg/codecoverageextractor.1.0.0.nupkg | Bin 0 -> 12047 bytes src/nupkg/codecoverageextractor2.1.0.0.nupkg | Bin 0 -> 12054 bytes 5 files changed, 240 insertions(+) create mode 100644 .gitignore create mode 100644 src/CodeCoverageExtractor.csproj create mode 100644 src/Program.cs create mode 100644 src/nupkg/codecoverageextractor.1.0.0.nupkg create mode 100644 src/nupkg/codecoverageextractor2.1.0.0.nupkg diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3c9d20b --- /dev/null +++ b/.gitignore @@ -0,0 +1,193 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.sln.docstates + +# Xamarin Studio / monodevelop user-specific +*.userprefs +*.dll.mdb +*.exe.mdb + +# Build results + +[Dd]ebug/ +[Rr]elease/ +x64/ +build/ +[Bb]in/ +[Oo]bj/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +*_i.c +*_p.c +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.log +*.scc + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opensdf +*.sdf +*.cachefile + +# Visual Studio profiler +*.psess +*.vsp +*.vspx + +# Other Visual Studio data +.vs/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +*.ncrunch* +.*crunch*.local.xml + +# 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 +*.Publish.xml + +# Enable nuget.exe in the .nuget folder (though normally executables are not tracked) +!.nuget/NuGet.exe + +# Windows Azure Build Output +csx +*.build.csdef + +# Windows Store app package directory +AppPackages/ + +# VSCode +.vscode/ + +# Others +sql/ +*.Cache +ClientBin/ +[Ss]tyle[Cc]op.* +~$* +*~ +*.dbmdl +*.[Pp]ublish.xml +*.pfx +*.publishsettings + +# 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 + +# SQL Server files +App_Data/*.mdf +App_Data/*.ldf + + +#LightSwitch generated files +GeneratedArtifacts/ +_Pvt_Extensions/ +ModelManifest.xml + +# ========================= +# Windows detritus +# ========================= + +# Windows image file caches +Thumbs.db +ehthumbs.db + +# Folder config file +Desktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Mac desktop service store files +.DS_Store + +# =================================================== +# Exclude F# project specific directories and files +# =================================================== + +# NuGet Packages Directory +packages/ + +# Test results produced by build +TestResults.xml + +# Nuget outputs +nuget/*.nupkg +release.cmd +release.sh +localpackages/ +paket-files +*.orig +docsrc/content/license.md +docsrc/content/release-notes.md +.fake +.idea +docsrc/tools/FSharp.Formatting.svclog +artifacts +/artifacts +/artifacts + +.ionide +AssemblyInfo.cs +launchSettings.json diff --git a/src/CodeCoverageExtractor.csproj b/src/CodeCoverageExtractor.csproj new file mode 100644 index 0000000..68a9bb0 --- /dev/null +++ b/src/CodeCoverageExtractor.csproj @@ -0,0 +1,19 @@ + + + + Exe + net8.0 + enable + enable + + true + codecoverageextractor2 + ./nupkg + true + codecoverageextractor2 + Monster1025 + admin@yandex5.ru + Code Coverage Extractor + + + diff --git a/src/Program.cs b/src/Program.cs new file mode 100644 index 0000000..63e182a --- /dev/null +++ b/src/Program.cs @@ -0,0 +1,28 @@ +using System.Xml; + +try +{ + if (!args.Any()) + { + Console.WriteLine("No file specified"); + return; + } + + XmlDocument doc = new XmlDocument(); + doc.Load(args[0]); + + var coverage = doc.SelectSingleNode("/coverage/@line-rate")!.Value; + if (decimal.TryParse(coverage, out var dCoverage)) + { + var format = args.Length > 1 ? args[1] : "total_coverage={0}"; + Console.WriteLine(string.Format(format, dCoverage * 100)); + } + else + { + Console.WriteLine("Value could not be extracted"); + } +} +catch (Exception ex) +{ + Console.WriteLine($"An error occurred: {ex.Message}"); +} \ No newline at end of file diff --git a/src/nupkg/codecoverageextractor.1.0.0.nupkg b/src/nupkg/codecoverageextractor.1.0.0.nupkg new file mode 100644 index 0000000000000000000000000000000000000000..5c5a2767a201b32aa0a0e8735f25c2fbf852749f GIT binary patch literal 12047 zcmcI~b!_HL-ej1WnR&v@nK1JNCd|yq6PhqH!-SccnVFe6nJ_aamp$Fx`|jR;r~Upo zTW!m>x>{W-wfg5O1!+()G$0@#D4?|xYITucGrHKoKtP}%KtQlxZ*?7vtsEKX|8Y%> z-LL>*LK3@#^$d>r#j#?w2na8$Zxpf}z{IMH2b4S$hZ<~k`f4ah<>&;BxEy$ld$_Sf zI`krmoAPL2q@&c2-sj){x&j1VgS(lK@f)NDj zT?~;lc=}V!9C0L8m6P`@a-aE+Czqg59I1vmC_q)g{JV_anncT*xr)3fcwls)+Q+Qo zO{un;3aRFboEk&fWt5|{kFi}j1WCgePkPjF;~iW5bx z+b20%N zizxLHD3?1sv8GxKobX*F@CKu^o*MY1wlwFgCu29Flv8{{8OyMjM3PR@D>opLK$)5* zOI4E1wU7w?nTSZXmco{+kUU(e8|3y!=Fzq=-epI4Kn~5RT(^)($j6rF1G=DzeJ*?hO}g^mHIz?>B9B9*}?0+8#@-&UBbWo%TiN z>Q|%uYEHJcU&6F8cH*RGWYD*9V-T@*`g;2D^;+53$;sTt)RErR+Davg52p7!QsA#1 z9=N$QGt-(hG|N>Yk_TdJVLcZJcGOVQx+@8tp6#yvJx`XcHtk9ZLjPdYflk!MW~n5o z{svb3CJabE`o-U-w<#+jN%@m5zmO4wr-0?iee6+$24p`aw&0A>hj;IyEmCMzq**P> zEfPZ%st0dXxmCk$gw|oHHzj6WqpNX$Q)^g>q@WRd(##PSNq#;UyZkl3wXgY!R?_p9 zLw`*S3kZnj-_1|>OGm>0OGl#rM@L3hR_E%rR(Rs*-ff4UlJxvVAMyF-9ET!+-9H`= z&+=!hp$s4KoDKLxhnxx#=^Y&{V~xMs4mbFQApIJl6p)K8pg_?2gS|wc8WKnnF{A|U zgntzGW9CaF&?J7(hDyM=N6ik}8ozj+d?*mv6(&#Mx=eGk-E4QeJ(x)2$aH&igF#Y6 z@8od_(IKyjnDu6m--G3U(}>Y2@izS|o4wA$9LgKI%gJSk6#eQP@ku;BLYDE5vMvz^Ya!TUQ%f1MuCudfv0 z>C2e_YWfGF6cH|agEk9z9>~9+D%_cmw<(k!^^i+EoiaqHQoL+>uuh*e1I$`M&k?3b zSMXb;{K`~KRg?A(3-rgD1D|$}hETtG8!+w>k{&4lmXk_PtD72l3i|0MunLnZreW3e z$9JqUR|Ha6Kc#H(oUv#-?iXNN$-X-{Pr_vugL#&DJWg4G0`HN-BitB{hzIc-a1CTb z!knp|TIAKBj_7InQP7KmOQ6O%L|~p{L?5OXq$|Z2j%}<3|4$|yV43N?SuFE}J0 z4N)uFX(dHQ{0!=0Rcn%=bO=isUt~*doJS+aDx%z8gh&(REt)cdS2X?I#@mM{KEX&6 zN zPB*g~)mJN-SDoFq{|9^_NGQHJY}t6s%i-H6*@3!Iqd&UMc{=l4QijU&jmlo7mb$XW z)F0~}wUbQK4#r+;2&@*EY-QXQebrDm`0d3)8+nD%d%9F+xb2mxuSC$ss>%G_xlAYl$&_)V-&CC71znwcZGm6kylb#cJbb%6YcGId6!98|M5(rLLK)5Q$eCsj1+Cx%ZI;@tgxk6ys%qcwvnD~e-MaM9qyX9A4iYy!V6gS z4C<86zQ@D_kC=awU>j4@8pZ*^Kbws-lkuTF8b}DDB<3+vGSso^tT3kbqnlhZ-HUyS8lBE#I8a915)oB*ymRO4K#Tq_3FVxE^GjOoZ#E0`B$u0IX%h0sd zsGsT2V~bmAHI>nI@l{(Y&{yO~hdZ$Td;;Ih-9hdj1%fI%}x?Kpb&h?T;Z|H#~3MyOW?%6JU*q=EhEHi=pAj-d9~wieHw*)`l7jMknTgEg1_m`d|a=fJrf zBqLe2AMhdVvSTZp`|?J$sp_jVRp+bIE&4}n%m>tggEVh_Yh|=e_jgVW=RY ziR?BYT4mIV8orUs4AlL=l#xG&STtC}f@6T~@bOTE%-`lFMng zCRzMR23*n>I`inI3X=(U20Xe7>Bw+fOb;Our@Ob;Si?zqd$!@UlDz%s$S8BwoJV^ZDh3- zw>=9SGm2Zk(UI6pp`A@|jXoApDX);Il$b455uq;A+SUQ28_)ashqk|MxCX<4Jm|}$ zLTvNk6oWn)Wak${^6_nN&r|6MT-n?We3#Ah2J(CtlGlj}?T9oK3+|dEn($Fcl%MWf z+e5%h(lmxVdN}PO;IBzyOHldzfZxl7`!?PW?k8hO=HaD(b5v8k+uUrb(#O0a(cGPW z6}rcRWPZ;I@(Lk6E(1Dj>=PFwuzj?VMnt{4D0gh_q}&pS J(cUi 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 F{|jKgRCWLW literal 0 HcmV?d00001