mirror of
https://github.com/freeipa/ansible-freeipa.git
synced 2026-08-05 22:34:40 +00:00
Merge pull request #437 from t-woerner/galaxyfy_playbook_snippets
build-galaxy-release: Galaxyfy READMEs, module EXAMPLES and tests
This commit is contained in:
@@ -29,6 +29,14 @@ cd plugins/action_plugins && {
|
|||||||
cd ../..
|
cd ../..
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for x in $(find plugins/modules -name "*.py" -print); do
|
||||||
|
python utils/galaxyfy-module-EXAMPLES.py "$x" "ipa" "$collection_prefix"
|
||||||
|
done
|
||||||
|
|
||||||
|
for x in $(find roles/*/library -name "*.py" -print); do
|
||||||
|
python utils/galaxyfy-module-EXAMPLES.py "$x" "ipa" "$collection_prefix"
|
||||||
|
done
|
||||||
|
|
||||||
for x in roles/*/tasks/*.yml; do
|
for x in roles/*/tasks/*.yml; do
|
||||||
python utils/galaxyfy-playbook.py "$x" "ipa" "$collection_prefix"
|
python utils/galaxyfy-playbook.py "$x" "ipa" "$collection_prefix"
|
||||||
done
|
done
|
||||||
@@ -37,6 +45,14 @@ for x in $(find playbooks -name "*.yml" -print); do
|
|||||||
python utils/galaxyfy-playbook.py "$x" "ipa" "$collection_prefix"
|
python utils/galaxyfy-playbook.py "$x" "ipa" "$collection_prefix"
|
||||||
done
|
done
|
||||||
|
|
||||||
|
for x in $(find . -name "README*.md" -print); do
|
||||||
|
python utils/galaxyfy-README.py "$x" "ipa" "$collection_prefix"
|
||||||
|
done
|
||||||
|
|
||||||
|
for x in $(find tests -name "*.yml" -print); do
|
||||||
|
python utils/galaxyfy-playbook.py "$x" "ipa" "$collection_prefix"
|
||||||
|
done
|
||||||
|
|
||||||
#git diff
|
#git diff
|
||||||
|
|
||||||
ansible-galaxy collection build
|
ansible-galaxy collection build
|
||||||
|
|||||||
61
utils/galaxyfy-README.py
Normal file
61
utils/galaxyfy-README.py
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
# Authors:
|
||||||
|
# Thomas Woerner <twoerner@redhat.com>
|
||||||
|
#
|
||||||
|
# Copyright (C) 2020 Red Hat
|
||||||
|
# see file 'COPYING' for use and warranty information
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
import sys
|
||||||
|
from galaxyfy import galaxyfy_playbook
|
||||||
|
|
||||||
|
|
||||||
|
def readme(readme_in, project_prefix, collection_prefix):
|
||||||
|
out_lines = []
|
||||||
|
|
||||||
|
with open(readme_in) as in_f:
|
||||||
|
changed = False
|
||||||
|
code = False
|
||||||
|
code_lines = []
|
||||||
|
for line in in_f:
|
||||||
|
stripped = line.strip()
|
||||||
|
if stripped.startswith("```"):
|
||||||
|
if code:
|
||||||
|
_out_lines, _changed = \
|
||||||
|
galaxyfy_playbook(project_prefix, collection_prefix,
|
||||||
|
code_lines)
|
||||||
|
out_lines.extend(_out_lines)
|
||||||
|
code_lines = []
|
||||||
|
if _changed:
|
||||||
|
changed = True
|
||||||
|
code = False
|
||||||
|
else:
|
||||||
|
code = True
|
||||||
|
out_lines.append(line)
|
||||||
|
continue
|
||||||
|
if code:
|
||||||
|
code_lines.append(line)
|
||||||
|
else:
|
||||||
|
out_lines.append(line)
|
||||||
|
|
||||||
|
if changed:
|
||||||
|
with open(readme_in, "w") as out_f:
|
||||||
|
for line in out_lines:
|
||||||
|
out_f.write(line)
|
||||||
|
|
||||||
|
|
||||||
|
readme(sys.argv[1], sys.argv[2], sys.argv[3])
|
||||||
63
utils/galaxyfy-module-EXAMPLES.py
Normal file
63
utils/galaxyfy-module-EXAMPLES.py
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
# Authors:
|
||||||
|
# Thomas Woerner <twoerner@redhat.com>
|
||||||
|
#
|
||||||
|
# Copyright (C) 2020 Red Hat
|
||||||
|
# see file 'COPYING' for use and warranty information
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
import sys
|
||||||
|
from galaxyfy import galaxyfy_playbook
|
||||||
|
|
||||||
|
|
||||||
|
def module_EXAMPLES(module_in, project_prefix, collection_prefix):
|
||||||
|
out_lines = []
|
||||||
|
|
||||||
|
with open(module_in) as in_f:
|
||||||
|
changed = False
|
||||||
|
example = False
|
||||||
|
example_lines = []
|
||||||
|
for line in in_f:
|
||||||
|
stripped = line.strip()
|
||||||
|
if stripped in ['EXAMPLES = """', "EXAMPLES = '''"]:
|
||||||
|
example = True
|
||||||
|
out_lines.append(line)
|
||||||
|
continue
|
||||||
|
elif example and stripped in ["'''", '"""']:
|
||||||
|
_out_lines, _changed = \
|
||||||
|
galaxyfy_playbook(project_prefix, collection_prefix,
|
||||||
|
example_lines)
|
||||||
|
for _line in _out_lines:
|
||||||
|
out_lines.append(_line)
|
||||||
|
example_lines = []
|
||||||
|
if _changed:
|
||||||
|
changed = True
|
||||||
|
example = False
|
||||||
|
out_lines.append(line)
|
||||||
|
continue
|
||||||
|
if example:
|
||||||
|
example_lines.append(line)
|
||||||
|
else:
|
||||||
|
out_lines.append(line)
|
||||||
|
|
||||||
|
if changed:
|
||||||
|
with open(module_in, "w") as out_f:
|
||||||
|
for line in out_lines:
|
||||||
|
out_f.write(line)
|
||||||
|
|
||||||
|
|
||||||
|
module_EXAMPLES(sys.argv[1], sys.argv[2], sys.argv[3])
|
||||||
@@ -1,45 +1,40 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
# Authors:
|
||||||
|
# Thomas Woerner <twoerner@redhat.com>
|
||||||
|
#
|
||||||
|
# Copyright (C) 2019,2020 Red Hat
|
||||||
|
# see file 'COPYING' for use and warranty information
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
import re
|
from galaxyfy import galaxyfy_playbook
|
||||||
|
|
||||||
|
|
||||||
def galaxify_playbook(playbook_in, project_prefix, collection_prefix):
|
def 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
|
changed = False
|
||||||
changeable = False
|
with open(playbook_in) as in_f:
|
||||||
include_role = False
|
lines = in_f.readlines()
|
||||||
for line in in_f:
|
out_lines, changed = \
|
||||||
stripped = line.strip()
|
galaxyfy_playbook(project_prefix, collection_prefix, lines)
|
||||||
if stripped.startswith("- name:") or \
|
|
||||||
stripped.startswith("- block:"):
|
|
||||||
changeable = True
|
|
||||||
elif stripped in ["set_fact:", "vars:"]:
|
|
||||||
changeable = False
|
|
||||||
include_role = False
|
|
||||||
elif stripped.startswith("include_role:"):
|
|
||||||
include_role = True
|
|
||||||
elif include_role and stripped.startswith("name:"):
|
|
||||||
line = p2.sub(pattern2, line)
|
|
||||||
changed = True
|
|
||||||
elif changeable and stripped.startswith("- role:"):
|
|
||||||
line = p2.sub(pattern2, line)
|
|
||||||
changed = True
|
|
||||||
elif changeable and not stripped.startswith(collection_prefix):
|
|
||||||
line = p1.sub(pattern1, line)
|
|
||||||
changed = True
|
|
||||||
|
|
||||||
lines.append(line)
|
|
||||||
|
|
||||||
if changed:
|
if changed:
|
||||||
with open(playbook_in, "w") as out_f:
|
with open(playbook_in, "w") as out_f:
|
||||||
for line in lines:
|
for line in out_lines:
|
||||||
out_f.write(line)
|
out_f.write(line)
|
||||||
|
|
||||||
|
|
||||||
galaxify_playbook(sys.argv[1], sys.argv[2], sys.argv[3])
|
playbook(sys.argv[1], sys.argv[2], sys.argv[3])
|
||||||
|
|||||||
66
utils/galaxyfy.py
Normal file
66
utils/galaxyfy.py
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
# Authors:
|
||||||
|
# Thomas Woerner <twoerner@redhat.com>
|
||||||
|
#
|
||||||
|
# Copyright (C) 2019,2020 Red Hat
|
||||||
|
# see file 'COPYING' for use and warranty information
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
import re
|
||||||
|
|
||||||
|
|
||||||
|
def galaxyfy_playbook(project_prefix, collection_prefix, lines):
|
||||||
|
p1 = re.compile('(%s.*:)$' % project_prefix)
|
||||||
|
p2 = re.compile('(.*:) (%s.*)$' % project_prefix)
|
||||||
|
out_lines = []
|
||||||
|
|
||||||
|
pattern1 = r'%s.\1' % collection_prefix
|
||||||
|
pattern2 = r'\1 %s.\2' % collection_prefix
|
||||||
|
|
||||||
|
changed = False
|
||||||
|
changeable = False
|
||||||
|
include_role = False
|
||||||
|
for line in lines:
|
||||||
|
stripped = line.strip()
|
||||||
|
if stripped.startswith("- name:") or \
|
||||||
|
stripped.startswith("- block:"):
|
||||||
|
changeable = True
|
||||||
|
elif stripped in ["set_fact:", "vars:"]:
|
||||||
|
changeable = False
|
||||||
|
include_role = False
|
||||||
|
elif stripped.startswith("include_role:"):
|
||||||
|
include_role = True
|
||||||
|
elif include_role and stripped.startswith("name:"):
|
||||||
|
line = p2.sub(pattern2, line)
|
||||||
|
changed = True
|
||||||
|
elif changeable and stripped.startswith("- role:"):
|
||||||
|
line = p2.sub(pattern2, line)
|
||||||
|
changed = True
|
||||||
|
elif (changeable and stripped.startswith(project_prefix) and
|
||||||
|
not stripped.startswith(collection_prefix) and
|
||||||
|
stripped.endswith(":")):
|
||||||
|
line = p1.sub(pattern1, line)
|
||||||
|
changed = True
|
||||||
|
changeable = False # Only change first line in task
|
||||||
|
elif (stripped.startswith("- %s" % project_prefix) and
|
||||||
|
stripped.endswith(":")):
|
||||||
|
line = p1.sub(pattern1, line)
|
||||||
|
changed = True
|
||||||
|
|
||||||
|
out_lines.append(line)
|
||||||
|
|
||||||
|
return (out_lines, changed)
|
||||||
Reference in New Issue
Block a user