diff --git a/scripts/choco/package.ps1 b/scripts/choco/package.ps1
new file mode 100644
index 0000000000..9a4eb478f7
--- /dev/null
+++ b/scripts/choco/package.ps1
@@ -0,0 +1,35 @@
+# Build
+Set-Location ..\..\src\parq
+dotnet restore -r win10-x64
+dotnet publish -c release -r win10-x64 -o ..\..\scripts\choco\build -f netcoreapp1.1
+
+# Get Version
+Set-Location ..\..\scripts\choco\build
+$version = .\parq.exe ShowVersion=true
+
+Write-Host The Version of Parq built is $version
+
+# Zip
+Add-Type -assembly "System.IO.Compression.FileSystem"
+[System.IO.Compression.ZipFile]::CreateFromDirectory((Get-Location).Path, [System.IO.Path]::Combine((Get-Location).Path, "..\parq\tools\parqInstall.zip"))
+
+# Package
+Set-Location ..\parq
+# Update Version Number
+$xml = [xml](Get-Content .\parq.nuspec)
+$nsmgr = new-object System.Xml.XmlNamespaceManager($xml.NameTable);
+$nsmgr.AddNamespace("nuspec", "http://schemas.microsoft.com/packaging/2015/06/nuspec.xsd")
+
+$xml.SelectNodes("//nuspec:version", $nsmgr) | % {
+ $_."#text" = $version.ToString()
+ }
+
+$xml.Save((Get-Location).Path + "\parq.nuspec")
+Write-Host Updated Nuspec with version number and will now begin to package.
+choco pack
+choco push .\parq.$version.nupkg -k $env:elastacloudKey
+
+# Clean
+Set-Location ..
+Remove-Item build -Recurse
+Remove-Item .\parq\tools\parqInstall.zip
\ No newline at end of file
diff --git a/scripts/choco/parq/parq.nuspec b/scripts/choco/parq/parq.nuspec
new file mode 100644
index 0000000000..0ee205204c
--- /dev/null
+++ b/scripts/choco/parq/parq.nuspec
@@ -0,0 +1,24 @@
+
+
+
+
+
+ parq
+ parq (Install)
+ 1.0.1.0
+ Andy Cross, Richard Conway, Ivan Gavryliuk
+ Andy Cross
+ Parq is a .NET runtime (written for Windows but will run elsewhere) that brings tooling for inspecting Parquet files to developers.
+ (Find out more)[https://github.com/elastacloud/parquet-dotnet/blob/master/doc/parq.md]
+
+ https://github.com/elastacloud/parquet-dotnet
+ https://chocolatey.org/api/v2/
+ parq parquet fileviewer
+ Elastacloud Limited 2017
+ https://github.com/elastacloud/parquet-dotnet/blob/master/LICENSE
+ false
+
+
+
+
+
\ No newline at end of file
diff --git a/scripts/choco/parq/tools/ReadMe.md b/scripts/choco/parq/tools/ReadMe.md
new file mode 100644
index 0000000000..1c90512812
--- /dev/null
+++ b/scripts/choco/parq/tools/ReadMe.md
@@ -0,0 +1,91 @@
+## Summary
+How do I create packages? See https://github.com/chocolatey/choco/wiki/CreatePackages
+
+If you are submitting packages to the community feed (https://chocolatey.org)
+always try to ensure you have read, understood and adhere to the create
+packages wiki link above.
+
+## Automatic Packages?
+Consider making this package an automatic package, for the best
+maintainability over time. Read up at https://github.com/chocolatey/choco/wiki/AutomaticPackages
+
+## Shim Generation
+Any executables you include in the package or download (but don't call
+install against using the built-in functions) will be automatically shimmed.
+
+This means those executables will automatically be included on the path.
+Shim generation runs whether the package is self-contained or uses automation
+scripts.
+
+By default, these are considered console applications.
+
+If the application is a GUI, you should create an empty file next to the exe
+named 'name.exe.gui' e.g. 'bob.exe' would need a file named 'bob.exe.gui'.
+See https://github.com/chocolatey/choco/wiki/CreatePackages#how-do-i-set-up-batch-redirects-for-applications-that-have-a-gui
+
+If you want to ignore the executable, create an empty file next to the exe
+named 'name.exe.ignore' e.g. 'bob.exe' would need a file named
+'bob.exe.ignore'.
+See https://github.com/chocolatey/choco/wiki/CreatePackages#how-do-i-exclude-executables-from-getting-batch-redirects
+
+## Self-Contained?
+If you have a self-contained package, you can remove the automation scripts
+entirely and just include the executables, they will automatically get shimmed,
+which puts them on the path. Ensure you have the legal right to distribute
+the application though. See https://github.com/chocolatey/choco/wiki/Legal.
+
+You should read up on the Shim Generation section to familiarize yourself
+on what to do with GUI applications and/or ignoring shims.
+
+## Automation Scripts
+You have a powerful use of Chocolatey, as you are using PowerShell. So you
+can do just about anything you need. Choco has some very handy built-in
+functions that you can use, these are sometimes called the helpers.
+
+### Built-In Functions
+https://github.com/chocolatey/choco/wiki/HelpersReference
+
+A note about a couple:
+* Get-BinRoot - this is a horribly named function that doesn't do what new folks think it does. It gets you the 'tools' root, which by default is set to 'c:\tools', not the chocolateyInstall bin folder.
+* Install-BinFile - used for non-exe files - executables are automatically shimmed...
+* Uninstall-BinFile - used for non-exe files - executables are automatically shimmed
+
+### Getting package specific information
+Use the package parameters pattern - see https://github.com/chocolatey/choco/wiki/How-To-Parse-PackageParameters-Argument
+
+### Need to mount an ISO?
+https://github.com/chocolatey/choco/wiki/How-To-Mount-An-Iso-In-Chocolatey-Package
+
+
+### Environment Variables
+Chocolatey makes a number of environment variables available (You can access any of these with $env:TheVariableNameBelow):
+
+ * TEMP = Overridden to the CacheLocation, but may be the same as the original TEMP folder
+ * ChocolateyInstall = Top level folder where Chocolatey is installed
+ * chocolateyPackageName = The name of the package, equivalent to the id in the nuspec (0.9.9+)
+ * chocolateyPackageVersion = The version of the package, equivalent to the version in the nuspec (0.9.9+)
+ * chocolateyPackageFolder = The top level location of the package folder
+
+#### Advanced Environment Variables
+The following are more advanced settings:
+
+ * chocolateyPackageParameters = (0.9.8.22+)
+ * CHOCOLATEY_VERSION = The version of Choco you normally see. Use if you are 'lighting' things up based on choco version. (0.9.9+)
+ - Otherwise take a dependency on the specific version you need.
+ * chocolateyForceX86 = If available and set to 'true', then user has requested 32bit version. (0.9.9+)
+ - Automatically handled in built in Choco functions.
+ * OS_PLATFORM = Like Windows, OSX, Linux. (0.9.9+)
+ * OS_VERSION = The version of OS, like 6.1 something something for Windows. (0.9.9+)
+ * OS_NAME = The reported name of the OS. (0.9.9+)
+ * IS_PROCESSELEVATED = Is the process elevated? (0.9.9+)
+
+#### Experimental Environment Variables
+The following are experimental or use not recommended:
+
+ * OS_IS64BIT = This may not return correctly - it may depend on the process the app is running under (0.9.9+)
+ * CHOCOLATEY_VERSION_PRODUCT = the version of Choco that may match CHOCOLATEY_VERSION but may be different (0.9.9+)
+ - it's based on git describe
+ * IS_ADMIN = Is the user an administrator? But doesn't tell you if the process is elevated. (0.9.9+)
+ * chocolateyInstallOverride = Not for use in package automation scripts. (0.9.9+)
+ * chocolateyInstallArguments = the installer arguments meant for the native installer. You should use chocolateyPackageParameters intead. (0.9.9+)
+
diff --git a/scripts/choco/parq/tools/chocolateyinstall.ps1 b/scripts/choco/parq/tools/chocolateyinstall.ps1
new file mode 100644
index 0000000000..89e4cbb3b5
--- /dev/null
+++ b/scripts/choco/parq/tools/chocolateyinstall.ps1
@@ -0,0 +1,6 @@
+Set-Location C:\ProgramData\Chocolatey\lib\parq\tools
+Add-Type -assembly "System.IO.Compression.FileSystem"
+
+[System.IO.Compression.ZipFile]::ExtractToDirectory([System.IO.Path]::Combine((Get-Location).Path, "parqInstall.zip"), $pwd)
+
+Set-Content -Path %ChocolateyInstall%\bin\parq.cmd -Value "%ChocolateyInstall%\lib\parq\tools\parq.exe" -Encoding Ascii
\ No newline at end of file
diff --git a/scripts/choco/parq/tools/chocolateyuninstall.ps1 b/scripts/choco/parq/tools/chocolateyuninstall.ps1
new file mode 100644
index 0000000000..c2c76f3b22
--- /dev/null
+++ b/scripts/choco/parq/tools/chocolateyuninstall.ps1
@@ -0,0 +1,82 @@
+# IMPORTANT: Before releasing this package, copy/paste the next 2 lines into PowerShell to remove all comments from this file:
+# $f='c:\path\to\thisFile.ps1'
+# gc $f | ? {$_ -notmatch "^\s*#"} | % {$_ -replace '(^.*?)\s*?[^``]#.*','$1'} | Out-File $f+".~" -en utf8; mv -fo $f+".~" $f
+
+# If this is an MSI, cleaning up comments is all you need.
+# If this is an exe, change installerType and silentArgs
+# Auto Uninstaller should be able to detect and handle registry uninstalls (if it is turned on, it is in preview for 0.9.9).
+
+$ErrorActionPreference = 'Stop'; # stop on all errors
+
+$packageName = 'parq'
+$softwareName = 'parq*' #part or all of the Display Name as you see it in Programs and Features. It should be enough to be unique
+$installerType = 'MSI'
+#$installerType = 'EXE'
+
+$silentArgs = '/qn /norestart'
+# https://msdn.microsoft.com/en-us/library/aa376931(v=vs.85).aspx
+$validExitCodes = @(0, 3010, 1605, 1614, 1641)
+if ($installerType -ne 'MSI') {
+ # The below is somewhat naive and built for EXE installers
+ # Uncomment matching EXE type (sorted by most to least common)
+ #$silentArgs = '/S' # NSIS
+ #$silentArgs = '/VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP-' # Inno Setup
+ #$silentArgs = '/s' # InstallShield
+ #$silentArgs = '/s /v"/qn"' # InstallShield with MSI
+ #$silentArgs = '/s' # Wise InstallMaster
+ #$silentArgs = '-s' # Squirrel
+ #$silentArgs = '-q' # Install4j
+ #$silentArgs = '-s -u' # Ghost
+ # Note that some installers, in addition to the silentArgs above, may also need assistance of AHK to achieve silence.
+ #$silentArgs = '' # none; make silent with input macro script like AutoHotKey (AHK)
+ # https://chocolatey.org/packages/autohotkey.portable
+ $validExitCodes = @(0)
+}
+
+$uninstalled = $false
+$local_key = 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*'
+$machine_key = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*'
+$machine_key6432 = 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*'
+
+$key = Get-ItemProperty -Path @($machine_key6432,$machine_key, $local_key) `
+ -ErrorAction SilentlyContinue `
+ | ? { $_.DisplayName -like "$softwareName" }
+
+if ($key.Count -eq 1) {
+ $key | % {
+ $file = "$($_.UninstallString)"
+
+ if ($installerType -eq 'MSI') {
+ # The Product Code GUID is all that should be passed for MSI, and very
+ # FIRST, because it comes directly after /x, which is already set in the
+ # Uninstall-ChocolateyPackage msiargs (facepalm).
+ $silentArgs = "$($_.PSChildName) $silentArgs"
+
+ # Don't pass anything for file, it is ignored for msi (facepalm number 2)
+ # Alternatively if you need to pass a path to an msi, determine that and
+ # use it instead of the above in silentArgs, still very first
+ $file = ''
+ }
+
+ Uninstall-ChocolateyPackage -PackageName $packageName `
+ -FileType $installerType `
+ -SilentArgs "$silentArgs" `
+ -ValidExitCodes $validExitCodes `
+ -File "$file"
+ }
+} elseif ($key.Count -eq 0) {
+ Write-Warning "$packageName has already been uninstalled by other means."
+} elseif ($key.Count -gt 1) {
+ Write-Warning "$key.Count matches found!"
+ Write-Warning "To prevent accidental data loss, no programs will be uninstalled."
+ Write-Warning "Please alert package maintainer the following keys were matched:"
+ $key | % {Write-Warning "- $_.DisplayName"}
+}
+
+
+## OTHER HELPERS
+## https://github.com/chocolatey/choco/wiki/HelpersReference
+#Uninstall-ChocolateyZipPackage
+#Uninstall-BinFile # Only needed if you added one in the installer script, choco will remove the ones it added automatically.
+#remove any shortcuts you added
+
diff --git a/src/parq/AppSettings.cs b/src/parq/AppSettings.cs
index 420f555ddb..f1ac15ac8a 100644
--- a/src/parq/AppSettings.cs
+++ b/src/parq/AppSettings.cs
@@ -19,6 +19,8 @@ class AppSettings : SettingsContainer
public readonly Option TruncationIdentifier = new Option("*");
+ public readonly Option ShowVersion = new Option(false);
+
//singleton
private static AppSettings instance;
public static AppSettings Instance => instance ?? (instance = new AppSettings());
diff --git a/src/parq/Program.cs b/src/parq/Program.cs
index 84467ba689..ea1d5c7ee2 100644
--- a/src/parq/Program.cs
+++ b/src/parq/Program.cs
@@ -11,6 +11,12 @@ class Program
{
static void Main(string[] args)
{
+ if (AppSettings.Instance.ShowVersion)
+ {
+ Console.WriteLine(GetVersionNumber(typeof(Program).AssemblyQualifiedName));
+ return;
+ }
+
if (string.IsNullOrEmpty(AppSettings.Instance.InputFilePath))
{
WriteHelp();
@@ -51,6 +57,12 @@ static void Main(string[] args)
}
}
+ private static string GetVersionNumber(string assemblyQualifiedName)
+ {
+ var fromVersion = (assemblyQualifiedName.Substring(assemblyQualifiedName.IndexOf("Version=") + 8));
+ return fromVersion.Substring(0, fromVersion.IndexOf(','));
+ }
+
private static void Verbose(string format, params string[] path)
{
Console.WriteLine(format, path);
diff --git a/src/parq/parq.csproj b/src/parq/parq.csproj
index eecd0e9495..863d8a8894 100644
--- a/src/parq/parq.csproj
+++ b/src/parq/parq.csproj
@@ -3,6 +3,9 @@
Exe
netcoreapp1.1
+ 1.0.1
+ 1.0.1.0
+ 1.0.1.0