diff --git a/dev_mongo.ps1 b/dev_mongo.ps1 deleted file mode 100644 index 9ad021e39d..0000000000 --- a/dev_mongo.ps1 +++ /dev/null @@ -1,2 +0,0 @@ -.\venv\Scripts\Activate.ps1 -python pype.py mongodb diff --git a/dev_settings.ps1 b/dev_settings.ps1 deleted file mode 100644 index 3eab14dc37..0000000000 --- a/dev_settings.ps1 +++ /dev/null @@ -1,2 +0,0 @@ -.\venv\Scripts\Activate.ps1 -python pype.py settings --dev diff --git a/dev_tray.ps1 b/dev_tray.ps1 deleted file mode 100644 index 44f3f69754..0000000000 --- a/dev_tray.ps1 +++ /dev/null @@ -1,2 +0,0 @@ -.\venv\Scripts\Activate.ps1 -python pype.py tray --debug diff --git a/tools/build.ps1 b/tools/build.ps1 new file mode 100644 index 0000000000..146fe9a904 --- /dev/null +++ b/tools/build.ps1 @@ -0,0 +1,118 @@ +<# +.SYNOPSIS + Helper script to build Pype. + +.DESCRIPTION + This script will detect Python installation, create venv and install + all necessary packages from `requirements.txt` needed by Pype to be + included during application freeze on Windows. + +.EXAMPLE + +PS> .\build.ps1 + +#> + + +function Exit-WithCode($exitcode) { + # Only exit this host process if it's a child of another PowerShell parent process... + $parentPID = (Get-CimInstance -ClassName Win32_Process -Filter "ProcessId=$PID" | Select-Object -Property ParentProcessId).ParentProcessId + $parentProcName = (Get-CimInstance -ClassName Win32_Process -Filter "ProcessId=$parentPID" | Select-Object -Property Name).Name + if ('powershell.exe' -eq $parentProcName) { $host.SetShouldExit($exitcode) } + + exit $exitcode +} + +$art = @' + + + ____________ + /\ ___ \ + \ \ \/_\ \ + \ \ _____/ ______ ___ ___ ___ + \ \ \___/ /\ \ \ \\ \\ \ + \ \____\ \ \_____\ \__\\__\\__\ + \/____/ \/_____/ . PYPE Club . + +'@ + +Write-Host $art -ForegroundColor DarkGreen + +$current_dir = Get-Location +$script_dir = Split-Path -Path $MyInvocation.MyCommand.Definition -Parent +$pype_root = (Get-Item $script_dir).parent.FullName + +Set-Location -Path $pype_root + +$version_file = Get-Content -Path "$($pype_root)\pype\version.py" +$result = [regex]::Matches($version_file, '__version__ = "(?\d+\.\d+.\d+)"') +$pype_version = $result[0].Groups['version'].Value +if (-not $pype_version) { + Write-Host "!!! " -ForegroundColor yellow -NoNewline + Write-Host "Cannot determine Pype version." + Exit-WithCode 1 +} + +Write-Host "--- " -NoNewline -ForegroundColor yellow +Write-Host "Cleaning build directory ..." +Remove-Item -Recurse -Force "$($pype_root)\build\*" + +Write-Host ">>> " -NoNewline -ForegroundColor green +Write-Host "Building Pype [ " -NoNewline -ForegroundColor white +Write-host $pype_version -NoNewline -ForegroundColor green +Write-Host " ] ..." -ForegroundColor white + +Write-Host ">>> " -NoNewline -ForegroundColor green +Write-Host "Detecting host Python ... " -NoNewline +if (-not (Get-Command "python" -ErrorAction SilentlyContinue)) { + Write-Host "!!! Python not detected" -ForegroundColor red + Exit-WithCode 1 +} +$version_command = @' +import sys +print('{0}.{1}'.format(sys.version_info[0], sys.version_info[1])) +'@ + +$p = & python -c $version_command +$env:PYTHON_VERSION = $p +$m = $p -match '(\d+)\.(\d+)' +if(-not $m) { + Write-Host "!!! Cannot determine version" -ForegroundColor red + Exit-WithCode 1 +} +# We are supporting python 3.6 and up +if(($matches[1] -lt 3) -or ($matches[2] -lt 7)) { + Write-Host "FAILED Version [ $p ] is old and unsupported" -ForegroundColor red + Exit-WithCode 1 +} +Write-Host "OK [ $p ]" -ForegroundColor green +Write-Host ">>> " -NoNewline -ForegroundColor green +Write-Host "Creating virtual env ..." +& python -m venv "$($pype_root)\venv" +Write-Host ">>> " -NoNewline -ForegroundColor green +Write-Host "Entering venv ..." +try { + . ("$($pype_root)\venv\Scripts\Activate.ps1") +} +catch { + Write-Host "!!! Failed to activate" -ForegroundColor red + Write-Host $_.Exception.Message + Exit-WithCode 1 +} +Write-Host ">>> " -NoNewline -ForegroundColor green +Write-Host "Installing packages to new venv ..." +& python -m pip install -U pip +& pip install -r ("$($pype_root)\requirements.txt") + +Write-Host ">>> " -NoNewline -ForegroundColor green +Write-Host "Cleaning cache files ... " -NoNewline +Get-ChildItem $pype_root -Filter "*.pyc" -Force -Recurse | Remove-Item -Force +Get-ChildItem $pype_root -Filter "__pycache__" -Force -Recurse | Remove-Item -Force -Recurse +Write-Host "OK" -ForegroundColor green + +Write-Host ">>> " -NoNewline -ForegroundColor green +Write-Host "Building Pype ..." +Set-Location -Path $pype_root +& python setup.py build +deactivate +Set-Location -Path $current_dir diff --git a/build.sh b/tools/build.sh similarity index 100% rename from build.sh rename to tools/build.sh diff --git a/tools/create_env.ps1 b/tools/create_env.ps1 new file mode 100644 index 0000000000..c5afbe12b2 --- /dev/null +++ b/tools/create_env.ps1 @@ -0,0 +1,148 @@ +<# +.SYNOPSIS + Helper script create virtual env. + +.DESCRIPTION + This script will detect Python installation, create venv and install + all necessary packages from `requirements.txt` needed by Pype to be + included during application freeze on Windows. + +.EXAMPLE + +PS> .\build.ps1 + +#> + +function Exit-WithCode($exitcode) { + # Only exit this host process if it's a child of another PowerShell parent process... + $parentPID = (Get-CimInstance -ClassName Win32_Process -Filter "ProcessId=$PID" | Select-Object -Property ParentProcessId).ParentProcessId + $parentProcName = (Get-CimInstance -ClassName Win32_Process -Filter "ProcessId=$parentPID" | Select-Object -Property Name).Name + if ('powershell.exe' -eq $parentProcName) { $host.SetShouldExit($exitcode) } + + exit $exitcode +} +$current_dir = Split-Path -Path $MyInvocation.MyCommand.Definition -Parent +$pype_root = (Get-Item $current_dir).parent.FullName + +if ($PSVersionTable.PSVersion.Major -lt 7) { + Write-Host "!!! " -NoNewline -ForegroundColor Red + Write-Host "You are using old version of PowerShell. $($PSVersionTable.PSVersion.Major).$($PSVersionTable.PSVersion.Minor)" + Write-Host "Please update to at least 7.0 - https://github.com/PowerShell/PowerShell/releases" + Exit-WithCode 1 +} + +$arguments=$ARGS +if($arguments -eq "--skip-venv") { + $skip_venv=$true +} + +$art = @' + + + ____________ + /\ ___ \ + \ \ \/_\ \ + \ \ _____/ ______ ___ ___ ___ + \ \ \___/ /\ \ \ \\ \\ \ + \ \____\ \ \_____\ \__\\__\\__\ + \/____/ \/_____/ . PYPE Club . + +'@ + +Write-Host $art -ForegroundColor DarkGreen + +$version_file = Get-Content -Path "$($pype_root)\pype\version.py" +$result = [regex]::Matches($version_file, '__version__ = "(?\d+\.\d+.\d+)"') +$pype_version = $result[0].Groups['version'].Value +if (-not $pype_version) { + Write-Host "!!! " -ForegroundColor yellow -NoNewline + Write-Host "Cannot determine Pype version." + Exit-WithCode 1 +} + +Write-Host ">>> " -NoNewline -ForegroundColor green +Write-Host "Detecting host Python ... " -NoNewline +if (-not (Get-Command "python" -ErrorAction SilentlyContinue)) { + Write-Host "!!! Python not detected" -ForegroundColor red + Exit-WithCode 1 +} +$version_command = @' +import sys +print('{0}.{1}'.format(sys.version_info[0], sys.version_info[1])) +'@ + +$p = & python -c $version_command +$env:PYTHON_VERSION = $p +$m = $p -match '(\d+)\.(\d+)' +if(-not $m) { + Write-Host "!!! Cannot determine version" -ForegroundColor red + Exit-WithCode 1 +} +# We are supporting python 3.6 and up +if(($matches[1] -lt 3) -or ($matches[2] -lt 7)) { + Write-Host "FAILED Version [ $p ] is old and unsupported" -ForegroundColor red + Exit-WithCode 1 +} +Write-Host "OK [ $p ]" -ForegroundColor green + + +if ($skip_venv -ne $true) { + Write-Host ">>> " -NoNewline -ForegroundColor green + Write-Host "Creating virtual env ..." + & python -m venv venv + Write-Host ">>> " -NoNewline -ForegroundColor green + Write-Host "Entering venv ..." + try { + . (".\venv\Scripts\Activate.ps1") + } + catch { + Write-Host "!!! Failed to activate" -ForegroundColor red + Write-Host $_.Exception.Message + Exit-WithCode 1 + } + Write-Host ">>> " -NoNewline -ForegroundColor green + Write-Host "Updating pip ..." + & python -m pip install --upgrade pip + + Write-Host ">>> " -NoNewline -ForegroundColor green + Write-Host "Installing packages to new venv ..." + & pip install -r .\requirements.txt +} else { + Write-Host "*** " -NoNewline -ForegroundColor yellow + Write-Host "Skipping creaton of venv ..." + Write-Host ">>> " -NoNewline -ForegroundColor green + Write-Host "Entering venv ..." + try { + . (".\venv\Scripts\Activate.ps1") + } + catch { + Write-Host "!!! Failed to activate" -ForegroundColor red + Write-Host $_.Exception.Message + Exit-WithCode 1 + } +} + +Write-Host ">>> " -NoNewline -ForegroundColor green +Write-Host "Cleaning cache files ... " -NoNewline +Get-ChildItem "$($pype_root)" -Filter "*.pyc" -Force -Recurse | Remove-Item -Force +Get-ChildItem "$($pype_root)" -Filter "__pycache__" -Force -Recurse | Remove-Item -Force -Recurse +Write-Host "OK" -ForegroundColor green + +# store original PYTHONPATH +Write-Host ">>> " -NoNewline -ForegroundColor green +Write-Host "Storing original PYTHONPATH ... " -NoNewline +$original_pythonpath = $env:PYTHONPATH +Write-Host "OK" -ForegroundColor green +$new_pythonpath = Get-ChildItem -Directory -Path .\ | Microsoft.PowerShell.Utility\Join-String -Property FullName -DoubleQuote -Separator ';' +$env:PYTHONPATH = $env:PYTHONPATH + ";" + $new_pythonpath +Write-Host ">>> " -NoNewline -ForegroundColor green +Write-Host "Adding repos to PYTHONPATH ..." + +Write-Host ">>> " -NoNewline -ForegroundColor green +Write-Host "Building Pype ..." +& python setup.py build +Write-Host ">>> " -NoNewline -ForegroundColor green +Write-Host "Restoring original PYTHONPATH ... " -NoNewline +$env:PYTHONPATH = $original_pythonpath +Write-Host "OK" -ForegroundColor green +deactivate diff --git a/tools/make_docs.ps1 b/tools/make_docs.ps1 index 475448d05e..30032d41a6 100644 --- a/tools/make_docs.ps1 +++ b/tools/make_docs.ps1 @@ -1,5 +1,48 @@ -& .\venv\Scripts\Activate.ps1 -sphinx-apidoc.exe -M -e -d 10 -o .\docs\source igniter -sphinx-apidoc.exe -M -e -d 10 -o .\docs\source pype vendor, pype\vendor +<# +.SYNOPSIS + Helper script to update Pype Sphinx sources. + +.DESCRIPTION + This script will run apidoc over Pype sources and generate new source rst + files for documentation. Then it will run build_sphinx to create test html + documentation build. + +.EXAMPLE + +PS> .\make_docs.ps1 + +#> + +$current_dir = Get-Location +$script_dir = Split-Path -Path $MyInvocation.MyCommand.Definition -Parent +$pype_root = (Get-Item $script_dir).parent.FullName + +$art = @' + + + ____________ + /\ ___ \ + \ \ \/_\ \ + \ \ _____/ ______ ___ ___ ___ + \ \ \___/ /\ \ \ \\ \\ \ + \ \____\ \ \_____\ \__\\__\\__\ + \/____/ \/_____/ . PYPE Club . + +'@ + +Write-Host $art -ForegroundColor DarkGreen + + +& "$($pype_root)\venv\Scripts\Activate.ps1" +Write-Host "This will not overwrite existing source rst files, only scan and add new." +Set-Location -Path $pype_root +Write-Host ">>> " -NoNewline -ForegroundColor green +Write-Host "Running apidoc ..." +sphinx-apidoc.exe -M -e -d 10 --ext-intersphinx --ext-todo --ext-coverage --ext-viewcode -o "$($pype_root)\docs\source" igniter +sphinx-apidoc.exe -M -e -d 10 --ext-intersphinx --ext-todo --ext-coverage --ext-viewcode -o "$($pype_root)\docs\source" pype vendor, pype\vendor + +Write-Host ">>> " -NoNewline -ForegroundColor green +Write-Host "Building html ..." python setup.py build_sphinx -deactivate \ No newline at end of file +deactivate +Set-Location -Path $current_dir diff --git a/tools/run_mongo.ps1 b/tools/run_mongo.ps1 new file mode 100644 index 0000000000..6cc5674a8e --- /dev/null +++ b/tools/run_mongo.ps1 @@ -0,0 +1,6 @@ +$script_dir = Split-Path -Path $MyInvocation.MyCommand.Definition -Parent +$pype_root = (Get-Item $script_dir).parent.FullName + +& "$($pype_root)\venv\Scripts\Activate.ps1" + +python "$($pype_root)\pype.py" mongodb diff --git a/tools/run_settings.ps1 b/tools/run_settings.ps1 new file mode 100644 index 0000000000..fde2087da7 --- /dev/null +++ b/tools/run_settings.ps1 @@ -0,0 +1,6 @@ +$script_dir = Split-Path -Path $MyInvocation.MyCommand.Definition -Parent +$pype_root = (Get-Item $script_dir).parent.FullName + +& "$($pype_root)\venv\Scripts\Activate.ps1" + +python "$($pype_root)\pype.py" settings --dev diff --git a/tools/run_tray.ps1 b/tools/run_tray.ps1 new file mode 100644 index 0000000000..41ada4219e --- /dev/null +++ b/tools/run_tray.ps1 @@ -0,0 +1,6 @@ +$script_dir = Split-Path -Path $MyInvocation.MyCommand.Definition -Parent +$pype_root = (Get-Item $script_dir).parent.FullName + +& "$($pype_root)\venv\Scripts\Activate.ps1" + +python "$($pype_root)\pype.py" tray --debug