example config done
This commit is contained in:
parent
5182e8154b
commit
4dd03dea75
10
TODO
10
TODO
@ -1,5 +1,13 @@
|
|||||||
- write classes/functions
|
- write classes/functions
|
||||||
- support XML and legacy build.ini (warn to STDERR for build.ini)
|
- XML-based config
|
||||||
|
- ensure we use docstrings in a Sphinx-compatible manner.
|
||||||
|
https://sphinxcontrib-napoleon.readthedocs.io/en/latest/example_google.html
|
||||||
|
|
||||||
|
- package for PyPI:
|
||||||
|
# https://packaging.python.org/tutorials/distributing-packages/
|
||||||
|
# https://docs.python.org/3/distutils/apiref.html
|
||||||
|
# https://python-packaging.readthedocs.io/en/latest/minimal.html
|
||||||
|
# https://setuptools.readthedocs.io/en/latest/setuptools.html#new-and-changed-setup-keywords
|
||||||
|
|
||||||
|
|
||||||
BUGS.SQUARE-R00T.NET bugs/tasks:
|
BUGS.SQUARE-R00T.NET bugs/tasks:
|
||||||
|
@ -0,0 +1,3 @@
|
|||||||
|
import jinja2
|
||||||
|
import os
|
||||||
|
import shutil
|
2
bdisk/GIT.py
Normal file
2
bdisk/GIT.py
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
import git
|
||||||
|
import os
|
@ -0,0 +1 @@
|
|||||||
|
import gpg
|
@ -0,0 +1 @@
|
|||||||
|
import OpenSSL
|
@ -0,0 +1,3 @@
|
|||||||
|
import os
|
||||||
|
import shutil
|
||||||
|
import subprocess
|
@ -0,0 +1,3 @@
|
|||||||
|
import os
|
||||||
|
import psutil
|
||||||
|
import subprocess
|
@ -0,0 +1,29 @@
|
|||||||
|
import validators
|
||||||
|
from urllib.parse import urlparse
|
||||||
|
try:
|
||||||
|
from lxml import etree
|
||||||
|
has_lxml = True
|
||||||
|
except ImportError:
|
||||||
|
import xml.etree.ElementTree as etree
|
||||||
|
has_lxml = False
|
||||||
|
|
||||||
|
"""Read a configuration file, parse it, and make it available to the rest of
|
||||||
|
BDisk."""
|
||||||
|
|
||||||
|
class Conf(object):
|
||||||
|
def __init__(self, cfg, profile = None, id_type = 'name'):
|
||||||
|
"""Conf classes accept the following parameters:
|
||||||
|
cfg - The configuration. Can be a filesystem path, a string, bytes,
|
||||||
|
or a stream
|
||||||
|
|
||||||
|
profile (optional) - A sub-profile in the configuration. If None is
|
||||||
|
provided, we'll first look for a profile named
|
||||||
|
'default'. If one isn't found, then the first
|
||||||
|
profile found will be used
|
||||||
|
id_type (optional) - The type of identifer to use for profile=.
|
||||||
|
Valid values are:
|
||||||
|
|
||||||
|
id
|
||||||
|
name
|
||||||
|
uuid"""
|
||||||
|
pass
|
@ -0,0 +1,3 @@
|
|||||||
|
import copy
|
||||||
|
import importlib
|
||||||
|
import os
|
@ -0,0 +1 @@
|
|||||||
|
import GIT
|
1
bdisk/logger.py
Normal file
1
bdisk/logger.py
Normal file
@ -0,0 +1 @@
|
|||||||
|
import logging
|
@ -1,4 +1,15 @@
|
|||||||
#!/usr/bin/env python3.6
|
#!/usr/bin/env python3.6
|
||||||
|
|
||||||
def main():
|
import argparse
|
||||||
|
|
||||||
|
"""The primary user interface for BDisk. If we are running interactively,
|
||||||
|
parse arguments first, then initiate a BDisk session."""
|
||||||
|
|
||||||
|
def parseArgs():
|
||||||
|
pass
|
||||||
|
|
||||||
|
def run():
|
||||||
|
pass
|
||||||
|
|
||||||
|
def run_interactive():
|
||||||
pass
|
pass
|
||||||
|
@ -0,0 +1,2 @@
|
|||||||
|
import shutil
|
||||||
|
import subprocess
|
113
docs/examples/example.xml
Normal file
113
docs/examples/example.xml
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<bdisk>
|
||||||
|
<profile name="default" id="1" uuid="8cdd6bcb-c147-4a63-9779-b5433c510dbc">
|
||||||
|
<meta>
|
||||||
|
<names>
|
||||||
|
<name>BDisk</name>
|
||||||
|
<uxname>bdisk</uxname>
|
||||||
|
<pname><xpath-ref select="../name" /></pname>
|
||||||
|
</names>
|
||||||
|
<desc>A rescue/restore live environment.</desc>
|
||||||
|
<dev>
|
||||||
|
<author>A. Dev Eloper</author>
|
||||||
|
<email>dev@domain.tld</email>
|
||||||
|
<website>https://domain.tld/~dev</website>
|
||||||
|
</dev>
|
||||||
|
<uri>https://domain.tld/projname</uri>
|
||||||
|
<ver>1.0.0</ver>
|
||||||
|
<max_recurse>3</max_recurse>
|
||||||
|
</meta>
|
||||||
|
<accounts>
|
||||||
|
<!-- Salted/hashed password is "test" -->
|
||||||
|
<rootpass hashed="yes"
|
||||||
|
salt="sha512">
|
||||||
|
$6$7KfIdtHTcXwVrZAC$LZGNeMNz7v5o/cYuA48FAxtZynpIwO5B1CPGXnOW5kCTVpXVt4SypRqfM.AoKkFt/O7MZZ8ySXJmxpELKmdlF1
|
||||||
|
</rootpass>
|
||||||
|
<user sudo="yes">
|
||||||
|
<username>
|
||||||
|
<xpath-ref select="//meta/names/uxname" />
|
||||||
|
</username>
|
||||||
|
<!-- You can also use substitution from different profiles: -->
|
||||||
|
<!-- <username><xpath-ref select="//profile[@name='default']/meta/names/uxname" /></username> -->
|
||||||
|
<name>
|
||||||
|
<xpath-ref select="//meta/dev/author" />
|
||||||
|
</name>
|
||||||
|
<password hashed="no"
|
||||||
|
salt="none">
|
||||||
|
testpassword
|
||||||
|
</password>
|
||||||
|
</user>
|
||||||
|
</accounts>
|
||||||
|
<sources>
|
||||||
|
<source arch="x86_64">
|
||||||
|
<mirror>http://archlinux.mirror.domain.tld</mirror>
|
||||||
|
<webroot>/iso/latest</webroot>
|
||||||
|
<tarball flags="glob,latest">
|
||||||
|
<xpath-ref select="./mirror" />/<xpath-ref select="./webroot" />/archlinux-bootstrap-*-x86_64.tar.gz
|
||||||
|
</tarball>
|
||||||
|
<checksum hash="sha1">
|
||||||
|
<xpath-ref select="./mirror" />/<xpath-ref select="./webroot" />/sha1sums.txt
|
||||||
|
</checksum>
|
||||||
|
<sig keys="7F2D434B9741E8AC"
|
||||||
|
keyserver="hkp://pool.sks-keyservers.net">
|
||||||
|
<xpath-ref select="./tarball" />.sig
|
||||||
|
</sig>
|
||||||
|
</source>
|
||||||
|
<source arch="i686">
|
||||||
|
<mirror>http://archlinux32.mirror.domain.tld</mirror>
|
||||||
|
<webroot>/iso/latest</webroot>
|
||||||
|
<tarball flags="glob,latest">
|
||||||
|
<xpath-ref select="./mirror" />/<xpath-ref select="./webroot" />/archlinux-bootstrap-*-i686.tar.gz
|
||||||
|
</tarball>
|
||||||
|
<checksum hash="sha512">
|
||||||
|
<xpath-ref select="./mirror" />/<xpath-ref select="./webroot" />/sha512sums.txt
|
||||||
|
</checksum>
|
||||||
|
<sig keys="248BF41F9BDD61D41D060AE774EDA3C6B06D0506"
|
||||||
|
keyserver="hkp://pool.sks-keyservers.net">
|
||||||
|
<xpath-ref select="./tarball" />.sig
|
||||||
|
</sig>
|
||||||
|
</source>
|
||||||
|
</sources>
|
||||||
|
<build its_full_of_stars="yes">
|
||||||
|
<paths>
|
||||||
|
<cache>/var/tmp/<xpath-ref select="//meta/names/uxname" /></cache>
|
||||||
|
<chroot>/var/tmp/chroots/<xpath-ref select="//meta/names/uxname" /></chroot>
|
||||||
|
<templates>~/<xpath-ref select="//meta/names/uxname" />/templates</templates>
|
||||||
|
<mount>/mnt/<xpath-ref select="//meta/names/uxname" /></mount>
|
||||||
|
<distros>~/<xpath-ref select="//meta/names/uxname" />/distros</distros>
|
||||||
|
<dest>~/<xpath-ref select="//meta/names/uxname" />/results</dest>
|
||||||
|
<iso><xpath-ref select="./dest" />/iso</iso>
|
||||||
|
<http><xpath-ref select="./dest" />/http</http>
|
||||||
|
<tftp><xpath-ref select="./dest" />/tftp</tftp>
|
||||||
|
<ssl><xpath-ref select="./dest" />/pki</ssl>
|
||||||
|
</paths>
|
||||||
|
<basedistro>archlinux</basedistro>
|
||||||
|
<iso sign="yes" sync="yes" multiarch="yes" rsync="yes"/>
|
||||||
|
<ipxe sign="yes" sync="yes" iso="yes" rsync="yes">
|
||||||
|
<ssl>
|
||||||
|
<ca><xpath-ref select="build/paths/ssl" />/ca.crt</ca>
|
||||||
|
<ca_key><xpath-ref select="build/paths/ssl" />/ca.key</ca_key>
|
||||||
|
<crt>
|
||||||
|
<xpath-ref select="build/paths/ssl" />/<xpath-ref select="//meta/names/uxname" />.crt
|
||||||
|
</crt>
|
||||||
|
<key>
|
||||||
|
<xpath-ref select="build/paths/ssl" />/<xpath-ref select="//meta/names/uxname" />.key
|
||||||
|
</key>
|
||||||
|
</ssl>
|
||||||
|
<uri><xpath-ref select="meta/dev/website" />/ipxe</uri>
|
||||||
|
</ipxe>
|
||||||
|
<gpg keyid="none" gnupghome="none" publish="no" sync="yes" />
|
||||||
|
<sync>
|
||||||
|
<http enabled="yes" rsync="yes" />
|
||||||
|
<tftp enabled="yes" rsync="yes" />
|
||||||
|
<rsync enabled="yes">
|
||||||
|
<user>root</user>
|
||||||
|
<path>/srv/http/<xpath-ref select="//meta/names/uxname" /></path>
|
||||||
|
<host>mirror.domain.tld</host>
|
||||||
|
<port>22</port>
|
||||||
|
<pubkey>~/.ssh/id_ed25519</pubkey>
|
||||||
|
</rsync>
|
||||||
|
</sync>
|
||||||
|
</build>
|
||||||
|
</profile>
|
||||||
|
</bdisk>
|
4
setup.py
4
setup.py
@ -2,10 +2,6 @@ from setuptools import setup
|
|||||||
|
|
||||||
import version
|
import version
|
||||||
|
|
||||||
# https://packaging.python.org/tutorials/distributing-packages/
|
|
||||||
# https://docs.python.org/3/distutils/apiref.html
|
|
||||||
# https://python-packaging.readthedocs.io/en/latest/minimal.html
|
|
||||||
# https://setuptools.readthedocs.io/en/latest/setuptools.html#new-and-changed-setup-keywords
|
|
||||||
setup(name = 'bdisk',
|
setup(name = 'bdisk',
|
||||||
version = version.BDISK_VERSION,
|
version = version.BDISK_VERSION,
|
||||||
description = ('An easy liveCD creator built in python. Supports hybrid '
|
description = ('An easy liveCD creator built in python. Supports hybrid '
|
||||||
|
Loading…
Reference in New Issue
Block a user