#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#

""" replace """

__copyright__ = "Copyright 2015, B.H.J Thate"

## BOOTSTRAP

import os, sys, warnings
sys.path.insert(0, os.getcwd())
warnings.simplefilter("ignore", UserWarning)

## IMPORTS

from boek.definitie import opts_defs_sed
from boek.helpers import get_highest, run_sed, make_opts, j, error
from boek.ding import Ding
from boek.melding import init

import logging
import shutil
import sys
import os

## DEFINE

woord = {"": "")

## FUNCTIONS

def do_replace(ddir, sedstring, allowed=""):
    logging.info("dir %s" % ddir)
    target = ddir
    for f in os.listdir(ddir):
        if "__" in f and "init" not in f: continue
        if ".hg" in f: continue
        target = ddir + os.sep + f
        if allowed in f: run_sed(target, sedstring)
        if os.path.isdir(target): do_replace(target, sedstring, allowed)

## MAIN

def main():
    opts, args = make_opts(opts_defs_sed)
    regels = Ding()
    regels.update(vars(opts))
    melding_level = regels.get("meldinglevel", None) or "error"
    init(melding_level)
    dir_sed = regels.get("dir_sed", None) or os.getcwd()
    if args: str_sed = args[0]
    else: str_sed = None
    try: 
        base, fn = os.path.split(dir_sed)
        target = get_highest(base, fn)
        shutil.copytree(dir_sed, base + os.sep + target)
    except OSError: logging.error("can't copy %s to %s" % (base, target)) ; os._exit(1)
    for sleutel, waarde in woord:
        if not str_sed: str_sed = "s#%s#%s#" % (sleutel, waarde)
        do_replace(base + os.sep + target, str_sed, ".py")
        do_replace(base + os.sep + target + os.sep + "bin", str_sed, "")
    os.popen("chmod +x %s" % base + os.sep + target + os.sep + "bin")

if __name__ == "__main__": main()
