Compare commits

...

11 Commits
1.3.0 ... 1.3.2

Author SHA1 Message Date
Bastian Venthur
595356e915 bumped version 2022-06-29 21:27:55 +02:00
Bastian Venthur
6005369108 Added some test cases for the MarkdownLinktreeProcessor 2022-06-28 21:38:47 +02:00
Bastian Venthur
db4e03afde Merge pull request #52 from venthur/improve_quickstart
improved quickstart:
2022-06-28 21:06:13 +02:00
Bastian Venthur
877c47c391 improved quickstart:
* respective default answers will be written to config if user provided
   no answer
 * added tests for quickstart
2022-06-28 21:02:51 +02:00
Bastian Venthur
3bd7125873 Merge pull request #49 from venthur/version
added version option
2022-06-28 19:51:29 +02:00
Bastian Venthur
35f6ef05b6 added version option 2022-06-20 12:30:27 +02:00
Bastian Venthur
7e8f2a5b9a prepare new version 2022-06-10 07:27:24 +02:00
Bastian Venthur
d942bf150c install man page 2022-06-09 22:23:12 +02:00
Bastian Venthur
48cfb49acb generate man page in debian package 2022-06-09 22:22:03 +02:00
Bastian Venthur
c3edbeb511 cleanup generated doc files in makefile 2022-06-09 21:52:34 +02:00
Bastian Venthur
a60887e0d6 small yaml fix m( 2022-06-09 21:44:27 +02:00
17 changed files with 164 additions and 221 deletions

View File

@@ -17,8 +17,8 @@ jobs:
- macos-latest
- windows-latest
python-version:
- 3.8
- 3.9
- "3.8"
- "3.9"
- "3.10"
steps:

3
.gitignore vendored
View File

@@ -5,6 +5,9 @@ build/
dist/
*.egg-info/
docs/_build/
docs/api/
htmlcov/
.coverage

View File

@@ -1,5 +1,18 @@
# Changelog
## [1.3.2] - 2022-06-29
* Added --version option
* Improved quickstart:
* respective default answers will be written to config if user provided no
answer
* added tests for quickstart
* Added some test cases for the MarkdownLinktreeProcessor
## [1.3.1] - 2022-06-10
* fixed man page
## [1.3.0] - 2022-06-09
* debianized package

View File

@@ -46,6 +46,7 @@ clean:
rm -rf build dist *.egg-info
rm -rf $(VENV)
rm -rf $(DOCS_OUT)
rm -rf $(DOCS_SRC)/api
find . -type f -name *.pyc -delete
find . -type d -name __pycache__ -delete
# coverage

View File

@@ -16,6 +16,8 @@ import feedgenerator
from blag.markdown import markdown_factory, convert_markdown
from blag.devserver import serve
from blag.version import __VERSION__
from blag.quickstart import quickstart
logger = logging.getLogger(__name__)
logging.basicConfig(
@@ -54,6 +56,11 @@ def parse_args(args=None):
"""
parser = argparse.ArgumentParser()
parser.add_argument(
'--version',
action='version',
version='%(prog)s '+__VERSION__,
)
commands = parser.add_subparsers(dest='command')
commands.required = True
@@ -419,33 +426,5 @@ def generate_tags(articles, tags_template, tag_template, output_dir):
fh.write(result)
def quickstart(args):
"""Quickstart.
This method asks the user some questions and generates a
configuration file that is needed in order to run blag.
Parameters
----------
args : argparse.Namespace
"""
base_url = input("Hostname (and path) to the root? "
"[https://example.com/]: ")
title = input("Title of your website? ")
description = input("Description of your website [John Doe's Blog]? ")
author = input("Author of your website [John Doe]? ")
config = configparser.ConfigParser()
config['main'] = {
'base_url': base_url,
'title': title,
'description': description,
'author': author,
}
with open('config.ini', 'w') as fh:
config.write(fh)
if __name__ == '__main__':
main()

68
blag/quickstart.py Normal file
View File

@@ -0,0 +1,68 @@
"""Helper methods for blag's quickstart command.
"""
import configparser
def get_input(question, default):
"""Prompt for user input.
This is a wrapper around the input-builtin. It will show the default answer
in the prompt and -- if no answer was given -- use the default.
Parameters
----------
question : str
the question the user is presented
default : str
the default value that will be used if no answer was given
Returns
-------
str
"""
reply = input(f"{question} [{default}]: ")
if not reply:
reply = default
return reply
def quickstart(args):
"""Quickstart.
This method asks the user some questions and generates a
configuration file that is needed in order to run blag.
Parameters
----------
args : argparse.Namespace
"""
base_url = get_input(
"Hostname (and path) to the root?",
"https://example.com/",
)
title = get_input(
"Title of your website?",
"My little blog",
)
description = get_input(
"Description of your website?",
"John Doe's Blog",
)
author = get_input(
"Author of your website",
"John Doe",
)
config = configparser.ConfigParser()
config['main'] = {
'base_url': base_url,
'title': title,
'description': description,
'author': author,
}
with open('config.ini', 'w') as fh:
config.write(fh)

View File

@@ -1 +1 @@
__VERSION__ = '1.3.0'
__VERSION__ = '1.3.2'

View File

@@ -1,6 +0,0 @@
blag for Debian
--------------
<Possible notes regarding this package - if none, delete this file.>
-- Bastian Venthur <venthur@debian.org> Sun, 05 Jun 2022 15:20:48 +0200

1
debian/blag.install vendored Normal file
View File

@@ -0,0 +1 @@
build/man/blag.1 /usr/share/man/man1

17
debian/changelog vendored
View File

@@ -1,3 +1,20 @@
blag (1.3.2) unstable; urgency=medium
* Added --version option
* Improved quickstart:
* respective default answers will be written to config if user provided no
answer
* added tests for quickstart
* Added some test cases for the MarkdownLinktreeProcessor
-- Bastian Venthur <venthur@debian.org> Wed, 29 Jun 2022 21:27:15 +0200
blag (1.3.1) unstable; urgency=medium
* re-upload with man pages
-- Bastian Venthur <venthur@debian.org> Fri, 10 Jun 2022 07:26:19 +0200
blag (1.3.0) unstable; urgency=medium
* Initial release. Closes: #1012584

56
debian/manpage.1.ex vendored
View File

@@ -1,56 +0,0 @@
.\" Hey, EMACS: -*- nroff -*-
.\" (C) Copyright 2022 Bastian Venthur <venthur@debian.org>,
.\"
.\" First parameter, NAME, should be all caps
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
.\" other parameters are allowed: see man(7), man(1)
.TH Blag SECTION "June 5 2022"
.\" Please adjust this date whenever revising the manpage.
.\"
.\" Some roff macros, for reference:
.\" .nh disable hyphenation
.\" .hy enable hyphenation
.\" .ad l left justify
.\" .ad b justify to both left and right margins
.\" .nf disable filling
.\" .fi enable filling
.\" .br insert line break
.\" .sp <n> insert n+1 empty lines
.\" for manpage-specific macros, see man(7)
.SH NAME
blag \- program to do something
.SH SYNOPSIS
.B blag
.RI [ options ] " files" ...
.br
.B bar
.RI [ options ] " files" ...
.SH DESCRIPTION
This manual page documents briefly the
.B blag
and
.B bar
commands.
.PP
.\" TeX users may be more comfortable with the \fB<whatever>\fP and
.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
.\" respectively.
\fBblag\fP is a program that...
.SH OPTIONS
These programs follow the usual GNU command line syntax, with long
options starting with two dashes ('-').
A summary of options is included below.
For a complete description, see the Info files.
.TP
.B \-h, \-\-help
Show summary of options.
.TP
.B \-v, \-\-version
Show version of program.
.SH SEE ALSO
.BR bar (1),
.BR baz (1).
.br
The programs are documented fully by
.IR "The Rise and Fall of a Fooish Bar" ,
available via the Info system.

126
debian/manpage.md.ex vendored
View File

@@ -1,126 +0,0 @@
% blag(SECTION) | User Commands
%
% "June 5 2022"
[comment]: # The lines above form a Pandoc metadata block. They must be
[comment]: # the first ones in the file.
[comment]: # See https://pandoc.org/MANUAL.html#metadata-blocks for details.
[comment]: # pandoc -s -f markdown -t man package.md -o package.1
[comment]: #
[comment]: # A manual page package.1 will be generated. You may view the
[comment]: # manual page with: nroff -man package.1 | less. A typical entry
[comment]: # in a Makefile or Makefile.am is:
[comment]: #
[comment]: # package.1: package.md
[comment]: # pandoc --standalone --from=markdown --to=man $< --output=$@
[comment]: #
[comment]: # The pandoc binary is found in the pandoc package. Please remember
[comment]: # that if you create the nroff version in one of the debian/rules
[comment]: # file targets, such as build, you will need to include pandoc in
[comment]: # your Build-Depends control field.
[comment]: # Remove the lines starting with '[comment]:' in this file in order
[comment]: # to avoid warning messages from pandoc.
# NAME
blag - program to do something
# SYNOPSIS
**blag** **-e** _this_ [**\-\-example=that**] [{**-e** | **\-\-example**} _this_]
[{**-e** | **\-\-example**} {_this_ | _that_}]
**blag** [{**-h** | *\-\-help**} | {**-v** | **\-\-version**}]
# DESCRIPTION
This manual page documents briefly the **blag** and **bar** commands.
This manual page was written for the Debian distribution because the
original program does not have a manual page. Instead, it has documentation
in the GNU info(1) format; see below.
**blag** is a program that...
# OPTIONS
The program follows the usual GNU command line syntax, with long options
starting with two dashes ('-'). A summary of options is included below. For
a complete description, see the **info**(1) files.
**-e** _this_, **\-\-example=**_that_
: Does this and that.
**-h**, **\-\-help**
: Show summary of options.
**-v**, **\-\-version**
: Show version of program.
# FILES
/etc/foo.conf
: The system-wide configuration file to control the behaviour of
blag. See **foo.conf**(5) for further details.
${HOME}/.foo.conf
: The per-user configuration file to control the behaviour of
blag. See **foo.conf**(5) for further details.
# ENVIRONMENT
**FOO_CONF**
: If used, the defined file is used as configuration file (see also
the section called FILES).
# DIAGNOSTICS
The following diagnostics may be issued on stderr:
Bad configuration file. Exiting.
: The configuration file seems to contain a broken configuration
line. Use the **\-\-verbose** option, to get more info.
**blag** provides some return codes, that can be used in scripts:
Code Diagnostic
0 Program exited successfully.
1 The configuration file seems to be broken.
# BUGS
The program is currently limited to only work with the foobar library.
The upstream BTS can be found at http://bugzilla.foo.tld.
# SEE ALSO
**bar**(1), **baz**(1), **foo.conf**(5)
The programs are documented fully by The Rise and Fall of a Fooish Bar
available via the **info**(1) system.
# AUTHOR
Bastian Venthur <venthur@debian.org>
: Wrote this manpage for the Debian system.
# COPYRIGHT
Copyright © 2007 Bastian Venthur
This manual page was written for the Debian system (and may be used by
others).
Permission is granted to copy, distribute and/or modify this document under
the terms of the GNU General Public License, Version 2 or (at your option)
any later version published by the Free Software Foundation.
On Debian systems, the complete text of the GNU General Public License
can be found in /usr/share/common-licenses/GPL.
[comment]: # Local Variables:
[comment]: # mode: markdown
[comment]: # End:

4
debian/rules vendored
View File

@@ -21,5 +21,5 @@ execute_after_dh_auto_build-indep: export https_proxy=127.0.0.1:9
execute_after_dh_auto_build-indep:
PYTHONPATH=. python3 -m sphinx -N -bhtml \
docs/ build/html # HTML generator
# PYTHONPATH=. python3 -m sphinx -N -bman \
# docs/ build/man # Manpage generator
PYTHONPATH=. python3 -m sphinx -N -bman \
docs/ build/man # Manpage generator

View File

@@ -9,3 +9,4 @@ API
blag.blag
blag.markdown
blag.devserver
blag.quickstart

View File

@@ -277,3 +277,13 @@ foo bar
def test_main(cleandir):
blag.main(['build'])
def test_cli_version(capsys):
with pytest.raises(SystemExit) as ex:
blag.main(['--version'])
# normal system exit
assert ex.value.code == 0
# proper version reported
out, _ = capsys.readouterr()
assert blag.__VERSION__ in out

View File

@@ -32,6 +32,20 @@ def test_convert_markdown_links(input_, expected):
assert expected in html
@pytest.mark.parametrize("input_, expected", [
# scheme
('[test](https://)', 'https://'),
# netloc
('[test](//test.md)', '//test.md'),
# no path
('[test]()', ''),
])
def test_dont_convert_normal_links(input_, expected):
md = markdown_factory()
html, _ = convert_markdown(md, input_)
assert expected in html
@pytest.mark.parametrize("input_, expected", [
('foo: bar', {'foo': 'bar'}),
('foo: those are several words', {'foo': 'those are several words'}),

24
tests/test_quickstart.py Normal file
View File

@@ -0,0 +1,24 @@
from blag.quickstart import get_input, quickstart
def test_get_input_default_answer(monkeypatch):
monkeypatch.setattr('builtins.input', lambda x: '')
answer = get_input("foo", "bar")
assert answer == 'bar'
def test_get_input(monkeypatch):
monkeypatch.setattr('builtins.input', lambda x: 'baz')
answer = get_input("foo", "bar")
assert answer == 'baz'
def test_quickstart(cleandir, monkeypatch):
monkeypatch.setattr('builtins.input', lambda x: 'foo')
quickstart(None)
with open('config.ini', 'r') as fh:
data = fh.read()
assert 'base_url = foo' in data
assert 'title = foo' in data
assert 'description = foo' in data
assert 'author = foo' in data