Skip to content

Simulated run option #48

@coemgenuslcp

Description

@coemgenuslcp

I propose a "simulated run" option that will show the results of a command without truly executing it. Hypothetical example:

Normal run:
pmlc convert --input_file "$inputFilePath" --output_directory "$outputFolderPath"

Simulated run:
pmlc convert --input_file "$inputFilePath" --output_directory "$outputFolderPath" --simulate

The new argument would look like this:

Id             : simulate
Title          : Simulate
Type           : yes_no
Description    : If this parameter is set to 'yes' then:
                 - the output directory is not generated if it doesn't already exist
                 - no files are copied to the output directory
                 - the intended changes are revealed to the console output
                 By default this parameter is set to 'no'.
Required       : no
Default value  : no
Examples       : --simulate

The simulated run can show the intended changes to the generated output, similar to Ansible's --check or --diff argument or Terraform's plan command.

An alternatve implementation might be like Terraform's --auto-approve option, wherewith the intended changes are revealed, and the executable by default pauses for user input ("Do you want to continue?") before applying the changes, with the auto-approve argument overriding that behavior to not pause.

The console output might also helpfully reveal the locations of the output_directory, resources_directory, etc. as they will appear on your file system after the command is run for real. This in turn can help you know whether your arguments are set correctly. Sample output might include this information, for instance:

Input file                      : my project/my input file.pml
Input file resolves to          : /home/user/my workspace/my project/my input file.pml
Output directory                : ../../my generated HTML
Output directory resolves to    : /home/user/my generated HTML/
Resources directory             : null
Resources directory resolves to : (not generated: resource references will be dangling) <-- (bad wording on my part, but you get the idea)

For inspiration by similarity, see also pmlc command_info --command convert which appears to dynamically show certain "default values" as resolved relative to your file system:

2.
Id             : HTML_header, html_header, header
Type           : absolute_or_relative_file_path or null
Required       : no
Default value  : /home/user/myapps/PML/pml-to-html-converter_1.5.0-1_amd64/lib/runtime/resources/html/default_html_header.txt

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions