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