version-manager / woof Goto Github PK
View Code? Open in Web Editor NEWThe version manager to end all version managers.
Home Page: https://version-manager.github.io/woof
License: Mozilla Public License 2.0
The version manager to end all version managers.
Home Page: https://version-manager.github.io/woof
License: Mozilla Public License 2.0
Be able to disable/enable groups and single plugins
Future development is blocked on a better TUI for expressing actions and the like. The current TUI works, but is one dimensional and does not support many features
To make this possible, I'm writing a Bash TUI library. It builds upon bash-term. When its ready enough, I'll make it public at hyperupcall/bash-tui and use it from this project.
The final TUI should look something like this:
plugin 1 | [tool a] [tool b] [tool c]
plugin 2 | [variant a] [variant b] [variant c]
|
|
Sidebar |
|
|
|
|
----------------------------------------------------------
status bar
Until then, this place will be relatively desolate
shell
function, but that would necessitate duplicating argument parsing code/tmp/woof-reshim
that, if exists, tells shell function to hash
(easiest)history
Add version field
Add 'tool' subcommand for to generate release for a plugin
ex. installs/boundary/v0.10.0/*
(no files/
)
https://hyperupcall.github.io/woof is this project's URL. Change it to https://version-manager.github.io/woof/ .
This directly writes to the current executable, making it so that a directory that says v1.25, may actually be v1.25.1
Find some way to fix this
Some things should show fatal, others should show 'error'. This needs to be consistent with other projects
So when switching between different variatns, can unlink everything in that particular plugin (without unsymlinking absolutely everything, which will wreck performance and behavior (since its a race condition)
Check version tables and make sure that for each version, architecture, and platform that there are no duplicates
Also check to ensure version matches regular expression of semantic version or date
Use this issue to track what additional tools to add:
Make the default local, then if no local can be found, do global (and print message saying it changed global version)
Have a --global
flag to override
From asdf
: asdf-vm/asdf#1235
Mostly different file endings to tar
and zip
stdin is not a terminal until an interactive bash terminal is executed within the session
Potential code
# TODO
# Here, we ensure that the correct corresponding npm version is installed
# when switching versions.
# mkdir -p "$WOOF_MODULE_COMMON_DIR/node_modules"
# m.ensure rm -rf "$WOOF_MODULE_COMMON_DIR/node_modules"/{corepack,npm}
# m.ensure cp -r "$PWD/dir/lib/node_modules"/{corepack,npm} "$WOOF_MODULE_COMMON_DIR/node_modules"
# m.rmln "$WOOF_MODULE_COMMON_DIR/node_modules" "$PWD/dir/lib/node_modules"
We'll want this to be shared for all versions (global, directory, etc).
Info: Constructing version table
Fetching: https://nodejs.org/download/release/v18.1.0/node-v18.1.0-linux-x64.tar.gz
################################################################################################################################################################### 100.0%
Unpacking: /storage/ur/storage_home/Docs/Programming/repos/Groups/Bash/woof/woof/state/workspace-nodejs/./file.tar.gz
41.6MiB 0:00:00 [52.8MiB/s] [==========================================================================================================================>] 100%
Installed: v18.1.0
Using: v18.1.0
Info: Setting v18.1.0 as global default for nodejs
asdf: asdf-vm/asdf#409
--all
the default if none are supplied on the command lineinstall_dir/blah
to tools_dir
because that's what it isAdd exec subcommand
for example
woof exec nodejs [version]
Then, something like /home/user/.local/state/woof/installs/nodejs/v18.0.0/bin/node
etc. is printed to stdout
Support the full list of .tool-version
formats
They include
ref:*
path:*
system
in other files like .rvm
there may or may not be a leading v
In some areas, plugins are prefixed with woof-plugin-*
. At other times, they are not. Unify this.
Clarify how tool selection works when a plugin only has ONE tool, or it wants to choose a tool by default.
For example, the python
tool may have the tools python
, micropython
, jpython
.
python:{python,micropython}
-> does what you expectpython
-> show tool selection menupython/
-> show tool selection menupython/:default
python/p
Currently, all directories are named 'dir' before copying their extracted contents to the <tool>/<version>
directory.
I'd like to make the name less generic - to something like 'out', 'extracted', or 'final'
When installing this on actual systems, have an option to be via package manager
That way on servers, PATH
is already sorted out. Or, install to /opt
via install script with various symlinks to bin /usr/local/bin
Stuff like "Failed to find corresponding row in version table" etc. should be devoid of implementation detail
this requires to push parameters like $tool_name
in a lot more places.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.