<div>Does "stack upload" build and upload the docs or will I still need "hup" for that?</div><div><br><div class="gmail_quote"><div>On Fri, 17 Mar 2017 at 9:40 pm, Adam Bergmark <<a href="mailto:adam@bergmark.nl">adam@bergmark.nl</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_msg">The stack templates are quite nice. The default is missing #1 #5 #6.2 #7 #8 #9. Setting up external services is of course a bit more involved but maybe that can be added to an external tool extending stack? But dot ask the stack maintainers as well for their opinion! The others I think should be fine to add, possibly as options. But I haven't looked into customizing templates or much other than the default template so maybe some of this is already in there somewhere.<div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">I'm slowly moving away from local .gitignore files, in ~/.gitconfig you can ignoring globally by specify e.g.</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg"><div class="gmail_msg">[core]</div><div class="gmail_msg"><span class="m_-4681905478961813379Apple-tab-span gmail_msg" style="white-space:pre-wrap">       </span>excludesfile = /Users/adam.bergmark/.gitignore-global</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">`stack upload` does sdist + upload and can store your hackage credentials.</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">Sounds like hup or a tool extending it might be a good starting place to do take care of the release process. I'd for instance want it to check that the travis build for the tag (or commit hash which would happen first) succeeded before uploading. I'm not aware of other work in this area but I haven't looked.</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">Cheers,</div><div class="gmail_msg">Adam</div><div class="gmail_msg"><div class="gmail_msg"><div class="gmail_msg"><div class="gmail_msg"><br class="gmail_msg"></div></div></div></div></div></div><br class="gmail_msg"><div class="gmail_quote gmail_msg"></div><div class="gmail_quote gmail_msg"><div class="gmail_msg">On Fri, 17 Mar 2017 at 11:17 Clinton Mead <<a href="mailto:clintonmead@gmail.com" class="gmail_msg" target="_blank">clintonmead@gmail.com</a>> wrote:<br class="gmail_msg"></div></div><div class="gmail_quote gmail_msg"><blockquote class="gmail_quote gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_msg">I've only just started uploading packages to hackage (my package listing is <a href="https://hackage.haskell.org/user/clinton" class="gmail_msg" target="_blank">here</a>) but currently there's a lot of repetitive activities for creating and updating packages.<a href="http:///" class="gmail_msg" target="_blank"></a><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">For example, here's the steps in creating a package:</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg"><ol class="gmail_msg"><li class="gmail_msg">Initialise a repository on github</li><li class="gmail_msg">Initialise git repository locally</li><li class="gmail_msg">Set github repository as remote</li><li class="gmail_msg">Add a LICENSE file</li><li class="gmail_msg">Add a standard ".gitignore file"</li><li class="gmail_msg">Create a cabal file with the appropriate files that hackage requires including:</li><ol class="gmail_msg"><li class="gmail_msg">Git repository source</li><li class="gmail_msg">Issues page</li><li class="gmail_msg">Licence</li><li class="gmail_msg">Licence file</li></ol><li class="gmail_msg">Run <a href="https://github.com/hvr/multi-ghc-travis" class="gmail_msg" target="_blank">multi-ghc-travis</a> to create a ".travis.yml" file</li><li class="gmail_msg">Make an initial commit and push</li><li class="gmail_msg">Refresh <a href="http://travis-ci.org" class="gmail_msg" target="_blank">travis-ci.org</a>'s repository list so it detects the new repository </li></ol><div class="gmail_msg">There's also the stack stuff, but the GUI I'm using, IntelliJ with a Haskell plugin, handles most of that. It also creates a cabal file, but it's missing a number of key fields as mentioned above.<br class="gmail_msg"><br class="gmail_msg">When I actually want to upload the package I go though these steps:</div></div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg"><ol class="gmail_msg"><li class="gmail_msg">Push to github</li><li class="gmail_msg">Wait for Travis-CI to compile the package (this is a test to ensure it builds in a clean remote environment).</li><li class="gmail_msg">Run "cabal sdist 2>&1"</li><li class="gmail_msg">Parse the output of sdist to see where the dist file is.<br class="gmail_msg"></li><li class="gmail_msg">Run "<a href="https://hackage.haskell.org/package/hup" class="gmail_msg" target="_blank">hup</a> packup fileFromSDist" to upload the package, putting in my hackage user/pass</li><li class="gmail_msg">Run "hup docboth", to both build and upload the documentation.</li><li class="gmail_msg">Tag the commit as a release</li></ol><div class="gmail_msg">Currently, I've got two scripts with help with a lot of this, but it's a bit adhoc, and it's not fully automated (for example, I still have to manually ensure all the correct fields are in the cabal file, usually by copy/pasting from another package and modifying). </div></div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">Are there any tools that I haven't found that make this process a bit more painless? I'm a bit new to this area, and I've only started using git recently as a prelude to uploading my Haskell packages, so admittedly I may have missed something obvious or perhaps I'm just doing it all wrong.<br class="gmail_msg"><br class="gmail_msg">But if other people do find it painful like me, perhaps I'll put some effort into rewriting my perl scripts into nice haskell packages and executables for others to use. </div></div></blockquote></div><div class="gmail_quote gmail_msg"><blockquote class="gmail_quote gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
_______________________________________________<br class="gmail_msg">
Haskell-Cafe mailing list<br class="gmail_msg">
To (un)subscribe, modify options or view archives go to:<br class="gmail_msg">
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer" class="gmail_msg" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br class="gmail_msg">
Only members subscribed via the mailman list are allowed to post.</blockquote></div>
</blockquote></div></div>