Host-customized fork of https://github.com/tecnovert/basicswap/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

91 lines
3.3 KiB

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Copyright (c) 2023 tecnovert
# Distributed under the MIT software license, see the accompanying
# file LICENSE or http://www.opensource.org/licenses/mit-license.php.
"""
Join docker compose fragments
"""
__version__ = '0.1'
import os
import argparse
def get_bkp_offset(filename, ext='yml'):
for i in range(1000):
if not os.path.exists(f'{filename}_bkp_{i}.{ext}'):
return i
raise ValueError(f'Unable to get backup filename for: {filename}.{ext}')
def main():
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument('-v', '--version', action='version',
version='%(prog)s {version}'.format(version=__version__))
parser.add_argument('-c', '--coins', nargs='+', help='<Required> Select coins', required=True)
parser.add_argument('--withscript', dest='withscript', help='Add container to run createoffers.py (default=false)', required=False, action='store_true')
args = parser.parse_args()
with_coins = ['particl', ]
for coin_name in args.coins:
parsed_name = coin_name.lower()
if parsed_name not in with_coins:
with_coins.append(parsed_name)
print('Preparing docker compose files with coins:', ','.join(with_coins))
num_docker_compose = get_bkp_offset('docker-compose')
num_docker_compose_prepare = get_bkp_offset('docker-compose-prepare')
if os.path.exists('docker-compose.yml'):
os.rename('docker-compose.yml', f'docker-compose_bkp_{num_docker_compose}.yml')
if os.path.exists('docker-compose-prepare.yml'):
os.rename('docker-compose-prepare.yml', f'docker-compose-prepare_bkp_{num_docker_compose_prepare}.yml')
fragments_dir = 'compose-fragments'
with open('docker-compose.yml', 'wb') as fp, open('docker-compose-prepare.yml', 'wb') as fpp:
with open(os.path.join(fragments_dir, '0_start.yml'), 'rb') as fp_in:
for line in fp_in:
fp.write(line)
fpp.write(line)
for coin_name in with_coins:
if coin_name == 'particl':
# Nothing to do
continue
if coin_name == 'monero':
with open(os.path.join(fragments_dir, '1_monero-wallet.yml'), 'rb') as fp_in:
for line in fp_in:
fp.write(line)
fpp.write(line)
with open(os.path.join(fragments_dir, '8_monero-daemon.yml'), 'rb') as fp_in:
for line in fp_in:
fp.write(line)
continue
with open(os.path.join(fragments_dir, f'1_{coin_name}.yml'), 'rb') as fp_in:
for line in fp_in:
fp.write(line)
fpp.write(line)
with open(os.path.join(fragments_dir, '8_swapclient.yml'), 'rb') as fp_in:
for line in fp_in:
fp.write(line)
if args.withscript:
with open(os.path.join(fragments_dir, '8_script.yml'), 'rb') as fp_in:
for line in fp_in:
fp.write(line)
with open(os.path.join(fragments_dir, '9_swapprepare.yml'), 'rb') as fp_in:
for line in fp_in:
fpp.write(line)
print('Done.')
if __name__ == '__main__':
main()