summaryrefslogtreecommitdiff
path: root/scripts/generate-configd-include-json.py
diff options
context:
space:
mode:
authorChristian Breunig <christian@breunig.cc>2024-06-26 21:13:43 +0200
committerChristian Breunig <christian@breunig.cc>2024-06-26 21:47:09 +0200
commit9473800055e0e1e9833f4a41c6d5d5a8a0d27399 (patch)
tree5301252a4b24643cc28d8b55a004c5f21b774b40 /scripts/generate-configd-include-json.py
parent6890cd7b0f2419d6b1a720d892f9a7d07b7cfd05 (diff)
downloadvyos-1x-9473800055e0e1e9833f4a41c6d5d5a8a0d27399.tar.gz
vyos-1x-9473800055e0e1e9833f4a41c6d5d5a8a0d27399.zip
vyos-configd: T6510: autogenerate configd-include.json
Now that there is a build time validation that Config() is not instantiated twice in a config mode script, and also as there are no more direct calls on the my_set and my_delete binary, we can auto generate the list of helpers run by vyos-configd.
Diffstat (limited to 'scripts/generate-configd-include-json.py')
-rwxr-xr-xscripts/generate-configd-include-json.py34
1 files changed, 34 insertions, 0 deletions
diff --git a/scripts/generate-configd-include-json.py b/scripts/generate-configd-include-json.py
new file mode 100755
index 000000000..b4b627fce
--- /dev/null
+++ b/scripts/generate-configd-include-json.py
@@ -0,0 +1,34 @@
+#!/usr/bin/env python3
+# Copyright (C) 2024 VyOS maintainers and contributors
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 or later as
+# published by the Free Software Foundation.
+#
+# 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 os
+from jinja2 import Template
+
+conf_scripts = 'src/conf_mode'
+configd_include = 'data/configd-include.json'
+
+configd_template = Template("""[
+{% for file in files %}
+"{{ file }}"{{ "," if not loop.last else "" }}
+{% endfor %}
+]
+""", trim_blocks=True)
+
+files = [f for f in os.listdir(conf_scripts) if os.path.isfile(f'{conf_scripts}/{f}')]
+files = sorted(files)
+
+tmp = {'files' : files}
+with open(configd_include, 'w') as f:
+ f.write(configd_template.render(tmp))