Example #1
0
def run():
    """
    console_scripts
    """
    if not len(sys.argv) > 1:
        option = 'help'
    else:
        option = sys.argv[1]

    if option in ['help', '-h', '--help']:
        usage()

    elif option == 'show':
        Bundler.load()
        Bundler.show()
    elif option == 'install':
        Bundler.load()
        Bundler.install()
    elif option == 'upgrade':
        if len(sys.argv) > 2:
            filter = None if sys.argv[2] == 'all' else sys.argv[2]
        else:
            filter = None
        Bundler.load()
        Bundler.upgrade(filter=filter)
    elif option == 'selfupdate':
        Bundler.selfupdate()
    elif option == 'exec':
        if 3 > len(sys.argv):
            print colored('file is not given', COLOR_WARNING)
            exit(1)
        Bundler.load()
        Bundler.execute(sys.argv[2])
    else:
        usage()
Example #2
0
 def execute(cls, target):
     # TODO: unstable & not well tested
     if os.path.isfile(target):
         execfile(target)
     else:
         print colored('Not executable file', COLOR_WARNING)
         exit(1)  # fail
Example #3
0
    def resolve(cls, distname, version, source=None):
        """
        Check a dependent package

        Parameters:
            - distname: package name
            - version
        Return:
            True if the dependency resolved
        """
        try:
            version = version or ''
            get_distribution(distname + version)
            cls.dependencies[distname] = (version, source)
        except VersionConflict:
            version = version or 'any'
            print "%s: %s(%s)" % (WARNING_VERSION_CONFLICT, colored(distname, COLOR_INFO), colored(version, COLOR_INFO))
            cls.terminate = True
            cls.unresolved[distname] = (version, source)
            return False
        except DistributionNotFound:
            version = version or 'any'
            print "%s: %s(%s)" % (WARNING_NOT_FOUND, colored(distname, COLOR_INFO), colored(version, COLOR_INFO))
            cls.terminate = True
            cls.unresolved[distname] = (version, source)
            return False

        return True
Example #4
0
    def show(cls):
        """
        Display resolved packages
        """
        if len(cls.dependencies.keys()) > 0:
            print "\nResolved:"

        for distname in cls.dependencies.keys():
            version = cls.dependencies[distname][0] or 'any'
            print "  %s(%s)" % (distname, version)

        print "%s %s" % (colored(len(cls.dependencies), COLOR_INFO), colored('package(s)', COLOR_INFO))
Example #5
0
    def install(cls):
        """
        Install all dependencies
        """
        if len(cls.unresolved.keys()) > 0:
            print colored("\nStart resolving...", COLOR_INST)
        else:
            print "No unresolved package"
            return

        for distname in cls.unresolved.keys():
            version = cls.unresolved[distname][0]
            source = cls.unresolved[distname][1]
            print "%s %s(%s)..." % (colored('installing', COLOR_INST), distname, version)
            if 'any' == version:
                version = ''
            cls._run_pip_(distname, version, source)
Example #6
0
 def upgrade(cls, filter=None):
     # TODO: If filter is None, slowly...
     for distname, (version, source) in cls.dependencies.iteritems():
         if filter and not distname == filter:
             continue
         print "%s %s(%s)..." % (colored('installing', COLOR_INST), distname, version)
         if 'any' == version:
             version = ''
         cls._run_pip_(distname, version, source=source, options=['--upgrade'])
Example #7
0
def inspect(pyfile):
    """
    Inspection

    Use with your own script:
        import tbundler
        tbundler.inspect('path/to/pyfile')

        # your code here

    The script may be terminated if dependencies are not resolved
    """
    Bundler.load(pyfile)
    execfile(pyfile)
    if Bundler.terminate:
        print colored("""
Your programm is terminated
Before run the program, make sure resolve all the dependencies on $PYTHONPATH
""", COLOR_WARNING)
        exit(1)
Example #8
0
 def load(cls, pyfile=LOCK_FILE):
     if os.path.isfile(pyfile):
         execfile(cls.LOCK_FILE)
     else:
         print colored('No PyFile exists', COLOR_WARNING)
         exit(1)  # fail