def execute_run(self, command):
        print '\n'
        current_directory = os.getcwd()

        if self.changedir:
            os.chdir(self.program_path)

        if not self.log:
            tempname = current_directory + '/make-templog.txt'
        else:
            tempname = os.path.abspath(self.log)
        TEMPFILE = open(tempname, 'wb')            

        if self.makelog:
            if not (metadata.makelog_started and os.path.isfile(self.makelog)):
                raise CritError(messages.crit_error_nomakelog % self.makelog)

            # Open main log file
            try:
                LOGFILE = open(self.makelog, 'ab')
            except Exception as errmsg:
                print errmsg
                raise CritError(messages.crit_error_log % self.makelog)

            try:
            # Execute command and print content to LOGFILE
                print 'Executing: ', command
                print >>LOGFILE, '\n\nExecute: ', command
                subprocess.check_call(command, shell = True, stdout = TEMPFILE, stderr = TEMPFILE)
                TEMPFILE.close()
                LOGFILE.write(open(tempname, 'rU').read())
                LOGFILE.close()
            except Exception as errmsg:
            # If fails then print errors to LOGFILE
                TEMPFILE.close()
                LOGFILE.write(open(tempname, 'rU').read())
                print messages.crit_error_bad_command % command, '\n', str(errmsg)
                print >> LOGFILE, messages.crit_error_bad_command % command, '\n', str(errmsg)
                LOGFILE.close()
        else:
            try:
            # Execute command
                print 'Executing: ', command
                subprocess.check_call(command, shell = True, stdout = TEMPFILE, stderr = TEMPFILE)
                TEMPFILE.close()
            except Exception as errmsg:
            # If fails then print errors
                TEMPFILE.close()
                print messages.crit_error_bad_command % command, '\n', str(errmsg)
                print >> TEMPFILE, messages.crit_error_bad_command % command, '\n', str(errmsg)

        if not self.log:
            os.remove(tempname)
        if self.changedir:
            os.chdir(current_directory)
    def get_asset_data(self):
        import requests
        split_url = urlparse.urlsplit(self.url)
        path = split_url.path
        path = path.split("/")
        clean_path = []
        assetid = None

        for i in range(len(path)):
            if bool(path[i]):
                clean_path.append(path[i])
        if len(clean_path) != 6:
            raise SyntaxError(messages.syn_error_url)

        organization, repo, releases, download, tag, assetname = clean_path
        prelim_path = "https://" + self.token + ":@api.github.com/repos/"
        paste_prelim = "https://" + "[token]" + ":@api.github.com/repos/"
        releasepath         = prelim_path  + organization + "/" + repo + "/" + \
                              releases + "/" + "tags" + "/" + tag
        releasepath_paste   = paste_prelim + organization + "/" + repo + "/" + \
                              releases + "/" + "tags" + "/" + tag

        # Accessing GitHub API for asset ID
        try:
            s = requests.session()
            json_release = s.get(releasepath)
            json_output = json_release.content
            json_split = json_output.split(",")
            json_name = '"name":"' + assetname + '"'
        except:
            raise CritError(messages.crit_error_github % releasepath_paste)

        # Finding asset ID in JSON output
        for i in range(len(json_split)):
            if json_split[i] == json_name:
                assetid = json_split[i - 1]
                assetid = assetid.split(":")
                assetid = assetid[1]

        # Creating download url
        if assetid is None:
            raise CritError(messages.crit_error_assetid % (assetname, tag))
        else:
            assetpath       = prelim_path  + organization + "/" + repo + "/" + \
                              releases + "/" + "assets" + "/" + assetid
            paste_assetpath = paste_prelim + organization + "/" + repo + "/" + \
                              releases + "/" + "assets" + "/" + assetid

        self.url = assetpath
        self.paste_url = paste_assetpath
        self.file = assetname
Esempio n. 3
0
def add_error_to_log(makelog):
    if not makelog: return
    if not (metadata.makelog_started and os.path.isfile(makelog)):
        raise CritError(messages.crit_error_nomakelog % makelog)
    LOGFILE = open(makelog, 'ab')
    print_error(LOGFILE)
    LOGFILE.close()
    def error_check(self, prog):
        if (self.osname != 'posix') & (self.osname != 'nt'):
            raise CritError(messages.crit_error_unknown_system % self.osname)

        ext = metadata.extensions[prog]
        if self.program_ext == '':
            self.program_ext = ext

        if self.program_ext:
            self.program = self.program_name + self.program_ext
            self.program_full = os.path.join(self.program_path, self.program)

            if not os.path.isfile(self.program_full):
                raise CritError(messages.crit_error_no_file % self.program_full)
            if self.program_ext != ext:
                raise CritError(messages.crit_error_extension % self.program_full)
 def option_overlap_error_check(self, kwargs):
     prog = [prog for prog, ext in metadata.extensions.iteritems() if ext == self.program_ext][0]
     option_overlaps = metadata.option_overlaps.get(prog)
     if not option_overlaps: return
     for opt in option_overlaps:
         if self.option_dict.has_key(option_overlaps[opt]) and kwargs.has_key(opt):
             raise CritError(messages.crit_error_option_overlap
                             % (opt, option_overlaps[opt]))
Esempio n. 6
0
    def move_log(self, default_log):
        if self.makelog:
            if not (metadata.makelog_started and os.path.isfile(self.makelog)):
                raise CritError(messages.crit_error_nomakelog % self.makelog)
            if os.path.abspath(default_log) != os.path.abspath(self.log):
                # Append default_log to main log
                LOGFILE = open(self.makelog, 'ab')
                try:
                    LOGFILE.write(open(default_log, 'rU').read())
                except Exception as errmsg:
                    print errmsg
                    raise CritError(messages.crit_error_no_file % default_log)
                LOGFILE.close()

        # Save default_log as self.log
        if self.log:
            shutil.copy2(default_log, self.log)
        os.remove(default_log)
 def command(self, quiet):
     try:
         shutil.copy('%s%s' % (self.dir, self.file),
                     '%s%s' % (self.outdir, self.outfile))
         print >> self.logfile, messages.success_copy % (
             self.dir, self.file, self.outdir, self.outfile)
     except:
         raise CritError(messages.crit_error_copyincomplete %
                         (self.dir, self.file))
Esempio n. 8
0
def end_logging(LOGFILE, makelog, logtype):
    time_end = datetime.datetime.now().replace(microsecond=0)
    print >> LOGFILE, messages.note_logend % logtype, time_end
    LOGFILE.close()
    if not makelog: return
    if not (metadata.makelog_started and os.path.isfile(makelog)):
        raise CritError(messages.crit_error_nomakelog % makelog)
    MAKE_LOGFILE = open(makelog, 'ab')
    MAKE_LOGFILE.write(open(LOGFILE.name, 'rU').read())
    MAKE_LOGFILE.close()
    os.remove(LOGFILE.name)
Esempio n. 9
0
def input_to_array(filename):
    # Import file
    try:
        FILENAME = open(filename, 'rU')
    except:
        raise CritError(messages.crit_error_file % filename)

    # Delete header
    filearray = []
    for line in FILENAME:
        if (not re.match('rev', line) and not re.match('linkpath', line)
                and not re.match('\s*\#', line) and not re.match('\s*$', line)
                and not re.match('url', line)):
            filearray.append(line.rstrip('\n'))
    FILENAME.close()

    return filearray
Esempio n. 10
0
    def error_check(self, prog):
        if (self.osname != 'posix') & (self.osname != 'nt'):
            raise CritError(messages.crit_error_unknown_system % self.osname)

        if self.package and not os.path.isfile(self.package):
            raise CritError(messages.crit_error_no_package % self.package)