A few months ago I introduced Plock: the Plone-installer for the Pip-loving crowd. Then I got sidetracked with the next version of Plock lingering unreleased in master. With the holidays underway I had a chance to revisit Plock and discovered a few things:
- I still like the idea of Plock.
- I got carried away adding miscellaneous features to Plock, which only served to ruin the elegance of the idea.
- I particularly like the idea of moving my hosted configuration files from PythonPackages to Plock. They always felt out of place in PythonPackages but I didn't have a better place to put them until now.
What is Plock?
So what is Plock today?
- A Plone-installer for the Pip-loving crowd. That means someone with Python 2.7 and Pip should be able to install Plone in a matter of minutes with: pip install plock ; plock .
- A set of hosted configuration files for Plone called Plock Pins. [1]
- A command line utility with a sharp focus.
Features
I've recently removed several extraneous features from Plock to sharpen the focus on installing Plone and its add-ons. Check out the Plock 0.1.9 --help:
$ plock -h usage: plock [-h] [-v] [-e] [-a ADD_ON] [-l] [-w] [-r] [install_dir] Plock is a Plone Installer for the Pip-Loving Crowd positional arguments: install_dir optional arguments: -h, --help show this help message and exit -v, --version show program's version number and exit -e, --expert expert mode -a ADD_ON, --add-on ADD_ON install add-ons from PyPI -l, --list-addons list add-ons from PyPI -w, --write-config write buildout.cfg -r, --raw unformatted output, use with -l
Install Plone
The main focus is on installing Plone to a user-specified installation directory e.g.:
$ plock .
Install Add-ons
Additionally you may specify an add-on to install e.g.:
$ plock -a Products.PloneFormGen .
Add-on installations are cumulative, so:
$ plock -a Products.PloneFormGen . $ plock -a collective.loremipsum .
will result in a buildout.cfg file that looks like this:
[buildout] extends = https://raw.github.com/plock/pins/master/plone-4.3 [plone] eggs = ${addon:packages} ${base:packages} Products.PloneFormGen collective.loremipsum
Add-ons that don't install via Buildout will not break your installation e.g.:
$ plock -a asdf . Plock is installing Plone............. error: buildout failed.
When Buildout fails, Plock restores the previous working buildout.cfg for you.
List Add-ons
Because Plone is more fun with add-ons and because add-ons can be hard to find, Plock will list (and alpha-sort) all the Plone add-ons available from PyPI:
1) 73.unlockItems - A small tool for unlocking web_dav locked item in a plone portal. 2) actionbar.panel - Provides a (old) facebook style action panel at the bottom of your Plone site 3) adi.init - Deletes Plone's default contents 4) adi.samplecontent - Deletes Plone's default content and adds some sample content 5) adi.slickstyle - A slick style for Plone portals, easily extendable for your own styles. 6) anthill.querytool - GUI for AdvancedQuery with some extensions - searching the easy way for Plone 7) anthill.skinner - Skinning for plone made easy 8) anz.dashboard - Plone netvibes like dashboard implementation 9) anz.ijabbar - Integrate iJab(an open source XMPP web chat client recommended by xmpp.org) to your plone site. 10) archetypes.clippingimage - Image field and/or patch with clipping support for Plone/Archetypes. … 1,256) zkaffold - Build out demonstration content for plone 1,257) ZopeSkel - Templates and code generator for quickstarting Python, Zope and Plone projects. 1,258) zopeskel.diazotheme - Paster templates for Plone Diazo theme package 1,259) zopeskel.niteoweb - Paster templates for standard NiteoWeb Plone projects 1,260) zopyx.ecardsng - An ECard implementation for Plone 1,261) zopyx.ipsumplone - Lorem ipsum text and image demo content for Plone 1,262) zopyx.multieventcalendar - A multi-event calendar for Plone 3.X 1,263) zopyx.plone.cassandra - Show all assigned local roles within a subtree for any Plone 4 site 1,264) zopyx.plone.migration - Export/import scripts for migration Plone 2+3 to Plone 4 1,265) zopyx.smartprintng.plone - Produce & Publisher server integration with Plone
Write config
Lastly, because sometimes you want to write a configuration file without installing Plone there is:
$ plock -w . Wrote buildout.cfg.
which will result in:
$ cat buildout.cfg [buildout] extends = https://raw.github.com/plock/pins/master/plone-4.3
[1] | Extending configuration files over the internet is not a universally accepted technique due to the inherent security risk, but it's how I've worked with Plone for years. I once added a "secure" feature to Plock but removed it recently due to the maintenance burden. Plock is now primarily insecure but true to its original goal of simplicity. Maybe security can be re-added later in some semi-elegant way (e.g. cert verification by the client?). |