/Formula/ford.rb
Ruby | 153 lines | 132 code | 21 blank | 0 comment | 4 complexity | d46f9d24ad599c1aff6b59e250c27e23 MD5 | raw file
- class Ford < Formula
- desc "Automatic documentation generator for modern Fortran programs"
- homepage "https://github.com/cmacmackin/ford/"
- url "https://pypi.python.org/packages/85/11/7a70d720fcceddad67001dfa36bbc202d6172ba0b17e7d955db88516a33a/FORD-4.6.2.tar.gz"
- sha256 "48062d658c712e22e459d9a2460f7fd584013289a24d13e0fc011bdbe05c99b4"
- head "https://github.com/cmacmackin/ford.git"
- bottle do
- cellar :any_skip_relocation
- sha256 "d8671a9f6a080cddbadedf94d856d15eef6e27148ceab2dc8786e404c7c8af07" => :el_capitan
- sha256 "56a17d5091a0ed3f37c08770ce5a683546154a34defd156bd9ff65e56da7dda3" => :yosemite
- sha256 "60c7f77dc9eda0ab42debe1dd662603697cdec79df6009e2a964877c387e7c70" => :mavericks
- end
- option "without-lxml", "Do not install lxml to improve the speed of search database generation"
- depends_on "graphviz"
- depends_on :python if MacOS.version <= :snow_leopard
- resource "lxml" do
- url "https://pypi.python.org/packages/11/1b/fe6904151b37a0d6da6e60c13583945f8ce3eae8ebd0ec763ce546358947/lxml-3.6.0.tar.gz"
- sha256 "9c74ca28a7f0c30dca8872281b3c47705e21217c8bc63912d95c9e2a7cac6bdf"
- end
- resource "beautifulsoup4" do
- url "https://pypi.python.org/packages/26/79/ef9a8bcbec5abc4c618a80737b44b56f1cb393b40238574078c5002b97ce/beautifulsoup4-4.4.1.tar.gz"
- sha256 "87d4013d0625d4789a4f56b8d79a04d5ce6db1152bb65f1d39744f7709a366b4"
- end
- resource "graphviz" do
- url "https://pypi.python.org/packages/3d/6d/406cec4d782d3cd6cb02d90bb17fbd364cab4a2a96d8ad0b5ccb46fd7442/graphviz-0.4.10.zip"
- sha256 "61e9f7126f5efdd11fb9269d4622277fbf8ed92046b73f3e78529e3be6a95f15"
- end
- resource "Jinja2" do
- url "https://pypi.python.org/packages/f2/2f/0b98b06a345a761bec91a079ccae392d282690c2d8272e708f4d10829e22/Jinja2-2.8.tar.gz"
- sha256 "bc1ff2ff88dbfacefde4ddde471d1417d3b304e8df103a7a9437d47269201bf4"
- end
- resource "Markdown" do
- url "https://pypi.python.org/packages/9b/53/4492f2888408a2462fd7f364028b6c708f3ecaa52a028587d7dd729f40b4/Markdown-2.6.6.tar.gz"
- sha256 "9a292bb40d6d29abac8024887bcfc1159d7a32dc1d6f1f6e8d6d8e293666c504"
- end
- resource "markdown-include" do
- url "https://pypi.python.org/packages/ef/44/eb6e9b4fa1110b719abb876c9b6dd8b46af886a94536ec4e9117fe5e7b97/markdown-include-0.5.1.tar.gz"
- sha256 "72a45461b589489a088753893bc95c5fa5909936186485f4ed55caa57d10250f"
- end
- resource "MarkupSafe" do
- url "https://pypi.python.org/packages/c0/41/bae1254e0396c0cc8cf1751cb7d9afc90a602353695af5952530482c963f/MarkupSafe-0.23.tar.gz"
- sha256 "a4ec1aff59b95a14b45eb2e23761a0179e98319da5a7eb76b56ea8cdc7b871c3"
- end
- resource "Pygments" do
- url "https://pypi.python.org/packages/b8/67/ab177979be1c81bc99c8d0592ef22d547e70bb4c6815c383286ed5dec504/Pygments-2.1.3.tar.gz"
- sha256 "88e4c8a91b2af5962bfa5ea2447ec6dd357018e86e94c7d14bd8cacbc5b55d81"
- end
- resource "toposort" do
- url "https://pypi.python.org/packages/f6/f7/875e23067652488ae40603336fdd63510a1e1853672b5b829a78452fd31c/toposort-1.4.tar.gz"
- sha256 "c190b9d9a9e53ae2835f4d524130147af601fbd63677d19381c65067a80fa903"
- end
- def install
- ENV.prepend_create_path "PYTHONPATH", libexec/"vendor/lib/python2.7/site-packages"
- deps = %w[beautifulsoup4 graphviz Jinja2 Markdown markdown-include MarkupSafe Pygments toposort]
- deps << "lxml" if build.with? "lxml"
- deps.each do |r|
- resource(r).stage do
- system "python", *Language::Python.setup_install_args(libexec/"vendor")
- end
- end
- ENV.prepend_create_path "PYTHONPATH", libexec/"lib/python2.7/site-packages"
- system "python", *Language::Python.setup_install_args(libexec)
- bin.install Dir[libexec/"bin/*"]
- bin.env_script_all_files(libexec/"bin", :PYTHONPATH => ENV["PYTHONPATH"])
- end
- test do
- (testpath/"test-project.md").write <<-EOS.undent
- project_dir: ./src
- output_dir: ./doc
- project_github: https://github.com/cmacmackin/futility
- project_website: https://github.com
- summary: Some Fortran program which I wrote.
- author: John Doe
- author_description: I program stuff in Fortran.
- github: https://github.com/cmacmackin
- email: john.doe@example.com
- predocmark: >
- docmark_alt: #
- predocmark_alt: <
- macro: TEST
- LOGIC=.true.
- This is a project which I wrote. This file will provide the documents. I'm
- writing the body of the text here. It contains an overall description of the
- project. It might explain how to go about installing/compiling it. It might
- provide a change-log for the code. Maybe it will talk about the history and/or
- motivation for this software.
- @Note
- You can include any notes (or bugs, warnings, or todos) like so.
- You can have as many paragraphs as you like here and can use headlines, links,
- images, etc. Basically, you can use anything in Markdown and Markdown-Extra.
- Furthermore, you can insert LaTeX into your documentation. So, for example,
- you can provide inline math using like \( y = x^2 \) or math on its own line
- like \[ x = \sqrt{y} \] or $$ e = mc^2. $$ You can even use LaTeX environments!
- So you can get numbered equations like this:
- \begin{equation}
- PV = nRT
- \end{equation}
- So let your imagination run wild. As you can tell, I'm more or less just
- filling in space now. This will be the last sentence.
- EOS
- mkdir testpath/"src" do
- (testpath/"src"/"ford_test_program.f90").write <<-EOS.undent
- program ford_test_program
- !! Simple Fortran program to demonstrate the usage of FORD and to test its installation
- use iso_fortran_env, only: output_unit, real64
- implicit none
- real (real64) :: global_pi = acos(-1)
- !! a global variable, initialized to the value of pi
- write(output_unit,'(A)') 'Small test program'
- call do_stuff(20)
- contains
- subroutine do_stuff(repeat)
- !! This is documentation for our subroutine that does stuff and things.
- !! This text is captured by ford
- integer, intent(in) :: repeat
- !! The number of times to repeatedly do stuff and things
- integer :: i
- !! internal loop counter
- ! the main content goes here and this is comment is not processed by FORD
- do i=1,repeat
- global_pi = acos(-1)
- end do
- end subroutine
- end program
- EOS
- end
- system "#{bin}/ford", testpath/"test-project.md"
- assert File.exist?(testpath/"doc"/"index.html")
- end
- end