Proper man pages #218
			
				
			
		
		
		
	| 
						 | 
				
			
			@ -26,3 +26,4 @@ gdb.txt
 | 
			
		|||
 | 
			
		||||
# Generated 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
 | 
			
		||||
    * BuildLog: filter by start & end date, repo, exit code & arch
 | 
			
		||||
* 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
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										5
									
								
								Makefile
								
								
								
								
							
							
						
						
									
										5
									
								
								Makefile
								
								
								
								
							| 
						 | 
				
			
			@ -60,6 +60,11 @@ api-docs:
 | 
			
		|||
	rm -rf '$(SRC_DIR)/_docs'
 | 
			
		||||
	cd '$(SRC_DIR)' && v doc -all -f html -m -readme .
 | 
			
		||||
 | 
			
		||||
.PHONY: man
 | 
			
		||||
man: vieter
 | 
			
		||||
	rm -rf man
 | 
			
		||||
	./vieter man man
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# =====OTHER=====
 | 
			
		||||
.PHONY: lint
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										3
									
								
								PKGBUILD
								
								
								
								
							
							
						
						
									
										3
									
								
								PKGBUILD
								
								
								
								
							| 
						 | 
				
			
			@ -24,4 +24,7 @@ package() {
 | 
			
		|||
 | 
			
		||||
    install -dm755 "$pkgdir/usr/bin"
 | 
			
		||||
    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 "$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 strings
 | 
			
		||||
import cli
 | 
			
		||||
import os
 | 
			
		||||
 | 
			
		||||
// pretty_table converts a list of string data into a pretty table. Many thanks
 | 
			
		||||
// 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()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 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.logs
 | 
			
		||||
import console.schedule
 | 
			
		||||
import console.man
 | 
			
		||||
import cron
 | 
			
		||||
 | 
			
		||||
fn main() {
 | 
			
		||||
| 
						 | 
				
			
			@ -29,6 +30,7 @@ fn main() {
 | 
			
		|||
			cron.cmd(),
 | 
			
		||||
			logs.cmd(),
 | 
			
		||||
			schedule.cmd(),
 | 
			
		||||
			man.cmd(),
 | 
			
		||||
		]
 | 
			
		||||
	}
 | 
			
		||||
	app.setup()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue