Read Markdown files and output a table of contents.
Requirements:
- Ruby (see .ruby-version)
gem install mdtoc$ mdtoc --help
Usage: mdtoc [options] files or directories...
-h, --help Show this message
-o, --output PATH Update a table of contents in the file at PATH
-a, --[no-]append Append to the --output file if a <!-- mdtoc --> tag isn't found
-c, --[no-]create Create the --output file if it does not exist- Add a
<!-- mdtoc -->tag to a Markdown file.
echo '<!-- mdtoc -->' >> README.md- Run
mdtocand specify input files or directories (eg. the "test/samples" directory) and an output file (eg. "README.md").
mdtoc -aco README.md test/samplesCreate a Rakefile with the contents below, then run
rake to:
git pullgem push pkg/mdtoc-0.2.0.gemgit addany *.md files- Run
mdtocto update the generated table of contents in the ./README.md file - Git commit and push any changes
task default: %w[mdtoc]
desc 'Update Markdown table of contents and push changes to the git repository'
task :mdtoc do
command = <<~CMD
set -e
if [ -n "$(git diff --name-only --diff-filter=U)" ]; then
echo 'Error: conflicts exist' >&2
exit 1
fi
mdtoc --append --create --output README.md docs/
git add *.md **/*.md
git commit -qm 'Update TOC' || true
git pull
git push
CMD
sh command, verbose: false do |ok, status|
unless ok
fail "Failed with status: #{status.exitstatus}"
end
end
endSee andornaut/til for an example.
Requirements:
# Setup development environment
bin/setup# List rake tasks
$ rake -T
rake build # Build gem into the pkg directory
rake default # Run the build, rubocop, sorbet and test tasks
rake install # Build and install gem into system gems
rake rubocop # Run RuboCop
rake sorbet # Run the Sorbet type checker
rake test # Run tests
# Run mdtoc with test inputs
$ ruby -Ilib bin/mdtoc test/samples
# Run mdtoc with test inputs, and write to a newly created output file
$ f=$(mktemp) && ruby -Ilib bin/mdtoc -aco ${f} test/samples ; cat ${f}rake release