RPMSpec · 7989 bytes Raw Blame History
1 %global debug_package %{nil}
2
3 Name: fortress
4 Version: 1.0.2
5 Release: 1%{?dist}
6 Summary: A command-line file explorer written in modern Fortran with cd-on-exit
7
8 License: MIT
9 URL: https://github.com/FortranGoingOnForty/fortress
10 Source0: %{name}-%{version}.tar.gz
11
12 BuildRequires: gfortran >= 10.0
13 BuildRequires: gcc
14 BuildRequires: fpm
15 Requires: glibc
16 Requires: gcc-libs
17 Requires: fzf
18 Requires: git
19
20 %description
21 FORTRESS is a command-line file explorer written in modern Fortran with fzf integration.
22 It provides a dual-pane interface inspired by Ranger/Midnight Commander with intuitive
23 keyboard navigation and a unique cd-on-exit feature that allows you to navigate your
24 shell to any directory you select in the explorer.
25
26 Features:
27 - Dual-pane display (parent dir 30%% | current dir 70%%)
28 - Real filesystem navigation with directory reading
29 - Smart selection memory - remembers position when navigating
30 - Visual hierarchy with dimmed parent pane and active current pane
31 - Color-coded files (directories, executables, dotfiles, regular files)
32 - Smooth updates with no flashing, selective redraws
33 - Arrow key navigation for intuitive movement
34 - Full-width selection bar with clean highlighting
35 - CD on exit - press 'c' to navigate your shell to selected directory
36
37 %prep
38 %autosetup
39
40 %build
41 fpm build --flag "-O2 -ffree-line-length-none"
42
43 %install
44 mkdir -p %{buildroot}%{_bindir}
45 mkdir -p %{buildroot}%{_libdir}/%{name}
46 mkdir -p %{buildroot}%{_datadir}/%{name}
47 mkdir -p %{buildroot}%{_datadir}/fish/vendor_functions.d
48 mkdir -p %{buildroot}%{_sysconfdir}/profile.d
49 mkdir -p %{buildroot}%{_docdir}/%{name}
50
51 # Install the binary to lib (not directly in PATH)
52 install -Dm755 build/gfortran_*/app/fortress %{buildroot}%{_libdir}/%{name}/fortress
53
54 # Install wrapper script to bin
55 install -Dm755 fortress-wrapper.sh %{buildroot}%{_bindir}/fortress
56
57 # Install shell integration files to shared location
58 install -Dm644 fortress.sh %{buildroot}%{_datadir}/%{name}/fortress.sh
59 install -Dm644 fortress.fish %{buildroot}%{_datadir}/%{name}/fortress.fish
60
61 # Install bash integration to profile.d (auto-sourced on login)
62 install -Dm644 fortress.sh %{buildroot}%{_sysconfdir}/profile.d/fortress.sh
63
64 # Install fish integration to vendor functions (auto-loaded)
65 install -Dm644 fortress.fish %{buildroot}%{_datadir}/fish/vendor_functions.d/fortress.fish
66
67 # Install documentation
68 install -Dm644 README.md %{buildroot}%{_docdir}/%{name}/README.md
69 if [ -f USAGE.md ]; then
70 install -Dm644 USAGE.md %{buildroot}%{_docdir}/%{name}/USAGE.md
71 fi
72
73 %files
74 %license LICENSE
75 %doc README.md
76 %{_bindir}/fortress
77 %{_libdir}/%{name}/fortress
78 %{_datadir}/%{name}/fortress.sh
79 %{_datadir}/%{name}/fortress.fish
80 %config(noreplace) %{_sysconfdir}/profile.d/fortress.sh
81 %{_datadir}/fish/vendor_functions.d/fortress.fish
82 %{_docdir}/%{name}/README.md
83
84 %post
85 cat <<'EOF'
86
87 ====================================================================
88 FORTRESS - Terminal File Explorer
89 ====================================================================
90
91 The 'fortress' command is now available!
92
93 Shell integration (cd-on-exit) has been installed:
94 Bash: Auto-loaded via /etc/profile.d/fortress.sh
95 Fish: Auto-loaded via vendor_functions.d
96 Zsh: Add to ~/.zshrc:
97 source %{_datadir}/%{name}/fortress.sh
98
99 You may need to restart your shell or run:
100 source /etc/profile.d/fortress.sh # bash
101
102 Usage:
103 fortress - Start the file explorer
104 Press 'c' on a directory to cd there and exit
105
106 Documentation: %{_docdir}/%{name}/
107
108 ====================================================================
109
110 EOF
111
112 %changelog
113 * Sat Dec 28 2025 mfw <mfwolffe@outlook.com> - 1.0.2-1
114 - Move binary to /usr/lib/fortress/, add wrapper script to /usr/bin/fortress
115 - Eliminate fortress-bin naming, both script and binary now named fortress
116 - Add NixOS flake.nix support
117 - Improve shell integration scripts with better path detection
118
119 * Fri Dec 05 2025 mfw <espadon@outlook.com> - 1.0.0-1
120 - Fix top status bar not rendering on some terminals
121 - Merge favorites: fuzzy jump, rename mode, git mode toggle, Alt-key bindings
122
123 * Wed Oct 29 2025 mfw <espadon@outlook.com> - 0.9.99-1
124 - Add conditional rows for WezTerm and Ghostty terminals
125 - Fix alignment of pipes on favorited directories
126
127 * Wed Oct 29 2025 mfw <espadon@outlook.com> - 0.9.98-1
128 - Merge favorites branch into trunk
129 - Ensures all features (favorites, jump binds) are in trunk
130
131 * Mon Oct 27 2025 mfw <espadon@outlook.com> - 0.9.94-1
132 - Change cursor selection approach for consistent cross-platform experience
133 - Move away from reverse video highlighting to fix macOS inconsistencies
134
135 * Mon Oct 27 2025 mfw <espadon@outlook.com> - 0.9.93-1
136 - Fix shell integration to find fortress-bin in PATH
137 - Improves Homebrew compatibility on macOS
138
139 * Mon Oct 27 2025 mfw <espadon@outlook.com> - 0.9.92-1
140 - Add favorites functionality with * and 8 keybinds
141 - Add jump to ~ and / with keybinds
142 - Fix display alignment issues with pipes
143
144 * Sun Oct 26 2025 mfw <espadon@outlook.com> - 0.9.91-1
145 - Fix runtime errors on switching terminal modes
146 - Improve terminal mode handling
147
148 * Sat Oct 25 2025 mfw <espadon@outlook.com> - 0.9.9-1
149 - Fix hashes appearing in copy status for multi-select operations
150 - UI improvements for multi-select mode
151
152 * Sat Oct 25 2025 mfw <espadon@outlook.com> - 0.9.8-1
153 - Add multi-select with space key
154 - Add shift+arrow for range selection
155 - Prevent selection of . and .. entries
156 - Major code cleanup (removed lib_modules directory)
157
158 * Sat Oct 19 2025 mfw <espadon@outlook.com> - 0.9.5-1
159 - Add 'r' key to remove files
160 - Add copy, cut, paste functionality
161 - Recursive move for directories
162 - Stage directories with move mode
163 - Exit move mode with 'q'
164 - Smart duplicate suffix on paste
165 - Fix suffix concatenation
166
167 * Fri Oct 18 2025 mfw <espadon@outlook.com> - 0.9.2-1
168 - Add 'n' key to rename files
169 - Add '.' key to toggle dotfiles visibility
170 - Add 'v' key to start move mode
171 - Add git fetch/pull with incoming change indicators
172 - Show dirty indicator on directories
173 - Fix buffer issues in move mode
174 - Various move behavior improvements
175
176 * Fri Oct 18 2025 mfw <espadon@outlook.com> - 0.9.0-1
177 - Cache git operations for better performance
178 - Optimize file attribute checking
179 - Fix directory entry navigation on arrow keys
180 - Work in progress: diff keybinding
181
182 * Fri Oct 18 2025 mfw <espadon@outlook.com> - 0.8.0-1
183 - Add 'o' key to open files with $EDITOR
184 - Platform-dependent features
185 - Enhanced file operations
186
187 * Fri Oct 18 2025 mfw <espadon@outlook.com> - 0.7.0-1
188 - Add git push functionality
189 - Add git tag creation and management
190 - Enhanced git operations
191
192 * Fri Oct 18 2025 mfw <espadon@outlook.com> - 0.6.0-1
193 - Add src/ui/preview.f90 module
194 - Code cleanup and documentation improvements
195
196 * Fri Oct 18 2025 mfw <espadon@outlook.com> - 0.5.0-1
197 - Major refactor: modularize codebase into src/ directory
198 - Add branch info to git status bar
199 - Make git integration reactive
200 - Improved code organization and maintainability
201
202 * Fri Oct 18 2025 mfw <espadon@outlook.com> - 0.4.0-2
203 - Add git as runtime dependency for git integration features
204
205 * Fri Oct 18 2025 mfw <espadon@outlook.com> - 0.4.0-1
206 - Add git integration features with status display
207 - Add 'U' key to unstage staged files in listing
208 - Fix terminal size handling issues
209 - Various bug fixes and improvements
210
211 * Fri Oct 18 2025 mfw <espadon@outlook.com> - 0.2.0-1
212 - Add fzf integration for fuzzy file search
213 - Fix cursor clamping to prevent disappearing on ..
214 - Fix cd-on-exit regression
215 - Various cursor fixes and improvements
216 - Add fzf as runtime dependency
217
218 * Fri Oct 18 2025 mfw <espadon@outlook.com> - 0.1.0-1
219 - Initial RPM release
220 - Dual-pane file explorer with Fortran implementation
221 - CD-on-exit functionality with shell integration
222 - Color-coded file display with visual hierarchy
223 - Smart selection memory and arrow key navigation
224 - Automatic shell integration for bash and fish
225 - Manual setup required for zsh
226