Skip to content

Conversation

@CLHatch
Copy link
Contributor

@CLHatch CLHatch commented Oct 23, 2025

Rename the menu.ini config file to dockstarter.ini, and create more generic configuration functions, to allow config options un-related to the menu system.

Summary by Sourcery

Rename menu.ini to dockstarter.ini and refactor configuration handling to be more generic by introducing dedicated config creation and application scripts, and updating all script references to use the new APPLICATION_INI_FILE constant.

New Features:

  • Add config_create script to initialize or migrate the new dockstarter.ini file
  • Add apply_config script to orchestrate config creation, theme application, and sorting of the ini file

Enhancements:

  • Replace explicit menu.ini references with APPLICATION_INI_FILE (dockstarter.ini) across all scripts
  • Refactor config_get and config_set to default to the new ini file when no path is provided
  • Update apply_theme and menu_options_display to auto-create config and drop filename parameters
  • Introduce DEFAULTS_FOLDER and TIMESTAMPS_FOLDER constants in global_variables and move dialog file paths to the project root

Tests:

  • Add stub tests for config_create and apply_config

@CLHatch CLHatch requested a review from a team as a code owner October 23, 2025 08:15
@sourcery-ai
Copy link
Contributor

sourcery-ai bot commented Oct 23, 2025

Reviewer's Guide

Introduces a generic application config (dockstarter.ini) by renaming menu.ini, adding dynamic creation and migration of the config file, refactoring config_get/config_set to default to the new file, and updating related scripts to operate against the generic config.

Sequence diagram for config file creation and migration

sequenceDiagram
    participant SCRIPTS as "Script Entry Point"
    participant CONFIG as "config_create()"
    participant FS as "File System"
    SCRIPTS->>CONFIG: Check if dockstarter.ini exists
    alt dockstarter.ini does not exist
        CONFIG->>FS: Check for menu.ini
        alt menu.ini exists
            CONFIG->>FS: Rename menu.ini to dockstarter.ini
        else menu.ini does not exist
            CONFIG->>FS: Copy default dockstarter.ini from .defaults/
        end
    end
Loading

Class diagram for config_get and config_set refactor

classDiagram
    class config_get {
        +GET_VAR
        +VAR_FILE = APPLICATION_INI_FILE (default)
        +Reads value from VAR_FILE
    }
    class config_set {
        +SET_VAR
        +NEW_VAL
        +VAR_FILE = APPLICATION_INI_FILE (default)
        +Sets value in VAR_FILE
    }
    config_get <..> config_set: Both use APPLICATION_INI_FILE by default
Loading

Flow diagram for updated main initialization process

flowchart TD
    A["main()"] --> B["init()"]
    B --> C["apply_config()"]
    C --> D["config_create() if dockstarter.ini missing"]
    C --> E["apply_theme()"]
    C --> F["sort dockstarter.ini"]
    E --> G["Read theme and options from dockstarter.ini"]
Loading

File-Level Changes

Change Details Files
Rename and dynamically generate the application config file
  • Introduce APPLICATION_INI_NAME and APPLICATION_INI_FILE constants
  • Add config_create.sh to migrate or copy the default config
  • Add apply_config.sh to handle config initialization and call apply_theme
  • Update main.sh to invoke apply_config instead of apply_theme directly
.scripts/config_create.sh
.scripts/apply_config.sh
main.sh
Refactor config_get and config_set to use the generic config
  • Default VAR_FILE to APPLICATION_INI_FILE when no file argument is passed
  • Remove explicit menu.ini arguments from config_get and config_set calls
  • Update theme_name to read Theme from APPLICATION_INI_FILE
.scripts/config_get.sh
.scripts/config_set.sh
.scripts/theme_name.sh
Refactor global variable definitions for new config
  • Add DEFAULTS_FOLDER and DEFAULTS_FOLDER_NAME constants
  • Declare APPLICATION_INI_NAME and APPLICATION_INI_FILE
  • Remove MENU_INI_NAME and MENU_INI_FILE declarations
  • Reorder and group folder constants for clarity
.includes/global_variables.sh
Update apply_theme to use the generic config and handle missing file
  • Check for APPLICATION_INI_FILE and invoke config_create if missing
  • Replace MENU_INI_NAME references with APPLICATION_INI_NAME
  • Simplify config_get/config_set calls to omit file path
  • Minor formatting improvements in fatal error messages
.scripts/apply_theme.sh
Adjust menu display and dialog functions for generic config
  • Silence apply_theme calls in menu_options_display
  • Update config_get/config_set invocations to target APPLICATION_INI_FILE
  • Relocate DIALOG_OPTIONS_FILE and DIALOGRC paths to use script root
.scripts/menu_options_display.sh
.includes/dialog_functions.sh

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@github-actions github-actions bot added the core Automatic label label Oct 23, 2025
Copy link
Contributor

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey there - I've reviewed your changes and they look great!

Prompt for AI Agents
Please address the comments from this code review:

## Individual Comments

### Comment 1
<location> `.scripts/menu_options_display.sh:12` </location>
<code_context>
     local Title="Display Options"

-    #run_script 'apply_theme'
+    run_script 'apply_theme' &> /dev/null

     local DrawLineOption="Draw Lines"
</code_context>

<issue_to_address>
**suggestion (bug_risk):** apply_theme output is now suppressed.

Suppressing all output may hide errors from apply_theme. Consider capturing or logging error messages separately to ensure failures are not overlooked.

```suggestion
    # Suppress standard output, but capture error output
    local apply_theme_err
    apply_theme_err=$(run_script 'apply_theme' 2>&1 > /dev/null)
    if [[ -n "$apply_theme_err" ]]; then
        echo "Error applying theme: $apply_theme_err" >&2
    fi
```
</issue_to_address>

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

@CLHatch CLHatch merged commit 89f07d4 into main Oct 23, 2025
20 checks passed
@CLHatch CLHatch deleted the config branch October 23, 2025 08:17
CLHatch added a commit that referenced this pull request Oct 25, 2025
commit 0baf2df
Author: CLHatch <[email protected]>
Date:   Sat Oct 25 00:53:38 2025 -0500

    Remove `-T` from the `--pm-config` and `--pm-config-auto` usages text (#2285)

commit d60ce73
Author: CLHatch <[email protected]>
Date:   Sat Oct 25 00:40:28 2025 -0500

    Add the missing `--config-pm` and `--config-pm-auto` usage text (#2284)

commit 24ff1ad
Author: CLHatch <[email protected]>
Date:   Fri Oct 24 23:34:52 2025 -0500

    Add package manager selection options (#2283)

commit 79f4ab5
Author: CLHatch <[email protected]>
Date:   Fri Oct 24 12:55:45 2025 -0500

    Allow optional arguments during fresh install. (#2282)

commit 89f07d4
Author: CLHatch <[email protected]>
Date:   Thu Oct 23 03:17:56 2025 -0500

    Change `menu.ini` to `dockstarter.ini` (#2281)

commit 9653caa
Author: CLHatch <[email protected]>
Date:   Tue Oct 21 03:17:22 2025 -0500

    Add `backrest` (#2280)

commit b457e6d
Author: CLHatch <[email protected]>
Date:   Mon Oct 20 23:57:12 2025 -0500

    Remove extraneous newline in Calibre variable file (#2279)

commit 2e9ba0c
Author: CLHatch <[email protected]>
Date:   Mon Oct 20 23:53:38 2025 -0500

    Adjust a comment heading slightly for Calibre (#2278)

commit e69d985
Author: CLHatch <[email protected]>
Date:   Mon Oct 20 22:49:44 2025 -0500

    Update Calibre ports and variables (#2277)

    Resolves #2271

commit bf35f6f
Author: CLHatch <[email protected]>
Date:   Sun Oct 19 07:47:51 2025 -0500

    Move the `.dialogrc` and `.dialogoptions` files to the temp folder (#2276)

commit acaf094
Author: CLHatch <[email protected]>
Date:   Sun Oct 19 06:10:16 2025 -0500

    Correct the branch from `macos` to `main` (#2275)

commit 0d09be4
Author: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Date:   Sun Oct 19 02:33:31 2025 +0000

    Update mstruebing/editorconfig-checker Docker tag to v3.4.1

commit 0ac574f
Author: CLHatch <[email protected]>
Date:   Sat Oct 18 21:32:56 2025 -0500

    Fix typo in error message (#2274)

commit c296ce3
Author: CLHatch <[email protected]>
Date:   Sat Oct 18 21:28:49 2025 -0500

    Remove extraneous character in bash version check (#2273)

commit 96b87fc
Author: CLHatch <[email protected]>
Date:   Sat Oct 18 19:27:44 2025 -0500

    Support MacOS (#2272)

commit afc32e0
Author: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Date:   Wed Oct 15 14:02:17 2025 +0000

    Update dependency mkdocs-material to v9.6.22
CLHatch added a commit that referenced this pull request Oct 28, 2025
CLHatch added a commit that referenced this pull request Oct 28, 2025
* Update `synlink_ds` to check folders in the order they are listed in the PATH variable (#2270)

* Update dependency mkdocs-material to v9.6.22

* Support MacOS (#2272)

* Remove extraneous character in bash version check (#2273)

* Fix typo in error message (#2274)

* Update mstruebing/editorconfig-checker Docker tag to v3.4.1

* Correct the branch from `macos` to `main` (#2275)

* Move the `.dialogrc` and `.dialogoptions` files to the temp folder (#2276)

* Update Calibre ports and variables (#2277)

Resolves #2271

* Adjust a comment heading slightly for Calibre (#2278)

* Remove extraneous newline in Calibre variable file (#2279)

* Add `backrest` (#2280)

* Change `menu.ini` to `dockstarter.ini` (#2281)

* Allow optional arguments during fresh install. (#2282)

* Add package manager selection options (#2283)

* Add the missing `--config-pm` and `--config-pm-auto` usage text (#2284)

* Remove `-T` from the `--pm-config` and `--pm-config-auto` usages text (#2285)

* Update group functions (#2286)

* Update tandoor environment and ports to 80 from 8080 (#2269)

* Update tandoor environment and ports to 80 from 8080
Tandoor introducted a breaking change in their latest release,
changing the default port from 8080 to 80.

* Add storage ON options to Tandoor environment

Added storage configuration options for Tandoor instance.

* Add storage configuration options to tandoor.migrate

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: smilerz <[email protected]>
CLHatch added a commit that referenced this pull request Oct 28, 2025
commit 1805f5e
Author: CLHatch <[email protected]>
Date:   Tue Oct 28 09:54:20 2025 -0500

    Re-apply Tandoor update (#2289)

    * Update `synlink_ds` to check folders in the order they are listed in the PATH variable (#2270)

    * Update dependency mkdocs-material to v9.6.22

    * Support MacOS (#2272)

    * Remove extraneous character in bash version check (#2273)

    * Fix typo in error message (#2274)

    * Update mstruebing/editorconfig-checker Docker tag to v3.4.1

    * Correct the branch from `macos` to `main` (#2275)

    * Move the `.dialogrc` and `.dialogoptions` files to the temp folder (#2276)

    * Update Calibre ports and variables (#2277)

    Resolves #2271

    * Adjust a comment heading slightly for Calibre (#2278)

    * Remove extraneous newline in Calibre variable file (#2279)

    * Add `backrest` (#2280)

    * Change `menu.ini` to `dockstarter.ini` (#2281)

    * Allow optional arguments during fresh install. (#2282)

    * Add package manager selection options (#2283)

    * Add the missing `--config-pm` and `--config-pm-auto` usage text (#2284)

    * Remove `-T` from the `--pm-config` and `--pm-config-auto` usages text (#2285)

    * Update group functions (#2286)

    * Update tandoor environment and ports to 80 from 8080 (#2269)

    * Update tandoor environment and ports to 80 from 8080
    Tandoor introducted a breaking change in their latest release,
    changing the default port from 8080 to 80.

    * Add storage ON options to Tandoor environment

    Added storage configuration options for Tandoor instance.

    * Add storage configuration options to tandoor.migrate

    ---------

    Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
    Co-authored-by: smilerz <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

core Automatic label

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants