# Path: confduino/liblist.py
# def libraries_dir():
#     """return library root path.
# 
#     $ARDUINO/libraries
# 
#     """
#     x = arduino_path() / 'libraries'
#     assert x.exists(), x
#     return x
# 
# Path: confduino/util.py
# def tmpdir(directory=None, suffix=''):
#     x = tempfile.mkdtemp(suffix=suffix, prefix='confduino_', dir=directory)
#     return path(x)
# 
# def download(url):
#     log.debug('downloading %s', url)
#     f, _ = urllib.urlretrieve(url)
#     log.debug('downloaded file: %s', f)
#     return f
# 
# def clean_dir(root):
#     '''remove .* and _* files and directories under root'''
#     for x in root.walkdirs('.*', errors='ignore'):
#         x.rmtree()
#     for x in root.walkdirs('_*', errors='ignore'):
#         x.rmtree()
# 
#     for x in root.walkfiles('.*', errors='ignore'):
#         x.remove()
#     for x in root.walkfiles('_*', errors='ignore'):
#         x.remove()
# 
# class ConfduinoError(Exception):
#     pass


from confduino.liblist import libraries_dir
from confduino.util import tmpdir, download, clean_dir, ConfduinoError
from entrypoint2 import entrypoint
from path import Path as path
from pyunpack import Archive
import logging
    """install library from web or local files system.

    :param url: web address or file path
    :param replace_existing: bool
    :rtype: None

    """
    d = tmpdir(tmpdir())
    f = download(url)
    Archive(f).extractall(d)

    clean_dir(d)
    d, src_dlib = find_lib_dir(d)
    move_examples(d, src_dlib)
    fix_examples_dir(src_dlib)
    if fix_wprogram:
        fix_wprogram_in_files(src_dlib)

    targ_dlib = libraries_dir() / src_dlib.name
    if targ_dlib.exists():
        log.debug('library already exists: %s', targ_dlib)
        if replace_existing:
            log.debug('remove %s', targ_dlib)
            targ_dlib.rmtree()
        else:
            raise ConfduinoError('library already exists:' + targ_dlib)

    log.debug('move %s -> %s', src_dlib, targ_dlib)
    src_dlib.move(targ_dlib)


# Path: confduino/liblist.py
# def libraries_dir():
#     """return library root path.
# 
#     $ARDUINO/libraries
# 
#     """
#     x = arduino_path() / 'libraries'
#     assert x.exists(), x
#     return x
# 
# Path: confduino/util.py
# def tmpdir(directory=None, suffix=''):
#     x = tempfile.mkdtemp(suffix=suffix, prefix='confduino_', dir=directory)
#     return path(x)
# 
# def download(url):
#     log.debug('downloading %s', url)
#     f, _ = urllib.urlretrieve(url)
#     log.debug('downloaded file: %s', f)
#     return f
# 
# def clean_dir(root):
#     '''remove .* and _* files and directories under root'''
#     for x in root.walkdirs('.*', errors='ignore'):
#         x.rmtree()
#     for x in root.walkdirs('_*', errors='ignore'):
#         x.rmtree()
# 
#     for x in root.walkfiles('.*', errors='ignore'):
#         x.remove()
#     for x in root.walkfiles('_*', errors='ignore'):
#         x.remove()
# 
# class ConfduinoError(Exception):
#     pass


# Path: confduino/libinstall.py
from confduino.liblist import libraries_dir
from confduino.util import tmpdir, download, clean_dir, ConfduinoError
from entrypoint2 import entrypoint
from path import Path as path
from pyunpack import Archive
import logging

    """install library from web or local files system.

    :param url: web address or file path
    :param replace_existing: bool
    :rtype: None

    """
    d = tmpdir(tmpdir())
    f = download(url)
    Archive(f).extractall(d)

    clean_dir(d)
    d, src_dlib = find_lib_dir(d)
    move_examples(d, src_dlib)
    fix_examples_dir(src_dlib)
    if fix_wprogram:
        fix_wprogram_in_files(src_dlib)

    targ_dlib = libraries_dir() / src_dlib.name
    if targ_dlib.exists():
        log.debug('library already exists: %s', targ_dlib)
        if replace_existing:
            log.debug('remove %s', targ_dlib)
            targ_dlib.rmtree()
        else:
            raise ConfduinoError('library already exists:' + targ_dlib)

    log.debug('move %s -> %s', src_dlib, targ_dlib)
    src_dlib.move(targ_dlib)


    libraries_dir().copymode(targ_dlib)