cleanup
- SHA
ae3b99b38a252cd35b36259a200f5a11c3b9b585- Parents
-
33e7109 - Tree
23d3099
ae3b99b
ae3b99b38a252cd35b36259a200f5a11c3b9b58533e7109
23d3099| Status | File | + | - |
|---|---|---|---|
| A |
LICENSE
|
21 | 0 |
| M |
README.md
|
1 | 52 |
| A |
USAGE.md
|
47 | 0 |
| M |
app/main.f90
|
2 | 1 |
| A |
aur-files.txt
|
48 | 0 |
| A |
contrived/test_staged.txt
|
1 | 0 |
| A |
scratch/scratchy/demo/scratch.txt
|
1 | 0 |
LICENSEadded@@ -0,0 +1,21 @@ | ||
| 1 | +MIT License | |
| 2 | + | |
| 3 | +Copyright (c) 2024 Matthew Wolffe and FORTRESS contributors | |
| 4 | + | |
| 5 | +Permission is hereby granted, free of charge, to any person obtaining a copy | |
| 6 | +of this software and associated documentation files (the "Software"), to deal | |
| 7 | +in the Software without restriction, including without limitation the rights | |
| 8 | +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
| 9 | +copies of the Software, and to permit persons to whom the Software is | |
| 10 | +furnished to do so, subject to the following conditions: | |
| 11 | + | |
| 12 | +The above copyright notice and this permission notice shall be included in all | |
| 13 | +copies or substantial portions of the Software. | |
| 14 | + | |
| 15 | +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
| 16 | +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
| 17 | +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
| 18 | +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
| 19 | +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
| 20 | +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |
| 21 | +SOFTWARE. | |
README.mdmodified@@ -61,43 +61,6 @@ fortress # instead of 'fpm run' | ||
| 61 | 61 | |
| 62 | 62 | This allows you to navigate to directories and have your shell follow when you press 'c'. |
| 63 | 63 | |
| 64 | -### Development | |
| 65 | - | |
| 66 | -```bash | |
| 67 | -# Run tests | |
| 68 | -fpm test | |
| 69 | - | |
| 70 | -# Build with debug flags | |
| 71 | -fpm build --flag "-g -Wall -Wextra" | |
| 72 | -``` | |
| 73 | - | |
| 74 | -## Current Features | |
| 75 | - | |
| 76 | -- ✅ **Dual-pane display** inspired by Ranger/MC (parent dir 30% | current dir 70%) | |
| 77 | -- ✅ **Real filesystem navigation** with directory reading | |
| 78 | -- ✅ **Smart selection memory** - remembers position when navigating | |
| 79 | -- ✅ **Visual hierarchy** - dimmed parent pane, active current pane | |
| 80 | -- ✅ **Color-coded files**: | |
| 81 | - - Directories: Blue + bold | |
| 82 | - - Executable files: Green | |
| 83 | - - Dotfiles: Grey | |
| 84 | - - Regular files: White | |
| 85 | -- ✅ **Smooth updates** - no flashing, selective redraws | |
| 86 | -- ✅ **Arrow key navigation** for intuitive movement | |
| 87 | -- ✅ **Full-width selection bar** - clean highlighting | |
| 88 | -- ✅ **CD on exit** - press 'c' to navigate your shell to selected directory | |
| 89 | - | |
| 90 | -## Next Steps | |
| 91 | - | |
| 92 | -- [ ] File opening with $EDITOR (Enter on files) | |
| 93 | -- [ ] FZF integration for fuzzy search (Ctrl-F) | |
| 94 | -- [ ] File operations (copy, move, delete) | |
| 95 | -- [ ] Configuration file support | |
| 96 | - | |
| 97 | -## Roadmap | |
| 98 | - | |
| 99 | -See [ROADMAP.md](ROADMAP.md) for detailed development plans. | |
| 100 | - | |
| 101 | 64 | ## Controls |
| 102 | 65 | |
| 103 | 66 | - `↑/↓`: Navigate up/down |
@@ -106,20 +69,6 @@ See [ROADMAP.md](ROADMAP.md) for detailed development plans. | ||
| 106 | 69 | - `c`: CD to selected directory and exit (requires shell integration) |
| 107 | 70 | - `q`: Quit |
| 108 | 71 | |
| 109 | -## Architecture | |
| 110 | - | |
| 111 | -FORTRESS is built as a self-contained file explorer: | |
| 112 | - | |
| 113 | -- `app/main.f90`: Main application with integrated UI and file operations | |
| 114 | -- `lib_modules/`: Modular components (available for future expansion) | |
| 115 | - - `filesystem/`: File operations and directory walking | |
| 116 | - - `terminal/`: Terminal I/O and screen management | |
| 117 | - - `ui/`: User interface components (panes, rendering) | |
| 118 | - | |
| 119 | -## Packaging | |
| 120 | - | |
| 121 | -For AUR maintainers, see [AUR_PACKAGING.md](AUR_PACKAGING.md) for complete packaging instructions. | |
| 122 | - | |
| 123 | 72 | ## License |
| 124 | 73 | |
| 125 | -MIT | |
| 74 | +MIT | |
USAGE.mdadded@@ -0,0 +1,47 @@ | ||
| 1 | +# Using FORTRESS with CD-on-Exit | |
| 2 | + | |
| 3 | +## Setup (One Time) | |
| 4 | + | |
| 5 | +Add this line to your `~/.bashrc` or `~/.zshrc`: | |
| 6 | + | |
| 7 | +```bash | |
| 8 | +source ~/Documents/GithubOrgs/FortranGoingOnForty/fortress/fortress.sh | |
| 9 | +``` | |
| 10 | + | |
| 11 | +Then reload your shell: | |
| 12 | +```bash | |
| 13 | +source ~/.bashrc # or source ~/.zshrc | |
| 14 | +``` | |
| 15 | + | |
| 16 | +## Usage | |
| 17 | + | |
| 18 | +Instead of running `fpm run`, use the `fortress` command: | |
| 19 | + | |
| 20 | +```bash | |
| 21 | +fortress | |
| 22 | +``` | |
| 23 | + | |
| 24 | +This runs the fortress file explorer. When you're browsing: | |
| 25 | + | |
| 26 | +1. Use `↑↓` to navigate files/directories | |
| 27 | +2. Use `→` to enter a directory | |
| 28 | +3. Use `←` to go back | |
| 29 | +4. **Press `c` on any directory to exit fortress and CD your shell to that directory** | |
| 30 | +5. Press `q` to quit without changing directory | |
| 31 | + | |
| 32 | +## How It Works | |
| 33 | + | |
| 34 | +When you press `c`: | |
| 35 | +1. FORTRESS writes the selected directory path to `~/.fortress_cd` | |
| 36 | +2. FORTRESS exits | |
| 37 | +3. The shell function reads `~/.fortress_cd` and runs `cd` to that directory | |
| 38 | +4. The temp file is cleaned up | |
| 39 | + | |
| 40 | +This is the same pattern used by tools like `fzf`. | |
| 41 | + | |
| 42 | +## Important Notes | |
| 43 | + | |
| 44 | +- ❌ `fpm run` does NOT enable cd-on-exit (it runs directly) | |
| 45 | +- ✅ `fortress` command DOES enable cd-on-exit (uses the shell function) | |
| 46 | +- You must source `fortress.sh` in your shell config for this to work | |
| 47 | +- This only works in interactive shells, not in scripts | |
app/main.f90modified@@ -5,6 +5,7 @@ program fortress_clean | ||
| 5 | 5 | ! Constants |
| 6 | 6 | integer, parameter :: MAX_PATH = 512 |
| 7 | 7 | integer, parameter :: MAX_FILES = 500 |
| 8 | + | |
| 8 | 9 | character(len=*), parameter :: ESC = char(27) |
| 9 | 10 | character(len=*), parameter :: CLEAR = ESC // "[2J" // ESC // "[H" |
| 10 | 11 | character(len=*), parameter :: BOLD = ESC // "[1m" |
@@ -355,4 +356,4 @@ contains | ||
| 355 | 356 | end if |
| 356 | 357 | end subroutine write_exit_dir |
| 357 | 358 | |
| 358 | -end program fortress_clean | |
| 359 | +end program fortress_clean | |
aur-files.txtadded@@ -0,0 +1,48 @@ | ||
| 1 | +# AUR Files Ready for Deployment | |
| 2 | + | |
| 3 | +## Files for AUR Repository | |
| 4 | + | |
| 5 | +You need to push these 3 files to your AUR repository: | |
| 6 | + | |
| 7 | +1. **PKGBUILD** - Build instructions | |
| 8 | +2. **.SRCINFO** - Package metadata | |
| 9 | +3. **fortress.install** - Post-install script | |
| 10 | + | |
| 11 | +## Current Status | |
| 12 | + | |
| 13 | +✅ PKGBUILD - Ready | |
| 14 | +✅ .SRCINFO - Generated (update sha256sum before pushing) | |
| 15 | +✅ fortress.install - Ready | |
| 16 | + | |
| 17 | +## To Deploy to AUR | |
| 18 | + | |
| 19 | +```bash | |
| 20 | +# On your AUR server: | |
| 21 | +cd /path/to/aur/fortress | |
| 22 | + | |
| 23 | +# Copy these three files | |
| 24 | +cp PKGBUILD .SRCINFO fortress.install . | |
| 25 | + | |
| 26 | +# Before first push, you MUST: | |
| 27 | +# 1. Create GitHub release v0.1.0 | |
| 28 | +# 2. Update sha256sums in PKGBUILD | |
| 29 | +# 3. Regenerate .SRCINFO: makepkg --printsrcinfo > .SRCINFO | |
| 30 | + | |
| 31 | +# Then commit | |
| 32 | +git add PKGBUILD .SRCINFO fortress.install | |
| 33 | +git commit -m "Initial import of fortress v0.1.0" | |
| 34 | +git push | |
| 35 | +``` | |
| 36 | + | |
| 37 | +## Important Notes | |
| 38 | + | |
| 39 | +- **sha256sums = SKIP**: Change this to actual checksum before pushing | |
| 40 | +- **.SRCINFO**: Must be regenerated with `makepkg --printsrcinfo` on Linux after any PKGBUILD changes | |
| 41 | +- Both files are ready to copy to your AUR server now | |
| 42 | + | |
| 43 | +## Three Files You Need | |
| 44 | + | |
| 45 | +All located in project root: | |
| 46 | +- PKGBUILD | |
| 47 | +- .SRCINFO | |
| 48 | +- fortress.install | |
contrived/test_staged.txtadded@@ -0,0 +1,1 @@ | ||
| 1 | +blah | |
scratch/scratchy/demo/scratch.txtadded@@ -0,0 +1,1 @@ | ||
| 1 | +scratch | |