Changeset 2139


Ignore:
Timestamp:
2011-06-21 18:05:32 (8 years ago)
Author:
tekrjant
Message:

The games are copied to a new directory for easier access.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2011/24/build_games.py

    r2138 r2139  
    22import os 
    33from os.path import * 
     4import shutil 
    45from shutil import * 
    56from glob import * 
    67from subprocess import * 
    78 
     9output_dir = abspath("pelit") 
    810lib_dir_x86 = abspath('lib\\x86') 
     11personal_dirs = [d for d in os.listdir(".") if isdir(d) and d not in ("lib", basename(output_dir), ".svn")] 
    912projects_that_did_not_build = [] 
    1013 
     
    1417 
    1518 
     19def create_output_directory(): 
     20        if not exists(output_dir): 
     21                os.mkdir(output_dir) 
     22        for d in personal_dirs: 
     23                if not exists(join(output_dir, d)): 
     24                        os.mkdir(join(output_dir, d)) 
     25 
    1626def build_games(): 
    17         for root, dirs, files in os.walk('.'): 
     27        for d in personal_dirs: 
     28                build_games_in_personal_dir(abspath(d)) 
     29 
     30 
     31def build_games_in_personal_dir(personal_dir): 
     32        for root, dirs, files in os.walk(personal_dir): 
    1833                if '.svn' in dirs: 
    1934                        dirs.remove('.svn') 
    2035                projects = glob(join(root, '*.csproj')) 
    2136                if projects: 
    22                         build(projects[0]) 
     37                        if len(projects) > 1: 
     38                                print "NOTE: There is more than one project file in", root 
     39                        if build(projects[0]): 
     40                                project_name = splitext(basename(projects[0]))[0] 
     41                                dst_dir = join(output_dir, basename(personal_dir)) 
     42                                copy_game(project_name, root, dst_dir) 
     43                                print basename(personal_dir) + ": " + project_name 
     44                        else: 
     45                                projects_that_did_not_build.append(projects[0]) 
    2346 
    2447 
    2548def build(project_file_path): 
    2649        build_cmd = 'msbuild /nologo /verbosity:quiet /p:Configuration=Release /p:"ReferencePath={0}" /t:Build "{1}"'.format(lib_dir_x86, project_file_path) 
    27         return_code = call(build_cmd, shell=True) 
    28         if return_code == 0: 
    29                 print basename(project_file_path) 
    30         else: 
    31                 projects_that_did_not_build.append(project_file_path) 
     50        return call(build_cmd, shell=True) == 0 
     51 
     52 
     53def copy_game(project_name, project_dir, dst_dir): 
     54        bin = join(project_dir, "bin\\x86\\Release") 
     55        if not exists(bin): 
     56                print "NO BIN DIR FOUND IN", project_dir 
     57        dst = join(dst_dir, project_name) 
     58        if exists(dst): 
     59                rmtree(dst) 
     60        copytree(bin, dst, ignore=shutil.ignore_patterns('.svn', '*.pdb', 'jypeli4.xml')) 
    3261 
    3362 
     
    3564        try: 
    3665                check_requirements() 
     66                create_output_directory() 
    3767                build_games() 
    3868        except KeyboardInterrupt: 
Note: See TracChangeset for help on using the changeset viewer.