From ac5068b6064c35212c4038ba245849a2f91a3a9e Mon Sep 17 00:00:00 2001 From: Kalle Struik Date: Sat, 1 Jul 2023 17:31:37 +0200 Subject: [PATCH] Future plans --- README.md | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/README.md b/README.md index 8e6ac4c..f1824f5 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,70 @@ # Projects A tool for managing projects from the commandline. + +## Future plan +Config file containing all known projects and a way to retrieve their current files from somewhere (i.e. git, nfs, etc). +Sync project status on selecting project. +Run init-workspace script when loading project. +Maybe yml config file for the project which defines tmux windows to open, scripts to run in them by default, etc. + + +Example for a full stack web application workpace.yml file. +```yaml +windows: + - type: Command + command: "edit ." + title: editor + - type: Shell + title: shell + - type: Command + command: "docker-compose up" + title: database + - type: Command + command: "sass --watch scss:css" + title: sass + - type: Command + command: "npm run dev" + title: dev server +``` + +This would open a tmux session with 5 windows (tabs) layed out and labeled as follows: +`| 0: editor | 1: shell | 2: database | 3: sass | 4: dev server |` +When the sesion is closed the program should ask to commit and push changes like the following: + ++--------------------------+ +| * Commit | +| Switch Branch & Commit | +| Dont do anything | ++--------------------------+ + +The star indicates the currently selected option. +`Commit` runs git commit followed by git push if it succeeds. +`Switch Branch & Commit` asks for a branch name and either switches or creates and switches to it. Then it does the same as `Commit`. +`Dont do anything` exits. + +When a project is opened it first asks to git pull like this: + ++-- Git Pull --+ +| * Yes | +| No | ++--------------+ + +When yes is selected it will run git pull and then offer you a fzf prompt to switch branch before running the init stage. The default option would be the current branch. + +Example projects.json: +```json +[ + { + "name": "KNotes", + "source": "git://git@git.kallestruik.nl:2022/kalle/KNotes" + }, + { + "name": "Projecs", + "source": "git://git@git.kallestruik.nl:2022/kalle/Projects" + } +] +``` + +Typing `projects open` would open a fzf session to select the project you want to open. This would open the `Git Pull` prompt if it already exists on the filesystem. If it does not it will set up a new directory for the project and git clone into that. +It will then search for a `workspace.yml` in the project root. If it finds this it will set up the tmux session according to it. Otherwise it will open a tmux session with only one window. It will alo print a warning into this tmux session to inform +the user that there is no `workspace.yml` file found.