No description
Find a file
Andrew Schwartzmeyer 5f57f76a6a Update readme
2015-10-08 13:25:59 -07:00
docs Updated Pester Tests.md 2015-09-30 23:51:36 +00:00
ext-src updated coreclr dependency to latest version, fixed / path separators in pester, which were invalid due to recent coreclr cleanup and changes 2015-07-17 15:33:23 -07:00
scripts Cache nuget.exe in scripts 2015-10-07 15:36:40 -07:00
src Use nuget -restore functionality 2015-10-06 21:55:21 -07:00
.gitignore Use nuget -restore functionality 2015-10-06 21:55:21 -07:00
.gitmodules Change mshttps to https for Pester submodule 2015-08-04 16:38:12 -07:00
README.md Update readme 2015-10-08 13:25:59 -07:00

PowerShell for Linux

Getting started

Obtain the source code

Setup Git

Install Git, the version control system. If you're new to Git, peruse the documentation and go through some tutorials; I recommend familiarizing yourself with checkout, branch, pull, push, merge, and after a while, rebase and cherry-pick.

The user name and email must be set to do just about anything with Git.

git config --global user.name "First Last"
git config --global user.email "alias@microsoft.com"

I highly recommend these configurations to help deal with whitespace, rebasing, and general use of Git.

git config --global am.threeWay true
git config --global apply.ignoreWhitespace change
git config --global help.autoCorrect -1
git config --global log.abbrevCommit true
git config --global log.decorate short
git config --global pull.ff only
git config --global push.default current
git config --global rerere.enabled true
git config --global rerere.autoUpdate true

Setup Visual Studio Online authentication

To use Git's https protocol with VSO, you'll want to setup tokens, and have Git remember them.

  1. git config --global credential.helper store
  2. Login to https://msostc.visualstudio.com
  3. Click your name in the upper left corner and click 'My profile'
  4. Click the "Security" tab in the left pane (under "Details")
  5. Click "Add"
  6. Enter "msostc" for "Description"
  7. Set "Expires In" to "1 year"
  8. Choose " msostc" for "Accounts"
  9. Choose "All scopes"
  10. Click "Create Token" (you may want to copy this token somewhere safe, as VSO will not show it again!)
  11. Use this token as the password when cloning
  12. Make a token for https://microsoft.visualstudio.com and use it when the monad submodule is cloned

Download source code

Clone our monad-linux source from Visual Studio Online, it's the superproject with a number of submodules.

git clone --recursive https://msostc.visualstudio.com/DefaultCollection/PS/_git/monad-linux

Please read the documentation on submodules if you're not familiar with them.

Setup build environment

Docker

See the official installation documentation on how to install Docker, and don't forget to setup a Docker group.

The Docker container can be updated with docker pull andschwa/magrathea, which downloads it from the automated build repository.

This container isolates all our build dependencies, including Ubuntu 14.04 and Mono. See the Dockerfile to look under the hood.

The build.sh script is a wrapper that starts a temporary container with monad-linux mounted and runs the arguments given to the script as your current user, but inside the container. The build artifacts will exist in your local folder and be owned by your user, essentially making the use of the container invisible. The build-tty.sh allocates a shell for the container, and so allows you to launch Bash or an interactive PowerShell session.

Building

  1. cd scripts since it contains the Makefile and build.sh
  2. ./build.sh make all will build PowerShell for Linux
  3. ./build.sh make run will build and execute a demo, "a","b","c","a","a" | Select-Object -Unique
  4. ./build-tty.sh make run-interactive will open an interactive PowerShell console
  5. ./build.tty make test will execute the unit tests
  6. make clean will remove the built objects
  7. make clean-native will remove libps
  8. make cleanall will also remove the Nuget packages

Adding Pester tests

Pester tests are located in the src/pester-tests folder. The makefile targets "test" and "pester-tests" will run all Pester-based tests.

The steps to add your pester tests are:

  • add *.Tests.ps1 files to src/pester-tests
  • run "make pester-tests" to run the tests

TODO: Docker shell-in-a-box

TODO: Architecture