More ... |
*update every hour
Embeddable Package Manager (+core in .bat); ๐ Lightweight tool to Create or Distribute using basic shell scripts (no powershell no dotnet-cli)
License: MIT License
For something like this - build.bat:
set msbuild=tools/msbuild
call gnt /p:ngconfig="packages.config" /nologo /v:m /m:4 || goto err
call %msbuild% -notamd64 "Conari.sln" /v:normal /l:"packages\vsSBE.CI.MSBuild\bin\CI.MSBuild.dll" /m:4 /t:Rebuild /p:Configuration=Release || goto err
goto exit
:err
echo. Build failed. 1>&2
:exit
>build
GetNuTool v1.6 - github.com/3F
=========
Getting `vsSBE.CI.MSBuild/1.6.12010` ... Extracting into `D:\prg\projects\Conari\Conari\packages\vsSBE.CI.MSBuild`
:: ! incorrect calling of original msbuild.exe:
>>> Microsoft (R) Build Engine version 14.0.25420.1
>>> Copyright (C) Microsoft Corporation. All rights reserved.
>>>
>>> MSBUILD : error MSB1001: Unknown switch.
>>> Switch: -notamd64
>>>
>>> For switch syntax, type "MSBuild /help"
>>> Build failed.
the reason:
set msbuild="%msbuild%"
embedded/exec.tpl and msbuild-helper
TODO
here, I added simple bat that will search installed MSBuild and will start build operations. So first, add same caller for this repo.
But also, I want some non-binary-wrapper of all this, i.e. gnt.core + msbuild to work directly like with one executable gnt tool.
powershell would be good, but... try new puzzle with native batch if it's possible at all -_-
Try to prepare compressed executable version through DeflateStream
/GZipStream
.
So... it continues 3F/DllExport#88 (comment)
The following possible chars in paths ' &!~`@#$^(+)_=%-;[.]{,}
may cause some problems for use in third party components, however this is still possible to escape all of this. See this changes: 3F/DllExport@d4b46cd
But looks like not for ;
Initially GetNuTool (2015) uses same compilation of list of packages for different types:
set ngpackages=...
or /p:ngpackages="..."
...Both of this encodes same syntax like:
id[/version][:output]|id2[/version][:output]|...
id[/version][:output];id2[/version][:output];...
(;
introduced in 1.6 because |
requires escaping in some places for batch scripts)But while |
requires escaping in command-line usage, the truth is that this never be allowed in path in windows.
Okay, what we have today:
Where output may contain absolute path like id/1.6.0:D:\dir\name\;...
(it's also ok for latest versions).
Thus, for current stage we need to support only ;
without changing syntax as possible for both cases above.
๐ก Escaping ;
-> ;;
.
id/1.6.0:out;;put;id2;id3:%dir:;=;;%
๐ก Leave only |
.
^
too, e.g.:id/1.6.0:output^|id2^|id3:withcaret^^|
id/1.6.0:output^^|id2^^|id3:withcaret^^^^|
๐ก Empty delimiter ;
. This is vice versa logic to first variant. When is empty data ;;
like nothing to be parsed:
id/1.6.0:out;put;;id2;id3:%dir%;;
;
after id2 because it should be only when ':' is presented.๐ก Ignore ;
only when |
is found from :
:
id/1.6.0:output;id2;id3:%dir%
id/1.6.0:out;put|id2;id3:%dir%|
id/1.6.0:out;put^|id2;id3:%dir%^|
....๐ก All above.
Need to think.
Anyone who also uses this directly as a tool (i.e. not as dependencies from 3rd projects), please leave here your comment.
Possible bug with packages was described here:
3F/DllExport#38 (comment)
GetNuTool processes packages through System.IO.Packaging.ZipPackage and for this data we can't use this at all:
source.CopyTo(Stream destination);
source.Read(byte[] buffer, int offset, int count);
(new StreamReader(source)).Read(char[] buffer, int index, int count)
(new StreamReader(source)).ReadToEnd();
...
all above will throw exception because of corrupted data and/or incorrect internal processing.
btw:
// source.Length == 2
source.Seek(0, SeekOrigin.Begin);
source.ReadByte(); // 0x03
source.ReadByte(); // Exception
source.Seek(-1, SeekOrigin.End);
source.ReadByte(); // 0x00
source.ReadByte(); // -1 end of the stream
source.Seek(-2, SeekOrigin.End);
source.ReadByte(); // 0x03
source.ReadByte(); // Exception
Through ZipPackage implementation we also have no any information about position from file outside processed part. Or does it available ? o_O
Because for this case we can process this manually:
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00006850 55 9A DB D3 4F B0 FE 0F 50 4B 03 04 14 00 02 00 UัะซะฃOยฐั.PK......
00006860 [00 00]21 B2 0C 4B [00 00 00 00][02 00 00 00] 00 00 ..!ะ.K..........
00006870 00 00 0E 00 1C 00 74 6F 6F 6C 73 2F 69 6E 69 74 ......tools/init
00006880 2E 70 73 31 20 A2 18 00 28 A0 14 00 00 00 00 00 .ps1 ั..( ......
00006890 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
other header:
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00003F80 79 F0 E4 37 50 4B 03 04 14 00 02 00 [00 00] 21 B2 yัะด7PK........!ะ
00003F90 0C 4B [00 00 00 00][02 00 00 00] 00 00 00 00 0D 00 .K..............
00003FA0 1C 00 6C 69 62 2F 6E 65 74 32 30 2F 5F 2E 5F 20 ..lib/net20/_._
00003FB0 A2 18 00 28 A0 14 00 00 00 00 00 00 00 00 00 00 ั..( ...........
that is, from headers above we have information about uncompressed type data, with compressed size == 2, and actual 0 bytes.
specific exception because of incorrect crc:
MS.Internal.IO.Zip.ProgressiveCrcCalculatingStream.Read(Byte[] buffer, Int32 offset, Int32 count)
...
if (this._validateCrcWithExpectedCrc && this.CanValidateCrcWithoutRead() && this.CrcCalculator.Crc != this._expectedCrc)
{
throw new FileFormatException(SR.Get("CorruptedData"));
}
well, seems try/catch is the most easy way to process this case, because it's bug of the System.IO.Packaging.ZipPackage and from nuget.org. Details here: 3F/DllExport#38
Any suggestions are welcome.
Basically, DllExport Manager is already contains the hack of this, like:
:: TODO: hack for GNT v1.6.1
if defined pkgLink (
set pkgSrv=!pkgLink!
set "_remoteUrl=:../!wPkgPath!"
)
...
But we need to support this by our core for other related purpose.
We need some proxy settings.
~
keys for:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.