From 362c21de067db34e681b2fd93de30b81e6c6b920 Mon Sep 17 00:00:00 2001 From: Larpon Date: Sat, 9 Jan 2021 22:47:58 +0100 Subject: [PATCH] vdoc: remove http doc server (#7984) --- cmd/tools/vdoc/html.v | 25 +++++----- cmd/tools/vdoc/httpserver.v | 95 ------------------------------------- cmd/tools/vdoc/vdoc.v | 35 +------------- 3 files changed, 16 insertions(+), 139 deletions(-) delete mode 100644 cmd/tools/vdoc/httpserver.v diff --git a/cmd/tools/vdoc/html.v b/cmd/tools/vdoc/html.v index 5671916f81..6998edc2f2 100644 --- a/cmd/tools/vdoc/html.v +++ b/cmd/tools/vdoc/html.v @@ -127,23 +127,24 @@ fn (vd VDoc) render_search_index(out Output) { os.write_file(out_file_path, js_search_index.str() + js_search_data.str()) } -fn (mut vd VDoc) render_static_html(serve_via_http bool, out Output) { +fn (mut vd VDoc) render_static_html(out Output) { vd.assets = { - 'doc_css': vd.get_resource(css_js_assets[0], true, out) - 'normalize_css': vd.get_resource(css_js_assets[1], true, out) - 'doc_js': vd.get_resource(css_js_assets[2], !serve_via_http, out) - 'dark_mode_js': vd.get_resource(css_js_assets[3], !serve_via_http, out) - 'light_icon': vd.get_resource('light.svg', true, out) - 'dark_icon': vd.get_resource('dark.svg', true, out) - 'menu_icon': vd.get_resource('menu.svg', true, out) - 'arrow_icon': vd.get_resource('arrow.svg', true, out) + 'doc_css': vd.get_resource(css_js_assets[0], out) + 'normalize_css': vd.get_resource(css_js_assets[1], out) + 'doc_js': vd.get_resource(css_js_assets[2], out) + 'dark_mode_js': vd.get_resource(css_js_assets[3], out) + 'light_icon': vd.get_resource('light.svg', out) + 'dark_icon': vd.get_resource('dark.svg', out) + 'menu_icon': vd.get_resource('menu.svg', out) + 'arrow_icon': vd.get_resource('arrow.svg', out) } } -fn (vd VDoc) get_resource(name string, minify bool, out Output) string { +fn (vd VDoc) get_resource(name string, out Output) string { cfg := vd.cfg path := os.join_path(res_path, name) mut res := os.read_file(path) or { panic('vdoc: could not read $path') } + /* if minify { if name.ends_with('.js') { res = js_compress(res) @@ -151,6 +152,7 @@ fn (vd VDoc) get_resource(name string, minify bool, out Output) string { res = res.split_into_lines().map(it.trim_space()).join('') } } + */ // TODO: Make SVG inline for now if cfg.inline_assets || path.ends_with('.svg') { return res @@ -482,6 +484,7 @@ fn html_tag_escape(str string) string { return str.replace_each(['<', '<', '>', '>']) } +/* fn js_compress(str string) string { mut js := strings.new_builder(200) lines := str.split_into_lines() @@ -503,7 +506,7 @@ fn js_compress(str string) string { js.free() return js_str } - +*/ fn write_toc(dn doc.DocNode, mut toc strings.Builder) { mut toc_slug := if dn.name.len == 0 || dn.content.len == 0 { '' } else { slug(dn.name) } if toc_slug == '' && dn.children.len > 0 { diff --git a/cmd/tools/vdoc/httpserver.v b/cmd/tools/vdoc/httpserver.v deleted file mode 100644 index f67dc82a18..0000000000 --- a/cmd/tools/vdoc/httpserver.v +++ /dev/null @@ -1,95 +0,0 @@ -module main - -import io -import net -import strings - -fn (mut vd VDoc) serve_html(out Output) { - cfg := vd.cfg - if out.typ == .html { - vd.render_static_html(true, out) - } - docs := vd.render(out) - dkeys := docs.keys() - if dkeys.len < 1 { - eprintln('no documentation created, the module has no `pub` functions') - exit(1) - } - def_name := docs.keys()[0] - server_url := 'http://localhost:' + cfg.server_port.str() - server := net.listen_tcp(cfg.server_port) or { panic(err) } - println('Serving docs on: $server_url') - if cfg.open_docs { - open_url(server_url) - } - content_type := match out.typ { - .html { 'text/html' } - .markdown { 'text/markdown' } - .json { 'application/json' } - else { 'text/plain' } - } - server_context := VdocHttpServerContext{ - docs: docs - content_type: content_type - default_filename: def_name - } - for { - mut conn := server.accept() or { - server.close() or { } - panic(err) - } - handle_http_connection(mut conn, server_context) - conn.close() or { eprintln('error closing the connection: $err') } - } -} - -struct VdocHttpServerContext { - docs map[string]string - content_type string - default_filename string -} - -fn handle_http_connection(mut con net.TcpConn, ctx &VdocHttpServerContext) { - mut reader := io.new_buffered_reader(reader: io.make_reader(con)) - first_line := reader.read_line() or { - send_http_response(mut con, 501, ctx.content_type, 'bad request') - return - } - request_parts := first_line.split(' ') - if request_parts.len != 3 { - send_http_response(mut con, 501, ctx.content_type, 'bad request') - return - } - urlpath := request_parts[1] - filename := if urlpath == '/' { - ctx.default_filename.trim_left('/') - } else { - urlpath.trim_left('/') - } - if ctx.docs[filename].len == 0 { - send_http_response(mut con, 404, ctx.content_type, 'file not found') - return - } - send_http_response(mut con, 200, ctx.content_type, ctx.docs[filename]) -} - -fn send_http_response(mut con net.TcpConn, http_code int, content_type string, html string) { - content_length := html.len.str() - shttp_code := http_code.str() - mut http_response := strings.new_builder(20000) - http_response.write('HTTP/1.1 ') - http_response.write(shttp_code) - http_response.write(' OK\r\n') - http_response.write('Server: VDoc\r\n') - http_response.write('Content-Type: ') - http_response.write(content_type) - http_response.write('\r\n') - http_response.write('Content-Length: ') - http_response.write(content_length) - http_response.write('\r\n') - http_response.write('Connection: close\r\n') - http_response.write('\r\n') - http_response.write(html) - sresponse := http_response.str() - con.write_str(sresponse) or { eprintln('error sending http response: $err') } -} diff --git a/cmd/tools/vdoc/vdoc.v b/cmd/tools/vdoc/vdoc.v index 67db6fa709..280083365b 100644 --- a/cmd/tools/vdoc/vdoc.v +++ b/cmd/tools/vdoc/vdoc.v @@ -47,14 +47,11 @@ mut: local_filename string local_pos int show_loc bool // for plaintext - serve_http bool // for html is_multi bool is_vlib bool is_verbose bool include_readme bool include_examples bool = true - open_docs bool - server_port int = 8046 inline_assets bool no_timestamp bool output_path string @@ -336,14 +333,10 @@ fn (mut vd VDoc) generate_docs_from_file() { docs << vd.docs.filter(it.head.name != 'builtin') vd.docs = docs } - if cfg.serve_http { - vd.serve_html(out) - return - } vd.vprintln('Rendering docs...') if out.path.len == 0 || out.path == 'stdout' { if out.typ == .html { - vd.render_static_html(cfg.serve_http, out) + vd.render_static_html(out) } outputs := vd.render(out) if outputs.len == 0 { @@ -370,7 +363,7 @@ fn (mut vd VDoc) generate_docs_from_file() { } } if out.typ == .html { - vd.render_static_html(cfg.serve_http, out) + vd.render_static_html(out) } vd.render_parallel(out) println('Creating search index...') @@ -433,9 +426,6 @@ fn parse_arguments(args []string) Config { cfg.output_path = if opath == 'stdout' { opath } else { os.real_path(opath) } i++ } - '-open' { - cfg.open_docs = true - } '-pos' { if !cfg.is_local { eprintln('vdoc: `-pos` is only allowed with `-filename` flag.') @@ -444,27 +434,6 @@ fn parse_arguments(args []string) Config { cfg.local_pos = cmdline.option(current_args, '-pos', '').int() i++ } - '-p' { - s_port := cmdline.option(current_args, '-p', '') - s_port_int := s_port.int() - if s_port.len == 0 { - eprintln('vdoc: No port number specified on "-p".') - exit(1) - } - if s_port != s_port_int.str() { - eprintln('vdoc: Invalid port number.') - exit(1) - } - cfg.server_port = s_port_int - i++ - } - '-s' { - cfg.inline_assets = true - cfg.serve_http = true - if cfg.output_type == .unset { - cfg.output_type = .html - } - } '-no-timestamp' { cfg.no_timestamp = true }