Browser and install GUI for cookiecutter templates

βŒˆβŒ‹ βŽ‡ branch:  cookiedough


Artifact [4a428d6f1a]

Artifact 4a428d6f1acf8ddde1caca3aa9a5deaad4b8272a0f8f0726647c0fb8551ba780:

  • File README.md — part of check-in [a1f0f2a8f5] at 2021-04-06 09:07:13 on branch trunk — Release as 0.3.0 (user: mario size: 3823)

cookiedough(1) is a GUI browser for cookiecutter templates. And can of course extract them. It comes with a database of around 4150 cookietemplates, grouped by category, and allows some rudimentary filtering. Still beta, but usable.

screenshot main window

Installation / Use

Just install it as normal pip package:

~$   pip3 install -U cookiedough

And start it from a terminal window:

~/projects$   cookiedough

Keep an eye on the terminal when rolling out a template. Not all prompts might be captured by monkeypatching.

Notes

There's some usage information in the man page, and in the →Help→Help.

Bugs / Caveats

  • No support for template dictionary variables. (They're not widely used though.)
  • Database does not contain any directoried templates yet. (A few exist however.)
  • The README colorization is fairly basic. (But more processsing would slow it down too much.)
  • It can crash when speed-scrolling through the templates. (Perhaps PSG vs Tk threads issue.)
  • Tkinter might also crash when encountering emojis. (Either install Symbola font and get rid of Noto Color Emoji. Or upgrade to tcl/tk 8.6.10, or go back to Ubuntu 18.04 where it miraculously worked.)

See also

API

Unlike cookiecutter, there aren't many public APIs in a GUI tool. The internal database is easily accessible though:

import cookiedough
ls = cookiedough.repos.search(["pyproject.toml", "\w+test"])

There's not much in the update module yet, besides the scoring method:

cookiedough.update.score(ls.values()[0])

Whereas the rollout module provides the cc config interface:

ccc = cookiecutter.rollout.CookieCutterConfig()
print(ccc.fn, ccc.dir, ccc.replay)
d = ccc.read_config()

As well as the .cutting() wrapper, or even .hijack_prompt() and .task().

from project import meta

meta info
depends pysimplegui, sys:tkinter, cookiecutter, pluginconf, appdirs, requests, ...
compat Python β‰₯3.8, BSD/Linux
compliancy xdg, pluginspec, !pep8, !desktop, !xdnd, mallard, man, !netrc, dotenv, !http_proxy, nobackup, !releases.json, !doap, !packfile
system usage rare (xdg-open only)
paths ~/.config/cookiedough/
testing None
docs minimal wiki, mallard/yelp, news
activity backburner
state beta
support email
contrib mail, fossil
announce freshcode.club