Meld - A CLI tool to manage shards

Hi Crystallizers,

My name is Chetan Mittal, and I have been a Ruby and Rails developer since 2005. Just a few days back I started gaining interest in Crsytal Lang after I started using LavinMQ message broker.

While learning how to program in Crystal I found out that it lacked an easy tool like Bundler is to Ruby, and Cargo is to Rust. So I started developing Meld.

Currently, it still a work in progress, but you can:-

$ crystal run src/meld.cr -- help
Meld - Crystal Lang Package Manager
Usage:
  meld [options] <command> [command options]
Commands:
  init                               Initialize project (shard.yml)
  add <shard> [-v|-b|-t|-c] [--dev]  Add a shard (pin with version/branch/tag/commit)
  remove <shard>                     Remove a shard from shard.yml and lib/
  search <query>                     Search for available shards
  install                            Install dependencies
  update [shard]                     Update all or a specific shard
  exec <cmd>                         Run a command in project context
  binstubs <shard>                   Generate executable wrappers
  global install <shard> [...]       Build and install shard executables globally
  help [command]                     Show help (global or for a command)
Options:
    -v, --version                    Show version
    -h, --help                       Show help

The basic features like meld add <shard_name>, remove, install, etc work except a few such as creating binstubs. Also, it can build and install a package such as LavinMQ globally without using make.

Give it a go or contribute here - https://github.com/cmittal790/meld

Regards, Chetan.

1 Like

There is a existed shards almost same as you.

Maybe you want share ideas with him.

Thanks for sharing this. I wasn’t aware of sword.

I’ve seen this idea several times since joining the Crystal community.
Even though it looks simple, is it actually a difficult problem…?

Also, just FYI, there’s a reasonably popular visual diff/merge tool with the same name: Meld Merge.

Nothing inherently wrong with using the same name, but I thought it would be good to let you know. :slightly_smiling_face:

1 Like

There’s also GitHub - devnote-dev/geode: An alternative Crystal package manager :sweat_smile:.