tuido icon indicating copy to clipboard operation
tuido copied to clipboard

Add CLI directory parameter and default working directory config

Open NiloCK opened this issue 8 months ago • 0 comments

Problem

Currently, Tuido always uses the current working directory (os.Getwd()) as the root for file discovery. Users cannot:

  • Specify a different directory to scan without cd-ing first
  • Configure a default working directory in their config files
  • Run tuido /path/to/project from anywhere

Proposed Solution

1. CLI Directory Parameter

Allow users to specify a directory as a positional argument:

tuido                    # Current behavior (working directory)
tuido .                  # Explicitly current directory  
tuido /path/to/project   # Scan specified directory
tuido ~/projects/work    # Scan home subdirectory

2. Default Working Directory Config

Add workdir option to .tuido config files:

extensions=go,md,txt
writeto=readme.md
workdir=/home/user/default-project

Technical Implementation

Required Changes

1. main.go - CLI Argument Parsing

  • Add argument parsing for optional directory parameter
  • Modify tui.Run() call to pass specified directory
  • Default to current directory if no argument provided

2. tui/tui.go - Working Directory Handling

  • Change func Run() signature to func Run(workdir string)
  • Replace os.Getwd() call (line ~32) with parameter
  • Use provided directory for all file discovery operations

3. tui/config.go - Configuration Support

  • Add workdir string field to config struct
  • Update parseConfig() to parse workdir=... from config files
  • Add workdir to config display/debugging output

4. tui/init.go - Default Configuration

  • Set default workdir value in runConfig initialization

Behavior Priority

  1. CLI argument (highest priority)
  2. Local .tuido config workdir setting
  3. Global config workdir setting
  4. Current working directory (current behavior)

Benefits

  • Flexibility: Run Tuido on any directory without changing location
  • Automation: Scripts can specify target directories easily
  • Convenience: Set default project directory in config
  • Compatibility: Fully backward compatible - existing usage unchanged

Examples

# Current usage (preserved)
cd /project && tuido

# New usage options  
tuido /project              # Direct directory specification
tuido ~/work/important      # Scan specific project
tuido .                     # Explicit current directory

With config file (~/.config/tuido.conf):

workdir=/home/user/main-project
extensions=md,txt,go

Running tuido would default to scanning /home/user/main-project.

Compatibility

  • No breaking changes: Existing behavior preserved when no arguments provided
  • Additive feature: New functionality doesn't affect current users
  • Config backward compatibility: Existing config files continue working

NiloCK avatar Jul 02 '25 19:07 NiloCK