feat: 1차 과제 프로젝트 코드 업로드
This commit is contained in:
1 parent
9cee9bf791
commit
9df1bcfc2a
12 files changed
+129
-6
No files matched your search
@@ -516,7 +516,9 @@ def initial_scene(model):
|
||||
return ''.join(result)
|
||||
|
||||
|
||||
def build(dxf=DEFAULT_DXF, output=ROOT / 'dist', update_entry=True):
|
||||
def build(dxf=DEFAULT_DXF, output=ROOT / 'dist', update_entry=True, port=8000):
|
||||
if not isinstance(port, int) or not 1 <= port <= 65535:
|
||||
raise ValueError('포트는 1~65535 사이의 정수여야 합니다.')
|
||||
dxf, output = Path(dxf).resolve(), Path(output).resolve()
|
||||
if output == ROOT or output == ROOT / 'drawing':
|
||||
raise ValueError('출력 폴더는 dist 같은 별도 폴더로 지정해 주세요.')
|
||||
@@ -524,6 +526,7 @@ def build(dxf=DEFAULT_DXF, output=ROOT / 'dist', update_entry=True):
|
||||
model, svg = payload['model'], payload['drawingSvg']
|
||||
output.mkdir(parents=True, exist_ok=True)
|
||||
template = (ROOT / 'web' / 'viewer.html').read_text(encoding='utf-8')
|
||||
template = template.replace('__SERVER_PORT__', str(port)).replace('http://localhost:8000/', f'http://localhost:{port}/')
|
||||
template = template.replace('__VIEWER_JS__', (ROOT / 'web' / 'viewer.js').read_text(encoding='utf-8'))
|
||||
template = template.replace('__INITIAL_SCENE__', initial_scene(model)).replace('__DXF_HREF__', './drawing/' + html.escape(dxf.name, quote=True))
|
||||
page = template.replace('__MODEL_JSON__', json.dumps(model, ensure_ascii=False, separators=(',', ':')).replace('<', '\\u003c')).replace('__DRAWING_SVG__', svg)
|
||||
@@ -545,11 +548,11 @@ def main():
|
||||
parser.add_argument('command', choices=['build', 'serve'], nargs='?', default='serve')
|
||||
parser.add_argument('--dxf', type=Path, default=DEFAULT_DXF)
|
||||
parser.add_argument('--output', type=Path, default=ROOT / 'dist')
|
||||
parser.add_argument('--host', default='127.0.0.1', help='다른 기기에서 접속하려면 0.0.0.0')
|
||||
parser.add_argument('--host', default='0.0.0.0', help='수신 주소 (기본: 0.0.0.0, 로컬 전용: 127.0.0.1)')
|
||||
parser.add_argument('--port', type=int, default=8000)
|
||||
args = parser.parse_args()
|
||||
try:
|
||||
build(args.dxf, args.output)
|
||||
build(args.dxf, args.output, port=args.port)
|
||||
if args.command == 'serve':
|
||||
handler = functools.partial(ViewerHandler, directory=str(args.output.resolve()))
|
||||
with http.server.ThreadingHTTPServer((args.host, args.port), handler) as server:
|
||||
|
||||
Reference in new issue
Block a user