68 lines
3.0 KiB
Markdown
68 lines
3.0 KiB
Markdown
# contrib (town contrib)
|
|
|
|
the point of this command is to request to an admin that a particular executable path be exposed via the town launcher.
|
|
|
|
## mockup
|
|
|
|
```
|
|
town contrib ~/bin/mycoolexe
|
|
? How should the new command be called? [mycoolexe]
|
|
? What is a one line description of this program? cool dingus
|
|
? What category is this program in?
|
|
artistic
|
|
game
|
|
utility
|
|
> social
|
|
misc
|
|
? Press e to open your editor and write a longer description of this program...
|
|
|
|
FYI! you will be the maintainer of this command and only you (or an admin) will be able to make updates to it once it is approved.
|
|
|
|
v created request for command mycoolexe. if too much time passes without addition, bother vilmibm.
|
|
```
|
|
|
|
```
|
|
# uses uid to guard updates
|
|
town contrib -u mycoolexe ~/bin/newpath/mycoolexe
|
|
...updated path for mycoolexe to ~/bin/newpath/mycoolexe
|
|
? Want to edit other stuff (description, category, etc) [yN] n
|
|
```
|
|
|
|
```
|
|
# uses uid to guard updates
|
|
town contrib -d mycoolexe
|
|
? To confirm deletion of mycoolexe, type its name: mycoolexe
|
|
|
|
v deleted mycoolexe
|
|
```
|
|
|
|
```
|
|
# enforces admin access
|
|
town contrib --admin ~someone//bin/something
|
|
? How should the new command be called? [something]
|
|
? What is a one line description of this program? cool dingus
|
|
? Who is the maintainer? [vilmibm] someone
|
|
? What category is this program in?
|
|
artistic
|
|
game
|
|
utility
|
|
> social
|
|
misc
|
|
? Press e to open your editor and write a longer description of this program...
|
|
```
|
|
|
|
in addition to this new interface, i want to change how commands are tracked. the script + yaml file is very cumbersome and confusing and has the bad race condition of the two files not being written at the same time. it means i hate adding commands.
|
|
|
|
- sqlite3. a little overkill.
|
|
- json file. a little underkill.
|
|
|
|
what am I doing. should there even be a system like this? what about just letting anyone add anything? i think we're big enough that we shouldn't go moderation less and i can also help guarantee things are runnable and maintainable, this way.
|
|
|
|
i have a gut feeling that involving SQL here is bad. I like the flat file approach for requesting that something be added to core; those are easy to review and tweak, but after that, what to do? right now the town launcher consumes a directory of flat files to create the command hierarchy. i could keep that code the same. the ultimate issue is having to have the corresponding executable. right now, that might be a bash wrapper that i write; it could be a compiled executable; it could be a script someone else writes; as of now, it doesn't seem like it can be a symlink which i think is good.
|
|
|
|
several of the wrapper scripts are just calling the executable path and passing args; i think i should just do that from go.
|
|
|
|
so we'll have: /town/requests/contrib to store requests to add. once added, they will go to /town/commands/contrib as a yaml file with no need for a corresponding executable.
|
|
|
|
competing with this, i want a `town wild` command that can call any executable in a world writeable dir. because it's funny
|