release readme2index.sh version 1.0 2024-01-14
The initial release of `bin/readme2index.sh` tool that converts `READMD.md` and various JSON files such as `.winner.json` as well as "author/author_handle.json" files. Applied the `readme2index.sh` tool to generate `2020/ferguson1/index.html`. We generated the `2020/ferguson1/index.html` by executing: ```sh ./bin/readme2index.sh -v 3 2020/ferguson1 ``` NOTE: This above tool requires **pandoc to be installed**. See the [pandoc web site](https://pandoc.org) for how to install. We used _HomeBrew_ to install it, but there is also a _macports_ process as well. NOTE: While the above web page does have formatting issues, it is a first attempt data driven programmatic web page generation. Some adjustments can be made by mostly improving `ioccc.css`, and some perhaps by modifying how `bin/pandoc_wrapper.sh` invokes pandoc. But probably most of the improvements can be made by fixing and improving `ioccc.css`. TODO: Fix and improve the `2020/ferguson1/index.html` web page by fixing and improving `ioccc.css`. Moved scripts and tools needed to generate HTML pages into a new `/bin` subdirectory. TODO: Consider getting rid of the [build-ioccc repo](https://github.com/ioccc-src/build-ioccc) and just use the `/bin` subdirectory. NOTE: Some links in the `2020/ferguson1/index.html` web page do not (yet) exist. TODO: Once the basic format of the `2020/ferguson1/index.html` web page is somewhat reasonable, generate `index.html` pages for other winners. Generate the year level `index.html' files. Generate the top level HTML files, including the missing `location.html` file. Greatly simplified the `.winner.json` file format, removing a number of fields that were not strictly needed for generating an inventory on a `index.html` page. Updated various versions: * `bin/gen-author.sh` VERSION="1.3 2024-01-14" * `bin/gen-inventory.sh` VERSION="1.0 2024-01-14" * `bin/manifest.winner.json.awk` VERSION="1.0 2024-01-14" * `bin/pandoc_wrapper.sh` VERSION="1.3 2024-01-14" * `bin/readme2index.sh` VERSION="1.0 2024-01-14" * `bin/subst.default.sh` VERSION="1.1 2024-01-14" * `bin/subst.winner-index.sh` VERSION="1.1 2024-01-14" * `tmp/gen_path_list.found.sh` VERSION="1.1 2024-01-14" * `tmp/gen_winner_json.sh` VERSION="1.1 2024-01-14" The `.winner.json` file format from winner_JSON_format_version "0.5 2023-11-04" to "1.0 2024-01-14". All `.winner.json` files have been updated to use the new `.winner.json` file format. The manifest (`tmp/manifest.numbers` and `tmp/manifest.csv`) has updated to use the new `.winner.json` file format. The following procedure was used to generate the `tmp/manifest.csv` manifest file: 0. open [manifest.numbers](manifest.numbers) in numbers: modify if/as needed NOTE: Please try to keep the [manifest.numbers](manifest.numbers) spreadsheet in order order. Use Organize -> Sort -> ((Sort Now)) to sort. NOTE: Empty fields in the [manifest.numbers](manifest.numbers) spreadsheet are not allowed. By default, a cell that is empty is colored as a warning. 1. File -> Export To -> CSV... * 1a. `[ ]` Include table names (unset) * 1b. Text Encoding: Unicode (UTF-8) * 1c. Click ((Save..)) 2. Save As: manifest.csv * 2a. Select the `tmp` directory 3. Click ((Export)) * 3a. If needed click ((Replace)) 4. Execute ./tmp/[fix_csv.sh](fix_csv.sh) NOTE: You must run the [fix_csv.sh](fix_csv.sh) in the above step in order to make the CSV file usable by other tools. NOTE: If no changes are needed in the above step, the original file content will be restored. 5. Execute ./tmp/[gen_path_list.found.sh](gen_path_list.found.sh) NOTE: The above step silently performs a `make clobber` at the top level, and so it takes a bit of time. NOTE: If no changes are needed in the above step, the original file content will be restored. 6. Execute ./tmp/[check_path_list.sh](check_path_list.sh) NOTE: The above step prints nothing and for an exit 0, then all is well. If there is a problem, such as files found that are not part of the manifest, or files in the manifest that are not found, then an error message will be printed and the tool will exit non-zero. If errors are reported, go back to step 0 and correct the errors. 7. Execute ./tmp/[run_all.sh](run_all.sh) ./gen_winner_json.sh NOTE: The above step will take a few seconds to run. It will rebuild all `.winner.json` files for all winners. NOTE: If no changes are needed in the above step, the original file content will be restored. 8. Execute `git status` and inspect changes NOTE: Check in changes if and as needed. NOTE: In a number of shell scripts under `bin/*.sh`, and in the `bin/manifest.winner.json.awk` script you will find comments of the form: ``` ``` This is a note that when tools such as `jnamval` (and `jval` and `jfmt`) are ready, these gross hacks should be replaced with calls to those tools. Until they are ready, some must be careful with the layout of JSON files. A number of bugs and typos have been fixed. NOTE: Fixing typos in the files touched by this comment is welcome. This includes scripts, data files, text files, etc. The _inventory_order_, _display_as_, _display_via_github_. and _winners_text_ fields of the [manifest.numbers](manifest.numbers) spreadsheet were just set to have some initial values. As they impact the inventory displayed on `index.html` pages, their content needs to be improved. NOTE: Improving the above mentioned fields of the [manifest.numbers](manifest.numbers) spreadsheet is welcome.
This commit is contained in:
1 parent
f5a259d3b3
commit
c6e6201209
366 files changed
+29369
-31783
No files matched your search
+29
-75
@@ -392,7 +392,7 @@ rm -rf ../author ; ./gen_author_json.sh author_handle.txt author.csv author_win
|
||||
|
||||
### [gen_winner_json.sh](gen_winner_json.sh)
|
||||
|
||||
Generate a `.winner.json` and `inventory.html' for a given winner.
|
||||
Generate a `.winner.json` for a given winner.
|
||||
|
||||
|
||||
### [gen_path_list.found.sh](gen_path_list.found.sh)
|
||||
@@ -434,77 +434,56 @@ This file as the following fields:
|
||||
Path under the IOCCC/directory. In a few cases this is a path,
|
||||
not just a simple filename under the IOCCC/directory.
|
||||
|
||||
4. winners_rank:
|
||||
4. inventory_order:
|
||||
|
||||
If a number, then this is the winners rank showing the order
|
||||
This number is the winners rank showing the order
|
||||
that this file is to be listed for the given entry's in
|
||||
[winners.html](winners.html), or null if the file is not to be listed.
|
||||
[winners.html](winners.html).
|
||||
|
||||
5. created_by:
|
||||
If the number is 9 digits or less, then the given file
|
||||
is considered a primary file when listed in the inventory
|
||||
of files for a given winner.
|
||||
|
||||
The name of the program that creates this file, or null if the
|
||||
file is an original file.
|
||||
If the number is 10 digits or more, then the given file
|
||||
is considered a secondary file when listed in the inventory
|
||||
of files for a given winner. We recommend using the
|
||||
value **4294967295** (2^32-1) for secondary files.
|
||||
|
||||
NOTE: A null created_by value indicates that the file is part
|
||||
of the primary content. A non-null created_by value indicates
|
||||
that the contents of the file is created by given program from
|
||||
primary content files.
|
||||
5. OK_to_edit:
|
||||
|
||||
6. prog:
|
||||
If the value is `true`, then the file is one that may be
|
||||
edited directly.
|
||||
|
||||
This field indicates if the file main program. This filed is one of:
|
||||
If the value is `false`, then the file should **NOT** be
|
||||
edited, because the given file is generated by a tool.
|
||||
One should **NOT** modify such a file directly, but
|
||||
instead modify source files (i.e., markdown files,
|
||||
JSON files, etc.)
|
||||
|
||||
main The main source code to display.
|
||||
alt The alternative source code.
|
||||
orig The original version of the source code (may be the same as main).
|
||||
null Not a primary, nor alternative, nor original source code file.
|
||||
6. display_as:
|
||||
|
||||
7. filetype:
|
||||
The type of given file.
|
||||
|
||||
The type of file.
|
||||
7. display_via_github
|
||||
|
||||
8. winners_show:
|
||||
If `true`, then the contents of the file should be viewed
|
||||
via the GitHub repo.
|
||||
|
||||
A JSON boolean indicating of the file is listed on `winners.html` or not.
|
||||
If `false`, then the contents of the file should be viewed
|
||||
in the web browser directly. In some cases this may
|
||||
result in the file being downloaded instead of being displayed.
|
||||
|
||||
The winners_show value must be either true or false.
|
||||
|
||||
NOTE: When winners_show is false, display_via MUST be null.
|
||||
|
||||
9. display_via:
|
||||
|
||||
A string indicating how the file is to be displayed from `winners.html`.
|
||||
Possible files include:
|
||||
|
||||
browser The file is to be displayed directly from the browser.
|
||||
github The file should be linked to the GitHub repo so that
|
||||
it may be rendered directly by GitHub. In the future
|
||||
this may changed to allow a suitable browser to
|
||||
directly display this file instead of via GitHub.
|
||||
download The file is intended to be downloaded from the browser
|
||||
instead of being displayed.
|
||||
null This file not listed in `winners.html`.
|
||||
|
||||
NOTE: When display_via is null, winners_show MUST be false.
|
||||
|
||||
10. winners_text:
|
||||
8. winners_text:
|
||||
|
||||
Any text that should be displayed at the end of line in `winners.html`
|
||||
(with a preceding " - "), or null is no such text is to be displayed.
|
||||
|
||||
11. ext:
|
||||
|
||||
This ending filename extension, or null if no extension.
|
||||
This field is not used.
|
||||
|
||||
The 11 field names in [manifest.numbers](manifest.numbers), must
|
||||
The 8 field names in [manifest.numbers](manifest.numbers), must
|
||||
match the JSON member names found in
|
||||
[example.dot_winner.json](example.dot_winner.json).
|
||||
|
||||
NOTE: Cells containing null are a JSON NULLs.
|
||||
NOTE: Cells containing true or false are JSON booleans.
|
||||
NOTE: Empty cells are TBD and need to be filled in.
|
||||
NOTE: The winners_rank cells are either JSON null or JSON numbers.
|
||||
NOTE: All other cells are JSON strings that need to be double quoted, including the year.
|
||||
NOTE: Do not put commas, nor quotes, nor newlines in fields as these are bound to cause problems.
|
||||
|
||||
@@ -580,31 +559,6 @@ entries where the "created_by" (5th) field is non-null. See
|
||||
This file is formed by the [fix_csv.sh](fix_csv.sh) tool.
|
||||
|
||||
|
||||
### [readme2index.sh](readme2index.sh)
|
||||
|
||||
This tool is a prototype of the tool that will generate an `index.html`
|
||||
from a `README.md` file in the winner directory. This tool perfomed
|
||||
multi-phase getopt parse model as documented in the `inc/md2html.cfg`
|
||||
configuration file. The `inc/md2html.cfg` configuration file is
|
||||
scanned for a "yyyy/dir/README.md" match.
|
||||
|
||||
Try:
|
||||
|
||||
```sh
|
||||
./readme2index.sh -v 1 2020/ferguson1
|
||||
./readme2index.sh -v 3 2020/ferguson1
|
||||
./readme2index.sh -v 5 2020/ferguson1
|
||||
./readme2index.sh -v 7 2020/ferguson1
|
||||
```
|
||||
|
||||
This tool was based on the (now removed) "sample_getopt.sh" getopt
|
||||
command line parse demo.
|
||||
|
||||
As of the time this text was written, the `README.md` file was
|
||||
not (yet) generated. And while some _inc/something.sh_ are
|
||||
exexuted, those scripts are just executable stub demos.
|
||||
|
||||
|
||||
### [sql/winners.sql](sql/winners.sql)
|
||||
|
||||
This is a SQL file, extracted from another SQL file that was used in the past
|
||||
|
||||
Reference in new issue
Block a user