From 322c1507f638931a75cb75ade060f6cf24401110 Mon Sep 17 00:00:00 2001 From: Jace Browning Date: Sat, 6 Dec 2014 17:14:32 -0500 Subject: [PATCH] Add missing copy function and add example --- Makefile | 9 +++++---- docs/reqs/REQ001.yml | 2 +- docs/reqs/REQ002.yml | 2 +- docs/reqs/REQ003.yml | 2 +- docs/reqs/REQ004.yml | 2 +- docs/reqs/REQ006.yml | 2 +- docs/reqs/REQ007.yml | 2 +- docs/reqs/REQ008.yml | 2 +- docs/reqs/REQ009.yml | 2 +- docs/reqs/REQ010.yml | 2 +- docs/reqs/REQ011.yml | 2 +- docs/reqs/REQ012.yml | 2 +- docs/reqs/REQ013.yml | 2 +- docs/reqs/REQ014.yml | 2 +- docs/reqs/REQ015.yml | 2 +- docs/reqs/REQ016.yml | 2 +- docs/reqs/REQ017.yml | 2 +- docs/reqs/REQ018.yml | 9 +++++++++ docs/reqs/REQ019.yml | 13 +++++++++++++ docs/reqs/assets/logo-black-white.png | 1 + doorstop/cli/test/test_all.py | 2 +- doorstop/common.py | 10 ++++++++++ doorstop/core/publisher.py | 4 +++- 23 files changed, 58 insertions(+), 22 deletions(-) create mode 100644 docs/reqs/REQ018.yml create mode 100644 docs/reqs/REQ019.yml create mode 120000 docs/reqs/assets/logo-black-white.png diff --git a/Makefile b/Makefile index a85fd1880..871aefd66 100644 --- a/Makefile +++ b/Makefile @@ -14,6 +14,7 @@ endif PROJECT := Doorstop PACKAGE := doorstop SOURCES := Makefile setup.py $(shell find $(PACKAGE) -name '*.py') +YAML := $(shell find . -name '*.yml' -not -path '*/test/files/*') EGG_INFO := $(subst -,_,$(PROJECT)).egg-info # System paths @@ -74,7 +75,7 @@ ALL := $(ENV)/.all .PHONY: all all: depends $(ALL) -$(ALL): $(SOURCES) +$(ALL): $(SOURCES) $(YAML) $(MAKE) doc pep8 pep257 touch $(ALL) # flag to indicate all setup steps were successful @@ -147,17 +148,17 @@ reqs: doorstop reqs-html reqs-md reqs-txt .PHONY: reqs-html reqs-html: env docs/gen/*.html -docs/gen/*.html: $(shell find . -name '*.yml' -not -path '*/test/files/*') +docs/gen/*.html: $(YAML) $(BIN)/doorstop publish all docs/gen --html .PHONY: reqs-md reqs-md: env docs/gen/*.md -docs/gen/*.md: $(shell find . -name '*.yml' -not -path '*/test/files/*') +docs/gen/*.md: $(YAML) $(BIN)/doorstop publish all docs/gen --markdown .PHONY: reqs-txt reqs-txt: env docs/gen/*.txt -docs/gen/*.txt: $(shell find . -name '*.yml' -not -path '*/test/files/*') +docs/gen/*.txt: $(YAML) $(BIN)/doorstop publish all docs/gen --text .PHONY: uml diff --git a/docs/reqs/REQ001.yml b/docs/reqs/REQ001.yml index 1432c6f07..fda022e2e 100644 --- a/docs/reqs/REQ001.yml +++ b/docs/reqs/REQ001.yml @@ -1,6 +1,6 @@ active: true derived: false -level: 1.3 +level: 2.3 links: [] normative: true ref: '' diff --git a/docs/reqs/REQ002.yml b/docs/reqs/REQ002.yml index bf59342ad..2ed9eb804 100644 --- a/docs/reqs/REQ002.yml +++ b/docs/reqs/REQ002.yml @@ -1,6 +1,6 @@ active: true derived: false -level: 1.0 +level: 2.0 links: [] normative: false ref: '' diff --git a/docs/reqs/REQ003.yml b/docs/reqs/REQ003.yml index 225d139a9..430e7409f 100644 --- a/docs/reqs/REQ003.yml +++ b/docs/reqs/REQ003.yml @@ -1,6 +1,6 @@ active: true derived: false -level: 1.1 +level: 2.1 links: [] normative: true ref: '' diff --git a/docs/reqs/REQ004.yml b/docs/reqs/REQ004.yml index e7bfc4cdd..04724eed8 100644 --- a/docs/reqs/REQ004.yml +++ b/docs/reqs/REQ004.yml @@ -1,6 +1,6 @@ active: true derived: false -level: 1.2 +level: 2.2 links: [] normative: true ref: '' diff --git a/docs/reqs/REQ006.yml b/docs/reqs/REQ006.yml index 1f21b8090..3a90d6b95 100644 --- a/docs/reqs/REQ006.yml +++ b/docs/reqs/REQ006.yml @@ -1,6 +1,6 @@ active: true derived: false -level: 2.0 +level: 3.0 links: [] normative: false ref: '' diff --git a/docs/reqs/REQ007.yml b/docs/reqs/REQ007.yml index 9781a2585..2062fbf8d 100644 --- a/docs/reqs/REQ007.yml +++ b/docs/reqs/REQ007.yml @@ -1,6 +1,6 @@ active: true derived: false -level: 2.1 +level: 3.1 links: [] normative: true ref: '' diff --git a/docs/reqs/REQ008.yml b/docs/reqs/REQ008.yml index 96d9962a9..e284b97d8 100644 --- a/docs/reqs/REQ008.yml +++ b/docs/reqs/REQ008.yml @@ -1,6 +1,6 @@ active: true derived: false -level: 2.2 +level: 3.2 links: [] normative: true ref: '' diff --git a/docs/reqs/REQ009.yml b/docs/reqs/REQ009.yml index af57f05ec..fbdc1d025 100644 --- a/docs/reqs/REQ009.yml +++ b/docs/reqs/REQ009.yml @@ -1,6 +1,6 @@ active: true derived: false -level: 2.3 +level: 3.3 links: [] normative: true ref: '' diff --git a/docs/reqs/REQ010.yml b/docs/reqs/REQ010.yml index 39b0f0b96..8d68520af 100644 --- a/docs/reqs/REQ010.yml +++ b/docs/reqs/REQ010.yml @@ -1,6 +1,6 @@ active: true derived: false -level: 3.0 +level: 4.0 links: [] normative: false ref: '' diff --git a/docs/reqs/REQ011.yml b/docs/reqs/REQ011.yml index 52f5e9804..7fab10283 100644 --- a/docs/reqs/REQ011.yml +++ b/docs/reqs/REQ011.yml @@ -1,6 +1,6 @@ active: true derived: false -level: 3.1 +level: 4.1 links: [] normative: true ref: '' diff --git a/docs/reqs/REQ012.yml b/docs/reqs/REQ012.yml index 5d2a8e998..7ec724c68 100644 --- a/docs/reqs/REQ012.yml +++ b/docs/reqs/REQ012.yml @@ -1,6 +1,6 @@ active: true derived: false -level: 3.2 +level: 4.2 links: [] normative: true ref: '' diff --git a/docs/reqs/REQ013.yml b/docs/reqs/REQ013.yml index 29862479c..c39e78247 100644 --- a/docs/reqs/REQ013.yml +++ b/docs/reqs/REQ013.yml @@ -1,6 +1,6 @@ active: true derived: false -level: 3.3 +level: 4.3 links: [] normative: true ref: '' diff --git a/docs/reqs/REQ014.yml b/docs/reqs/REQ014.yml index 4b62f8686..1483e8c52 100644 --- a/docs/reqs/REQ014.yml +++ b/docs/reqs/REQ014.yml @@ -1,6 +1,6 @@ active: true derived: false -level: 3.4 +level: 4.4 links: [] normative: true ref: '' diff --git a/docs/reqs/REQ015.yml b/docs/reqs/REQ015.yml index b7c0c01ea..b20a9ddb2 100644 --- a/docs/reqs/REQ015.yml +++ b/docs/reqs/REQ015.yml @@ -1,6 +1,6 @@ active: true derived: false -level: 3.5 +level: 4.5 links: [] normative: true ref: '' diff --git a/docs/reqs/REQ016.yml b/docs/reqs/REQ016.yml index da315d3bd..5ad016a28 100644 --- a/docs/reqs/REQ016.yml +++ b/docs/reqs/REQ016.yml @@ -1,6 +1,6 @@ active: true derived: false -level: 1.4 +level: 2.4 links: [] normative: true ref: '' diff --git a/docs/reqs/REQ017.yml b/docs/reqs/REQ017.yml index 8ef87240d..5cbafd8de 100644 --- a/docs/reqs/REQ017.yml +++ b/docs/reqs/REQ017.yml @@ -1,6 +1,6 @@ active: true derived: false -level: 1.5 +level: 2.5 links: [] normative: true ref: '' diff --git a/docs/reqs/REQ018.yml b/docs/reqs/REQ018.yml new file mode 100644 index 000000000..9057aca38 --- /dev/null +++ b/docs/reqs/REQ018.yml @@ -0,0 +1,9 @@ +active: true +derived: false +level: 1.0 +links: [] +normative: false +ref: '' +reviewed: 36dc57d43cb60ffc9f05ffb055ac4994 +text: | + Overview diff --git a/docs/reqs/REQ019.yml b/docs/reqs/REQ019.yml new file mode 100644 index 000000000..4c0010514 --- /dev/null +++ b/docs/reqs/REQ019.yml @@ -0,0 +1,13 @@ +active: true +derived: false +level: 1.1 +links: [] +normative: false +ref: '' +reviewed: e6e5ef2698c5bbdf432abdd2f26d4bcf +text: | + Doorstop is a requirements management tool that leverages version control to + store and manage a project's documentation traced from specification through + implementation. + + ![Doorstop Logo](assets/logo-black-white.png "Doorstop Logo") diff --git a/docs/reqs/assets/logo-black-white.png b/docs/reqs/assets/logo-black-white.png new file mode 120000 index 000000000..5dbc2b0c0 --- /dev/null +++ b/docs/reqs/assets/logo-black-white.png @@ -0,0 +1 @@ +../../../pages/images/logo-black-white.png \ No newline at end of file diff --git a/doorstop/cli/test/test_all.py b/doorstop/cli/test/test_all.py index 5676f619f..f2e2d5ffd 100644 --- a/doorstop/cli/test/test_all.py +++ b/doorstop/cli/test/test_all.py @@ -16,7 +16,7 @@ from doorstop.cli.test import SettingsTestCase REQ_COUNT = 14 -ALL_COUNT = 44 +ALL_COUNT = 46 class TempTestCase(unittest.TestCase): diff --git a/doorstop/common.py b/doorstop/common.py index 0ee877edc..4f686d075 100644 --- a/doorstop/common.py +++ b/doorstop/common.py @@ -2,6 +2,7 @@ import os import shutil +from distutils import dir_util import argparse import logging @@ -178,6 +179,15 @@ def touch(path): # pragma: no cover (integration test) write_text('', path) +def copy(src, dst): + """Copy a file or directory.""" + if os.path.isfile(src): + delete(dst) + shutil.copy(src, dst) + elif os.path.isdir(src): + dir_util.copy_tree(src, dst) + + def delete(path): # pragma: no cover (integration test) """Delete a file or directory with error handling.""" if os.path.isdir(path): diff --git a/doorstop/core/publisher.py b/doorstop/core/publisher.py index b92cb8cef..350087008 100644 --- a/doorstop/core/publisher.py +++ b/doorstop/core/publisher.py @@ -54,7 +54,9 @@ def publish(obj, path, ext=None, linkify=None, index=None, **kwargs): lines = publish_lines(obj2, ext, linkify=linkify, **kwargs) common.write_lines(lines, path2) if obj2.assets: - common.copy(obj2.assets, os.path.join(path2, obj2.ASSETS)) + src = obj2.assets + dst = os.path.join(os.path.dirname(path2), obj2.ASSETS) + common.copy(src, dst) # Create index if index and count: