feat: update
This commit is contained in:
parent
665eabe250
commit
f0cb191971
111 changed files with 164 additions and 91 deletions
124
build.py
124
build.py
|
|
@ -5,6 +5,7 @@ from json import dump, loads
|
|||
from pathlib import Path
|
||||
from ruamel.yaml import YAML
|
||||
from ansi2html import Ansi2HTMLConverter
|
||||
from bs4 import BeautifulSoup
|
||||
|
||||
from rougail import Rougail
|
||||
from rougail.config import get_rougail_config
|
||||
|
|
@ -13,11 +14,11 @@ from rougail.user_data_yaml import RougailUserDataYaml
|
|||
from rougail.output_doc import RougailOutputDoc
|
||||
|
||||
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
builder_dir = sys.argv[1]
|
||||
previous = Path(builder_dir) / "previous.yml"
|
||||
with Path("install.txt").open() as fh:
|
||||
cmd = fh.read()
|
||||
commit_id = sys.argv[2]
|
||||
# rougailconfig = RougailConfig.copy()
|
||||
rougailconfig = get_rougail_config(backward_compatibility=False, add_extra_options=False)
|
||||
|
|
@ -58,57 +59,68 @@ if __name__ == "__main__":
|
|||
doc = ''
|
||||
yaml = YAML()
|
||||
namespace = 'firefox'
|
||||
file_found = False
|
||||
if rougailconfig['main_namespace']:
|
||||
all_dirs = [[rougailconfig['main_structural_directories']], [['foxyproxy']]]
|
||||
dirname = "foxyproxy"
|
||||
else:
|
||||
all_dirs = [[rougailconfig['main_structural_directories']]]
|
||||
|
||||
dirname = "firefox"
|
||||
doc += inv_formatter.title('Screenshot', 2) + '\n'
|
||||
doc += f'<img src="{namespace}.png" width=50% height=50% alt="{namespace.capitalize()} Proxy setting"/>\n\n'
|
||||
# with doc_file.open('r') as docfh:
|
||||
# doc += docfh.read()
|
||||
doc += '\n' + inv_formatter.title('Structure', 2) + '\n'
|
||||
print(all_dirs)
|
||||
for r in all_dirs:
|
||||
for dirs in r:
|
||||
for d in dirs:
|
||||
print(d)
|
||||
files = list(Path(d).iterdir())
|
||||
files.sort()
|
||||
for f in files:
|
||||
namespace = f.parent.name
|
||||
file_found = True
|
||||
if f.name.endswith('.yml') or f.name.endswith('.yaml'):
|
||||
doc += inv_formatter.title(str(f), 3)
|
||||
doc += '\n```yml\n'
|
||||
with f.open(encoding="utf8") as file_fh:
|
||||
doc += file_fh.read()
|
||||
doc += '\n```\n'
|
||||
doc += '\n' + inv_formatter.title('Clone and install', 2) + '\n\n'
|
||||
doc += "To test this tutorial, you need to download this repository and install Rougail:\n\n"
|
||||
doc += f'```shell\n{cmd}```\n\n'
|
||||
doc += "Then switch to the tutorial page:\n\n"
|
||||
doc += f"```shell\ngit switch --detach {commit_id}\n```\n"
|
||||
tree = Path('tree.html')
|
||||
display_yml = None
|
||||
if tree.is_file():
|
||||
doc += '\n' + inv_formatter.title('Structure', 2) + '\n\n'
|
||||
with tree.open() as fh:
|
||||
soup = BeautifulSoup(fh.read(), features="lxml")
|
||||
doc += str(soup.find('p')) + "\n\n"
|
||||
for f in Path('.').iterdir():
|
||||
if f.name.startswith('DISPLAY_'):
|
||||
filename = f.name[9:]
|
||||
display_yml = Path(dirname) / filename
|
||||
break
|
||||
else:
|
||||
files = list(Path(dirname).iterdir())
|
||||
files.sort()
|
||||
for f in reversed(files):
|
||||
if not f.name.endswith('.yml'):
|
||||
continue
|
||||
display_yml = f
|
||||
break
|
||||
if display_yml:
|
||||
doc += f"Contents of the {str(display_yml)} file"
|
||||
doc += '\n\n```yml\n'
|
||||
with display_yml.open(encoding="utf8") as file_fh:
|
||||
doc += file_fh.read()
|
||||
doc += '\n```\n'
|
||||
rougailconfig['step.output'] = 'doc'
|
||||
rougailconfig["doc.title_level"] = 4
|
||||
inv_doc = inventory.run()[1]
|
||||
CMD = f"foo@bar:~$ git switch --detach {commit_id}\n"
|
||||
CMD += "foo@bar:~$ rougail -m firefox/ "
|
||||
CMD = "rougail -m firefox/ "
|
||||
if has_namespace:
|
||||
CMD += "-s Firefox "
|
||||
if has_foxyproxy:
|
||||
CMD += "-xn FoxyProxy -xd 0 foxyproxy/ "
|
||||
if has_mode:
|
||||
CMD += "--modes_level basic standard advanced "
|
||||
if file_found and inv_doc:
|
||||
if inv_doc:
|
||||
doc += inv_formatter.title("Let's generate the documentation", 3)
|
||||
cmd = CMD + "-o doc"
|
||||
doc += f'```console\n{cmd}\n```\n'
|
||||
doc += f'```shell\n{cmd}\n```\n'
|
||||
doc += inv_doc
|
||||
if previous.is_file():
|
||||
rougailconfig["doc.contents"] = ["changelog"]
|
||||
rougailconfig["doc.previous_json_file"] = str(previous)
|
||||
inv_doc = inventory.run()[1]
|
||||
if file_found and inv_doc:
|
||||
if inv_doc:
|
||||
doc += inv_formatter.title("Let's generate the changelog", 3)
|
||||
cmd = CMD + "-o doc --doc.contents changelog"
|
||||
doc += f'```console\n{cmd}\n```\n'
|
||||
doc += f'```shell\n{cmd}\n```\n'
|
||||
doc += inv_doc + "\n"
|
||||
# save PREVIOUS
|
||||
rougailconfig["doc.contents"] = ["variables"]
|
||||
|
|
@ -134,15 +146,7 @@ if __name__ == "__main__":
|
|||
doc += '\n```yml\n'
|
||||
with filename.open(encoding="utf8") as file_fh:
|
||||
doc += file_fh.read()
|
||||
doc += '\n```\n'
|
||||
# with filename.open(encoding="utf8") as file_fh:
|
||||
# objects = yaml.load(file_fh)
|
||||
# doc += inv_formatter.yaml(objects)
|
||||
#readme = dirname / 'README.md'
|
||||
#if readme.is_file():
|
||||
# doc += inv_formatter.title('Description', 4)
|
||||
# with readme.open() as fh:
|
||||
# doc += fh.read() + '\n\n'
|
||||
doc += '```\n'
|
||||
rougail = Rougail(rougailconfig)
|
||||
tiramisu_config = rougail.run()
|
||||
rougailconfig['step.user_data'] = ['yaml']
|
||||
|
|
@ -158,25 +162,51 @@ if __name__ == "__main__":
|
|||
console = export.run()[1]
|
||||
conv = Ansi2HTMLConverter(inline=True)
|
||||
doc += inv_formatter.title('Output', 4)
|
||||
cmd = CMD + f"-u yaml -ff {filename}"
|
||||
doc += f"```console\n{cmd}\n```\n"
|
||||
cmd = CMD + f"-u yaml -yf {filename}"
|
||||
with (dirname / "cmd_ro.txt").open("w") as fh:
|
||||
fh.write(cmd)
|
||||
doc += f"```shell\n{cmd}\n```\n"
|
||||
conv_data = '<pre>' + conv.convert(console, full=False) + "</pre>\n"
|
||||
doc += conv_data
|
||||
with open(dirname / 'output_ro.html', 'w') as fh_output:
|
||||
fh_output.write(conv_data)
|
||||
if (config / 'read_write').is_file():
|
||||
tiramisu_config.property.read_write
|
||||
if (dirname / 'invalid').is_file():
|
||||
errors2 = rougail.user_datas(ret, invalid_user_datas_error=True)
|
||||
export = RougailOutputConsole(tiramisu_config,
|
||||
rougailconfig=rougailconfig,
|
||||
user_data_errors=errors['errors'],
|
||||
user_data_warnings=errors['warnings'],
|
||||
user_data_errors=errors2['errors'],
|
||||
user_data_warnings=errors2['warnings'],
|
||||
)
|
||||
console = export.run()[1]
|
||||
conv = Ansi2HTMLConverter(inline=True)
|
||||
doc += inv_formatter.title('Output when invalid user datas is an error', 4)
|
||||
cmd2 = cmd + " --cli.invalid_user_datas_error"
|
||||
with (dirname / "cmd_invalid.txt").open("w") as fh:
|
||||
fh.write(cmd2)
|
||||
doc += f"```shell\n{cmd2}\n```\n"
|
||||
conv_data = '<pre>' + conv.convert(console, full=False) + "</pre>\n"
|
||||
doc += conv_data
|
||||
with open(dirname / 'output_invalid.html', 'w') as fh_output:
|
||||
fh_output.write(conv_data)
|
||||
if (dirname / 'read_write').is_file():
|
||||
trougailconfig = rougailconfig.copy()
|
||||
trougailconfig["console.mandatory"] = False
|
||||
tiramisu_config.property.read_write()
|
||||
errors2 = rougail.user_datas(ret, invalid_user_datas_error=True)
|
||||
export = RougailOutputConsole(tiramisu_config,
|
||||
rougailconfig=trougailconfig,
|
||||
user_data_errors=errors2['errors'],
|
||||
user_data_warnings=errors2['warnings'],
|
||||
)
|
||||
console = export.run()[1]
|
||||
conv = Ansi2HTMLConverter(inline=True)
|
||||
doc += inv_formatter.title('Output in read write mode', 4)
|
||||
cmd = cmd + " --cli.read_write"
|
||||
doc += f"```console\n{cmd}\n```\n"
|
||||
doc += '<pre>' + conv.convert(console, full=False) + "</pre>\n"
|
||||
cmd2 = cmd + " --cli.read_write"
|
||||
with (dirname / "cmd_rw.txt").open("w") as fh:
|
||||
fh.write(cmd2)
|
||||
doc += f"```shell\n{cmd2}\n```\n"
|
||||
conv_data = '<pre>' + conv.convert(console, full=False) + "</pre>\n"
|
||||
doc += conv_data
|
||||
with open(dirname / 'output_rw.html', 'w') as fh_output:
|
||||
fh_output.write(conv_data)
|
||||
#
|
||||
|
|
|
|||
46
build.sh
46
build.sh
|
|
@ -11,7 +11,7 @@ if [ -d $DEST ]; then
|
|||
exit 1
|
||||
fi
|
||||
|
||||
export LC_ALL=C
|
||||
export LC_ALL=C.UTF-8
|
||||
|
||||
BUILDER="$(pwd)"
|
||||
mkdir -p $DEST/firefox
|
||||
|
|
@ -22,10 +22,13 @@ touch summary_total.md
|
|||
cd "$DEST"
|
||||
DEST="$(pwd)"
|
||||
|
||||
TUTO_ROOT=https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit
|
||||
|
||||
|
||||
cp "$BUILDER"/firefox.png .
|
||||
cp "$BUILDER"/foxyproxy.png .
|
||||
cp "$BUILDER"/summary.md .
|
||||
cp "$BUILDER"/install.txt .
|
||||
touch README.md
|
||||
"$BUILDER"/build.py "$BUILDER" "$VERSION"
|
||||
rm -rf summary.md
|
||||
|
|
@ -38,11 +41,11 @@ git commit -am"$(cat $BUILDER/TITLE)"
|
|||
cd - > /dev/null
|
||||
|
||||
for i in $(ls -d "examples"/* | sort); do
|
||||
num=$(echo $(basename "$i"))
|
||||
echo "$num"
|
||||
commit_id="v${VERSION}_$num"
|
||||
summary="[tutorial $commit_id] $(head -n 1 $i/README.md)"
|
||||
echo "- [$summary](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/$commit_id/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/${commit_id}~1..$commit_id))" >> summary_total.md
|
||||
num=$(echo $(basename "$i"))
|
||||
echo "$num"
|
||||
commit_id="v${VERSION}_$num"
|
||||
summary="[tutorial $commit_id] $(head -n 1 $i/README.md)"
|
||||
echo "- [$summary](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/$commit_id/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/${commit_id}~1..$commit_id))" >> summary_total.md
|
||||
done
|
||||
|
||||
for i in $(ls -d "examples"/* | sort); do
|
||||
|
|
@ -53,7 +56,7 @@ for i in $(ls -d "examples"/* | sort); do
|
|||
echo " - $(head -n 1 $i/SUBTITLE.md)" >> summary.md
|
||||
fi
|
||||
if [ -f "$i/README.md" ]; then
|
||||
rm -rf "$DEST/config"
|
||||
rm -rf "$DEST/config" "$DEST/tree.html"
|
||||
num=$(echo $(basename "$i"))
|
||||
echo "$num"
|
||||
commit_id="v${VERSION}_$num"
|
||||
|
|
@ -61,9 +64,12 @@ for i in $(ls -d "examples"/* | sort); do
|
|||
diff_url="https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/${commit_id}~1..$commit_id"
|
||||
echo " - [$summary](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/$commit_id/README.md) ([diff]($diff_url))" >> summary.md
|
||||
cp "summary_total.md" "$DEST"
|
||||
BEFORE=$PWD
|
||||
cd "$i/structural_files"
|
||||
echo "====================="
|
||||
if [ -d firefox ]; then
|
||||
for j in $(ls firefox/*.yml 2>/dev/null); do
|
||||
echo "++++ $j"
|
||||
cp "$j" "$DEST/$j"
|
||||
done
|
||||
fi
|
||||
|
|
@ -73,14 +79,18 @@ for i in $(ls -d "examples"/* | sort); do
|
|||
cp "$j" "$DEST/$j"
|
||||
done
|
||||
fi
|
||||
cp "DISPLAY_*" "$DEST/" 2> /dev/null || true
|
||||
cd $DEST
|
||||
tree -H $TUTO_ROOT/$commit_id/ -P "*.yml" > tree.html
|
||||
cd - > /dev/null
|
||||
cp -f ../README.md "$DEST"
|
||||
if [ -d ../config ]; then
|
||||
cp -aL ../config "$DEST"
|
||||
fi
|
||||
msg="[tutorial $(basename $i)] $(cat ../README.md)"
|
||||
msg="[tutorial $commit_id] $(cat ../README.md)"
|
||||
[ -e ../firefox.png ] && cp ../firefox.png "$DEST"
|
||||
[ -e ../foxyproxy.png ] && cp ../foxyproxy.png "$DEST"
|
||||
cd - > /dev/null
|
||||
cd $BEFORE
|
||||
cd "$DEST"
|
||||
#
|
||||
before=$(grep "commit/$commit_id/README.md" summary_total.md -B1 | wc -l)
|
||||
|
|
@ -101,7 +111,7 @@ for i in $(ls -d "examples"/* | sort); do
|
|||
mv config/mode mode
|
||||
fi
|
||||
"$BUILDER"/build.py "$BUILDER" "$commit_id"
|
||||
rm -rf config/*/README.md config/read_write config/namespace
|
||||
rm -rf config/*/README.md config/*/read_write config/namespace config/*/invalid DISPLAY_*
|
||||
rm -rf jinja_caches summary.md summary_before.md summary_after.md summary_total.md
|
||||
if [ -f mode ]; then
|
||||
MODE=1
|
||||
|
|
@ -109,7 +119,7 @@ for i in $(ls -d "examples"/* | sort); do
|
|||
else
|
||||
MODE=0
|
||||
fi
|
||||
git add *.png README.md
|
||||
git add *.png README.md install.txt tree.html
|
||||
if [ -d config ]; then
|
||||
git add config
|
||||
else
|
||||
|
|
@ -145,13 +155,11 @@ This is what the page looks like:
|
|||
" > README.md
|
||||
echo '# Installation
|
||||
|
||||
```bash
|
||||
# git clone -b 1.1 https://forge.cloud.silique.fr/stove/rougail-tutorials.git
|
||||
# cd rougail-tutorials
|
||||
# python -m venv rougail
|
||||
# . rougail/bin/activate
|
||||
# pip install rougail-cli rougail-output-exporter rougail-output-doc rougail-user-data-file
|
||||
```
|
||||
To test this tutorial, you need to download this repository and install Rougail:
|
||||
|
||||
```bash' >> README.md
|
||||
cat install.txt >> README.md
|
||||
echo '```
|
||||
' >> README.md
|
||||
echo "# Summary
|
||||
|
||||
|
|
@ -161,7 +169,7 @@ cp "$BUILDER"/firefox.png .
|
|||
cp "$BUILDER"/foxyproxy.png .
|
||||
cat "$BUILDER"/summary.md >> README.md
|
||||
echo >> README.md
|
||||
rm -rf firefox foxyproxy mode
|
||||
rm -rf firefox foxyproxy mode install.txt tree.html
|
||||
git add .
|
||||
git commit -am"Summary"
|
||||
#
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
../010/config
|
||||
1
examples/002/config/01/README.md
Normal file
1
examples/002/config/01/README.md
Normal file
|
|
@ -0,0 +1 @@
|
|||
The user data file is empty. So it's only default value that will be used.
|
||||
0
examples/002/config/01/read_write
Normal file
0
examples/002/config/01/read_write
Normal file
2
examples/002/config/02/config.yml
Normal file
2
examples/002/config/02/config.yml
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
---
|
||||
proxy_mode: No proxy
|
||||
|
|
@ -1 +0,0 @@
|
|||
../010/config
|
||||
1
examples/003/config/01/README.md
Normal file
1
examples/003/config/01/README.md
Normal file
|
|
@ -0,0 +1 @@
|
|||
The user data file is empty. So it's only default value that will be used.
|
||||
2
examples/003/config/02/config.yml
Normal file
2
examples/003/config/02/config.yml
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
---
|
||||
proxy_mode: No proxy
|
||||
1
examples/003/config/03/README.md
Normal file
1
examples/003/config/03/README.md
Normal file
|
|
@ -0,0 +1 @@
|
|||
"foo" should be an invalid value for this variable.
|
||||
2
examples/003/config/03/config.yml
Normal file
2
examples/003/config/03/config.yml
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
---
|
||||
proxy_mode: foo
|
||||
|
|
@ -1 +0,0 @@
|
|||
../010/config
|
||||
1
examples/004/config/01/README.md
Normal file
1
examples/004/config/01/README.md
Normal file
|
|
@ -0,0 +1 @@
|
|||
The user data file is empty. So it's only default value that will be used.
|
||||
2
examples/004/config/02/config.yml
Normal file
2
examples/004/config/02/config.yml
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
---
|
||||
proxy_mode: No proxy
|
||||
1
examples/004/config/04/README.md
Normal file
1
examples/004/config/04/README.md
Normal file
|
|
@ -0,0 +1 @@
|
|||
"foo" should be an invalid value for this variable.
|
||||
2
examples/004/config/04/config.yml
Normal file
2
examples/004/config/04/config.yml
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
---
|
||||
proxy_mode: foo
|
||||
0
examples/004/config/04/invalid
Normal file
0
examples/004/config/04/invalid
Normal file
4
examples/012/config/02/config.yml
Normal file
4
examples/012/config/02/config.yml
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
---
|
||||
manual:
|
||||
http_proxy:
|
||||
address: example.net
|
||||
5
examples/012/config/03/config.yml
Normal file
5
examples/012/config/03/config.yml
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
manual:
|
||||
http_proxy:
|
||||
address: example.net
|
||||
port: 3128
|
||||
4
examples/020/config/01/config.yml
Normal file
4
examples/020/config/01/config.yml
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
---
|
||||
manual:
|
||||
http_proxy:
|
||||
address: example.net
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
---
|
||||
proxy_mode: Manual proxy configuration
|
||||
4
examples/020/config/02/config.yml
Normal file
4
examples/020/config/02/config.yml
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
---
|
||||
manual:
|
||||
http_proxy:
|
||||
address: 192.168.0.1
|
||||
0
examples/020/config/02/invalid
Normal file
0
examples/020/config/02/invalid
Normal file
4
examples/020/config/03/config.yml
Normal file
4
examples/020/config/03/config.yml
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
---
|
||||
manual:
|
||||
http_proxy:
|
||||
address: not a valid domain name
|
||||
0
examples/020/config/03/invalid
Normal file
0
examples/020/config/03/invalid
Normal file
|
|
@ -1,2 +0,0 @@
|
|||
If "use_for_https" is false, HTTPS variables are visible in read only mode and in read write mode.
|
||||
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
---
|
||||
proxy_mode: Manual proxy configuration
|
||||
manual:
|
||||
http_proxy:
|
||||
address: http.proxy.net
|
||||
port: '3128'
|
||||
use_for_https: false
|
||||
https_proxy:
|
||||
address: https.proxy.net
|
||||
|
|
@ -1 +1 @@
|
|||
../022/config
|
||||
../020/config
|
||||
|
|
@ -1 +0,0 @@
|
|||
../022/config
|
||||
|
|
@ -3,4 +3,4 @@ proxy_mode: Manual proxy configuration
|
|||
manual:
|
||||
http_proxy:
|
||||
address: example.net
|
||||
port: '3128'
|
||||
port: 3128
|
||||
6
examples/022/config/03/config.yml
Normal file
6
examples/022/config/03/config.yml
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
proxy_mode: Manual proxy configuration
|
||||
manual:
|
||||
http_proxy:
|
||||
address: example.net
|
||||
port: 100000
|
||||
0
examples/022/config/03/invalid
Normal file
0
examples/022/config/03/invalid
Normal file
|
|
@ -1 +0,0 @@
|
|||
../013/config
|
||||
4
examples/023/config/01/config.yml
Normal file
4
examples/023/config/01/config.yml
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
---
|
||||
manual:
|
||||
http_proxy:
|
||||
address: example.net
|
||||
5
examples/023/config/02/config.yml
Normal file
5
examples/023/config/02/config.yml
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
manual:
|
||||
http_proxy:
|
||||
address: example.net
|
||||
use_for_https: false
|
||||
|
|
@ -1 +1 @@
|
|||
../013/config
|
||||
../020/config
|
||||
0
examples/024/structural_files/DISPLAY_10-manual.yml
Normal file
0
examples/024/structural_files/DISPLAY_10-manual.yml
Normal file
|
|
@ -1 +0,0 @@
|
|||
../022/config
|
||||
0
examples/030/config/01/read_write
Normal file
0
examples/030/config/01/read_write
Normal file
0
examples/030/config/02/read_write
Normal file
0
examples/030/config/02/read_write
Normal file
0
examples/030/config/03/read_write
Normal file
0
examples/030/config/03/read_write
Normal file
0
examples/030/config/04/read_write
Normal file
0
examples/030/config/04/read_write
Normal file
0
examples/030/config/05/read_write
Normal file
0
examples/030/config/05/read_write
Normal file
|
|
@ -1 +1 @@
|
|||
../022/config
|
||||
../030/config
|
||||
|
|
@ -1 +1 @@
|
|||
../013/config
|
||||
../030/config
|
||||
|
|
@ -1 +1 @@
|
|||
../013/config
|
||||
../030/config
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue