--- a/trunk/cforge/cforge/Package/CFORGE/Scripts/action.svn.checkout.py +++ b/trunk/cforge/cforge/Package/CFORGE/Scripts/action.svn.checkout.py @@ -3,33 +3,51 @@ # set USER=<username> # set PASS=<password> # set URL=https://forge.codesys.com/svn/drv,gpio-mod,code/trunk/GPIOMods -# "C:\Program Files (x86)\3S CODESYS-V3.5.12.0\CODESYS\Common\CODESYS.exe" --profile="CODESYS V3.5 SP12" --runscript="%WD%\action.svn.checkout.py" --scriptargs="%USER% %PASS% %URL% %WD%" --noUI +# "C:\Program Files (x86)\3S CODESYS-V3.5.12.0\CODESYS\Common\CODESYS.exe" --profile="CODESYS V3.5 SP12" --runscript="%WD%\action.svn.checkout.py" --scriptargs="%URL% %USER% %PASS% %WD%" --noUI import sys import os.path +import pysvn -username=sys.argv[1] -password=sys.argv[2] -url=sys.argv[3] -path=sys.argv[4] -parts=os.path.basename(url).split(".") -filebase=(parts[-1] if parts[-1] != "" else parts[-2]) +if len(sys.argv) <= 1: + print("usage: <url> [<user> <pass> <working dir>]") + sys.exit() + +url = sys.argv[1] + +if len(sys.argv) > 3: + username = sys.argv[2] + password = sys.argv[3] +else: + credentials = system.ui.query_credentials("Enter SVN credentials") + username = credentials[0] + password = credentials[1] + +if len(sys.argv) > 4: + path = sys.argv[4] +else: + path = system.ui.browse_directory_dialog("Choose a checkout folder") def set_username(req): - print_all(req) req.username = username req.password = password req.save = True # Optional svn.auth_username_password += set_username +pysvn.svn_checkout_non_codesys(username, password, url, path) +cdsprojects = pysvn.svn_get_directories_with_codesys_projects(username, password, url) -# checkout as a library -svn.checkout(url, path, filebase + ".library") +for p in cdsprojects: + dirbase = path + "\\" + p.rstrip('/').replace("/", "\\") + filebase = os.path.basename(dirbase) + dir = os.path.dirname(dirbase) + svn.checkout(url + "/" + p, dir, filebase + ".library") + proj = projects.primary + if proj.find("Project Information"): + proj.save_as(dirbase + ".library") + else: + proj.save_as(dirbase + ".project") + proj.close() +system.exit() -# save as a library if, we find a "Project Information" -# otherwhise we asume, that this is a project file -proj = projects.primary -if proj.find("Project Information"): - proj.save_as(path + '\\' + filebase + ".library") -else: - proj.save_as(path + '\\' + filebase + ".project") +