Вставить аргументы командной строки в psake
Я хотел бы добавить параметры командной строки в мой скрипт сборки psake, например: .\ Build.ps1 Deploy environment="development"
Но psake будет рассматривать каждый аргумент как задачу и ответит "задача не существует"
Можно ли ввести аргументы командной строки в psake?
build.ps1 -->
Import-Module '.\psake.psm1'
Invoke-psake '.\tasks.ps1' $args
Remove-Module psake
3 ответа
Последний выпуск psake теперь поддерживает передачу параметров в Invoke-psake, например
Invoke-psake .\parameters.ps1 -parameters @{"p1"="v1";"p2"="v2"}
Эта функция была только что добавлена.:)
Глобальная переменная решит мою проблему на данный момент, и с одной ссылкой на $global:arg_environent будет легко изменить, если я найду лучший способ ввести свойства.
build.ps1
param(
[Parameter(Position=0,Mandatory=0)]
[string]$task,
[Parameter(Position=1,Mandatory=0)]
[string]$environment = 'dev'
)
clear
$global:arg_environent = $environment
Import-Module .\psake.psm1
Invoke-psake tasks.ps1 $task
Remove-Module psake
tasks.ps1
properties {
$environment = $global:arg_environent
}
task default -depends Deploy
task Deploy {
echo "Copy stuff to $environment"
}
Я не эксперт, но я не думаю, что можно передать аргументы Invoke-Psake. Рассматривая последний источник для Psake, параметры для функции Invoke-Psake:
param(
[Parameter(Position=0,Mandatory=0)]
[string]$buildFile = 'default.ps1',
[Parameter(Position=1,Mandatory=0)]
[string[]]$taskList = @(),
[Parameter(Position=2,Mandatory=0)]
[string]$framework = '3.5',
[Parameter(Position=3,Mandatory=0)]
[switch]$docs = $false
)
Есть 4 параметра, ваш файл сборки, список задач, версия.NET Framework, выводить ли документы ваших задач. Я новичок в powershell и psake, и я пытаюсь сделать то же самое, я экспериментирую с тем, чтобы сделать что-то подобное в моем сценарии, чтобы добиться того же:
properties {
$environment = "default"
}
task PublishForLive -precondition { $environment = "Live"; return $true; } -depends Publish {
}
task PublishForStaging -precondition { $environment = "Staging"; return $true; } -depends Publish {
}
task Publish {
Write-Host "Building and publishing for $environment environment"
#Publish the project...
}
Затем вызывает psake с помощью PublishForLive или PublishForStaging, в зависимости от того, что мне нужно:
powershell -NoExit -ExecutionPolicy Unrestricted -Command "& {Import-Module .\tools\psake\psake.psm1; Invoke-psake .\psake-common.ps1 PublishForLive }"
Но это не похоже на работу для меня! Установка переменной $ environment в предварительном условии задачи, кажется, не имеет никакого эффекта. Все еще пытаюсь сделать эту работу...