# Create a clean local lib
!!!perlbrew use perl-5.16.3
!!!perlbrew lib delete perl-5.16.3@demo
!!!perlbrew lib create perl-5.16.3@demo

# Trick cpanm into installing Pinto and a few prereqs
!!!rm -rf ~/opt/local/pinto/lib/perl5/HTTP*
!!!rm -rf ~/opt/local/pinto/lib/perl5/Pinto*
!!!rm -rf ~/opt/local/pinto/lib/perl5/darwin-2level/auto/Pinto

# Delete the Pinto repo
!!!rm -rf MyModules

# Final environment setup
!!!perlbrew use perl-5.16.3@demo
!!!export PERL_CPANM_OPT=--notest

# Live portion starts here
echo 'Here we go!'; clear

# Install pinto
curl -L http://getpinto.stratopan.com | bash

# Create repository
pinto %%%--root MyModules %%%init %%%--source file:///Users/jeff/tmp/CPAN-Today

# Show repository structure
find MyModules -type f

# Set ENV var, so we can be lazy

# Pull Dancer from CPAN and install
pinto install%%% --do-pull%%% Dancer

# Show stack contents
pinto list

# URI is broken so inject our patched one
pinto add%%% ~/tmp/URI-1.58_PATCHED.tar.gz

# Pin our URI so it doesn't change
pinto pin%%% URI

# Edit config file to travel forward in time
(exec < /dev/tty vim MyModules/.pinto/config/pinto.ini)

# Pull newer Dancer and install
pinto install --do-pull Dancer%%%~1.3116

# Show log to explain the pin
pinto log

# Make a copy of the stack
pinto copy%%% master foo

# Show the stack listing
pinto stacks

# Unpin URI on the copied stack
pinto unpin%%% --stack foo%%% URI

# Upgrade Dancer
pinto install --do-pull --stack foo%%% Dancer~1.3116

# Compare the stacks
pinto diff%%% master foo

# Unpin URI on master too
pinto unpin URI

# Pull Dancer to master
pinto pull Dancer~1.3116

# Compare stacks again
pinto diff master foo

# The end
echo 'Thank You!'