A PowerShell based tool which controls a software project build process.
Assumptions:
- nuget.exe is on PATH environment variable
- Powershell window is opened :)
Please execute following commands:
nuget.exe install psmake -version 3.1.0.0
.\psmake.3.1.0.0\psmake.ps1 -Scaffold empty
ls
The output should be similar to this one:
D:\tmp> nuget.exe install psmake -version 3.1.0.0
Installing 'psmake 3.1.0.0'.
Successfully installed 'psmake 3.1.0.0'.
D:\tmp> .\psmake.3.1.0.0\psmake.ps1 -Scaffold empty
Scaffolding project type: empty
Creating ....
Creating make.ps1...
Creating Makefile.ps1...
D:\tmp> ls
Directory: D:\tmp
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 08/04/2015 13:45 psmake.3.1.0.0
-a--- 08/04/2015 13:45 22 Defaults.ps1
-a--- 08/04/2015 13:45 650 make.ps1
-a--- 08/04/2015 13:45 189 Makefile.ps1
The current directory would contain a following files:
- Defaults.ps1 - a file with default parameters that would be used during make,
- Makefile.ps1 - a file with all step definitions,
- make.ps1 - a file that performs a make.
Please note that make.ps1 installs psmake package before run, so it is not needed to include psmake package is sources
Please execute following commands:
PS> .\make.ps1 -Target build
The output should be like:
D:\tmp> .\make.ps1 -Target build
'psmake 3.1.0.0' already installed.
------------------------------------------------------------
- Loading .\Makefile.ps1...
------------------------------------------------------------
1. Step one
2. Step two
------------------------------------------------------------
- Loading modules
------------------------------------------------------------
Reading modules...
.\Modules.ps1 does not exist, skipping...
------------------------------------------------------------
- Loading environment config...
------------------------------------------------------------
.\Environment.ps1 does not exist, skipping...
------------------------------------------------------------
- Executing steps...
------------------------------------------------------------
************************************************************
* 1/2: Step one...
************************************************************
Greetings from step one
************************************************************
* 2/2: Step two...
************************************************************
Greetings from step two
Make finished :)
Please execute following commands:
PS> cat .\Makefile.ps1
The output should be like:
Define-Step -Name 'Step one' -Target 'build' -Body {
echo 'Greetings from step one'
}
Define-Step -Name 'Step two' -Target 'build,deploy' -Body {
echo 'Greetings from step two'
}
The makefile.ps1 contains a definition of two steps: Step one
and Step two
Each step has specified list of targets for which it should be executed.
All the steps would be executed in definition order, however a given step would be executed only if it belongs to target specified in -target
parameter of make.ps1
.
That is why .\make.ps1 -Target build
resulted with execution of both steps.
The generated make.ps1
passes all parameters to main psmake script, which means that it accepts all parameters as psmake.
Please execute PS> Get-Help .\psmake.3.1.0.0\psmake.ps1 -Detailed
to see detailed help and additional examples.
Also please visit wiki page for further details.