aboutsummaryrefslogtreecommitdiff
path: root/templater
diff options
context:
space:
mode:
authorSilvio Rhatto <rhatto@riseup.net>2017-10-31 17:23:15 -0200
committerSilvio Rhatto <rhatto@riseup.net>2017-10-31 17:23:15 -0200
commit82e6bce4ea8fc61e99f6eb32dc12c470b93dccd4 (patch)
tree4b81210f80e8a3e85a1d65b01beb67f92a727066 /templater
parent8e83eb20f8841022cf9a221f2e8447cdba1f7270 (diff)
downloadtemplater-82e6bce4ea8fc61e99f6eb32dc12c470b93dccd4.tar.gz
templater-82e6bce4ea8fc61e99f6eb32dc12c470b93dccd4.tar.bz2
New module format
Diffstat (limited to 'templater')
-rwxr-xr-xtemplater483
1 files changed, 8 insertions, 475 deletions
diff --git a/templater b/templater
index 9d49b27..825c4d8 100755
--- a/templater
+++ b/templater
@@ -21,479 +21,8 @@ else
SHARE="`dirname $(readlink -f $0)`/../share/$BASENAME"
fi
-# Initialize project
-function __templater_init {
- if [ ! -d "$PROJECT" ]; then
- __templater_echo "Initializing $PROJECT..."
- mkdir -p $PROJECT
- fi
-}
-
-# Read a parameter from user
-function __templater_ask {
- local input
- local function="$1"
- local default="n"
- shift 2
-
- read -rep "Setup $function? (defaults to $default): " input
-
- if [ "$input" == "y" ]; then
- templater_$function
- fi
-}
-
-# Return list of implementations
-function __templater_implementations {
- # Do not sort this list: the order in which functions are present in the code is important
- #grep "^function templater_" $PROGRAM | cut -d ' ' -f 2 | sed -e 's/templater_//'
- ls $SHARE
-}
-
-# Message
-function __templater_echo {
- #echo ""
- echo "-> $*"
-}
-
-# Checkout to develop branch if available
-function __templater_checkout_develop {
- if git branch --list develop | grep -q develop; then
- git checkout develop
- fi
-}
-
-# Copy or append source file into destination
-function __templater_copy_or_append {
- local implementation="$1"
- local file="$2"
-
- if [ -z "$file" ]; then
- return
- fi
-
- if [ ! -e "$file" ]; then
- cp $SHARE/$implementation/$file .
- elif ! grep -q -f $SHARE/$implementation/$file $file; then
- cat $SHARE/$implementation/$file >> $file
- fi
-}
-
-# Read a parameter from user
-function __templater_user_input {
- local input
- local param="$1"
- local default="$2"
- shift 2
-
- if echo $param | grep -q 'passwd'; then
- read -s -rep "$* (defaults to $default): " input
- else
- read -rep "$* (defaults to $default): " input
- fi
-
- if [ -z "$input" ]; then
- export $param="$default"
- else
- export $param="$input"
- fi
-}
-
-# Basic implementation
-function templater_basic {
- if [ ! -e "README.md" ]; then
- echo "$PROJECT" > README.md
- basename $PROJECT | sed -e 's|.|=|g' >> README.md
- #echo "" >> README.md
- #echo "This is the $PROJECT repository." >> README.md
-
- echo "TODO" > TODO.md
- echo "====" >> TODO.md
- #echo "" >> TODO.md
- #echo "* Nothing here? :P" >> TODO.md
-
- touch ChangeLog
- else
- __templater_echo "Basic files already set"
- fi
-}
-
-# Git implementation
-function templater_git {
- if [ ! -d ".git" ]; then
- __templater_echo "Setting up git..."
- touch .gitignore
-
- __templater_user_input GIT_USER User "-> Choose a git user name"
- __templater_user_input GIT_EMAIL user@example.org "-> Choose a git email address"
-
- git init
- git config user.name "$GIT_USER"
- git config user.email "$GIT_EMAIL"
- git add .
- git commit -m "Initial import"
- else
- __templater_echo "Git already set"
- fi
-}
-
-# Git hooks implementation
-function templater_githooks {
- # TODO: check if githooks are already set
- if [ -d ".git" ]; then
- if which git-hooks &> /dev/null; then
- __templater_echo "Setting up git-hooks..."
- git hooks --install
- fi
- else
- __templater_echo "Git hooks already set"
- fi
-}
-
-# Setup git-flow implementation
-function templater_gitflow {
- if ! grep -q '^\[gitflow' .git/config; then
- if ! git branch --list develop | grep -q develop; then
- __templater_echo "Setting up git-flow..."
-
- git branch develop
-
- if [ -e "/usr/lib/git-core/git-flow" ]; then
- echo ""
- __templater_echo "Setting up git-flow..."
- git flow init -d
- fi
- fi
- else
- __templater_echo "Git flow already set"
- fi
-}
-
-# Vagrant implementation
-function templater_vagrant {
- if [ ! -e "Vagrantfile" ]; then
- __templater_echo "Setting up vagrant..."
- #__templater_checkout_develop
- vagrant init
- echo '.vagrant' >> .gitignore
- #git commit -a -m "Adds vagrant support"
- else
- __templater_echo "Vagrant already set"
- fi
-}
-
-# KVMX implementation
-function templater_kvmx {
- if [ ! -e "kvmxfile" ]; then
- __templater_echo "Setting up kvmx..."
- kvmx init
- #git commit -a -m "Adds kvmx support"
- else
- __templater_echo "KVMX already set"
- fi
-}
-
-# Puppet implementation
-function templater_puppet {
- if [ ! -d "puppet" ]; then
- __templater_echo "Setting up puppet..."
-
- if [ ! -d '.git' ]; then
- __templater_echo "Error: puppet needs a working git setup, skipping"
- return
- fi
-
- if [ "`git status -s | wc -l`" != 0 ]; then
- __templater_echo "Please commit changes before running setting up puppet"
- return
- fi
-
- # Use the best approach
- #git clone $BOOSTRAP puppet
- #git submodule add $BOOSTRAP puppet
- git remote add puppet $BOOTSTRAP
- git subtree add --prefix puppet $BOOTSTRAP master --squash
- else
- __templater_echo "Puppet already set"
- fi
-}
-
-# Ikiwiki implementation
-function templater_ikiwiki {
- if [ ! -e "ikiwiki.yaml" ]; then
- __templater_echo "Setting up ikiwiki..."
-
- #__templater_checkout_develop
- __templater_copy_or_append ikiwiki .gitignore
-
- #if [ ! -e "index.md" ]; then
- # cp $SHARE/ikiwiki/index.md .
- #fi
- cp $SHARE/ikiwiki/index.md .
-
- if [ ! -e "ikiwiki.yaml" ]; then
- cp $SHARE/ikiwiki/ikiwiki.yaml.
- fi
-
- if [ ! -e "Makefile" ]; then
- cp $SHARE/ikiwiki/Makefile .
- #elif ! grep -q ^wiki: Makefile; then
- # grep -v '^#' $SHARE/ikiwiki/Makefile >> Makefile
- else
- cp $SHARE/ikiwiki/Makefile Makefile.ikiwiki
- fi
-
- if [ ! -d "templates" ]; then
- cp -r $SHARE/ikiwiki/templates .
- fi
-
- if [ ! -d "bootstrap" ]; then
- cp -r $SHARE/ikiwiki/bootstrap .
- fi
-
- #if [ -d ".git" ]; then
- # git add .
- # git commit -a -m "Static site generation support using ikiwiki"
- #fi
- else
- __templater_echo "Ikiwiki already set"
- fi
-}
-
-# Sphinx implementation
-function templater_sphinx {
- if [ ! -e "conf.py" ]; then
- __templater_echo "Setting up sphinx..."
-
- #__templater_checkout_develop
- __templater_copy_or_append sphinx .gitignore
-
- cp $SHARE/sphinx/conf.py .
-
- if [ ! -e "Makefile" ]; then
- cp $SHARE/sphinx/Makefile .
- #elif ! grep -q sphinx Makefile; then
- # grep -v '^#' $SHARE/sphinx/Makefile >> Makefile
- else
- cp $SHARE/ikiwiki/Makefile Makefile.sphinx
- fi
-
- if [ ! -d "_static" ]; then
- cp -r $SHARE/sphinx/_static .
- fi
-
- if [ ! -d "_themes" ]; then
- mkdir _themes
- git submodule add https://github.com/snide/sphinx_rtd_theme _themes/sphinx_rtd_theme
- fi
- else
- __templater_echo "Sphinx already set"
- fi
-}
-
-# Pelican implementation
-function templater_pelican {
- if [ ! -e "pelicanconf.py" ]; then
- __templater_echo "Setting up pelican..."
-
- #__templater_checkout_develop
- __templater_copy_or_append pelican .gitignore
-
- cp $SHARE/sphinx/pelicanconf.py .
-
- if [ ! -e "Makefile" ]; then
- cp $SHARE/pelican/Makefile .
- #elif ! grep -q pelican Makefile; then
- # grep -v '^#' $SHARE/pelican/Makefile >> Makefile
- else
- cp $SHARE/ikiwiki/Makefile Makefile.pelican
- fi
-
- if [ ! -d "content" ]; then
- cp -r $SHARE/pelican/content .
- fi
- else
- __templater_echo "Pelican already set"
- fi
-}
-
-# Hugo implementation
-function templater_hugo {
- if [ ! -e "config.toml" ]; then
- __templater_echo "Setting up Hugo..."
-
- if which hugo &> /dev/null; then
- hugo new site .
- else
- __templater_echo "Hugo not available, please install it, skipping"
- fi
- else
- __templater_echo "Hugo already set"
- fi
-}
-
-# Jekyll implementation
-function templater_jekyll {
- if [ ! -e "_config.yml" ]; then
- __templater_echo "Setting up Jekyll..."
-
- if which jekyll &> /dev/null; then
- jekyll new .
- else
- __templater_echo "Jekyll not available, please install it, skipping"
- fi
- else
- __templater_echo "Jekyll already set"
- fi
-}
-
-# Drupal7 implementation
-function templater_drupal7 {
- if [ ! -e 'settings.dev.php' ]; then
- __templater_echo "Setting up Drupal 7..."
-
- #if [ ! -e "Makefile" ]; then
- # cp $SHARE/drupal7/Makefile .
- ##elif ! grep -q ^drupal: Makefile; then
- ## grep -v '^#' $SHARE/drupal7/Makefile >> Makefile
- #else
- # cp $SHARE/drupal7/Makefile Makefile.drupal7
- #fi
-
- if [ ! -e "drupal.make.yml" ]; then
- cp $SHARE/drupal7/drupal.make.yml .
- fi
-
- mkdir -p files themes modules libraries
- mkdir -p vendor
- else
- __templater_echo "Drupal already set"
- fi
-}
-
-# Drupal8 implementation
-function templater_drupal8 {
- if [ ! -e 'settings.php' ]; then
- __templater_echo "Setting up Drupal 8..."
-
- if [ ! -e ".gitignore" ] || ! grep -q "^settings.php" .gitignore; then
- echo settings.php >> .gitignore
- echo settings.prod.php >> .gitignore
- echo services.yml >> .gitignore
- fi
-
- if [ ! -e "settings.dev.php" ]; then
- cp $SHARE/drupal8/default.settings.php settings.dev.php
- #cp $SHARE/drupal8/default.settings.php .
- fi
-
- ln -sf settings.dev.php settings.php
-
- if [ ! -e "services.yml" ]; then
- cp $SHARE/drupal8/default.services.yml services.dev.yml
- #cp $SHARE/drupal8/default.services.yml .
- fi
-
- ln -sf services.dev.yml services.yml
-
- if [ ! -e "Makefile" ]; then
- cp $SHARE/drupal8/Makefile .
- #elif ! grep -q ^drupal: Makefile; then
- # grep -v '^#' $SHARE/drupal8/Makefile >> Makefile
- else
- cp $SHARE/drupal8/Makefile Makefile.drupal8
- fi
-
- if [ ! -e "drupal.make.yml" ]; then
- cp $SHARE/drupal8/drupal.make.yml .
- fi
-
- mkdir -p files config themes modules libraries
- mkdir -p vendor
- else
- __templater_echo "Drupal already set"
- fi
-}
-
-# GPLv3 License
-function templater_gpl {
- if [ ! -e "LICENSE" ]; then
- __templater_echo "Setting up GPLv3 License..."
- cp $SHARE/gpl/LICENSE .
- else
- __templater_echo "LICENSE already set"
- fi
-}
-
-# AGPLv3 License
-function templater_agpl {
- if [ ! -e "LICENSE" ]; then
- __templater_echo "Setting up Affero GPLv3 License..."
- cp $SHARE/agpl/LICENSE .
- else
- __templater_echo "LICENSE already set"
- fi
-}
-
-# MIT License
-function templater_mit {
- if [ ! -e "LICENSE" ]; then
- __templater_echo "Setting up MIT License..."
- cp $SHARE/mit/LICENSE .
- else
- __templater_echo "LICENSE already set"
- fi
-}
-
-# Apache License
-function templater_apache {
- if [ ! -e "LICENSE" ]; then
- __templater_echo "Setting up Apache License..."
- cp $SHARE/apache/LICENSE .
- else
- __templater_echo "LICENSE already set"
- fi
-}
-
-# BSD License
-function templater_bsd {
- if [ ! -e "LICENSE" ]; then
- __templater_echo "Setting up BSD 3-clause (New BSD) License..."
- cp $SHARE/bsd/LICENSE .
- else
- __templater_echo "LICENSE already set"
- fi
-}
-
-# Mozilla License
-function templater_mpl {
- if [ ! -e "LICENSE" ]; then
- __templater_echo "Setting up Mozilla Public License..."
- cp $SHARE/mpl/LICENSE .
- else
- __templater_echo "LICENSE already set"
- fi
-}
-
-# Do What the Fuck You Want to Public License - WTFPL
-function templater_wtfpl {
- if [ ! -e "LICENSE" ]; then
- __templater_echo "Setting up Do What the Fuck You Want Public License..."
- cp $SHARE/wtfpl/LICENSE .
- else
- __templater_echo "LICENSE already set"
- fi
-}
-
-# Contributor Covenant: A Code of Conduct for Open Source Projects
-function templater_conduct {
- if [ ! -e "CODE_OF_CONDUCT.md" ]; then
- __templater_echo "Setting up Code of Conduct..."
- cp $SHARE/conduct/CODE_OF_CONDUCT.md .
- else
- __templater_echo "Code of Conduct already set"
- fi
-}
+# Include basic functions
+source $SHARE/templater/functions || exit 1
# Syntax check
if [ -z "$PROJECT" ]; then
@@ -508,7 +37,10 @@ if [ -z "$PROJECT" ]; then
echo ""
echo "available modules:"
echo ""
- __templater_implementations | xargs -L 6 | column -t -c 6 | sed -e 's/^/\t/'
+ #__templater_implementations | xargs -L 6 | column -t -c 6 | sed -e 's/^/\t/'
+ for module in `__templater_implementations`; do
+ echo -e "\t $module: `cat $SHARE/$module/description`"
+ done
echo ""
exit 1
fi
@@ -527,7 +59,8 @@ if [ -z "$MODULES" ]; then
else
for module in $MODULES; do
if `__templater_implementations | grep -q "^$module"`; then
- templater_$module
+ #templater_$module
+ $SHARE/$module/setup $SHARE
else
__templater_echo "No such module $module, skipping"
fi