Viewing Stack snapshots
December 19, 2017Just some days ago, I got my pull request for ls
subcommand feature accepted into Stack. Due to my laziness and unclear design issues (mostly the former), it took around five months for me to make it upstream. So, this is the interface of the new feature:
~ $ stack ls --help
Usage: stack ls COMMAND [--help]
List command. (Supports snapshots)
Available options:
--help Show this help text
Available commands:
snapshots View local snapshot (default option)
Run 'stack --help' for global options that apply to all subcommands.
~ $ stack ls snapshots --help
Usage: stack ls snapshots [COMMAND] [-l|--lts] [-n|--nightly]
View local snapshot (default option)
Available options:
-l,--lts Only show lts snapshots
-n,--nightly Only show nightly snapshots
-h,--help Show this help text
Available commands:
remote View remote snapshot
local View local snapshot
Using this feature, I can easily query my system or the Stackage servers to see what resolvers are available. This will be availble in the next release of Stack but if you want to give it a go now, you can do stack upgrade --git
.
Origin
So, why did I create this ? I have always wanted this feature when writing scripts using Stack interpreter. Pin-pointing to an existing local resolver ensured that I need not download and build the packages again (and thereby saving quite a bit of time). And trying to find out the local resolvers manually under ~/.stack
was messy. That’s when I went into the source and implemented the feature. Now, all I have to do is this:
~ $ stack ls snapshots -n
nightly-2016-11-06
nightly-2016-12-31
nightly-2017-01-12
nightly-2017-03-20
nightly-2017-07-25
nightly-2017-07-31
nightly-2017-08-15
nightly-2017-09-07
I also wanted a way to see the latest released lts resolvers in Stackage. And that’s why I added the remote
command support for it. I specifically had to patch Stackage servers to get this functionality working.
Future work
The future work is to get the user guide documentation updated describing the functionality. I also have volunteered to bring the list-dependencies
sub command under this new interface. Issue 3669 has been made to track this.