Giter Club home page Giter Club logo

doorhole's Introduction

doorhole

A graphical requirements editor for doorstop: https://github.com/doorstop-dev/doorstop

This tool is designed to view and edit doorstop requirements, as fast as possible.

immagine

Installation

  1. Install the required dependencies (Python 3.5+ required by doorstop):
pip install doorstop
pip install PySide6
pip install plantuml-markdown
  1. Download the doorhole.py script inside a directory listed in your PATH system variable for easier access
  2. Make it executable

Usage

  1. Open a terminal inside your git folder (you should already have a doorstop requirement tree).
  2. Launch the script with ./doorhole.py.

It will launch doorstop internally, load all requirements, and after a while the editor window will appear.

Why?

Because all the tools lack something:

  • doorstop GUI is slow while editing
  • editing requirements using Calc or Excel is cumbersome
  • you don't see PlantUML graphs (but you love them)

Features

  • faster than doorstop-gui
  • open all requirement sets at once with tabs
  • display requirements in a table-like interface
  • edit and actually see plantUML graphs!
  • create, view, edit, delete requirements

Un-features

This tool is not performing a whole doorstop verification, because it would be rather slow (like doorstop GUI). Use doorstop for that, and add your own checks there.

PlantUML rendering

The script uses by default the PlantUML online renderer at http://www.plantuml.com/plantuml.

If you experience issues with the above online renderer, you can:

If you want to change the PlantUML web renderer, update line #24 of the doorhole.py accordingly.

If you want to install PlantUML locally, read on!

Local PlantUML installation (Windows)

  1. Download and install Java
  2. Download plantuml.jar from https://plantuml.com/download inside a directory listed in your PATH system variable for easier access.
  3. Next to the plantuml.jar file, create the plantuml.bat file with the following content:
@echo off
set mypath=%~dp0
setlocal
java -jar %mypath%\plantuml.jar -charset UTF-8 %*

Done!

(Lack of) Math equations

The sad news is that this tool cannot render MathJax expressions right now. It's a Javascript loaded in the published HTML.

doorhole's People

Contributors

dapa avatar natethegreatest33 avatar rampa069 avatar sevendays avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

doorhole's Issues

An error occurred while displaying the content : module 'markdown' has no attribute 'version_info'

Thank you for this nice script!
I tried your latest script over the doorstop's repo and getting this "An error occurred while displaying the content : module 'markdown' has no attribute 'version_info'" in every cell. Can you please confirm and if yes do you know the reason?

image

Environment: Windows 10 1909.x64 with Python 3.9.1 and Doorstop v2.1.2. Also had to install PySide (Successfully installed PySide2-5.15.2 shiboken2-5.15.2) and Markdown was already fine (Requirement already satisfied: markdown in d:\tools\python\39\lib\site-packages (2.6.11)).

D:\work\mine\doorstop_test\doorstop>python --version
Python 3.9.1

D:\work\mine\doorstop_test\doorstop>doorstop --version
Doorstop v2.1.2

D:\work\mine\doorstop_test\doorstop>doorstop
building tree...
loading documents...
validating items...
WARNING: TUT: TUT003: no text
WARNING: TUT: TUT003: no links to parent document: REQ
WARNING: TUT: TUT003: no links from child document: HLT
REQ
│
├── LLT
│
└── TUT
    │
    └── HLT

D:\work\mine\doorstop_test\doorstop>doorhole
DEBUG:__main__:[REQ] Custom requirements attributes: set()
DEBUG:__main__:[REQ] Requirements reloaded
DEBUG:__main__:[LLT] Custom requirements attributes: set()
DEBUG:__main__:[LLT] Requirements reloaded
DEBUG:__main__:[TUT] Custom requirements attributes: set()
DEBUG:__main__:[TUT] Requirements reloaded
DEBUG:__main__:[HLT] Custom requirements attributes: set()
DEBUG:__main__:[HLT] Requirements reloaded

mdx_math fails due to deprecation

Fresh install of doorhole according to instruction fails. Seems that the mdx_math Markdown extensions uses a deprecated version of etree. Latest update to mdx_math seems to be 2017, so perhaps changing to a different math extension is possible?

I have tested on python3.7, python3.8, python3.9 and python3.10 and it is broken in all of them.

Deleting Requirements Broken

LIne 380 an older style of QMessageBox() return that is no longer supported in PyQt6 (see this discussion)

Should be changed from:
if ret == qm.Yes:
to:
if ret == QMessageBox.StandardButtons.Yes.value:

Non-standard "asil" property

The application shows an asil column. It's hardcoded in line 136:

self._headerData = ['path', 'root', 'active', 'normative', 'uid', 'asil', 'level', 'header', 'text']

The header labels should be retrieved from the requirements (possibly from doorstop items or document).

An error occured while displaying the content: Failed to run plantuml

Dear sevendays,
Your tool looks great, I wonder if it can make me go back to requirements tracking !
I tried to run it over the doorstop repository, and TUT017 displays this error message:

An error occured while displaying the content: Failed to run plantuml: [Errno 2] Aucun fichier ou dossier de ce type: 'plantuml'

(which translates to "no file or directory of type: plantuml")

However, I can run plantuml from bash and it just works so I wonder what could I do to diagnose it further.

Best,

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.