|
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
|