Future plans
parent
5df7d66df7
commit
ac5068b606
68
README.md
68
README.md
|
@ -1,2 +1,70 @@
|
||||||
# Projects
|
# Projects
|
||||||
A tool for managing projects from the commandline.
|
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.
|
||||||
|
|
Loading…
Reference in New Issue