3 \@sddlZddlZddlZddlZddlZddlZddlZdddgZdZej j drXdZ nej Z Gddde Zejd d Zd d Zdd dZdddZddZdddZedkredS)N ZipAppErrorcreate_archiveget_interpreterz8# -*- coding: utf-8 -*- import {module} {module}.{fn}() winzutf-8c@s eZdZdS)rN)__name__ __module__ __qualname__r r /usr/lib64/python3.6/zipapp.pyr!sc csFt|tjrt|}t|tr|sz!create_archive...css|]}|jVqdS)N)r*)r+r,r r r r-}szInvalid entry point: )modulefnz.pyzrrw*zutf-8)hasattrr r is_filer(existsr partitionallsplit MAIN_TEMPLATEformatZ with_suffixrrzipfileZZipFileZrglobrZ relative_torZwritestrrr"r#r$r%)sourcetargetrmainZsource_is_fileZhas_mainZmain_pymodsepr0Zmod_okZfn_okfdzrootZchildZarcnamer r r rNsP           &c Cs:t|d&}|jddkr,|jjjtSWdQRXdS)Nrrs#!)rrrstripdecoder)rrr r r rs cCs ddl}|j}|jddddd|jdddd d|jd d dd d|jd dddd|jddd|j|}|jrtjj|jst dt |j}t dj |pdt jdtjj|jr|jdkstjj|jrtjj|j|jrt d|jrt dt|j|j|j|jddS)zRun the zipapp command line interface. The ARGS parameter lets you specify the argument list directly. Omitting ARGS (or setting it to None) works as for argparse, using sys.argv[1:] as the argument list. rNz--outputz-ozAThe name of the output archive. Required if SOURCE is an archive.)defaulthelpz--pythonz-pzEThe name of the Python interpreter to use (default: no shebang line).z--mainz-mzLThe main function of the application (default: use an existing __main__.py).z--infoF store_truez)Display the interpreter from the archive.)rFactionrGr<z'Source directory (or existing archive).)rGz%Can only get info for an archive filezInterpreter: {}zz-In-place editing of archives is not supportedz,Cannot change the main function when copying)rr>)argparseArgumentParser add_argument parse_argsinfor!pathisfiler< SystemExitrprintr:sysexitoutputr5samefiler>rpython)argsrJparserrr r r r>s6        r>__main__)N)NNN)N) contextlibr!r r r#rSr;__all__r9platform startswithrgetfilesystemencoding ValueErrorrcontextmanagerrrr(rrr>rr r r r s(     G -