美文网首页
我开源了一个快速生成软著源码文档的工具

我开源了一个快速生成软著源码文档的工具

作者: 灵魂工具人 | 来源:发表于2020-12-24 08:55 被阅读0次

    背景

    工作中需要申请软件著作权,软件著作权需要提供以下材料:

    1. 申请表:可以在官网通过网页生成
    2. 身份证明:企业的话一般就是营业执照
    3. 程序鉴别材料:一般就是源代码整理出的PDF文件
    4. 文档鉴别材料:一般就是该软件的操作手册

    申请表身份证明比较好准备,文档鉴别材料则必须手写,易软著(pyerz)则用于生成程序鉴别材料。目前支持如下功能:

    1. 指定多个源代码目录
    2. 指定多中注释风格
    3. 指定字体、字号、段前间距、段后间距、行距
    4. 排除特定文件、文件夹

    程序鉴别材料的格式要求:

    1. 每页至少50行
    2. 不能含有注释、空行
    3. 页眉部分必须包含软件名称、版本号、页码(软件名+版本号居中,页码右侧对齐)

    易软著如何实现这些要求?
    上述3点,第2、3两点比较好实现,第1点我通过测试发现,当:

    1. 字号为10.5pt
    2. 行间距为10.5pt
    3. 段前间距为0
    4. 段后间距为2.3pt

    时,每页行数是大于50行的。

    安装

    pip install pyerz
    

    使用

    参数

    Usage: pyerz [OPTIONS]
    
    Options:
      -t, --title TEXT            软件名称+版本号,默认为软件著作权程序鉴别材料生成器V1.0,此名称用于生成页眉
      -i, --indir PATH            源码所在文件夹,可以指定多个,默认为当前目录
      -e, --ext TEXT              源代码后缀,可以指定多个,默认为Python源代码
      -c, --comment-char TEXT     注释字符串,可以指定多个,默认为#、//
      --font-name TEXT            字体,默认为宋体
      --font-size FLOAT RANGE     字号,默认为五号,即10.5号
      --space-before FLOAT RANGE  段前间距,默认为0
      --space-after FLOAT RANGE   段后间距,默认为2.3
      --line-spacing FLOAT RANGE  行距,默认为固定值10.5
      --exclude PATH              需要排除的文件或路径,可以指定多个
      -o, --outfile PATH          输出文件(docx格式),默认为当前目录的code.docx
      -v, --verbose               打印调试信息
      --help                      Show this message and exit.
    

    举个例子

    下面以django-guardian项目为例来说明pyerz的用法。

    克隆代码

    git clone git@github.com:django-guardian/django-guardian.git
    

    生成文档

    pyerz -i django-guardian -o django-guardian.docx
    

    常见问题

    #1 如何指定页眉?

    pyerz -i django-guardian -t django-guardian -o django-guardian.docx
    

    #2 如何添加其他格式的代码?

    上述方法只能识别Python源码,如果需要识别html、css、js代码,可以指定-e参数。

    pyerz -i django-guardian \
        -t django-guardian \
        -e py -e html -e js \
        -o django-guardian.docx
    

    #3 如何排除指定文件或文件夹?

    pyerz -i django-guardian \
        -t django-guardian \
        --exclude django-guardian/contrib/ \
        --exclude django-guardian/docs/ \
        --exclude django-guardian/benchmarks/ \
        --exclude django-guardian/example_project/ \
        -o django-guardian.docx
    

    #4 如何调整默认的注释风格?

    默认情况下,pyerz把以#//开头的行作为注释行删除,例如我想删除以"""开头的行(Python另一种注释风格):

    pyerz -i django-guardian \
        -t django-guardian \
        -c '#' -c '//' -c '"""' \
        -o django-guardian.docx
    

    注意,pyerz目前不支持删除多行注释。

    #5 如何调整字体?

    pyerz默认使用宋体,如果需要调整可以使用--font-name参数。

    pyerz -i django-guardian \
        -t django-guardian \
        --font-name menlo \
        -o django-guardian.docx
    

    #6 虽然我知道默认的字体、字号、段前间距、段后间距、行间距可以实现每页至少50行,但是我还是想调整,怎么办?

    pyerz -i django-guardian \
        -t django-guardian \
        --font-name menlo \
        --font-size 12 \
        --space-before 1 \
        --space-after 5 \
        --line-spacing 12 \
        -o django-guardian.docx
    

    #7 能不能输出查找文件的详细过程呢?

    pyerz -i django-guardian -o django-guardian.docx -v
    

    输出内容包括:

    ...
    DEBUG:pyerz.pyerz:在/Users/dev/Temp/django-guardian/example_project/posts/templates/posts目录下找到0个代码文件.
    DEBUG:pyerz.pyerz:在/Users/dev/Temp/django-guardian/example_project/posts/templates目录下找到0个代码文件.
    DEBUG:pyerz.pyerz:在/Users/dev/Temp/django-guardian/example_project/posts目录下找到8个代码文件.
    DEBUG:pyerz.pyerz:在/Users/dev/Temp/django-guardian/example_project/core/migrations目录下找到3个代码文件.
    DEBUG:pyerz.pyerz:在/Users/dev/Temp/django-guardian/example_project/core目录下找到7个代码文件.
    DEBUG:pyerz.pyerz:在/Users/dev/Temp/django-guardian/example_project/articles/migrations目录下找到3个代码文件.
    DEBUG:pyerz.pyerz:在/Users/dev/Temp/django-guardian/example_project/articles/templates/articles目录下找到0个代码文件.
    DEBUG:pyerz.pyerz:在/Users/dev/Temp/django-guardian/example_project/articles/templates目录下找到0个代码文件.
    DEBUG:pyerz.pyerz:在/Users/dev/Temp/django-guardian/example_project/articles目录下找到10个代码文件.
    DEBUG:pyerz.pyerz:在/Users/dev/Temp/django-guardian/example_project/static/css目录下找到0个代码文件.
    DEBUG:pyerz.pyerz:在/Users/dev/Temp/django-guardian/example_project/static/js目录下找到0个代码文件.
    DEBUG:pyerz.pyerz:在/Users/dev/Temp/django-guardian/example_project/static/img目录下找到0个代码文件.
    DEBUG:pyerz.pyerz:在/Users/dev/Temp/django-guardian/example_project/static目录下找到0个代码文件.
    DEBUG:pyerz.pyerz:在/Users/dev/Temp/django-guardian/example_project/templates目录下找到0个代码文件.
    DEBUG:pyerz.pyerz:在/Users/dev/Temp/django-guardian/example_project目录下找到29个代码文件.
    DEBUG:pyerz.pyerz:在/Users/dev/Temp/django-guardian目录下找到94个代码文件.
    

    相关文章

      网友评论

          本文标题:我开源了一个快速生成软著源码文档的工具

          本文链接:https://www.haomeiwen.com/subject/dirunktx.html