Commit Graph

233 Commits

Author SHA1 Message Date
Hans Schnedlitz
3586520c4a Add support for focus panes (#952)
Some checks failed
Integration Tests / test (3.2.10, 1.5) (push) Failing after 12s
Integration Tests / test (3.2.10, 1.6) (push) Failing after 7s
Integration Tests / test (3.2.10, 1.9) (push) Failing after 10s
Integration Tests / test (3.2.10, 1.7) (push) Failing after 9s
Integration Tests / test (3.2.10, 1.8) (push) Failing after 10s
Integration Tests / test (3.2.10, 2.0) (push) Failing after 9s
Integration Tests / test (3.2.10, 2.1) (push) Failing after 7s
Integration Tests / test (3.2.10, 2.2) (push) Failing after 9s
Integration Tests / test (3.2.10, 2.3) (push) Failing after 12s
Integration Tests / test (3.2.10, 2.4) (push) Failing after 10s
Integration Tests / test (3.2.10, 2.5) (push) Failing after 9s
Integration Tests / test (3.2.10, 2.6) (push) Failing after 13s
Integration Tests / test (3.2.10, 2.7) (push) Failing after 13s
Integration Tests / test (3.2.10, 2.8) (push) Failing after 10s
Integration Tests / test (3.2.10, 2.9) (push) Failing after 9s
Integration Tests / test (3.2.10, 2.9a) (push) Failing after 8s
Integration Tests / test (3.2.10, 3.0) (push) Failing after 7s
Integration Tests / test (3.2.10, 3.0a) (push) Failing after 7s
Integration Tests / test (3.2.10, 3.1) (push) Failing after 9s
Integration Tests / test (3.2.10, 3.1a) (push) Failing after 8s
Integration Tests / test (3.2.10, 3.1b) (push) Failing after 7s
Integration Tests / test (3.2.10, 3.1c) (push) Failing after 7s
Integration Tests / test (3.2.10, 3.2) (push) Failing after 7s
Integration Tests / test (3.2.10, 3.2a) (push) Failing after 8s
Integration Tests / test (3.2.10, 3.3) (push) Failing after 9s
Integration Tests / test (3.2.10, 3.3a) (push) Failing after 8s
Integration Tests / test (3.2.10, 3.4) (push) Failing after 7s
Integration Tests / test (3.2.10, 3.5) (push) Failing after 7s
Integration Tests / test (3.2.10, 3.5a) (push) Failing after 8s
Integration Tests / test (3.2.10, 3.6) (push) Failing after 8s
Integration Tests / test (3.2.10, 3.6a) (push) Failing after 8s
Integration Tests / test (3.3.10, 1.5) (push) Failing after 7s
Integration Tests / test (3.3.10, 1.6) (push) Failing after 8s
Integration Tests / test (3.3.10, 1.7) (push) Failing after 8s
Integration Tests / test (3.3.10, 1.8) (push) Failing after 7s
Integration Tests / test (3.3.10, 1.9) (push) Failing after 6s
Integration Tests / test (3.3.10, 2.0) (push) Failing after 8s
Integration Tests / test (3.3.10, 2.1) (push) Failing after 8s
Integration Tests / test (3.3.10, 2.2) (push) Failing after 8s
Integration Tests / test (3.3.10, 2.3) (push) Failing after 8s
Integration Tests / test (3.3.10, 2.4) (push) Failing after 8s
Integration Tests / test (3.3.10, 2.5) (push) Failing after 9s
Integration Tests / test (3.3.10, 2.6) (push) Failing after 9s
Integration Tests / test (3.3.10, 2.7) (push) Failing after 8s
Integration Tests / test (3.3.10, 2.8) (push) Failing after 8s
Integration Tests / test (3.3.10, 2.9) (push) Failing after 9s
Integration Tests / test (3.3.10, 2.9a) (push) Failing after 8s
Integration Tests / test (3.3.10, 3.0) (push) Failing after 9s
Integration Tests / test (3.3.10, 3.0a) (push) Failing after 9s
Integration Tests / test (3.3.10, 3.1) (push) Failing after 10s
Integration Tests / test (3.3.10, 3.1a) (push) Failing after 9s
Integration Tests / test (3.3.10, 3.1b) (push) Failing after 9s
Integration Tests / test (3.3.10, 3.1c) (push) Failing after 8s
Integration Tests / test (3.3.10, 3.2) (push) Failing after 9s
Integration Tests / test (3.3.10, 3.2a) (push) Failing after 8s
Integration Tests / test (3.3.10, 3.3) (push) Failing after 8s
Integration Tests / test (3.3.10, 3.3a) (push) Failing after 9s
Integration Tests / test (3.3.10, 3.4) (push) Failing after 8s
Integration Tests / test (3.3.10, 3.5) (push) Failing after 8s
Integration Tests / test (3.3.10, 3.5a) (push) Failing after 8s
Integration Tests / test (3.3.10, 3.6) (push) Failing after 9s
Integration Tests / test (3.3.10, 3.6a) (push) Failing after 8s
Integration Tests / test (3.4.8, 1.5) (push) Failing after 8s
Integration Tests / test (3.4.8, 1.6) (push) Failing after 9s
Integration Tests / test (3.4.8, 1.7) (push) Failing after 8s
Integration Tests / test (3.4.8, 1.8) (push) Failing after 8s
Integration Tests / test (3.4.8, 1.9) (push) Failing after 10s
Integration Tests / test (3.4.8, 2.0) (push) Failing after 9s
Integration Tests / test (3.4.8, 2.1) (push) Failing after 8s
Integration Tests / test (3.4.8, 2.2) (push) Failing after 8s
Integration Tests / test (3.4.8, 2.3) (push) Failing after 10s
Integration Tests / test (3.4.8, 2.4) (push) Failing after 9s
Integration Tests / test (3.4.8, 2.5) (push) Failing after 8s
Integration Tests / test (3.4.8, 2.6) (push) Failing after 7s
Integration Tests / test (3.4.8, 2.7) (push) Failing after 9s
Integration Tests / test (3.4.8, 2.8) (push) Failing after 8s
Integration Tests / test (3.4.8, 2.9) (push) Failing after 7s
Integration Tests / test (3.4.8, 2.9a) (push) Failing after 8s
Integration Tests / test (3.4.8, 3.0) (push) Failing after 10s
Integration Tests / test (3.4.8, 3.0a) (push) Failing after 8s
Integration Tests / test (3.4.8, 3.1) (push) Failing after 8s
Integration Tests / test (3.4.8, 3.1a) (push) Failing after 9s
Integration Tests / test (3.4.8, 3.1b) (push) Failing after 8s
Integration Tests / test (3.4.8, 3.1c) (push) Failing after 8s
Integration Tests / test (3.4.8, 3.2) (push) Failing after 10s
Integration Tests / test (3.4.8, 3.2a) (push) Failing after 8s
Integration Tests / test (3.4.8, 3.3) (push) Failing after 7s
Integration Tests / test (3.4.8, 3.3a) (push) Failing after 7s
Integration Tests / test (3.4.8, 3.4) (push) Failing after 9s
Integration Tests / test (3.4.8, 3.5) (push) Failing after 10s
Integration Tests / test (3.4.8, 3.5a) (push) Failing after 8s
Integration Tests / test (3.4.8, 3.6) (push) Failing after 9s
Integration Tests / test (3.4.8, 3.6a) (push) Failing after 8s
Integration Tests / test (4.0.1, 1.5) (push) Failing after 8s
Integration Tests / test (4.0.1, 1.6) (push) Failing after 10s
Integration Tests / test (4.0.1, 1.7) (push) Failing after 8s
Integration Tests / test (4.0.1, 1.8) (push) Failing after 9s
Integration Tests / test (4.0.1, 1.9) (push) Failing after 8s
Integration Tests / test (4.0.1, 2.0) (push) Failing after 8s
Integration Tests / test (4.0.1, 2.1) (push) Failing after 10s
Integration Tests / test (4.0.1, 2.2) (push) Failing after 9s
Integration Tests / test (4.0.1, 2.3) (push) Failing after 8s
Integration Tests / test (4.0.1, 2.4) (push) Failing after 9s
Integration Tests / test (4.0.1, 2.5) (push) Failing after 9s
Integration Tests / test (4.0.1, 2.6) (push) Failing after 9s
Integration Tests / test (4.0.1, 2.7) (push) Failing after 8s
Integration Tests / test (4.0.1, 2.8) (push) Failing after 9s
Integration Tests / test (4.0.1, 2.9) (push) Failing after 8s
Integration Tests / test (4.0.1, 2.9a) (push) Failing after 8s
Integration Tests / test (4.0.1, 3.0) (push) Failing after 8s
Integration Tests / test (4.0.1, 3.0a) (push) Failing after 7s
Integration Tests / test (4.0.1, 3.1) (push) Failing after 9s
Integration Tests / test (4.0.1, 3.1a) (push) Failing after 12s
Integration Tests / test (4.0.1, 3.1b) (push) Failing after 9s
Integration Tests / test (4.0.1, 3.1c) (push) Failing after 8s
Integration Tests / test (4.0.1, 3.2) (push) Failing after 7s
Integration Tests / test (4.0.1, 3.2a) (push) Failing after 8s
Integration Tests / test (4.0.1, 3.3) (push) Failing after 8s
Integration Tests / test (4.0.1, 3.3a) (push) Failing after 10s
Integration Tests / test (4.0.1, 3.4) (push) Failing after 9s
Integration Tests / test (4.0.1, 3.5) (push) Failing after 9s
Integration Tests / test (4.0.1, 3.5a) (push) Failing after 7s
Integration Tests / test (4.0.1, 3.6) (push) Failing after 7s
Integration Tests / test (4.0.1, 3.6a) (push) Failing after 8s
Integration Tests / finish (push) Failing after 9s
* Try add focus pane config

* Add focused pane

* Update readme and sasmple

* Update changelog

* Add more tests

* Add deprecation message

* fix: coerce focused pane indices to integers

Metadata

- addresses review feedback on quoted numeric  values
- keeps the fix scoped to

Problem

Quoted YAML scalars like  were treated as integers for validation but returned as strings. That later caused  to add a string to , which raised  during rendering.

Solution

Convert validated numeric  values with  before returning them from , and add a spec that covers quoted indices so the regression stays fixed.

* fix: match focused pane names after escaping

Metadata

- addresses review feedback on named focused panes
- keeps the change limited to focused pane lookup logic and its specs

Problem

Named focused panes were compared against the raw YAML value, but pane titles are stored in escaped form. Pane names containing spaces or shell-sensitive characters therefore failed to match and incorrectly fell back to the first pane.

Solution

Compare the requested focused pane name using the same shell escaping used when pane titles are stored, and add a regression spec that covers a pane name containing spaces.

* chore: drop unrelated tool version pin

Metadata

- removes contributor-local environment pinning from the PR
- keeps the feature branch focused on `focused_pane` changes

Problem

The branch included `.tool-versions`, which does not affect the `focused_pane` feature and introduces an unreviewed repository-wide tooling decision.

Solution

Remove `.tool-versions` so the branch stays scoped to the pane-focus feature and its supporting tests and documentation.

* test: cover focused pane render paths

Metadata

- adds render-level coverage for normal and wemux templates
- verifies deprecated `startup_pane` output remains intact

Problem

The branch only tested helper methods for focused pane selection. It did not prove that the generated tmux scripts emitted the correct `select-pane` commands for normal renders, wemux renders, or the deprecated `startup_pane` compatibility path.

Solution

Add render assertions that exercise the generated scripts directly, covering `focused_pane` in the standard and wemux templates and `startup_pane` in the standard template.

* docs: clarify focused pane and startup pane behavior

Metadata

- updates README and sample configuration guidance for pane selection
- folds the prior docs-only follow-up commits into one coherent change

Problem

The documentation around pane selection was incomplete and then overstated the relationship between `focused_pane` and `startup_pane`. It did not clearly explain that `focused_pane` is window-scoped while `startup_window` and `startup_pane` still determine the final startup selection.

Solution

Document `startup_pane` as a supported top-level setting, clarify that `focused_pane` applies within a window, and explain how `focused_pane`, `startup_window`, and `startup_pane` interact during project startup.

* fix: preserve default startup pane selection

Metadata

- scope: startup pane fallback
- tests: rspec spec/lib/tmuxinator/project_spec.rb

Problem

When startup_pane is omitted, tmux_startup_pane_command returns an empty string. That lets a window-level focused_pane in the startup window control the final attached pane, which regresses the long-standing default of attaching to the first pane.

Solution

Make tmux_startup_pane_command explicitly select the first pane in startup_window when no global startup_pane is configured. Add a regression spec that renders a startup window with focused_pane set and verifies the final startup selection still targets pane 0, plus a direct unit spec for the fallback command.

* fix: treat blank startup pane as unset

Metadata

- scope: startup pane fallback
- tests: rspec spec/lib/tmuxinator/project_spec.rb spec/lib/tmuxinator/window_spec.rb

Problem

A blank startup_pane value is truthy in Ruby, so tmux_startup_pane_command treats it as configured and builds an invalid select-pane target. That leaves a remaining edge case even after restoring the default first-pane selection when startup_pane is omitted.

Solution

Treat blank startup_pane values as unset and fall back to the first pane in startup_window. Add a regression spec that covers startup_pane set to an empty string so the invalid target cannot reappear.

* chore: clean up focused pane review nits

Metadata

- scope: focused pane follow-up cleanup
- tests: rspec spec/lib/tmuxinator/project_spec.rb spec/lib/tmuxinator/window_spec.rb

Problem

The review surfaced a few low-risk cleanup issues around the focused pane changes: a shadowing local variable, a typo in a code comment, a sloppy spec description, and inconsistent tmux capitalization in the README.

Solution

Rename the local focused pane config variable to avoid shadowing the helper method, fix the typo in the fallback comment, tighten the spec description text, and normalize the README wording to tmux v2.6.

* fix: clamp invalid focused pane indexes

Metadata

- addresses review feedback for out-of-range  values
- scope:  pane selection and specs

Problem

Numeric  values were accepted without checking whether the pane existed. Invalid indexes generated  commands that tmux rejected, leaving focus on an arbitrary pane.

Solution

Validate numeric pane indexes against the parsed pane list and fall back to the first pane when the requested index is out of range. Add spec coverage for integer and quoted integer values that point past the available panes.

* fix: preserve startup pane defaults

Metadata

- addresses review feedback on `Project#startup_pane`
- scope: startup pane target selection and related specs

Problem

`Project#startup_pane` returned an invalid target ending in `.` when `startup_pane` was unset or blank. The helper method still existed and no longer preserved the long-standing default of selecting the first pane. The deprecation note on `tmux_startup_pane_command` also implied the method itself was deprecated, which was misleading.

Solution

Make `startup_pane` treat blank and unset values as a request for the first pane in the startup window, and have `tmux_startup_pane_command` consistently use that helper. Remove the misleading deprecation comment and add specs that cover the helper directly for configured, unset, and blank values.

* style: satisfy rubocop for startup pane helper

Metadata

- follows repo RuboCop enforcement for the startup pane changes
- scope: `Tmuxinator::Project#startup_pane`

Problem

The previous `startup_pane` fix introduced a line-length violation in `project.rb`, which would fail the repo's RuboCop check.

Solution

Rewrite the pane selection assignment in multiline form so the helper remains readable and passes the configured RuboCop rules without changing behavior.

* docs: restore readme yaml guidance

Metadata

- narrows README churn on the focused pane branch
- scope: user guidance around pane configuration examples

Problem

The branch removed the longstanding README warning about YAML indentation and the note about custom layout inconsistencies, even though those behaviors were not changed by the focused pane work. Those notes still help users debug common configuration mistakes.

Solution

Restore the YAML indentation warning and the existing custom layout note, keeping their prior external references while leaving the focused pane documentation intact.

* fix: harden focused pane index handling

Metadata

- Addresses unresolved PR #952 review comments for focused_pane validation and docs.
- Keeps the existing startup_pane behavior explicit in the user-facing examples.

Problem

- Negative focused_pane values were accepted because Ruby arrays support negative indexing, which could generate an invalid tmux target or focus the wrong pane.
- The local variable inside pane_index shadowed the method name, which made the control flow harder to read.
- The startup_pane comments in the README and sample config no longer stated the default first-pane behavior when unset.

Solution

- Reject negative integer focused_pane values before indexing panes and fall back to the first pane.
- Rename the local parsed index variable to idx and add specs for -1 and "-1" fallback behavior.
- Restore the startup-pane documentation note that the first pane is used when the setting is not provided.

* fix: restore public startup_pane API

Metadata

- Scope: startup_pane visibility
- Review: address P2 regression from the focus-pane patch

Problem

- The recent refactor moved startup_pane below the class private marker.
- Existing Ruby callers that invoke project.startup_pane now raise NoMethodError.
- The spec only exercised the method via send, so the visibility regression was not covered.

Solution

- Re-expose startup_pane as a public instance method.
- Update the project spec to call startup_pane directly so the public contract is enforced.

Signed-off-by: Andrew Kofink <ajkofink@gmail.com>

---------

Signed-off-by: Andrew Kofink <ajkofink@gmail.com>
Co-authored-by: Andrew Kofink <ajkofink@gmail.com>
2026-04-11 11:13:26 -04:00
Andrew Kofink
db861a077d chore: Add support for tmux 3.6a (#971)
See https://github.com/tmux/tmux/releases/tag/3.6a

Update the CI pipeline and list of supported tmux versions to include
tmux 3.6a

Signed-off-by: Andrew Kofink <ajkofink@gmail.com>
2025-12-06 09:40:02 -05:00
Andrew Kofink
dffd17574f chore: Add support for tmux 3.6 (#968)
Metadata

https://github.com/tmux/tmux/releases/tag/3.6

Problem

tmux 3.6 was just released

tmuxinator does not yet support it or test against it

Solution

Add tmux 3.6 to the test matrix and supported versions list.

Signed-off-by: Andrew Kofink <ajkofink@gmail.com>
2025-11-26 10:11:25 -05:00
Andrew Kofink
71275f96cb Add help to commands list and --help/-h flag support to subcommands (#967)
Some checks failed
Integration Tests / test (3.2.9, 1.5) (push) Failing after 3s
Integration Tests / test (3.2.9, 1.6) (push) Failing after 2s
Integration Tests / test (3.2.9, 1.7) (push) Failing after 2s
Integration Tests / test (3.2.9, 1.8) (push) Failing after 2s
Integration Tests / test (3.2.9, 1.9) (push) Failing after 3s
Integration Tests / test (3.2.9, 2.0) (push) Failing after 2s
Integration Tests / test (3.2.9, 2.1) (push) Failing after 2s
Integration Tests / test (3.2.9, 2.2) (push) Failing after 2s
Integration Tests / test (3.2.9, 2.3) (push) Failing after 2s
Integration Tests / test (3.2.9, 2.4) (push) Failing after 2s
Integration Tests / test (3.2.9, 2.5) (push) Failing after 2s
Integration Tests / test (3.2.9, 2.6) (push) Failing after 2s
Integration Tests / test (3.2.9, 2.7) (push) Failing after 3s
Integration Tests / test (3.2.9, 2.8) (push) Failing after 2s
Integration Tests / test (3.2.9, 2.9) (push) Failing after 2s
Integration Tests / test (3.2.9, 2.9a) (push) Failing after 2s
Integration Tests / test (3.2.9, 3.0) (push) Failing after 2s
Integration Tests / test (3.2.9, 3.0a) (push) Failing after 2s
Integration Tests / test (3.2.9, 3.1) (push) Failing after 2s
Integration Tests / test (3.2.9, 3.1a) (push) Failing after 2s
Integration Tests / test (3.2.9, 3.1b) (push) Failing after 2s
Integration Tests / test (3.2.9, 3.1c) (push) Failing after 2s
Integration Tests / test (3.2.9, 3.2) (push) Failing after 2s
Integration Tests / test (3.2.9, 3.2a) (push) Failing after 2s
Integration Tests / test (3.2.9, 3.3) (push) Failing after 2s
Integration Tests / test (3.2.9, 3.3a) (push) Failing after 2s
Integration Tests / test (3.2.9, 3.4) (push) Failing after 2s
Integration Tests / test (3.2.9, 3.5) (push) Failing after 2s
Integration Tests / test (3.2.9, 3.5a) (push) Failing after 3s
Integration Tests / test (3.3.9, 1.5) (push) Failing after 2s
Integration Tests / test (3.3.9, 1.6) (push) Failing after 3s
Integration Tests / test (3.3.9, 1.7) (push) Failing after 3s
Integration Tests / test (3.3.9, 1.8) (push) Failing after 2s
Integration Tests / test (3.3.9, 1.9) (push) Failing after 2s
Integration Tests / test (3.3.9, 2.0) (push) Failing after 2s
Integration Tests / test (3.3.9, 2.1) (push) Failing after 2s
Integration Tests / test (3.3.9, 2.2) (push) Failing after 2s
Integration Tests / test (3.3.9, 2.3) (push) Failing after 2s
Integration Tests / test (3.3.9, 2.4) (push) Failing after 2s
Integration Tests / test (3.3.9, 2.5) (push) Failing after 2s
Integration Tests / test (3.3.9, 2.6) (push) Failing after 2s
Integration Tests / test (3.3.9, 2.7) (push) Failing after 2s
Integration Tests / test (3.3.9, 2.8) (push) Failing after 3s
Integration Tests / test (3.3.9, 2.9) (push) Failing after 3s
Integration Tests / test (3.3.9, 2.9a) (push) Failing after 2s
Integration Tests / test (3.3.9, 3.0) (push) Failing after 3s
Integration Tests / test (3.3.9, 3.0a) (push) Failing after 2s
Integration Tests / test (3.3.9, 3.1) (push) Failing after 2s
Integration Tests / test (3.3.9, 3.1a) (push) Failing after 3s
Integration Tests / test (3.3.9, 3.1b) (push) Failing after 3s
Integration Tests / test (3.3.9, 3.1c) (push) Failing after 3s
Integration Tests / test (3.3.9, 3.2) (push) Failing after 3s
Integration Tests / test (3.3.9, 3.2a) (push) Failing after 3s
Integration Tests / test (3.3.9, 3.3) (push) Failing after 3s
Integration Tests / test (3.3.9, 3.3a) (push) Failing after 2s
Integration Tests / test (3.3.9, 3.4) (push) Failing after 2s
Integration Tests / test (3.3.9, 3.5) (push) Failing after 2s
Integration Tests / test (3.3.9, 3.5a) (push) Failing after 2s
Integration Tests / test (3.4.5, 1.5) (push) Failing after 3s
Integration Tests / test (3.4.5, 1.6) (push) Failing after 2s
Integration Tests / test (3.4.5, 1.7) (push) Failing after 2s
Integration Tests / test (3.4.5, 1.8) (push) Failing after 2s
Integration Tests / test (3.4.5, 1.9) (push) Failing after 2s
Integration Tests / test (3.4.5, 2.0) (push) Failing after 2s
Integration Tests / test (3.4.5, 2.1) (push) Failing after 2s
Integration Tests / test (3.4.5, 2.2) (push) Failing after 2s
Integration Tests / test (3.4.5, 2.3) (push) Failing after 2s
Integration Tests / test (3.4.5, 2.4) (push) Failing after 3s
Integration Tests / test (3.4.5, 2.5) (push) Failing after 3s
Integration Tests / test (3.4.5, 2.6) (push) Failing after 3s
Integration Tests / test (3.4.5, 2.7) (push) Failing after 3s
Integration Tests / test (3.4.5, 2.8) (push) Failing after 3s
Integration Tests / test (3.4.5, 2.9) (push) Failing after 2s
Integration Tests / test (3.4.5, 2.9a) (push) Failing after 3s
Integration Tests / test (3.4.5, 3.0) (push) Failing after 3s
Integration Tests / test (3.4.5, 3.0a) (push) Failing after 3s
Integration Tests / test (3.4.5, 3.1) (push) Failing after 3s
Integration Tests / test (3.4.5, 3.1a) (push) Failing after 3s
Integration Tests / test (3.4.5, 3.1b) (push) Failing after 3s
Integration Tests / test (3.4.5, 3.1c) (push) Failing after 3s
Integration Tests / test (3.4.5, 3.2) (push) Failing after 2s
Integration Tests / test (3.4.5, 3.2a) (push) Failing after 2s
Integration Tests / test (3.4.5, 3.3) (push) Failing after 2s
Integration Tests / test (3.4.5, 3.3a) (push) Failing after 2s
Integration Tests / test (3.4.5, 3.4) (push) Failing after 2s
Integration Tests / test (3.4.5, 3.5) (push) Failing after 2s
Integration Tests / test (3.4.5, 3.5a) (push) Failing after 2s
Integration Tests / finish (push) Failing after 2s
Problem:
- The 'help' command was not listed in the output of 'mux commands',
  making it less discoverable for users
- Using --help or -h flags with subcommands (e.g., 'mux start --help')
  would fail with 'Project --help doesn't exist' instead of showing
  help information, which is inconsistent with common CLI patterns

Solution:
- Added 'help' entry to the COMMANDS hash so it appears in the
  commands list output
- Added --help/-h method_option to key subcommands (start, stop, new,
  debug, copy, delete, list) that invokes Thor's help system before
  command execution
- Updated tests to verify 'help' appears in commands output and that
  --help/-h flags work correctly for subcommands

This provides parity between 'mux help <subcommand>' and
'mux <subcommand> --help', improving user experience and discoverability.

Fixes: https://github.com/tmuxinator/tmuxinator/issues/191#issuecomment-3539068931
2025-11-16 16:57:16 -05:00
Hans Schnedlitz
dfcf423a91 Update Thor dependency and everything else too 🙈 (#959)
* Update dependencies

* Revert some things

* Fix merged files

* feat: add stop_all command (#945)

* Start implementation

* Fix command, add some docs

* Sort cli args

* Update cli spec

* Fix rubocop issues

* feat: Add --no-pre-window option to start command

Signed-off-by: Andrew Kofink <ajkofink@gmail.com>

* chore: Fix coveralls to run from GH actions

Signed-off-by: Andrew Kofink <ajkofink@gmail.com>

* chore: Bump tmuxinator to v3.3.4

Signed-off-by: Andrew Kofink <ajkofink@gmail.com>

* Implement suggestions

* Update readme and changelog

* Extract, fix rubocop issues

* Fix call issue

* Fix alignment

* Fix tests

* Remove alias

* Add alias

* Add test for alias

* Remove alias test

* refactor: fix codeclimate complexity

Signed-off-by: Andrew Kofink <ajkofink@gmail.com>

---------

Signed-off-by: Andrew Kofink <ajkofink@gmail.com>
Co-authored-by: Andrew Kofink <ajkofink@gmail.com>

* Add changelog

* feat: add stop_all command (#945)

* Start implementation

* Fix command, add some docs

* Sort cli args

* Update cli spec

* Fix rubocop issues

* feat: Add --no-pre-window option to start command

Signed-off-by: Andrew Kofink <ajkofink@gmail.com>

* chore: Fix coveralls to run from GH actions

Signed-off-by: Andrew Kofink <ajkofink@gmail.com>

* chore: Bump tmuxinator to v3.3.4

Signed-off-by: Andrew Kofink <ajkofink@gmail.com>

* Implement suggestions

* Update readme and changelog

* Extract, fix rubocop issues

* Fix call issue

* Fix alignment

* Fix tests

* Remove alias

* Add alias

* Add test for alias

* Remove alias test

* refactor: fix codeclimate complexity

Signed-off-by: Andrew Kofink <ajkofink@gmail.com>

---------

Signed-off-by: Andrew Kofink <ajkofink@gmail.com>
Co-authored-by: Andrew Kofink <ajkofink@gmail.com>

* Fix double string freeze

* Fix PR feedback, failing tests

* Add explaining comment

* Fix version parse

* Update tmuxinator.gemspec

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Remove XDG depedency

---------

Signed-off-by: Andrew Kofink <ajkofink@gmail.com>
Co-authored-by: Andrew Kofink <ajkofink@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-02 07:44:00 -04:00
Hans Schnedlitz
9b36b689c2 feat: add stop_all command (#945)
Some checks failed
Integration Tests / test (3.1.6, 1.5) (push) Failing after 1m23s
Integration Tests / test (3.1.6, 1.6) (push) Failing after 1m0s
Integration Tests / test (3.1.6, 1.7) (push) Failing after 1m1s
Integration Tests / test (3.1.6, 1.8) (push) Failing after 1m10s
Integration Tests / test (3.1.6, 1.9) (push) Failing after 1m13s
Integration Tests / test (3.1.6, 2.0) (push) Failing after 1m14s
Integration Tests / test (3.1.6, 2.1) (push) Failing after 1m12s
Integration Tests / test (3.1.6, 2.2) (push) Failing after 1m13s
Integration Tests / test (3.1.6, 2.3) (push) Failing after 1m11s
Integration Tests / test (3.1.6, 2.6) (push) Failing after 1m17s
Integration Tests / test (3.1.6, 2.4) (push) Failing after 1m13s
Integration Tests / test (3.1.6, 2.5) (push) Failing after 1m16s
Integration Tests / test (3.1.6, 2.7) (push) Failing after 1m16s
Integration Tests / test (3.1.6, 2.8) (push) Failing after 1m18s
Integration Tests / test (3.1.6, 2.9) (push) Failing after 1m18s
Integration Tests / test (3.1.6, 2.9a) (push) Failing after 1m28s
Integration Tests / test (3.1.6, 3.0) (push) Failing after 1m20s
Integration Tests / test (3.1.6, 3.0a) (push) Failing after 1m19s
Integration Tests / test (3.1.6, 3.1) (push) Failing after 1m19s
Integration Tests / test (3.1.6, 3.1a) (push) Failing after 1m18s
Integration Tests / test (3.1.6, 3.1b) (push) Failing after 1m19s
Integration Tests / test (3.1.6, 3.1c) (push) Failing after 1m22s
Integration Tests / test (3.1.6, 3.2) (push) Failing after 1m26s
Integration Tests / test (3.1.6, 3.2a) (push) Failing after 1m35s
Integration Tests / test (3.1.6, 3.3) (push) Failing after 1m28s
Integration Tests / test (3.1.6, 3.3a) (push) Failing after 1m33s
Integration Tests / test (3.1.6, 3.4) (push) Failing after 1m33s
Integration Tests / test (3.1.6, 3.5) (push) Failing after 1m33s
Integration Tests / test (3.1.6, 3.5a) (push) Failing after 1m30s
Integration Tests / test (3.2.7, 1.5) (push) Failing after 1m3s
Integration Tests / test (3.2.7, 1.6) (push) Failing after 1m6s
Integration Tests / test (3.2.7, 1.7) (push) Failing after 1m15s
Integration Tests / test (3.2.7, 1.8) (push) Failing after 1m10s
Integration Tests / test (3.2.7, 1.9) (push) Failing after 1m13s
Integration Tests / test (3.2.7, 2.0) (push) Failing after 1m13s
Integration Tests / test (3.2.7, 2.1) (push) Failing after 1m17s
Integration Tests / test (3.2.7, 2.2) (push) Failing after 1m12s
Integration Tests / test (3.2.7, 2.3) (push) Failing after 1m22s
Integration Tests / test (3.2.7, 2.4) (push) Failing after 1m28s
Integration Tests / test (3.2.7, 2.5) (push) Failing after 1m19s
Integration Tests / test (3.2.7, 2.6) (push) Failing after 1m27s
Integration Tests / test (3.2.7, 2.7) (push) Failing after 1m16s
Integration Tests / test (3.2.7, 2.8) (push) Failing after 1m20s
Integration Tests / test (3.2.7, 2.9) (push) Failing after 1m20s
Integration Tests / test (3.2.7, 2.9a) (push) Failing after 1m20s
Integration Tests / test (3.2.7, 3.0) (push) Failing after 1m19s
Integration Tests / test (3.2.7, 3.0a) (push) Failing after 1m18s
Integration Tests / test (3.2.7, 3.1) (push) Failing after 1m20s
Integration Tests / test (3.2.7, 3.1a) (push) Failing after 1m22s
Integration Tests / test (3.2.7, 3.1b) (push) Failing after 1m19s
Integration Tests / test (3.2.7, 3.1c) (push) Failing after 1m20s
Integration Tests / test (3.2.7, 3.2) (push) Failing after 1m24s
Integration Tests / test (3.2.7, 3.2a) (push) Failing after 1m27s
Integration Tests / test (3.2.7, 3.3) (push) Failing after 1m29s
Integration Tests / test (3.2.7, 3.3a) (push) Failing after 1m29s
Integration Tests / test (3.2.7, 3.4) (push) Failing after 1m28s
Integration Tests / test (3.2.7, 3.5) (push) Failing after 1m29s
Integration Tests / test (3.2.7, 3.5a) (push) Failing after 1m30s
Integration Tests / test (3.3.7, 1.5) (push) Failing after 1m4s
Integration Tests / test (3.3.7, 1.6) (push) Failing after 1m8s
Integration Tests / test (3.3.7, 1.7) (push) Failing after 1m2s
Integration Tests / test (3.3.7, 1.8) (push) Failing after 1m12s
Integration Tests / test (3.3.7, 1.9) (push) Failing after 1m15s
Integration Tests / test (3.3.7, 2.0) (push) Failing after 1m18s
Integration Tests / test (3.3.7, 2.1) (push) Failing after 1m14s
Integration Tests / test (3.3.7, 2.2) (push) Failing after 1m14s
Integration Tests / test (3.3.7, 2.3) (push) Failing after 1m16s
Integration Tests / test (3.3.7, 2.4) (push) Failing after 1m26s
Integration Tests / test (3.3.7, 2.5) (push) Failing after 1m25s
Integration Tests / test (3.3.7, 2.6) (push) Failing after 1m19s
Integration Tests / test (3.3.7, 2.7) (push) Failing after 1m18s
Integration Tests / test (3.3.7, 2.8) (push) Failing after 1m18s
Integration Tests / test (3.3.7, 2.9) (push) Failing after 1m25s
Integration Tests / test (3.3.7, 2.9a) (push) Failing after 1m18s
Integration Tests / test (3.3.7, 3.0) (push) Failing after 1m19s
Integration Tests / test (3.3.7, 3.0a) (push) Failing after 1m21s
Integration Tests / test (3.3.7, 3.1) (push) Failing after 1m20s
Integration Tests / test (3.3.7, 3.1a) (push) Failing after 1m25s
Integration Tests / test (3.3.7, 3.1b) (push) Failing after 1m22s
Integration Tests / test (3.3.7, 3.1c) (push) Failing after 1m20s
Integration Tests / test (3.3.7, 3.2) (push) Failing after 1m24s
Integration Tests / test (3.3.7, 3.2a) (push) Failing after 1m31s
Integration Tests / test (3.3.7, 3.3) (push) Failing after 1m30s
Integration Tests / test (3.3.7, 3.3a) (push) Failing after 1m26s
Integration Tests / test (3.3.7, 3.4) (push) Failing after 1m31s
Integration Tests / test (3.3.7, 3.5) (push) Failing after 1m31s
Integration Tests / test (3.3.7, 3.5a) (push) Failing after 1m30s
Integration Tests / test (3.4.2, 1.5) (push) Failing after 1m5s
Integration Tests / test (3.4.2, 1.6) (push) Failing after 1m9s
Integration Tests / test (3.4.2, 1.7) (push) Failing after 1m13s
Integration Tests / test (3.4.2, 1.8) (push) Failing after 1m18s
Integration Tests / test (3.4.2, 1.9) (push) Failing after 1m11s
Integration Tests / test (3.4.2, 2.0) (push) Failing after 1m14s
Integration Tests / test (3.4.2, 2.1) (push) Failing after 1m9s
Integration Tests / test (3.4.2, 2.2) (push) Failing after 1m14s
Integration Tests / test (3.4.2, 2.3) (push) Failing after 1m18s
Integration Tests / test (3.4.2, 2.4) (push) Failing after 1m20s
Integration Tests / test (3.4.2, 2.5) (push) Failing after 1m14s
Integration Tests / test (3.4.2, 2.6) (push) Failing after 1m20s
Integration Tests / test (3.4.2, 2.7) (push) Failing after 1m16s
Integration Tests / test (3.4.2, 2.8) (push) Failing after 1m17s
Integration Tests / test (3.4.2, 2.9) (push) Failing after 1m21s
Integration Tests / test (3.4.2, 2.9a) (push) Failing after 1m19s
Integration Tests / test (3.4.2, 3.0) (push) Failing after 1m18s
Integration Tests / test (3.4.2, 3.0a) (push) Failing after 1m21s
Integration Tests / test (3.4.2, 3.1) (push) Failing after 1m20s
Integration Tests / test (3.4.2, 3.1a) (push) Failing after 1m19s
Integration Tests / test (3.4.2, 3.1b) (push) Failing after 1m19s
Integration Tests / test (3.4.2, 3.1c) (push) Failing after 1m18s
Integration Tests / test (3.4.2, 3.2) (push) Failing after 1m27s
Integration Tests / test (3.4.2, 3.2a) (push) Failing after 1m26s
Integration Tests / test (3.4.2, 3.3) (push) Failing after 1m30s
Integration Tests / test (3.4.2, 3.3a) (push) Failing after 1m27s
Integration Tests / test (3.4.2, 3.4) (push) Failing after 1m30s
Integration Tests / test (3.4.2, 3.5) (push) Failing after 1m31s
Integration Tests / test (3.4.2, 3.5a) (push) Failing after 1m30s
Integration Tests / finish (push) Successful in 6s
* Start implementation

* Fix command, add some docs

* Sort cli args

* Update cli spec

* Fix rubocop issues

* feat: Add --no-pre-window option to start command

Signed-off-by: Andrew Kofink <ajkofink@gmail.com>

* chore: Fix coveralls to run from GH actions

Signed-off-by: Andrew Kofink <ajkofink@gmail.com>

* chore: Bump tmuxinator to v3.3.4

Signed-off-by: Andrew Kofink <ajkofink@gmail.com>

* Implement suggestions

* Update readme and changelog

* Extract, fix rubocop issues

* Fix call issue

* Fix alignment

* Fix tests

* Remove alias

* Add alias

* Add test for alias

* Remove alias test

* refactor: fix codeclimate complexity

Signed-off-by: Andrew Kofink <ajkofink@gmail.com>

---------

Signed-off-by: Andrew Kofink <ajkofink@gmail.com>
Co-authored-by: Andrew Kofink <ajkofink@gmail.com>
2025-04-18 12:17:37 -04:00
Andrew Kofink
b7bef6fdb8 fix: Properly parse args with equals (=) in their value
Some checks failed
Integration Tests / test (3.1.6, 1.6) (push) Failing after 1m9s
Integration Tests / test (3.1.6, 1.7) (push) Failing after 1m3s
Integration Tests / test (3.1.6, 1.8) (push) Failing after 1m16s
Integration Tests / test (3.1.6, 1.9) (push) Failing after 1m14s
Integration Tests / test (3.1.6, 1.5) (push) Failing after 58m27s
Integration Tests / test (3.1.6, 2.1) (push) Failing after 1m22s
Integration Tests / test (3.1.6, 2.0) (push) Failing after 1m16s
Integration Tests / test (3.1.6, 2.2) (push) Failing after 1m23s
Integration Tests / test (3.1.6, 2.3) (push) Failing after 1m20s
Integration Tests / test (3.1.6, 2.4) (push) Failing after 1m16s
Integration Tests / test (3.1.6, 2.5) (push) Failing after 1m23s
Integration Tests / test (3.1.6, 2.6) (push) Failing after 1m31s
Integration Tests / test (3.1.6, 2.7) (push) Failing after 1m28s
Integration Tests / test (3.1.6, 2.8) (push) Failing after 1m24s
Integration Tests / test (3.1.6, 2.9) (push) Failing after 1m25s
Integration Tests / test (3.1.6, 2.9a) (push) Failing after 1m22s
Integration Tests / test (3.1.6, 3.0) (push) Failing after 1m22s
Integration Tests / test (3.1.6, 3.0a) (push) Failing after 1m28s
Integration Tests / test (3.1.6, 3.1) (push) Failing after 1m28s
Integration Tests / test (3.1.6, 3.1a) (push) Failing after 1m28s
Integration Tests / test (3.1.6, 3.1b) (push) Failing after 1m20s
Integration Tests / test (3.1.6, 3.1c) (push) Failing after 1m24s
Integration Tests / test (3.1.6, 3.2a) (push) Failing after 1m35s
Integration Tests / test (3.1.6, 3.3) (push) Failing after 1m40s
Integration Tests / test (3.1.6, 3.4) (push) Failing after 1m34s
Integration Tests / test (3.1.6, 3.5) (push) Failing after 1m31s
Integration Tests / test (3.1.6, 3.5a) (push) Failing after 37m55s
Integration Tests / test (3.1.6, 3.3a) (push) Failing after 41m30s
Integration Tests / test (3.1.6, 3.2) (push) Failing after 47m49s
Integration Tests / test (3.2.7, 1.5) (push) Failing after 4s
Integration Tests / test (3.2.7, 1.6) (push) Failing after 3s
Integration Tests / test (3.2.7, 1.7) (push) Failing after 2s
Integration Tests / test (3.2.7, 1.8) (push) Failing after 5s
Integration Tests / test (3.2.7, 1.9) (push) Failing after 4s
Integration Tests / test (3.2.7, 2.0) (push) Failing after 3s
Integration Tests / test (3.2.7, 2.1) (push) Failing after 3s
Integration Tests / test (3.2.7, 2.2) (push) Failing after 2s
Integration Tests / test (3.2.7, 2.3) (push) Failing after 6s
Integration Tests / test (3.2.7, 2.4) (push) Failing after 3s
Integration Tests / test (3.2.7, 2.5) (push) Failing after 4s
Integration Tests / test (3.2.7, 2.6) (push) Failing after 2s
Integration Tests / test (3.2.7, 2.7) (push) Failing after 4s
Integration Tests / test (3.2.7, 2.8) (push) Failing after 3s
Integration Tests / test (3.2.7, 2.9) (push) Failing after 1s
Integration Tests / test (3.2.7, 2.9a) (push) Failing after 6s
Integration Tests / test (3.2.7, 3.0) (push) Failing after 6s
Integration Tests / test (3.2.7, 3.0a) (push) Failing after 2s
Integration Tests / test (3.2.7, 3.1) (push) Failing after 2s
Integration Tests / test (3.2.7, 3.1a) (push) Failing after 5s
Integration Tests / test (3.2.7, 3.1b) (push) Failing after 5s
Integration Tests / test (3.2.7, 3.1c) (push) Failing after 4s
Integration Tests / test (3.2.7, 3.2) (push) Failing after 4s
Integration Tests / test (3.2.7, 3.2a) (push) Failing after 3s
Integration Tests / test (3.2.7, 3.3) (push) Failing after 6s
Integration Tests / test (3.2.7, 3.3a) (push) Failing after 3s
Integration Tests / test (3.2.7, 3.4) (push) Failing after 4s
Integration Tests / test (3.2.7, 3.5) (push) Failing after 3s
Integration Tests / test (3.2.7, 3.5a) (push) Failing after 2s
Integration Tests / test (3.3.7, 1.5) (push) Failing after 3s
Integration Tests / test (3.3.7, 1.6) (push) Failing after 3s
Integration Tests / test (3.3.7, 1.7) (push) Failing after 4s
Integration Tests / test (3.3.7, 1.8) (push) Failing after 3s
Integration Tests / test (3.3.7, 1.9) (push) Failing after 5s
Integration Tests / test (3.3.7, 2.0) (push) Failing after 3s
Integration Tests / test (3.3.7, 2.1) (push) Failing after 5s
Integration Tests / test (3.3.7, 2.2) (push) Failing after 4s
Integration Tests / test (3.3.7, 2.3) (push) Failing after 5s
Integration Tests / test (3.3.7, 2.4) (push) Failing after 5s
Integration Tests / test (3.3.7, 2.5) (push) Failing after 3s
Integration Tests / test (3.3.7, 2.6) (push) Failing after 4s
Integration Tests / test (3.3.7, 2.7) (push) Failing after 5s
Integration Tests / test (3.3.7, 2.8) (push) Failing after 3s
Integration Tests / test (3.3.7, 2.9) (push) Failing after 5s
Integration Tests / test (3.3.7, 2.9a) (push) Failing after 5s
Integration Tests / test (3.3.7, 3.0) (push) Failing after 5s
Integration Tests / test (3.3.7, 3.0a) (push) Failing after 3s
Integration Tests / test (3.3.7, 3.1) (push) Failing after 5s
Integration Tests / test (3.3.7, 3.1a) (push) Failing after 5s
Integration Tests / test (3.3.7, 3.2a) (push) Failing after 6s
Integration Tests / test (3.3.7, 3.3) (push) Failing after 5s
Integration Tests / test (3.3.7, 3.3a) (push) Failing after 3s
Integration Tests / test (3.3.7, 3.4) (push) Failing after 2s
Integration Tests / test (3.3.7, 3.5) (push) Failing after 3s
Integration Tests / test (3.4.2, 1.6) (push) Failing after 2s
Integration Tests / test (3.4.2, 1.8) (push) Failing after 4s
Integration Tests / test (3.4.2, 1.9) (push) Failing after 4s
Integration Tests / test (3.4.2, 2.0) (push) Failing after 3s
Integration Tests / test (3.4.2, 2.1) (push) Failing after 4s
Integration Tests / test (3.4.2, 2.5) (push) Failing after 6s
Integration Tests / test (3.4.2, 2.6) (push) Failing after 3s
Integration Tests / test (3.4.2, 2.9a) (push) Failing after 3s
Integration Tests / test (3.3.7, 3.1c) (push) Failing after 14m57s
Integration Tests / test (3.4.2, 3.0) (push) Failing after 7s
Integration Tests / test (3.4.2, 3.0a) (push) Failing after 2s
Integration Tests / test (3.4.2, 3.2) (push) Failing after 4s
Integration Tests / test (3.4.2, 3.5a) (push) Failing after 4s
Integration Tests / test (3.3.7, 3.5a) (push) Failing after 3s
Integration Tests / test (3.4.2, 1.5) (push) Failing after 3s
Integration Tests / test (3.4.2, 1.7) (push) Failing after 5s
Integration Tests / test (3.4.2, 2.2) (push) Failing after 3s
Integration Tests / test (3.4.2, 2.3) (push) Failing after 4s
Integration Tests / test (3.4.2, 2.4) (push) Failing after 2s
Integration Tests / test (3.4.2, 2.7) (push) Failing after 3s
Integration Tests / test (3.4.2, 2.8) (push) Failing after 3s
Integration Tests / test (3.4.2, 2.9) (push) Failing after 4s
Integration Tests / test (3.3.7, 3.1b) (push) Failing after 15m2s
Integration Tests / test (3.4.2, 3.1) (push) Failing after 3s
Integration Tests / test (3.4.2, 3.1a) (push) Failing after 4s
Integration Tests / test (3.4.2, 3.1b) (push) Failing after 4s
Integration Tests / test (3.4.2, 3.1c) (push) Failing after 4s
Integration Tests / test (3.4.2, 3.2a) (push) Failing after 4s
Integration Tests / test (3.4.2, 3.3) (push) Failing after 4s
Integration Tests / test (3.4.2, 3.3a) (push) Failing after 3s
Integration Tests / test (3.4.2, 3.4) (push) Failing after 3s
Integration Tests / test (3.4.2, 3.5) (push) Failing after 4s
Integration Tests / test (3.3.7, 3.2) (push) Failing after 14m32s
Integration Tests / finish (push) Has been cancelled
Example:

```sh
tmuxinator start 879 value='set value = this'
```

Signed-off-by: Andrew Kofink <ajkofink@gmail.com>
2025-03-22 10:31:51 -04:00
Andrew Kofink
60c353c182 chore: Fix coveralls to run from GH actions
Signed-off-by: Andrew Kofink <ajkofink@gmail.com>
2025-03-20 08:21:37 -04:00
Andrew Kofink
7f35ac1371 feat: Add --no-pre-window option to start command
All checks were successful
Integration Tests / test (3.1.6, 1.5) (push) Successful in 1m20s
Integration Tests / test (3.1.6, 1.6) (push) Successful in 1m15s
Integration Tests / test (3.1.6, 1.7) (push) Successful in 1m14s
Integration Tests / test (3.1.6, 1.8) (push) Successful in 1m28s
Integration Tests / test (3.1.6, 1.9) (push) Successful in 1m26s
Integration Tests / test (3.1.6, 2.0) (push) Successful in 1m27s
Integration Tests / test (3.1.6, 2.1) (push) Successful in 1m26s
Integration Tests / test (3.1.6, 2.2) (push) Successful in 1m31s
Integration Tests / test (3.1.6, 2.3) (push) Successful in 1m26s
Integration Tests / test (3.1.6, 2.4) (push) Successful in 1m29s
Integration Tests / test (3.1.6, 2.5) (push) Successful in 1m29s
Integration Tests / test (3.1.6, 2.6) (push) Successful in 1m38s
Integration Tests / test (3.1.6, 2.7) (push) Successful in 1m33s
Integration Tests / test (3.1.6, 2.8) (push) Successful in 1m33s
Integration Tests / test (3.1.6, 2.9) (push) Successful in 1m35s
Integration Tests / test (3.1.6, 2.9a) (push) Successful in 1m35s
Integration Tests / test (3.1.6, 3.0) (push) Successful in 1m39s
Integration Tests / test (3.1.6, 3.0a) (push) Successful in 1m35s
Integration Tests / test (3.1.6, 3.1) (push) Successful in 1m36s
Integration Tests / test (3.1.6, 3.1a) (push) Successful in 1m35s
Integration Tests / test (3.1.6, 3.1b) (push) Successful in 1m38s
Integration Tests / test (3.1.6, 3.1c) (push) Successful in 1m35s
Integration Tests / test (3.1.6, 3.2) (push) Successful in 1m45s
Integration Tests / test (3.1.6, 3.2a) (push) Successful in 1m40s
Integration Tests / test (3.1.6, 3.3) (push) Successful in 1m42s
Integration Tests / test (3.1.6, 3.3a) (push) Successful in 1m43s
Integration Tests / test (3.1.6, 3.4) (push) Successful in 1m46s
Integration Tests / test (3.1.6, 3.5) (push) Successful in 1m46s
Integration Tests / test (3.1.6, 3.5a) (push) Successful in 2m5s
Integration Tests / test (3.2.5, 1.5) (push) Successful in 1m12s
Integration Tests / test (3.2.5, 1.7) (push) Successful in 1m13s
Integration Tests / test (3.2.5, 1.8) (push) Successful in 1m31s
Integration Tests / test (3.2.5, 1.9) (push) Successful in 1m35s
Integration Tests / test (3.2.5, 2.1) (push) Successful in 1m28s
Integration Tests / test (3.2.5, 2.2) (push) Successful in 1m28s
Integration Tests / test (3.2.5, 2.7) (push) Successful in 1m35s
Integration Tests / test (3.2.5, 2.9) (push) Successful in 1m38s
Integration Tests / test (3.2.5, 2.9a) (push) Successful in 1m42s
Integration Tests / test (3.2.5, 3.1a) (push) Successful in 1m36s
Integration Tests / test (3.2.5, 1.6) (push) Successful in 1m15s
Integration Tests / test (3.2.5, 2.0) (push) Successful in 1m28s
Integration Tests / test (3.2.5, 2.3) (push) Successful in 1m30s
Integration Tests / test (3.2.5, 2.4) (push) Successful in 1m32s
Integration Tests / test (3.2.5, 2.5) (push) Successful in 1m33s
Integration Tests / test (3.2.5, 2.6) (push) Successful in 1m35s
Integration Tests / test (3.2.5, 2.8) (push) Successful in 1m34s
Integration Tests / test (3.2.5, 3.0) (push) Successful in 1m50s
Integration Tests / test (3.2.5, 3.0a) (push) Successful in 1m36s
Integration Tests / test (3.2.5, 3.1) (push) Successful in 1m37s
Integration Tests / test (3.2.5, 3.1b) (push) Successful in 1m37s
Integration Tests / test (3.2.5, 3.1c) (push) Successful in 1m38s
Integration Tests / test (3.2.5, 3.2) (push) Successful in 1m41s
Integration Tests / test (3.2.5, 3.2a) (push) Successful in 1m41s
Integration Tests / test (3.2.5, 3.3) (push) Successful in 1m45s
Integration Tests / test (3.2.5, 3.3a) (push) Successful in 1m42s
Integration Tests / test (3.2.5, 3.4) (push) Successful in 1m44s
Integration Tests / test (3.2.5, 3.5) (push) Successful in 1m34s
Integration Tests / test (3.2.5, 3.5a) (push) Successful in 1m41s
Integration Tests / test (3.3.5, 1.5) (push) Successful in 1m5s
Integration Tests / test (3.3.5, 1.6) (push) Successful in 1m6s
Integration Tests / test (3.3.5, 1.7) (push) Successful in 1m4s
Integration Tests / test (3.3.5, 1.8) (push) Successful in 1m11s
Integration Tests / test (3.3.5, 1.9) (push) Successful in 1m14s
Integration Tests / test (3.3.5, 2.0) (push) Successful in 1m14s
Integration Tests / test (3.3.5, 2.1) (push) Successful in 1m10s
Integration Tests / test (3.3.5, 2.2) (push) Successful in 1m14s
Integration Tests / test (3.3.5, 2.3) (push) Successful in 1m42s
Integration Tests / test (3.3.5, 2.4) (push) Successful in 1m18s
Integration Tests / test (3.3.5, 2.5) (push) Successful in 1m22s
Integration Tests / test (3.3.5, 2.8) (push) Successful in 1m18s
Integration Tests / test (3.3.5, 2.9) (push) Successful in 1m20s
Integration Tests / test (3.3.5, 2.9a) (push) Successful in 1m35s
Integration Tests / test (3.3.5, 3.1) (push) Successful in 1m39s
Integration Tests / test (3.3.5, 3.1a) (push) Successful in 1m40s
Integration Tests / test (3.3.5, 3.1c) (push) Successful in 1m32s
Integration Tests / test (3.3.5, 3.3a) (push) Successful in 1m42s
Integration Tests / test (3.3.5, 3.4) (push) Successful in 1m49s
Integration Tests / test (3.3.5, 3.5) (push) Successful in 1m49s
Integration Tests / test (3.3.5, 2.6) (push) Successful in 1m20s
Integration Tests / test (3.3.5, 2.7) (push) Successful in 1m46s
Integration Tests / test (3.3.5, 3.0) (push) Successful in 1m50s
Integration Tests / test (3.3.5, 3.0a) (push) Successful in 1m37s
Integration Tests / test (3.3.5, 3.1b) (push) Successful in 1m37s
Integration Tests / test (3.3.5, 3.2) (push) Successful in 1m44s
Integration Tests / test (3.3.5, 3.2a) (push) Successful in 1m40s
Integration Tests / test (3.3.5, 3.3) (push) Successful in 1m45s
Integration Tests / test (3.3.5, 3.5a) (push) Successful in 1m34s
Signed-off-by: Andrew Kofink <ajkofink@gmail.com>
2025-03-19 10:43:03 -04:00
Andrew Kofink
a745a629b9 fix: Properly pass args to start when no command is given
All checks were successful
Integration Tests / test (3.1.6, 1.5) (push) Successful in 1m19s
Integration Tests / test (3.1.6, 1.6) (push) Successful in 1m19s
Integration Tests / test (3.1.6, 1.7) (push) Successful in 1m18s
Integration Tests / test (3.1.6, 1.8) (push) Successful in 1m25s
Integration Tests / test (3.1.6, 1.9) (push) Successful in 1m48s
Integration Tests / test (3.1.6, 2.0) (push) Successful in 1m39s
Integration Tests / test (3.1.6, 2.1) (push) Successful in 1m25s
Integration Tests / test (3.1.6, 2.2) (push) Successful in 1m27s
Integration Tests / test (3.1.6, 2.3) (push) Successful in 1m27s
Integration Tests / test (3.1.6, 2.4) (push) Successful in 1m28s
Integration Tests / test (3.1.6, 2.5) (push) Successful in 1m28s
Integration Tests / test (3.1.6, 2.6) (push) Successful in 1m30s
Integration Tests / test (3.1.6, 2.7) (push) Successful in 1m29s
Integration Tests / test (3.1.6, 2.8) (push) Successful in 1m34s
Integration Tests / test (3.1.6, 2.9) (push) Successful in 1m34s
Integration Tests / test (3.1.6, 2.9a) (push) Successful in 1m30s
Integration Tests / test (3.1.6, 3.0) (push) Successful in 1m35s
Integration Tests / test (3.1.6, 3.1) (push) Successful in 1m34s
Integration Tests / test (3.1.6, 3.0a) (push) Successful in 1m36s
Integration Tests / test (3.1.6, 3.1a) (push) Successful in 1m34s
Integration Tests / test (3.1.6, 3.1b) (push) Successful in 1m33s
Integration Tests / test (3.1.6, 3.1c) (push) Successful in 1m30s
Integration Tests / test (3.1.6, 3.2) (push) Successful in 1m38s
Integration Tests / test (3.1.6, 3.2a) (push) Successful in 1m42s
Integration Tests / test (3.1.6, 3.3) (push) Successful in 1m42s
Integration Tests / test (3.1.6, 3.3a) (push) Successful in 1m39s
Integration Tests / test (3.1.6, 3.4) (push) Successful in 1m46s
Integration Tests / test (3.1.6, 3.5) (push) Successful in 1m44s
Integration Tests / test (3.1.6, 3.5a) (push) Successful in 1m44s
Integration Tests / test (3.2.5, 1.5) (push) Successful in 1m16s
Integration Tests / test (3.2.5, 1.6) (push) Successful in 1m20s
Integration Tests / test (3.2.5, 1.7) (push) Successful in 1m15s
Integration Tests / test (3.2.5, 1.8) (push) Successful in 1m20s
Integration Tests / test (3.2.5, 1.9) (push) Successful in 1m26s
Integration Tests / test (3.2.5, 2.0) (push) Successful in 1m25s
Integration Tests / test (3.2.5, 2.1) (push) Successful in 1m23s
Integration Tests / test (3.2.5, 2.2) (push) Successful in 1m29s
Integration Tests / test (3.2.5, 2.3) (push) Successful in 1m27s
Integration Tests / test (3.2.5, 2.4) (push) Successful in 1m30s
Integration Tests / test (3.2.5, 2.5) (push) Successful in 1m28s
Integration Tests / test (3.2.5, 2.6) (push) Successful in 1m21s
Integration Tests / test (3.2.5, 2.7) (push) Successful in 1m31s
Integration Tests / test (3.2.5, 2.8) (push) Successful in 1m32s
Integration Tests / test (3.2.5, 2.9) (push) Successful in 1m44s
Integration Tests / test (3.2.5, 2.9a) (push) Successful in 1m28s
Integration Tests / test (3.2.5, 3.0) (push) Successful in 1m31s
Integration Tests / test (3.2.5, 3.0a) (push) Successful in 1m30s
Integration Tests / test (3.2.5, 3.2a) (push) Successful in 1m38s
Integration Tests / test (3.2.5, 3.3) (push) Successful in 1m43s
Integration Tests / test (3.2.5, 3.3a) (push) Successful in 1m39s
Integration Tests / test (3.2.5, 3.4) (push) Successful in 1m47s
Integration Tests / test (3.2.5, 3.5) (push) Successful in 1m44s
Integration Tests / test (3.3.5, 1.8) (push) Successful in 1m27s
Integration Tests / test (3.3.5, 2.1) (push) Successful in 1m32s
Integration Tests / test (3.2.5, 3.1) (push) Successful in 1m31s
Integration Tests / test (3.2.5, 3.1a) (push) Successful in 1m31s
Integration Tests / test (3.2.5, 3.1b) (push) Successful in 1m34s
Integration Tests / test (3.2.5, 3.1c) (push) Successful in 1m37s
Integration Tests / test (3.2.5, 3.2) (push) Successful in 1m43s
Integration Tests / test (3.2.5, 3.5a) (push) Successful in 1m46s
Integration Tests / test (3.3.5, 1.5) (push) Successful in 1m16s
Integration Tests / test (3.3.5, 1.6) (push) Successful in 1m26s
Integration Tests / test (3.3.5, 1.7) (push) Successful in 1m25s
Integration Tests / test (3.3.5, 1.9) (push) Successful in 1m27s
Integration Tests / test (3.3.5, 2.0) (push) Successful in 1m28s
Integration Tests / test (3.3.5, 2.2) (push) Successful in 1m30s
Integration Tests / test (3.3.5, 2.3) (push) Successful in 1m28s
Integration Tests / test (3.3.5, 2.4) (push) Successful in 1m27s
Integration Tests / test (3.3.5, 2.5) (push) Successful in 1m31s
Integration Tests / test (3.3.5, 2.6) (push) Successful in 1m30s
Integration Tests / test (3.3.5, 2.7) (push) Successful in 1m33s
Integration Tests / test (3.3.5, 2.8) (push) Successful in 1m29s
Integration Tests / test (3.3.5, 2.9) (push) Successful in 1m33s
Integration Tests / test (3.3.5, 2.9a) (push) Successful in 1m29s
Integration Tests / test (3.3.5, 3.0) (push) Successful in 1m30s
Integration Tests / test (3.3.5, 3.0a) (push) Successful in 1m35s
Integration Tests / test (3.3.5, 3.1) (push) Successful in 1m35s
Integration Tests / test (3.3.5, 3.1a) (push) Successful in 1m34s
Integration Tests / test (3.3.5, 3.1b) (push) Successful in 1m38s
Integration Tests / test (3.3.5, 3.1c) (push) Successful in 1m35s
Integration Tests / test (3.3.5, 3.2) (push) Successful in 1m38s
Integration Tests / test (3.3.5, 3.2a) (push) Successful in 1m37s
Integration Tests / test (3.3.5, 3.3) (push) Successful in 1m39s
Integration Tests / test (3.3.5, 3.3a) (push) Successful in 1m42s
Integration Tests / test (3.3.5, 3.4) (push) Successful in 1m46s
Integration Tests / test (3.3.5, 3.5) (push) Successful in 1m45s
Integration Tests / test (3.3.5, 3.5a) (push) Successful in 1m45s
Problem

mux start [project] [args]

should behave the same as:

mux [project] [args]

Currently, the args are not passed through to the start command as
Thor `options` - they come through as args instead.

Solution

Fix the call to Tmuxinator::Cli#start when a project name is passed in
by simply appending `:start` to the args, as the first argument is the
subcommand in Thor::Cli.

Signed-off-by: Andrew Kofink <ajkofink@gmail.com>
2025-03-18 18:00:33 -04:00
Florent Vilmart
5ef509d783 feat: Add support for tmuxinator append
All checks were successful
Integration Tests / test (3.1.6, 1.5) (push) Successful in 1m44s
Integration Tests / test (3.1.6, 1.6) (push) Successful in 56s
Integration Tests / test (3.1.6, 1.7) (push) Successful in 59s
Integration Tests / test (3.1.6, 1.9) (push) Successful in 1m9s
Integration Tests / test (3.1.6, 2.0) (push) Successful in 1m12s
Integration Tests / test (3.1.6, 1.8) (push) Successful in 1m7s
Integration Tests / test (3.1.6, 2.1) (push) Successful in 1m9s
Integration Tests / test (3.1.6, 2.2) (push) Successful in 1m10s
Integration Tests / test (3.1.6, 2.3) (push) Successful in 1m9s
Integration Tests / test (3.1.6, 2.4) (push) Successful in 1m9s
Integration Tests / test (3.1.6, 2.5) (push) Successful in 1m10s
Integration Tests / test (3.1.6, 2.6) (push) Successful in 1m12s
Integration Tests / test (3.1.6, 2.7) (push) Successful in 1m13s
Integration Tests / test (3.1.6, 2.8) (push) Successful in 1m13s
Integration Tests / test (3.1.6, 2.9) (push) Successful in 1m13s
Integration Tests / test (3.1.6, 2.9a) (push) Successful in 1m15s
Integration Tests / test (3.1.6, 3.0) (push) Successful in 1m14s
Integration Tests / test (3.1.6, 3.0a) (push) Successful in 1m14s
Integration Tests / test (3.1.6, 3.1) (push) Successful in 1m18s
Integration Tests / test (3.1.6, 3.1a) (push) Successful in 1m20s
Integration Tests / test (3.1.6, 3.1b) (push) Successful in 1m14s
Integration Tests / test (3.1.6, 3.1c) (push) Successful in 1m15s
Integration Tests / test (3.1.6, 3.2) (push) Successful in 1m23s
Integration Tests / test (3.1.6, 3.2a) (push) Successful in 1m22s
Integration Tests / test (3.1.6, 3.3) (push) Successful in 1m24s
Integration Tests / test (3.1.6, 3.3a) (push) Successful in 1m24s
Integration Tests / test (3.1.6, 3.4) (push) Successful in 1m24s
Integration Tests / test (3.1.6, 3.5) (push) Successful in 1m28s
Integration Tests / test (3.1.6, 3.5a) (push) Successful in 1m24s
Integration Tests / test (3.2.5, 1.5) (push) Successful in 1m18s
Integration Tests / test (3.2.5, 1.8) (push) Successful in 1m7s
Integration Tests / test (3.2.5, 1.9) (push) Successful in 1m11s
Integration Tests / test (3.2.5, 2.3) (push) Successful in 1m10s
Integration Tests / test (3.2.5, 2.6) (push) Successful in 1m15s
Integration Tests / test (3.2.5, 2.8) (push) Successful in 1m32s
Integration Tests / test (3.2.5, 3.0a) (push) Successful in 1m39s
Integration Tests / test (3.2.5, 3.1b) (push) Successful in 1m35s
Integration Tests / test (3.2.5, 3.1c) (push) Successful in 1m34s
Integration Tests / test (3.2.5, 3.2a) (push) Successful in 1m45s
Integration Tests / test (3.2.5, 1.6) (push) Successful in 1m1s
Integration Tests / test (3.2.5, 1.7) (push) Successful in 1m1s
Integration Tests / test (3.2.5, 2.0) (push) Successful in 1m12s
Integration Tests / test (3.2.5, 2.1) (push) Successful in 1m8s
Integration Tests / test (3.2.5, 2.2) (push) Successful in 1m7s
Integration Tests / test (3.2.5, 2.4) (push) Successful in 1m12s
Integration Tests / test (3.2.5, 2.5) (push) Successful in 1m11s
Integration Tests / test (3.2.5, 2.7) (push) Successful in 1m30s
Integration Tests / test (3.2.5, 2.9) (push) Successful in 1m31s
Integration Tests / test (3.2.5, 2.9a) (push) Successful in 1m37s
Integration Tests / test (3.2.5, 3.0) (push) Successful in 1m35s
Integration Tests / test (3.2.5, 3.1) (push) Successful in 1m38s
Integration Tests / test (3.2.5, 3.1a) (push) Successful in 1m28s
Integration Tests / test (3.2.5, 3.2) (push) Successful in 1m46s
Integration Tests / test (3.2.5, 3.3) (push) Successful in 1m42s
Integration Tests / test (3.2.5, 3.3a) (push) Successful in 1m50s
Integration Tests / test (3.2.5, 3.4) (push) Successful in 1m46s
Integration Tests / test (3.2.5, 3.5) (push) Successful in 1m47s
Integration Tests / test (3.2.5, 3.5a) (push) Successful in 1m48s
Integration Tests / test (3.3.5, 1.5) (push) Successful in 1m44s
Integration Tests / test (3.3.5, 1.6) (push) Successful in 1m16s
Integration Tests / test (3.3.5, 1.7) (push) Successful in 1m22s
Integration Tests / test (3.3.5, 1.8) (push) Successful in 1m33s
Integration Tests / test (3.3.5, 1.9) (push) Successful in 1m25s
Integration Tests / test (3.3.5, 2.0) (push) Successful in 1m43s
Integration Tests / test (3.3.5, 2.1) (push) Successful in 1m30s
Integration Tests / test (3.3.5, 2.2) (push) Successful in 1m33s
Integration Tests / test (3.3.5, 2.3) (push) Successful in 1m35s
Integration Tests / test (3.3.5, 2.4) (push) Successful in 1m34s
Integration Tests / test (3.3.5, 2.5) (push) Successful in 1m35s
Integration Tests / test (3.3.5, 2.6) (push) Successful in 1m34s
Integration Tests / test (3.3.5, 2.7) (push) Successful in 1m37s
Integration Tests / test (3.3.5, 2.8) (push) Successful in 1m34s
Integration Tests / test (3.3.5, 2.9) (push) Successful in 1m44s
Integration Tests / test (3.3.5, 2.9a) (push) Successful in 1m36s
Integration Tests / test (3.3.5, 3.0) (push) Successful in 1m37s
Integration Tests / test (3.3.5, 3.0a) (push) Successful in 1m36s
Integration Tests / test (3.3.5, 3.1) (push) Successful in 1m36s
Integration Tests / test (3.3.5, 3.1a) (push) Successful in 1m32s
Integration Tests / test (3.3.5, 3.1b) (push) Successful in 1m40s
Integration Tests / test (3.3.5, 3.1c) (push) Successful in 1m35s
Integration Tests / test (3.3.5, 3.2) (push) Successful in 1m40s
Integration Tests / test (3.3.5, 3.2a) (push) Successful in 1m43s
Integration Tests / test (3.3.5, 3.3) (push) Successful in 1m44s
Integration Tests / test (3.3.5, 3.3a) (push) Successful in 1m45s
Integration Tests / test (3.3.5, 3.4) (push) Successful in 1m50s
Integration Tests / test (3.3.5, 3.5) (push) Successful in 1m42s
Integration Tests / test (3.3.5, 3.5a) (push) Successful in 1m48s
Adds support for tmuxinator append

Adds ability to specify default loading behavior (start or append)

- Use start when not possible to append

nits

nits and improvements

refactor Cli::bootstrap (#1)

Adds reference to the new command

use say

cli: Adds tests for bootstraping with option set to append

adds tests for project window index

refactor to use start --append instead of append. improve config loading

reduce complexity of the start method

reduce complexity in cli.rb

void(commit)

extract get params

Update lib/tmuxinator/config.rb

Update lib/tmuxinator/project.rb

Update lib/tmuxinator/cli.rb

Co-authored-by: Noah Frederick <code@noahfrederick.com>
Co-authored-by: Andrew Kofink <ajkofink@gmail.com>
Signed-off-by: Andrew Kofink <ajkofink@gmail.com>
2025-03-17 07:36:09 -04:00
Andrew Kofink
8895f12657 feat: Add -a option to list active projects
Signed-off-by: Andrew Kofink <ajkofink@gmail.com>
2024-11-11 09:41:47 -05:00
Andrew Kofink
a9a85fdfff feat: Detect relative window root, join with project root
Signed-off-by: Andrew Kofink <ajkofink@gmail.com>
2024-06-17 07:48:03 -04:00
Andrew Kofink
53881e42f2 fix: Session current path
Signed-off-by: Andrew Kofink <ajkofink@gmail.com>
2024-06-07 19:22:40 -04:00
Auguste Lalande
8e930262e7 Fix pane title options (#913)
* fix pane title options

* update changelog
2024-04-27 14:20:32 -04:00
Andrew Kofink
960085a50a chore: Fix rubocop failures
Signed-off-by: Andrew Kofink <ajkofink@gmail.com>
2024-03-31 14:40:26 -04:00
Micah Shennum
6e7917b35e Proof of Concept for Erubi (#793)
* Swap requirement erubis to erubi

* Swap Erubis::Eruby.new(content).result(binding) with eval(Erubi::Engine.new(content).src,binding)

* Switch cli and project load to instanced_eval

* Switch render_template to binding eval

* update CHANGELOG.md

* fix Code Climate issue in Cli::generate_project_file

* fix Code Climate issue in Project::load

* refactor: Simplify Cli#generate_project_file for code climate

Split out Config#default_or_sample helper method

Signed-off-by: Andrew Kofink <ajkofink@gmail.com>

* refactor: Simplify Project.load for code climate

Signed-off-by: Andrew Kofink <ajkofink@gmail.com>

---------

Signed-off-by: Andrew Kofink <ajkofink@gmail.com>
Co-authored-by: Peter Doherty <pdoherty@protonmail.com>
Co-authored-by: Andrew Kofink <ajkofink@gmail.com>
2024-03-30 11:27:58 -04:00
Andrew Kofink
f1f46b04c3 refactor: Replace exists? with exist? for Ruby >= 3.2 (#889)
This was done in the past:
c18dfe8574

Support for `.exists?` for File and Dir was removed from Ruby here:
bf97415c02

Signed-off-by: Andrew Kofink <ajkofink@gmail.com>
2024-03-16 08:13:21 -04:00
Auguste Lalande
30e71d49a1 Add configuration options for pane titles (#892)
* add configuration options for pane titles

* update changelog

* linting

* Add pane title configuration options to README

* add pane_title configuration spec

* linting

* use be true

* use Non-Interpolable String Literals

* placate codeclimate

* add comment about off needing to be in quotes
2024-03-16 07:59:10 -04:00
Andrew Kofink
d220ee2a10 fix: Shellescape pane titles (#902)
Fixes #900

Signed-off-by: Andrew Kofink <ajkofink@gmail.com>
2024-03-15 17:12:47 -04:00
Auguste Lalande
ba62c5d4ec Set pane title if provided in config file (#891)
* set pane title if provided

* fix linting issues

* check tmux version before setting title

* update changelog

* Add pane titles to README

* set changelog version to unreleased

* add test cases for titled panes

* specify tmux minimum version for pane titles

---------

Co-authored-by: Andrew Kofink <ajkofink@gmail.com>
2024-02-07 19:39:08 -05:00
Toran Sharma
46aa81ebfa Update stop command to support project-config and omitting project name (#890)
Brings stop command inline with start command.
Can now stop a project started with the `--project-config` flag
by running a stop command with the same flag.
Stopping the default local project (`./.tmuxinator.yml`) is now easier
and matches the short way or starting it:
`tmuxinator start` to start, `tmuxinator stop` to stop.

Co-authored-by: Andrew Kofink <ajkofink@gmail.com>
2024-02-04 09:20:45 -05:00
a1346054
c2afba0797 Simple maintenance improvements (#838)
* Remove hashbang from shell completion file

Shell completion files are sourced, not executed.

* Trim excess whitespace

* Fix typos

* chore: Update the CHANGELOG

---------

Co-authored-by: Andrew Kofink <ajkofink@gmail.com>
2024-02-02 21:07:15 -05:00
Pete Doherty
68a508adff add support for local project configs using the .yaml extension (#827) 2021-06-14 09:51:01 -04:00
Aleksandrs Ļedovskis
c5f0465608 Correct edge tmux version detection (#729)
Current `master` branch version of tmux reports itself (`$ tmux -V`) as
"tmux next-3.1". Simplistic conversion of "next-3.1" to Float results in
incorrect detected version `0.0`.

While tmuxinator isn't officially supporting edge/`master` version of
tmux, it should at least correctly identify numeric components of
version. This is important for later code blocks which check for "if
tmux is < VERSION do some stuff differently". Failing to properly detect
version makes tmuxinator output tmux-driving script as if run with old
version, making tmux complain about unsupported syntax.

Closes: #728
2019-10-12 22:56:15 -04:00
Pete Doherty
beb2218366 720 redux (#723)
* Specify socket in 'tmux_has_session?'

This fixes #719. The socket must be specified via 'socket_name' and not
via 'tmux_options'.

* 720-redux - use Project#tmux in Project#tmux_has_session? which conditionally includes socket flag

* 720-redux - update CHANGELOG.md
2019-09-27 14:03:16 -04:00
Loïc Guitaut
60c8c2612b Fix error when using wemux instead of tmux (#590)
Currently the following error is thrown when trying to use wemux instead
of tmux:
undefined method `class_eval' for <#Tmuxinator::Project:0x00000002931528>

This patch extend the current instance of `Tmuxinator::Project` only if
wemux is detected without using `class_eval` and avoids this error
completely.
2019-04-15 15:09:40 -04:00
Timothy Verdonck
5709ff0884 Add support list --newline (#678) (#679)
* Add support list --newline (closes #678)

I created a --newline flag for the ``list`` command. Read up on issue
 #678 [here](https://github.com/tmuxinator/tmuxinator/issues/678)

```bash
-n, [--newline], [--no-newline]  # Force output to be one entry per line
```

Small sidenote:
  this is my first public MRQ and ruby contribution, any feedback is wel
  come

* Update cli.rb
2019-02-05 19:40:40 -05:00
Philip Becker
ce603f3c39 Fix failing spec with custom TMUXINATOR_CONFIG path (#666)
* Fix failing tests when TMUXINATOR_CONFIG is set

When the environment variable TMUXINATOR_CONFIG is set to a custom path,
the specs would fail*. This fixes the affected tests.

This is more of a bandaid to get the tests working because it does not
change the fact that there is stubbing at many different levels:

- Entire methods
- Parts of methods, especially File.directory?
- Env variables

Stubbing ENV is not ideal, see for example
https://robots.thoughtbot.com/testing-and-environment-variables
But in this case, I get the feeling that setting up a cleanly stubbed
ENV would replace most of the other stubbing while being easier to
understand. This may be an idea for the future.

*Reproduce with:
TMUXINATOR_CONFIG=$(pwd)/spec/fixtures/dot-tmuxinator bundle exec rspec spec

* Improve consistency in tests

The class being tested was sometimes referred to by it's name and
sometimes the described_class feature of rspec was used. This changes
all occurrences to use the latter.

I personally think this version has some advantages, like easier
renaming of classes and improved readability (the keyword gets
highlighted and different specs look the same).

But more importantly, picking one version and sticking with it makes the
specs more consistent.
2018-12-26 18:23:23 -05:00
Pete Doherty
0e4590e8a1 #663 add support for project config files with yaml extension (#664)
* #663 - add support for project config files using .yaml extension
2018-12-14 13:00:31 -05:00
Philip Becker
899d99a534 Add quiet flag to prevent tmux version warning (#583) (#659)
* Extract version check from project

The version check was bundled with the dependency checks. Only the
latter depend on the project, so the version checking was extracted into
a new module.

This module is intended for all things related to the tmux version. So
it made sense to move the supported versions constant there as well.

* Renamings and cleanup for tmux version module

* Renamed tmux version warning message
  This message is visible for the master version AND for very old tmux
  versions. Therefore, it is neither a master nor a deprecation message.
  It is simply a message for unsupported versions.

* Removed negation
  "Supported if included" read easier than "Unsupported if not included"

* Shortened names in the context of the new module

* Add test for version warning message

* Change version warning message to WARNING

* Add test for supported version check

* Add unsupported version warning for stop cmd

* Add unsupported version warning for local cmd

* Add flag to prevent tmux version warning (#583)

This adds the "--suppress-tmux-version-warning" flag to skip the warning
for unsupported tmux versions.

We decided that "--quiet" as a name would be too generic, because that
would imply _all_ messages get hidden, including the deprecation
warnings.

* Remove duplication for the continuation prompt
2018-12-09 11:02:21 -05:00
Pete Doherty
88e383878b 640-enable-debug-for-use-with-project-config-flag (#642)
* 640-enable-debug-for-use-with-project-config-flag - first pass at adding support for debugging projects using the --project-config flag

* add debug/project-config specs; refactor cli_spec (extract common lets, use common terms throughout)
2018-08-14 18:54:08 -04:00
Pete Doherty
44fedb300f 639-pass-all-optargs-through-when-using-project-config-flag (#641)
* 639-pass-all-optargs-through-when-using-project-config-flag - prevent args[0] from being swallowed when used in conjunction with the project-config flag

* 639-pass-all-optargs-through-when-using-project-config-flag - update CHANGELOG.md

* 639-pass-all-optargs-through-when-using-project-config-flag - only unshift name onto args array if present

* 639-pass-all-optargs-through-when-using-project-config-flag - fix broken specs
2018-08-08 17:36:00 -04:00
Alexandros Giouzenis
a835a1b0df Allow YAML aliases to work 2018-06-20 09:34:14 +03:00
Adam Strickland
e569aa0aa6 changes bootstrap to accept array of args (vs varargs) 2018-06-07 15:15:00 -07:00
Adam Strickland
179aaab36e fixes cops 2018-06-02 09:36:27 -05:00
Adam Strickland
589da5e69b fixes specs 2018-06-02 09:06:38 -05:00
Adam Strickland
cd1fa02624 moves executable bootstrap logic to Tmuxinator::Cli.bootstrap
adds tests for same
includes bootstrap tests for both with and without a local project config
also ignores local .env
2018-05-27 12:29:44 -05:00
Pete Doherty
84b47360b2 Use Correct Project Config File Path When Generating Config File
* 440-fix-config-file-path-in-project-config - use full project config file path when generating project config file

* MISC - refactor "should always generate a project file" spec -- use Dir.mktmpdir

* 440-fix-config-file-path-in-project-config - update CHANGELOG.md

Closes #440.
2018-05-26 13:24:22 -04:00
Pete Doherty
a25c61d17f Add project config file option to tmuxinator start (#601)
* parameterized-yaml - first pass at parameterized yml cli option

* parameterized-yaml - change yaml_filepath to project-config/project_config

* parameterized-yaml - add project config file cli specs

* parameterized-yaml - add additional project_config Config#validate specs

* fix merge conflict

* parameterized-yaml - refactor Config#validate in order to satiate code climate

* parameterized-yaml - refactor Cli#create_project to satiate Code Climate

* parameterized-yaml - fix regression in Cli#create_project caused by Code Climate fix

* parameterized-yaml - document Cli#create_project attach/detach assignment logic

* parameterized-yaml - bump version to 0.11.0

* parameterized-yaml - use keyword args in calls to Config#exists?


Closes #595.
2018-03-30 16:02:05 -04:00
ge-fa
b0ece95147 Drop factory_girl, introduce factory_bot (#604)
This library got renamed, see [1] for details.

[1] https://github.com/thoughtbot/factory_bot/blob/master/NAME.md
2018-03-26 23:17:27 -04:00
Adam Strickland
2cd3c675fe fixes cops 2017-11-28 09:56:03 -06:00
Ryan Glassett
37fa86278c Merge remote-tracking branch 'upstream/master' into tmux-master-version-warning 2017-11-22 10:13:19 -08:00
Ryan Glassett
6a3cdd556f Handle 'tmux master' version more gracefully
Same diff as #545 with minor changes as discussed in that thread. Treats
'tmux master' as being arbitrarily high, and displays a deprecation
warning to users attempting to run tmuxinator under 'tmux master'.
2017-11-22 00:49:16 -08:00
Ryan Glassett
d9ca66e8ee Fix additional pane-base-index bugs
Fixes remaining sites where the base-index option (for windows) was
incorrectly used in place of the pane-base-index option.
2017-11-21 23:48:45 -08:00
Peter Doherty
f6d8b2e5ec 564 - prevent Project#tmux_has_session? from choking on shellescape'd emojis 2017-10-15 13:40:14 -04:00
Adam Strickland
027d144c18 Merge pull request #543 from rglassett/fix-base-index
Decouple base_index from pane_base_index
2017-09-18 08:27:27 -05:00
Pete Doherty
463a96ca6d Merge branch 'master' into fix-pane-base-index 2017-09-16 06:09:41 -07:00
Ryan Glassett
a9e2582623 Decouple base_index from pane_base_index
The pane_base_index and base_index options are set and handled
independently in tmux, so the value of pane_base_index should not
override the value of base_index (as it previously was).
2017-08-09 16:03:03 -07:00
Adam Strickland
2e033bfbf9 Merge pull request #544 from rglassett/startup-window-pane-full-paths
[Fixes #537] Use full paths for startup window/pane
2017-07-26 17:10:38 -05:00