init
This commit is contained in:
		
							
								
								
									
										8
									
								
								.editorconfig
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								.editorconfig
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
				
			|||||||
 | 
					[*]
 | 
				
			||||||
 | 
					charset = utf-8
 | 
				
			||||||
 | 
					end_of_line = lf
 | 
				
			||||||
 | 
					insert_final_newline = true
 | 
				
			||||||
 | 
					trim_trailing_whitespace = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[*.v]
 | 
				
			||||||
 | 
					indent_style = tab
 | 
				
			||||||
							
								
								
									
										8
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
				
			|||||||
 | 
					* text=auto eol=lf
 | 
				
			||||||
 | 
					*.bat eol=crlf
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					*.v linguist-language=V
 | 
				
			||||||
 | 
					*.vv linguist-language=V
 | 
				
			||||||
 | 
					*.vsh linguist-language=V
 | 
				
			||||||
 | 
					v.mod linguist-language=V
 | 
				
			||||||
 | 
					.vdocignore linguist-language=ignore
 | 
				
			||||||
							
								
								
									
										24
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,24 @@
 | 
				
			|||||||
 | 
					# Binaries for programs and plugins
 | 
				
			||||||
 | 
					main
 | 
				
			||||||
 | 
					vdocserve
 | 
				
			||||||
 | 
					*.exe
 | 
				
			||||||
 | 
					*.exe~
 | 
				
			||||||
 | 
					*.so
 | 
				
			||||||
 | 
					*.dylib
 | 
				
			||||||
 | 
					*.dll
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Ignore binary output folders
 | 
				
			||||||
 | 
					bin/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Ignore common editor/system specific metadata
 | 
				
			||||||
 | 
					.DS_Store
 | 
				
			||||||
 | 
					.idea/
 | 
				
			||||||
 | 
					.vscode/
 | 
				
			||||||
 | 
					*.iml
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# ENV
 | 
				
			||||||
 | 
					.env
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# vweb and database
 | 
				
			||||||
 | 
					*.db
 | 
				
			||||||
 | 
					*.js
 | 
				
			||||||
							
								
								
									
										7
									
								
								v.mod
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								v.mod
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
				
			|||||||
 | 
					Module {
 | 
				
			||||||
 | 
						name: 'vdocserve'
 | 
				
			||||||
 | 
						description: 'Generate and serve module documentation'
 | 
				
			||||||
 | 
						version: '0.1.0'
 | 
				
			||||||
 | 
						license: 'MIT'
 | 
				
			||||||
 | 
						dependencies: []
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										42
									
								
								vdocserve.v
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								vdocserve.v
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,42 @@
 | 
				
			|||||||
 | 
					module main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import flag
 | 
				
			||||||
 | 
					import log
 | 
				
			||||||
 | 
					import net.http.file
 | 
				
			||||||
 | 
					import os
 | 
				
			||||||
 | 
					import rand
 | 
				
			||||||
 | 
					import v.vmod
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fn main() {
 | 
				
			||||||
 | 
						mut fp := flag.new_flag_parser(os.args)
 | 
				
			||||||
 | 
						fp.application('vdocserve')
 | 
				
			||||||
 | 
						fp.description('generate and serve V module HTML documentation')
 | 
				
			||||||
 | 
						fp.version('0.1.0')
 | 
				
			||||||
 | 
						fp.skip_executable()
 | 
				
			||||||
 | 
						fp.limit_free_args(0, 2)!
 | 
				
			||||||
 | 
						listen := fp.string('listen', u8(`l`), '127.0.0.1:4000', 'HTTP server listen address:port')
 | 
				
			||||||
 | 
						fp.finalize() or {
 | 
				
			||||||
 | 
							eprintln(err)
 | 
				
			||||||
 | 
							println(fp.usage())
 | 
				
			||||||
 | 
							exit(1)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						mut cache := vmod.get_cache()
 | 
				
			||||||
 | 
						modfile := cache.get_by_folder(os.getwd())
 | 
				
			||||||
 | 
						modname := vmod.from_file(modfile.vmod_file)!.name
 | 
				
			||||||
 | 
						docs_dir := os.join_path(os.temp_dir(), os.geteuid().str(), modname + '_docs_' +
 | 
				
			||||||
 | 
							rand.u16().hex())
 | 
				
			||||||
 | 
						log.info('generating HTML docs in temporary dir ${docs_dir}')
 | 
				
			||||||
 | 
						os.mkdir_all(docs_dir, mode: 0o755)!
 | 
				
			||||||
 | 
						os.execute_or_exit('v doc -f html -o ${docs_dir} -m . ')
 | 
				
			||||||
 | 
						sigint_callback := fn [docs_dir] (_ os.Signal) {
 | 
				
			||||||
 | 
							os.rmdir_all(docs_dir) or {
 | 
				
			||||||
 | 
								log.error('unable to delete temporary dir ${docs_dir}')
 | 
				
			||||||
 | 
								exit(1)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							eprintln('cleanup temporary data')
 | 
				
			||||||
 | 
							exit(0)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						os.signal_opt(.int, sigint_callback)!
 | 
				
			||||||
 | 
						log.info('starting docs server, use ^C to quit')
 | 
				
			||||||
 | 
						file.serve(folder: docs_dir, index_file: modname + '.html', on: listen)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user