From 0c19018fbb2ae22b06df87b4d458f07404e8ff58 Mon Sep 17 00:00:00 2001 From: gabe Date: Thu, 16 Sep 2021 15:35:09 -0500 Subject: [PATCH 1/3] changed testing suite. Corresponds with new feature. --- tests/result/include/include.html | 552 ------------------ .../include/{include.adoc => include.txt} | 0 tests/test/landing_page.adoc | 2 +- 3 files changed, 1 insertion(+), 553 deletions(-) delete mode 100644 tests/result/include/include.html rename tests/test/include/{include.adoc => include.txt} (100%) diff --git a/tests/result/include/include.html b/tests/result/include/include.html deleted file mode 100644 index 74d8e07..0000000 --- a/tests/result/include/include.html +++ /dev/null @@ -1,552 +0,0 @@ - - - - - - - -included section - - - - - -
-
-

included section

-
-
-

Fusce maximus nec magna eu ultricies. -Fusce quis tellus vitae arcu facilisis lobortis. -Donec id erat at enim porta placerat in vitae sapien. -Duis justo arcu, hendrerit nec nulla eu, dictum dapibus ipsum. -Sed fermentum id elit eget fringilla. -Suspendisse volutpat imperdiet justo, ut efficitur odio maximus et. -Nunc interdum sollicitudin eros sit amet convallis. -Praesent volutpat tempus metus id tincidunt. -Proin aliquet justo a fermentum consectetur. -Nunc scelerisque, nisi id scelerisque dictum, nibh lectus ultrices nunc, quis ultricies erat velit sit amet urna. -Maecenas orci felis, volutpat at bibendum ut, mattis eu justo.

-
-
-

blocks

-
-
listing block
-
-
example of _listing block_
-with verbatim line break
-
-
-
-
Example 1. example block
-
-
-

example block -with line break

-
-
-
-
-
literal block
-
-
_literal_ block
-with line break
-
-
-pass block -with underlined text -
-
quote block
-
-
-

quote block -with line break

-
-
-
-
-
-
sidebar block
-
-

sidebar block -with line break

-
-
-
-
- - - - - -
-
Note
-
-
-

This is an example of an admonition block.

-
-
-

Unlike an admonition paragraph, it may contain any AsciiDoc content. -The style can be any one of the admonition labels:

-
-
-
    -
  • -

    NOTE

    -
  • -
  • -

    TIP

    -
  • -
  • -

    WARNING

    -
  • -
  • -

    CAUTION

    -
  • -
  • -

    IMPORTANT

    -
  • -
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/tests/test/include/include.adoc b/tests/test/include/include.txt similarity index 100% rename from tests/test/include/include.adoc rename to tests/test/include/include.txt diff --git a/tests/test/landing_page.adoc b/tests/test/landing_page.adoc index 0a4b2f5..ea59699 100644 --- a/tests/test/landing_page.adoc +++ b/tests/test/landing_page.adoc @@ -131,4 +131,4 @@ It's designed for: |=== -include::{includedir}/include.adoc[] +include::{includedir}/include.txt[] From 4cd780be6de40fa1bc261e547123d26242086085 Mon Sep 17 00:00:00 2001 From: gabe Date: Thu, 16 Sep 2021 21:16:34 -0500 Subject: [PATCH 2/3] added glob pattern based exclude Will not copy over files that match the exclude paramater. This can be usefull for things that are needed to compile the asciidoc, but should not be included in the final website. resolves #4 --- ASCIIsite.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/ASCIIsite.py b/ASCIIsite.py index cd825c0..8d5b212 100755 --- a/ASCIIsite.py +++ b/ASCIIsite.py @@ -12,6 +12,7 @@ def parse_arguments(): parser.add_argument('inputDir', type=Path, help='The directory of adoc files to be copied and converted.') parser.add_argument('-o', '--output', type=Path, help='What to name the generated directory or tar file') parser.add_argument('-z', '--compress', action='store_true', help='whether to compress the resulting directory to a tar.gz file. can be usefull for scripting to transfer the site to a remote server.') + parser.add_argument('--exclude', nargs='+', help='A list of glob patterns to ignore. Remember to quote them so your shell doesnt escape them!') args=parser.parse_args() #set compress flag @@ -43,15 +44,17 @@ def parse_arguments(): logging.info(f'outputting to {outFile.resolve()}') logging.debug(f'compress is {compress}') - return args.inputDir.resolve(), outFile, compress + return args.inputDir.resolve(), outFile, compress, args.exclude #Doing it in a tmpDir first, as some distrubutions put temp files on a ramdisk. this should speed up the operation sigificantly. class TmpDir: - def __init__(self, srcDir): + def __init__(self, srcDir, exclude): self.tmpDir=tempfile.TemporaryDirectory() logging.debug(f'making tmp file from {srcDir} at {self.tmpDir.name}') self.path=self.tmpDir.name+'/'+Path(srcDir).resolve().name - self.ignorePattern=shutil.ignore_patterns('*.adoc', '.git', '.gitignore') + self.ignorePatterns=['*.adoc', '.gitignore', '.git/*'] + self.ignorePatterns.extend(exclude) + self.ignorePattern=shutil.ignore_patterns(*self.ignorePatterns) shutil.copytree(srcDir, self.path, ignore=self.ignorePattern, symlinks=False) #copy out from tmpDir (which may be in RAM, depending on distrubution) to disk @@ -92,9 +95,9 @@ def convert_file(inDir, outDir, inFile): logging.error(f'stdOut was {e.stdout}') if __name__ == '__main__': - inFile, outFile, compress=parse_arguments() + inFile, outFile, compress, exclude=parse_arguments() os.chdir(inFile) - tmpDir=TmpDir('./') + tmpDir=TmpDir('./', exclude) pathsToConvert=find_paths_to_convert('*.adoc') for i in pathsToConvert: From c5abd57ab44afbc5ce63a6093efb917f1ba56bc1 Mon Sep 17 00:00:00 2001 From: gabe Date: Thu, 16 Sep 2021 21:28:56 -0500 Subject: [PATCH 3/3] Edited readme for the glob ignore feature. --- README.md | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index e95c43b..9d81680 100644 --- a/README.md +++ b/README.md @@ -3,14 +3,18 @@ ![Licence](https://img.shields.io/badge/Licence-GPL-blue) ## What is it? -ASCIIsite is a simple, barebones static site generator. You give it a directory contaning asciidoctor documents and supporing media in the strucutre you want your site to be in, and it spits out a fully functional static site based on that input directory. +ASCIIsite is a simple, bare bones static site generator. You give it a directory containing asciidoctor documents and supporting media in the structure you want your site to be in, and it spits out a fully functional static site based on that input directory. ## Usage -ASCIISite takes 2 (so far) optional arguments followed by the single mandatory arument telling it what directory to convert. +ASCIISite takes 2 (so far) optional arguments followed by the single mandatory argument telling it what directory to convert. the -o or --output option simply tells ASCIISite what to name the output file. +the --exclude flag allows you to specify a list of glob patterns. Any file matching these glob patterns will not be copied to the output. +This is helpful for any files that are needed for the compilation of the asciidoc files, but do not need to be in the final site. +The main use case I am aware of is files that are put into an asciidoc document via an include statement. + the -z or --compress flag tells ASCIISite to put the final product in a compressed tar.gz file as its output. This is especially useful if you are running ASCIISite on your personal computer, and will be uploading the tar.gz file to your server. @@ -29,7 +33,7 @@ test ├── images │   └── test_pattern.svg ├── include -│   └── include.adoc +│   └── include.txt └── landing_page.adoc ``` @@ -50,7 +54,25 @@ result ├── images │   └── test_pattern.svg ├── include -│   └── include.html +│   └── include.txt +└── landing_page.html +``` + +If, say, the include directory is a directory needed for the asciidoc compilation, +but not needed for the final website, you can use the --exclude option to specify a list of glob patterns to exclude. For example, +```` +ASCIIsite.py --exclude 'include*' -o output test +``` + +will get you an output like: +``` +result +├── dir +│   ├── collatz.py +│   └── subdir +│   └── linked.html +├── images +│   └── test_pattern.svg └── landing_page.html ```