Proper man pages #218
			
				
			
		
		
		
	|  | @ -26,3 +26,4 @@ gdb.txt | ||||||
| 
 | 
 | ||||||
| # Generated docs | # Generated docs | ||||||
| _docs/ | _docs/ | ||||||
|  | /man/ | ||||||
|  |  | ||||||
|  | @ -0,0 +1,36 @@ | ||||||
|  | platform: 'linux/amd64' | ||||||
|  | branches: | ||||||
|  |   exclude: [ main ] | ||||||
|  | 
 | ||||||
|  | depends_on: | ||||||
|  |   - build | ||||||
|  | 
 | ||||||
|  | skip_clone: true | ||||||
|  | 
 | ||||||
|  | pipeline: | ||||||
|  |   generate: | ||||||
|  |     image: 'chewingbever/vlang:latest' | ||||||
|  |     pull: true | ||||||
|  |     commands: | ||||||
|  |       - curl -o vieter -L "https://s3.rustybever.be/vieter/commits/$CI_COMMIT_SHA/vieter-linux-amd64" | ||||||
|  |       - chmod +x vieter | ||||||
|  |       - ./vieter man man | ||||||
|  |       - cd man | ||||||
|  | 
 | ||||||
|  |       # Generate an HTML page from each man page | ||||||
|  |       - for f in $(ls -1 *.1); do mandoc -Thtml -O style=mandoc.css,man=%N.%S.html $f > "$f.html"; done | ||||||
|  | 
 | ||||||
|  |       # Download the mandoc.css file from the official site | ||||||
|  |       - curl -o mandoc.css -L https://mandoc.bsd.lv/mandoc.css | ||||||
|  | 
 | ||||||
|  |       - tar czvf ../man.tar.gz *.html mandoc.css | ||||||
|  | 
 | ||||||
|  |   deploy: | ||||||
|  |     image: 'curlimages/curl' | ||||||
|  |     secrets: | ||||||
|  |       - 'site_api_key' | ||||||
|  |     commands: | ||||||
|  |       - 'curl -XPOST --fail -s -H "Authorization: Bearer $SITE_API_KEY" -T man.tar.gz https://rustybever.be/api/deploy?dir=man-vieter' | ||||||
|  |     when: | ||||||
|  |       event: push | ||||||
|  |       branch: dev | ||||||
|  | @ -15,6 +15,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 | ||||||
|     * GitRepo: filter by repo |     * GitRepo: filter by repo | ||||||
|     * BuildLog: filter by start & end date, repo, exit code & arch |     * BuildLog: filter by start & end date, repo, exit code & arch | ||||||
| * CLI flags to take advantage of above API improvements | * CLI flags to take advantage of above API improvements | ||||||
|  | * Added CLI command to generate all man pages | ||||||
|  | * PKGBUILDs now install man pages | ||||||
|  | * CLI man pages are now hosted on https://rustybever.be | ||||||
| 
 | 
 | ||||||
| ### Changed | ### Changed | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										5
									
								
								Makefile
								
								
								
								
							
							
						
						
									
										5
									
								
								Makefile
								
								
								
								
							|  | @ -60,6 +60,11 @@ api-docs: | ||||||
| 	rm -rf '$(SRC_DIR)/_docs' | 	rm -rf '$(SRC_DIR)/_docs' | ||||||
| 	cd '$(SRC_DIR)' && v doc -all -f html -m -readme . | 	cd '$(SRC_DIR)' && v doc -all -f html -m -readme . | ||||||
| 
 | 
 | ||||||
|  | .PHONY: man | ||||||
|  | man: vieter | ||||||
|  | 	rm -rf man | ||||||
|  | 	./vieter man man | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| # =====OTHER=====
 | # =====OTHER=====
 | ||||||
| .PHONY: lint | .PHONY: lint | ||||||
|  |  | ||||||
							
								
								
									
										3
									
								
								PKGBUILD
								
								
								
								
							
							
						
						
									
										3
									
								
								PKGBUILD
								
								
								
								
							|  | @ -24,4 +24,7 @@ package() { | ||||||
| 
 | 
 | ||||||
|     install -dm755 "$pkgdir/usr/bin" |     install -dm755 "$pkgdir/usr/bin" | ||||||
|     install -Dm755 "$pkgname/pvieter" "$pkgdir/usr/bin/vieter" |     install -Dm755 "$pkgname/pvieter" "$pkgdir/usr/bin/vieter" | ||||||
|  | 
 | ||||||
|  |     install -dm755 "$pkgdir/usr/share/man/man1" | ||||||
|  |     ./vieter man "$pkgdir/usr/share/man/man1" | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -32,4 +32,7 @@ package() { | ||||||
| 
 | 
 | ||||||
|     install -dm755 "$pkgdir/usr/bin" |     install -dm755 "$pkgdir/usr/bin" | ||||||
|     install -Dm755 "$pkgname/pvieter" "$pkgdir/usr/bin/vieter" |     install -Dm755 "$pkgname/pvieter" "$pkgdir/usr/bin/vieter" | ||||||
|  | 
 | ||||||
|  |     install -dm755 "$pkgdir/usr/share/man/man1" | ||||||
|  |     ./vieter man "$pkgdir/usr/share/man/man1" | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -2,6 +2,8 @@ module console | ||||||
| 
 | 
 | ||||||
| import arrays | import arrays | ||||||
| import strings | import strings | ||||||
|  | import cli | ||||||
|  | import os | ||||||
| 
 | 
 | ||||||
| // pretty_table converts a list of string data into a pretty table. Many thanks | // pretty_table converts a list of string data into a pretty table. Many thanks | ||||||
| // to @hungrybluedev in the Vlang Discord for providing this code! | // to @hungrybluedev in the Vlang Discord for providing this code! | ||||||
|  | @ -54,3 +56,15 @@ pub fn pretty_table(header []string, data [][]string) ?string { | ||||||
| 
 | 
 | ||||||
| 	return buffer.str() | 	return buffer.str() | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | // export_man_pages recursively generates all man pages for the given | ||||||
|  | // cli.Command & writes them to the given directory. | ||||||
|  | pub fn export_man_pages(cmd cli.Command, path string) ? { | ||||||
|  | 	man := cmd.manpage() | ||||||
|  | 	os.write_file(os.join_path_single(path, cmd.full_name().replace(' ', '-') + '.1'), | ||||||
|  | 		man)? | ||||||
|  | 
 | ||||||
|  | 	for sub_cmd in cmd.commands { | ||||||
|  | 		export_man_pages(sub_cmd, path)? | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | @ -0,0 +1,21 @@ | ||||||
|  | module man | ||||||
|  | 
 | ||||||
|  | import cli | ||||||
|  | import console | ||||||
|  | import os | ||||||
|  | 
 | ||||||
|  | // cmd returns the cli submodule that handles generating man pages. | ||||||
|  | pub fn cmd() cli.Command { | ||||||
|  | 	return cli.Command{ | ||||||
|  | 		name: 'man' | ||||||
|  | 		description: 'Generate all man pages & save them in the given directory.' | ||||||
|  | 		usage: 'dir' | ||||||
|  | 		required_args: 1 | ||||||
|  | 		execute: fn (cmd cli.Command) ? { | ||||||
|  | 			root := cmd.root() | ||||||
|  | 			os.mkdir_all(cmd.args[0])? | ||||||
|  | 
 | ||||||
|  | 			console.export_man_pages(root, cmd.args[0])? | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | @ -6,6 +6,7 @@ import cli | ||||||
| import console.git | import console.git | ||||||
| import console.logs | import console.logs | ||||||
| import console.schedule | import console.schedule | ||||||
|  | import console.man | ||||||
| import cron | import cron | ||||||
| 
 | 
 | ||||||
| fn main() { | fn main() { | ||||||
|  | @ -29,6 +30,7 @@ fn main() { | ||||||
| 			cron.cmd(), | 			cron.cmd(), | ||||||
| 			logs.cmd(), | 			logs.cmd(), | ||||||
| 			schedule.cmd(), | 			schedule.cmd(), | ||||||
|  | 			man.cmd(), | ||||||
| 		] | 		] | ||||||
| 	} | 	} | ||||||
| 	app.setup() | 	app.setup() | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue