Future plans

master
kalle 2023-07-01 17:31:37 +02:00
parent 5df7d66df7
commit ac5068b606
1 changed files with 68 additions and 0 deletions

View File

@ -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.