Giter Site home page Giter Site logo

jbowes / welk Goto Github PK

View Code? Open in Web Editor NEW
6.0 6.0 0.0 271 KB

What's inside the shell? welk manages `curl | sh` style package installs ๐ŸŒ

License: BSD 3-Clause "New" or "Revised" License

Go 100.00%
curl go golang hacktoberfest package package-management package-manager shell shell-script

welk's Introduction

Most of my repositories are modules for, or applications in, go.

What's exciting

  • welk is a CLI tool that manages applications you usually install with curl | sh.
  • whatsnew lets your application notify users when there are new releases.
  • semver is a Semantic Versioning parser that's 10x faster than the most popular package.
  • future is an exploration of futures with go1.18+ type parameters.

Go errors

Many of my repositories deal with error values:

  • Use interfaces to express behaviours with vice
  • Explicit error wrapping (instead of %w with cling
  • Consume Go2/xerrors error frames programaticaly with framerr
  • Create concrete errors with spalling

Old stuff

All my old repositories are in my crawl space

welk's People

Contributors

dependabot[bot] avatar jbowes avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

welk's Issues

Version and diagnostic information

Add a checkup or diagnose or similar command that will display version, arch, etc.

Wire that up to build time information for the release version. Have that version information also work with go get,
and with go build when inside the repository (either inspect git, or have a magic string).

Licensing and copyright

Choose a license and put it in the repo.
Apply copyright headers to all files outside of forked.
Decide on CLA or not.

Self-managing welk

After welk is installed, it should be able to manage itself.

Automatically add an installed db entry for welk, either from where it was downloaded (have the script co-operate) or from the canonical url.

This should likely use a build tag, so it only happens for released versions.

Vanilla binaries support

If a url passed to install is a binary executable file, install it and link it.

In other words, support installing hashicorp releases.

Release an initial version

Use goreleaser (probably) to release an initial version.

have a download script.

Have welk manage itself upon install. Update: do this in its own issue: #14

Vanilla archives support

If the url provided for install is an archive file (zip/tar etc), then unarchive it into a working dir and link the executables.

Some notes on possible future commands

pulling this out of the source

Commands

Is single level possible?

install, i

install a program by url

  • shell scripts
  • bare binaries
  • compressed binaries

re-install broken or partial install?

update, up (u?)

update a single program by url, or name
or update everything with bare, or -A?

delete, d

delete (unintall, remove, erase) a single program by url or name

run, r

would exec, e be better to free up r?

run a script in the sandbox (eg old codecov updater ;) )

TODO

list installed
list available

info on installed, available
audit on installed, single or both. (fix would be with up)

pin/unpin to prevent update? probably not

submit new manifests via PR, submit new checksums etc.
submit scripts that fail to work

HIDE completion command?

version command, or combined doctor/setup

Package welk with homebrew / npm / deb / etc

welk is designed to manage software installed with curl | sh; it treats software that isn't packaged as if it were packaged.

As a matter of principal, welk will only be released from this repository as a curl | sh style install script.

Others are encouraged to package welk if they wish. We will accept changes that support these efforts.

Seed future seasons

The readme will probably link to seasons, so seeding them as milestones with at least a few issues would be good.

Name detection

Create heuristics to detect a package name:

  • Use the toplevel created directory
  • or the common prefix of all installed binaries
  • or ???

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.