mirror of
https://github.com/certbot/certbot.git
synced 2026-01-24 19:22:07 +03:00
Originally, I had it in mind to move letsencrypt-auto inside this dir. However, now we'd like to copy it or link it to the root level, where people are used to finding it (at least for awhile). Since it would be confusing to have a letsencrypt-auto and a letsencrypt_auto right next to each other, we rename this folder.
65 lines
1.9 KiB
Python
Executable File
65 lines
1.9 KiB
Python
Executable File
#!/usr/bin/env python
|
|
"""Stitch together the letsencrypt-auto script.
|
|
|
|
Implement a simple templating language in which {{ some/file }} turns into the
|
|
contents of the file at ./pieces/some/file except for certain tokens which have
|
|
other, special definitions.
|
|
|
|
"""
|
|
from os.path import abspath, dirname, join
|
|
import re
|
|
from sys import argv
|
|
|
|
|
|
DIR = dirname(abspath(__file__))
|
|
|
|
|
|
def le_version(build_script_dir):
|
|
"""Return the version number stamped in letsencrypt/__init__.py."""
|
|
return re.search('''^__version__ = ['"](.+)['"].*''',
|
|
file_contents(join(dirname(build_script_dir),
|
|
'letsencrypt',
|
|
'__init__.py')),
|
|
re.M).group(1)
|
|
|
|
|
|
def file_contents(path):
|
|
with open(path) as file:
|
|
return file.read()
|
|
|
|
|
|
def build(version=None, requirements=None):
|
|
"""Return the built contents of the letsencrypt-auto script.
|
|
|
|
:arg version: The version to attach to the script. Default: the version of
|
|
the letsencrypt package
|
|
:arg requirements: The contents of the requirements file to embed. Default:
|
|
contents of letsencrypt-auto-requirements.txt
|
|
|
|
"""
|
|
special_replacements = {
|
|
'LE_AUTO_VERSION': version or le_version(DIR)
|
|
}
|
|
if requirements:
|
|
special_replacements['letsencrypt-auto-requirements.txt'] = requirements
|
|
|
|
def replacer(match):
|
|
token = match.group(1)
|
|
if token in special_replacements:
|
|
return special_replacements[token]
|
|
else:
|
|
return file_contents(join(DIR, 'pieces', token))
|
|
|
|
return re.sub(r'{{\s*([A-Za-z0-9_./-]+)\s*}}',
|
|
replacer,
|
|
file_contents(join(DIR, 'letsencrypt-auto.template')))
|
|
|
|
|
|
def main():
|
|
with open(join(DIR, 'letsencrypt-auto'), 'w') as out:
|
|
out.write(build())
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|