Данная лабораторная работа посвещена изучению систем документирования исходного кода на примере Doxygen
$ open https://www.stack.nl/~dimitri/doxygen/manual/index.html
- 1. Создать публичный репозиторий с названием lab07 на сервисе GitHub
- 2. Выполнить инструкцию учебного материала
- 3. Ознакомиться со ссылками учебного материала
- 4. Составить отчет и отправить ссылку личным сообщением в Slack
Задаем переменные окружения и короткие имена для текстовых редакторов
$ export GITHUB_USERNAME=<имя_пользователя>
$ export TEACHER_EMAIL=<[email protected]|[email protected]>
$ alias edit=<nano|vi|vim|subl>
$ alias gsed=sed # for *-nix system
Используем ранее созданный скрипт
$ cd ${GITHUB_USERNAME}/workspace
$ pushd .
$ source scripts/activate
Устанавливаем дистрибутив последней стабильной версии Golang и утилиту по работе с Google Drive
$ wget https://redirector.gvt1.com/edgedl/go/go1.10.linux-amd64.tar.gz
$ tar -C . -xzf go1.9.2.linux-amd64.tar.gz
$ rm -rf go1.9.2.linux-amd64.tar.gz
$ echo "export GOROOT=`pwd`/go" >> scripts/activate # добавляем новые команды в скрипт
$ echo "export GOPATH=`pwd`/go_modules" >> scripts/activate
$ echo "export PATH=\${PATH}:\${GOROOT}/bin" >> scripts/activate
$ echo "export PATH=\${PATH}:\${GOPATH}/bin" >> scripts/activate
$ source scripts/activate # выполняем скрипт
$ go get github.com/prasmussen/gdrive # скачиваем и устанавливаем утилиту `gdrive`
Скачиваем репозиторий Labs
$ git clone https://github.com/${GITHUB_USERNAME}/Labs projects/lab07
$ cd projects/lab07
$ git checkout -b lab07 # создаем новую ветку
Устанавливаем Doxygen
$ cd ../..
$ git clone https://github.com/doxygen/doxygen.git
$ cd doxygen
$ mkdir build
$ cd build
$ cmake -G "Unix Makefiles" .. # проверяем наличие нужных утилит
$ make
$ make install
Создаем конфигурационый файл для генерации документации к проекту
$ mkdir docs
$ doxygen -g docs/doxygen.conf #
$ cat docs/doxygen.conf | less
Редактируем конфигурационный файл в соответствии с проектом
$ # устанавливаем наименование проекта
$ gsed -i 's/\(PROJECT_NAME.*=\).*$/\1 print/g' docs/doxygen.conf
$ # устанавливаем путь к примерам использования
$ gsed -i 's/\(EXAMPLE_PATH.*=\).*$/\1 examples/g' docs/doxygen.conf
$ # добавляем путь к директории `examples`
$ gsed -i 's/\(INCLUDE_PATH.*=\).*$/\1 examples/g' docs/doxygen.conf
$ # устанавливаем тэг, который оповещает doxygen что все объекты документированы
$ gsed -i 's/\(EXTRACT_ALL.*=\).*$/\1 YES/g' docs/doxygen.conf
$ # устанавливаем список файлов исходных кодов
$ gsed -i 's/\(INPUT *=\).*$/\1 README.md include/g' docs/doxygen.conf
$ # устанавливаем `README.md` файл как стартовую страницу документации
$ gsed -i 's/\(USE_MDFILE_AS_MAINPAGE.*=\).*$/\1 README.md/g' docs/doxygen.conf
$ # устанавливаем путь к директории, где будет сгенерирована документация
$ gsed -i 's/\(OUTPUT_DIRECTORY.*=\).*$/\1 docs/g' docs/doxygen.conf
Делаем изменение в файле README.md
$ gsed -i 's/lab06/lab07/g' README.md
Документируем функции print.hpp
$ edit include/print.hpp
Отправляем все изменения в репозиторий
$ git add .
$ git commit -m"added doxygen.conf"
$ git push origin master
Инициализируем сборку проекта с помощью TravisCI
$ travis login --auto
$ travis enable
Генерируем документацию и отправляем все изменения в репозиторий
$ doxygen docs/doxygen.conf
$ ls | grep "[^docs]" | xargs rm -rf # удаляем все, кроме файлов документации
$ mv docs/html/* . && rm -rf docs
$ git checkout -b gh-pages # создаем новую ветку для документации
$ git add .
$ git commit -m"added documentation"
$ git push origin gh-pages
$ git checkout master
Создаем скриншот результатов работы и загружаем его в Google Drive
$ mkdir artifacts && cd artifacts
$ sleep 20s && gnome-screenshot --file artifacts/screenshot.png
# for macOS: $ screencapture -T 20 artifacts/screenshot.png
# open https://${GITHUB_USERNAME}.github.io/lab07/print_8hpp.html
$ gdrive upload screenshot.png
$ SCREENSHOT_ID=`gdrive list | grep screenshot | awk '{ print $1; }'`
$ gdrive share ${SCREENSHOT_ID} --role reader --type user --email ${TEACHER_EMAIL}
$ echo https://drive.google.com/open?id=${SCREENSHOT_ID}
Copyright (c) 2017 Братья Вершинины