From 57d407f15fe469382051beb7558e5b835acb635f Mon Sep 17 00:00:00 2001
From: Thomas Woerner <twoerner@redhat.com>
Date: Thu, 2 Apr 2020 11:26:32 +0200
Subject: [PATCH] utils/*galaxy*: Make galaxy scripts more generic

The namespace and colleciton name have been hard coded. Now variables are
used for them. The project prefix and collection prefix are now passed to
galaxyify-playbook.py.
---
 utils/build-galaxy-release.sh | 21 ++++++++++++---------
 utils/galaxyify-playbook.py   | 20 +++++++++++---------
 2 files changed, 23 insertions(+), 18 deletions(-)

diff --git a/utils/build-galaxy-release.sh b/utils/build-galaxy-release.sh
index 3ace6376..0482ffd1 100644
--- a/utils/build-galaxy-release.sh
+++ b/utils/build-galaxy-release.sh
@@ -1,36 +1,40 @@
 #!/bin/bash
 
+namespace="freeipa"
+collection="ansible_freeipa"
+collection_prefix="${namespace}.${collection}"
+
 galaxy_version=$(git describe --tags | sed -e "s/^v//")
 echo $galaxy_version | grep "-" -q || galaxy_version="${galaxy_version}"
 sed -i -e "s/version: .*/version: \"$galaxy_version\"/" galaxy.yml
 
 find . -name "*~" -exec rm {} \;
 
-sed -i -e "s/ansible.module_utils.ansible_freeipa_module/ansible_collections.freeipa.ansible_freeipa.plugins.module_utils.ansible_freeipa_module/" plugins/modules/*.py
+sed -i -e "s/ansible.module_utils.ansible_freeipa_module/ansible_collections.${collection_prefix}.plugins.module_utils.ansible_freeipa_module/" plugins/modules/*.py
 
 cd plugins/module_utils && {
-    ln -s ../../roles/ipa*/module_utils/*.py .
+    ln -s ../../roles/*/module_utils/*.py .
     cd ../..
 }
 
 cd plugins/modules && {
-    sed -i -e "s/ansible.module_utils.ansible_ipa_/ansible_collections.freeipa.ansible_freeipa.plugins.module_utils.ansible_ipa_/" ../../roles/ipa*/library/*.py
-    ln -s ../../roles/ipa*/library/*.py .
+    sed -i -e "s/ansible.module_utils.ansible_ipa_/ansible_collections.${collection_prefix}.plugins.module_utils.ansible_ipa_/" ../../roles/*/library/*.py
+    ln -s ../../roles/*/library/*.py .
     cd ../..
 }
 
 [ ! -x plugins/action_plugins ] && mkdir plugins/action_plugins
 cd plugins/action_plugins && {
-    ln -s ../../roles/ipa*/action_plugins/*.py .
+    ln -s ../../roles/*/action_plugins/*.py .
     cd ../..
 }
 
-for x in roles/ipa*/tasks/*.yml; do
-    python utils/galaxyify-playbook.py "$x"
+for x in roles/*/tasks/*.yml; do
+    python utils/galaxyify-playbook.py "$x" "ipa" "$collection_prefix"
 done
 
 for x in $(find playbooks -name "*.yml" -print); do
-    python utils/galaxyify-playbook.py "$x"
+    python utils/galaxyify-playbook.py "$x" "ipa" "$collection_prefix"
 done
 
 #git diff
@@ -43,4 +47,3 @@ rm plugins/modules/ipareplica_*
 rm plugins/modules/ipaclient_*
 rm plugins/action_plugins/ipaclient_*
 git reset --hard
-
diff --git a/utils/galaxyify-playbook.py b/utils/galaxyify-playbook.py
index c2ad6209..3810ba3c 100644
--- a/utils/galaxyify-playbook.py
+++ b/utils/galaxyify-playbook.py
@@ -2,11 +2,14 @@ import sys
 import re
 
 
-def galaxify_playbook(playbook_in):
-    p1 = re.compile('(ipa.*:)$')
-    p2 = re.compile('(.*:) (ipa.*)$')
+def galaxify_playbook(playbook_in, project_prefix, collection_prefix):
+    p1 = re.compile('(%s.*:)$' % project_prefix)
+    p2 = re.compile('(.*:) (%s.*)$' % project_prefix)
     lines = []
 
+    pattern1 = r'%s.\1' % collection_prefix
+    pattern2 = r'\1 %s.\2' % collection_prefix
+
     with open(playbook_in) as in_f:
         changed = False
         changeable = False
@@ -22,14 +25,13 @@ def galaxify_playbook(playbook_in):
             elif stripped.startswith("include_role:"):
                 include_role = True
             elif include_role and stripped.startswith("name:"):
-                line = p2.sub(r'\1 freeipa.ansible_freeipa.\2', line)
+                line = p2.sub(pattern2, line)
                 changed = True
             elif changeable and stripped.startswith("- role:"):
-                line = p2.sub(r'\1 freeipa.ansible_freeipa.\2', line)
+                line = p2.sub(pattern2, line)
                 changed = True
-            elif changeable and not stripped.startswith(
-                    "freeipa.ansible_freeipa."):
-                line = p1.sub(r'freeipa.ansible_freeipa.\1', line)
+            elif changeable and not stripped.startswith(collection_prefix):
+                line = p1.sub(pattern1, line)
                 changed = True
 
             lines.append(line)
@@ -40,4 +42,4 @@ def galaxify_playbook(playbook_in):
                 out_f.write(line)
 
 
-galaxify_playbook(sys.argv[1])
+galaxify_playbook(sys.argv[1], sys.argv[2], sys.argv[3])
-- 
GitLab