[v1.2.0] DoomerPublish - Easy project publishing and tooling (includes template)

Any utility that assists in the creation of mods, assets, etc, go here. For example: Ultimate Doom Builder, Slade, WadSmoosh, Oblige, etc.
Forum rules
The Projects forums are ONLY for YOUR PROJECTS! If you are asking questions about a project, either find that project's thread, or start a thread in the General section instead.

Got a cool project idea but nothing else? Put it in the project ideas thread instead!

Projects for any Doom-based engine (especially 3DGE) are perfectly acceptable here too.

Please read the full rules for more details.
User avatar
Fused
Posts: 80
Joined: Wed Jul 02, 2014 2:44 pm

[v1.2.0] DoomerPublish - Easy project publishing and tooling (includes template)

Post by Fused »

DoomerPublish
DoomerPublish is a tool that makes it easier for users to develop, test and bundle their projects.

Links
Download latest version
Github repository
Discord server


What is this?
DoomerPublish is a tool that I designed because I personally noticed that I wanted to automate a lot of common tasks that I do with my project.
These are simple things like removing files that do not need to be packed with my pk3, but also more advanced things like generating an ACS file that imitates being a "header" like from C, but for ACS.
I have also created a template project that includes more of these "automations", combined with DoomerPublish to publish my project based on what I am doing.
In short, it makes your life easier.
In order to give a full explanation of the functionalities, a wiki page will be made with release 1.1.0.


Tool Usage
The tool allows a list of arguments that specify what tasks to invoke when it's running. Not specifying one or more argument may cause a task to not run.

Generation options
  • todoAt: Specify absolute path of directory to generate a todo list.
  • decorateSummaryAt: Specify absolute path of directory to generate a decorate summary.
Compiler options
  • compilerRoot: Specify absolute path of directory containing the compiler folders.
  • compileWith: Specify if the project should be compiled (possible values: acc, bcc, gdccacc). Requires option "compilerRoot".
  • defines: Preprocessor defines for the compiler. Unused if the compiler does not support it.
  • engine: Specify the engine to support the tool in compilation (possible values: zdoom, zandronum, eternity). This is currently only relevant for GDCC compilation.
  • noWarnForwardReferences: Specify if the compiler should not warn of forward references. Only used with the GDCC compilers.
  • todoAt: Specify absolute path of directory to generate a todo list.
Task options
  • tempProject: Specify to create a temporary project.
  • publicAcs: Specify to create a public acs source.
  • removeAcs: Specify to remove the acs source.
  • removeUnrelated: Specify to remove unrelated files.
  • packDecorate: Specify to pack decorate into one file.
  • removeEmptyDirectories: Specify to remove empty directories.
  • removeEmptyLogFIles: Specify to remove empty log files from the log output folder.
The full list can be found by passing `--help` when invoking the tool.
The template has a file `publish-template.ps1` with more information on how to invoke this tool, and example code.


Template Usage
The template project is a combination of my tool and multiple Powershell scripts which automate common tasks that you will have during development.
The powershell scripts allow you to easily test, edit and publish your project.
By default, the template project has a base project for three compilers: `acc`, `bcc` and `gdcc-acc`. You can reuse these, or start a project yourself.
The template is ready to be used as-is, but be sure to read `README.md` for prerequisites that must be met if you plan on using any of the scripts out of the box.
The template does not have any compilers by default, and neither does it have the tool. These must be added manually, but explanation is added on obtaining these.
The template has an explanation on how everything works, and abstracts most of the "hard work" away in the scripts folder. You are allowed to modify this project to whatever you wish.


Feature showcase
Generating a public ACS file
This is a file that contains dummy functions and scripts that can be included in the final mod. ACS does not care if you include the real file. If you include this file, you can use all functions that you want to use, and by providing the compiled ACS in the mod's project, Zandronum will work as normal.
  • To add a function to the generated file, put `// @public` above a function or script. You can optionally provide `// @summary <text>` and provide a helpful comment in the generated file.
  • Libdefines are automatically added.
  • GDCC and BCC enums are converted into libdefines.
Spoiler:
Generating a TODO list
The generated file will display the todo topic, and also the location of the todo item in your code.
  • The todo list uses todo comments from your ACS and Decorate files. To specify a todo item, put `// @todo <text>` or `// @todo: <text>` in your ACS or Decorate file.
Spoiler:
Generating a Decorate summary
The generated summary will summarize all doomednums that exist in your project, in order. The generated summary will also display a list of all known actors in your project, including inherited actor and doomednum if it has one.
Generating a summary using the Floppy Disk Mod, this was the result (warning, it's a lot):
Spoiler:
Last edited by Fused on Wed Feb 05, 2025 12:57 pm, edited 1 time in total.
User avatar
Fused
Posts: 80
Joined: Wed Jul 02, 2014 2:44 pm

Re: [v1.1.0] DoomerPublish - Easy project publishing and tooling (includes template)

Post by Fused »

DoomerPublish v1.1.0

The next version is here after over a year of development!
It has been a long time since there has been any updates about the project, and there has been a group of people using the tool for developing their projects. This next version aims to significantly improve support of the various compilers, and making it easier to work with the project in order to save time.
  • The project now targets .NET 8.
  • Added extra checks to ensure that ACS files are only removed when they are used in a root library.
  • Added support for TODO comments, marked by `//@todo`. These can be written to a TODO file in the log folder.
  • Added the ability to strip specific decorate files that should not be included in a build.
  • Improved output in case of errors during invokation of the tool.
  • Fixed UDB editor keys not working correctly when the decorate is packed into a single file.
  • Added a task that is able to strip empty log files generated inside the log folder.
  • Fixed the following issues for BCC enums:
    - BCC enums are not parsed if the value contains 0-9 or =.
    - Private enums are parsed regardless the fact that they are unusable outside of the implementing library.
    - Enums that contain a bitshift are not properly parsed.
    - Non-integer enums are not properly parsed.
  • Improved ACS file generation, which now properly parses `raw` and `fixed` types into a supported ACC type.
  • Method parsing is more specific and now allows for more complex BCC syntax.
  • The tool no longer attempts to generate ACS for code that is part of a named namespace.
BREAKING CHANGES:
  • `removeEmpty` has been renamed to `removeEmptyDirectories`.
There are many more changes apart from the listed ones. Considering it has been over a year since the last version, many changes have been made including ones I likely forgot to mention.
Link to release: https://github.com/RoyDefined/DoomerPub ... tag/v1.1.0
User avatar
Fused
Posts: 80
Joined: Wed Jul 02, 2014 2:44 pm

Re: [v1.2.0] DoomerPublish - Easy project publishing and tooling (includes template)

Post by Fused »

DoomerPublish v1.2.0

This release aims to fix a few more gaps in the processing of files that have been reported and have been quite annoying to work around. It also aims to improve development in general by improving the clarity of issues so they are easier to fix.
  • The command display has been improved visually.
  • Logging using Serilog is now the default.
  • Improved application error handling which now prints a better description in case of issues during invokation.
  • General improvements to project structure.
  • Added more tests.
  • The `function` prefix on functions is now optional during parsing.
  • Fixed an issue where optional parameters were not correctly parsed.

Link to release: https://github.com/RoyDefined/DoomerPub ... tag/v1.2.0

And with this, I would like to announce the end of active development of this project. As folks might now this project was the first available on the GitHub and it has helped many people. However, its limitations really show and I have been meaning to improve on that. I would like to make a version 2, but the more I think of this the more it becomes clear that it is suited as its own project. Therefore rather than doing it here, a new project will takes it place and this one will be left as it is now. I hope to be able to share progress on this application in the near future. For now, I will likely keep the project publicly available until the new project takes its place. After that DoomerPublish will change to a read-only status, where it will still be available but no longer accepting contributions in any way.

Return to “Creation, Conversion, and Editing”