-
Notifications
You must be signed in to change notification settings - Fork 3
/
generate_templates.py
53 lines (43 loc) · 1.69 KB
/
generate_templates.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# Portainer App Templates for LinuxServer.io Docker containers
# Copyright (C) 2021 Technorabilia
# Written by Simon de Kraa <[email protected]>
#
# 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 <https://www.gnu.org/licenses/>.
import json
import os
from jinja2 import Environment, FileSystemLoader
import common
init_vars = common.get_initial_variables()
project_list = common.get_project_list()
env = Environment(loader=FileSystemLoader(
"templates"), trim_blocks=True, lstrip_blocks=True)
env.globals.update(init_vars=init_vars)
env.globals.update(get_project_vars=common.get_project_vars)
template = env.get_template("templates-2.0.j2")
projects = {
"projects": project_list
}
out_filename = "templates-2.0.json"
with open(out_filename, "w") as out_file:
out_file.write(template.render(projects))
# check valid json
with open(out_filename) as in_file:
templates_v2 = json.load(in_file)
# check filesize
if os.path.getsize(out_filename) < 200000:
raise Exception
out_filename = "templates-1.20.0.json"
templates_v1 = json.dumps(templates_v2["templates"], indent=4)
with open(out_filename, "w") as out_file:
out_file.write(templates_v1)