Blame utils/new_module

Packit Service a166ed
#!/bin/bash
Packit Service a166ed
# -*- coding: utf-8 -*-
Packit Service a166ed
Packit Service a166ed
# Authors:
Packit Service a166ed
#   Thomas Woerner <twoerner@redhat.com>
Packit Service a166ed
#
Packit Service a166ed
# Copyright (C) 2020 Red Hat
Packit Service a166ed
# see file 'COPYING' for use and warranty information
Packit Service a166ed
#
Packit Service a166ed
# This program is free software; you can redistribute it and/or modify
Packit Service a166ed
# it under the terms of the GNU General Public License as published by
Packit Service a166ed
# the Free Software Foundation, either version 3 of the License, or
Packit Service a166ed
# (at your option) any later version.
Packit Service a166ed
#
Packit Service a166ed
# This program is distributed in the hope that it will be useful,
Packit Service a166ed
# but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service a166ed
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit Service a166ed
# GNU General Public License for more details.
Packit Service a166ed
#
Packit Service a166ed
# You should have received a copy of the GNU General Public License
Packit Service a166ed
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
Packit Service a166ed
Packit Service a166ed
Packit Service a166ed
prog=`basename $0`
Packit Service a166ed
topdir=$(dirname $0)
Packit Service a166ed
Packit Service a166ed
function usage() {
Packit Service a166ed
    cat <
Packit Service a166ed
Usage: $prog [options] <module name> <author name> <author email address>
Packit Service a166ed
Packit Service a166ed
Create new ansible-freeipa module using templates.
Packit Service a166ed
Packit Service a166ed
Options:
Packit Service a166ed
  -m          Create module with member support
Packit Service a166ed
  -f          Force creation
Packit Service a166ed
  -h          Print this help
Packit Service a166ed
Packit Service a166ed
EOF
Packit Service a166ed
}
Packit Service a166ed
Packit Service a166ed
member=0
Packit Service a166ed
force=0
Packit Service a166ed
while getopts "mfh" arg; do
Packit Service a166ed
    case $arg in
Packit Service a166ed
        m) member=1;;
Packit Service a166ed
        f) force=1;;
Packit Service a166ed
        h)
Packit Service a166ed
            usage;
Packit Service a166ed
            exit 0
Packit Service a166ed
            ;;
Packit Service a166ed
        \?)
Packit Service a166ed
            echo "Invalid option: -$OPTARG" >&2
Packit Service a166ed
            exit 1
Packit Service a166ed
            ;;
Packit Service a166ed
        :)
Packit Service a166ed
            echo "Option -$OPTARG requires an argument." >&2
Packit Service a166ed
            exit 1
Packit Service a166ed
            ;;
Packit Service a166ed
    esac
Packit Service a166ed
done
Packit Service a166ed
Packit Service a166ed
for (( i=0; i
Packit Service a166ed
    shift
Packit Service a166ed
done
Packit Service a166ed
Packit Service a166ed
if [ ${#@} -ne 3 ]; then
Packit Service a166ed
    usage;
Packit Service a166ed
    exit 1
Packit Service a166ed
fi
Packit Service a166ed
Packit Service a166ed
name=$1
Packit Service a166ed
author=$2
Packit Service a166ed
email=$3
Packit Service a166ed
year=$(date +"%Y")
Packit Service a166ed
Packit Service a166ed
if [ -z "$name" -o -z "$author" -o -z "$email" ]; then
Packit Service a166ed
    [ -z "$name" ] && echo "ERROR: name is not valid"
Packit Service a166ed
    [ -z "$author" ] && echo "ERROR: author is not valid"
Packit Service a166ed
    [ -z "$email" ] && echo "ERROR: email is not valid"
Packit Service a166ed
    echo
Packit Service a166ed
    usage;
Packit Service a166ed
    exit 1;
Packit Service a166ed
fi
Packit Service a166ed
Packit Service a166ed
if [ -f "plugins/modules/ipa$name.py" ]; then
Packit Service a166ed
    if [ $force == 0 ]; then
Packit Service a166ed
        echo "ERROR: The module plugins/modules/ipa$name.py already exists"
Packit Service a166ed
        exit 0
Packit Service a166ed
    else
Packit Service a166ed
        echo "WARNING: Overwriting module plugins/modules/ipa$name.py"
Packit Service a166ed
    fi
Packit Service a166ed
fi
Packit Service a166ed
if [ -f "README-$name.md" ]; then
Packit Service a166ed
    if [ $force == 0 ]; then
Packit Service a166ed
        echo "ERROR: The module docs file README-$name.md already exists"
Packit Service a166ed
        exit 0
Packit Service a166ed
    else
Packit Service a166ed
        echo "WARNING: Overwriting module docs file README-$name.md"
Packit Service a166ed
    fi
Packit Service a166ed
fi
Packit Service a166ed
if [ -f "playbooks/$name" ]; then
Packit Service a166ed
    if [ $force == 0 ]; then
Packit Service a166ed
        echo "ERROR: playbooks/$name already exists"
Packit Service a166ed
        exit 0
Packit Service a166ed
    else
Packit Service a166ed
        echo "WARNING: Overwriting playbooks/$name"
Packit Service a166ed
    fi
Packit Service a166ed
fi
Packit Service a166ed
if [ -d "playbooks/$name" ]; then
Packit Service a166ed
    if [ $force == 0 ]; then
Packit Service a166ed
        echo "ERROR: The playbooks folder playbooks/$name already exists"
Packit Service a166ed
        exit 0
Packit Service a166ed
    else
Packit Service a166ed
        echo "WARNING: Overwriting playbooks in folder playbooks/$name"
Packit Service a166ed
    fi
Packit Service a166ed
else
Packit Service a166ed
    if [ -f "playbooks/$name" ]; then
Packit Service a166ed
        echo "ERROR: playbooks/$name is not a directory"
Packit Service a166ed
        exit 0
Packit Service a166ed
    fi
Packit Service a166ed
fi
Packit Service a166ed
if [ -d "tests/$name" ]; then
Packit Service a166ed
    if [ $force == 0 ]; then
Packit Service a166ed
        echo "ERROR: The tests folder tests/$name already exists"
Packit Service a166ed
        exit 0
Packit Service a166ed
    else
Packit Service a166ed
        echo "WARNING: Overwriting the tests in folder tests/$name"
Packit Service a166ed
    fi
Packit Service a166ed
else
Packit Service a166ed
    if [ -f "tests/$name" ]; then
Packit Service a166ed
        echo "ERROR: tests/$name is not a directory"
Packit Service a166ed
        exit 0
Packit Service a166ed
    fi
Packit Service a166ed
fi
Packit Service a166ed
Packit Service a166ed
# TEMPLATE function
Packit Service a166ed
Packit Service a166ed
function template() {
Packit Service a166ed
    s=$1
Packit Service a166ed
    d=$2
Packit Service a166ed
    sed -e "s/\$name/$name/g" \
Packit Service a166ed
        -e "s/\${name}/${name}/g" \
Packit Service a166ed
        -e "s/\${name^}/${name^}/g" \
Packit Service a166ed
        -e "s/\$author/$author/g" \
Packit Service a166ed
        -e "s/\$email/$email/" \
Packit Service a166ed
        -e "s/\$year/$year/" \
Packit Service a166ed
        $topdir/templates/$s > $d
Packit Service a166ed
}
Packit Service a166ed
Packit Service a166ed
# MODULE
Packit Service a166ed
Packit Service a166ed
dest=plugins/modules
Packit Service a166ed
mkdir -p $dest
Packit Service a166ed
Packit Service a166ed
src=ipamodule.py.in
Packit Service a166ed
[ $member == 1 ] && src=ipamodule+member.py.in
Packit Service a166ed
template $src $dest/ipa$name.py
Packit Service a166ed
Packit Service a166ed
# README
Packit Service a166ed
Packit Service a166ed
src=README-module.md.in
Packit Service a166ed
[ $member == 1 ] && src=README-module+member.md.in
Packit Service a166ed
template $src README-$name.md
Packit Service a166ed
Packit Service a166ed
# PLAYBOOKS
Packit Service a166ed
Packit Service a166ed
dest=playbooks/$name
Packit Service a166ed
mkdir -p $dest
Packit Service a166ed
Packit Service a166ed
template module-present.yml.in $dest/$name-present.yml
Packit Service a166ed
template module-absent.yml.in $dest/$name-absent.yml
Packit Service a166ed
Packit Service a166ed
if [ $member == 1 ]; then
Packit Service a166ed
    template module-member-present.yml.in $dest/$name-member-present.yml
Packit Service a166ed
    template module-member-absent.yml.in $dest/$name-member-absent.yml
Packit Service a166ed
fi
Packit Service a166ed
Packit Service a166ed
# TESTS
Packit Service a166ed
Packit Service a166ed
dest=tests/$name
Packit Service a166ed
mkdir -p $dest
Packit Service a166ed
Packit Service a166ed
src=test_module.yml.in
Packit Service a166ed
[ $member == 1 ] && src=test_module+member.yml.in
Packit Service a166ed
template $src $dest/test_$name.yml