{"id":13737233,"url":"https://github.com/h3rald/nifty","last_synced_at":"2025-10-06T09:32:23.777Z","repository":{"id":55340188,"uuid":"73853936","full_name":"h3rald/nifty","owner":"h3rald","description":"A decentralised (pseudo) package manager and script runner","archived":false,"fork":false,"pushed_at":"2023-08-11T02:17:57.000Z","size":54,"stargazers_count":44,"open_issues_count":0,"forks_count":3,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-05-03T03:52:52.427Z","etag":null,"topics":["nim","package-manager"],"latest_commit_sha":null,"homepage":"https://h3rald.com/nifty","language":"Nim","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/h3rald.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2016-11-15T20:49:20.000Z","updated_at":"2024-05-29T17:37:51.000Z","dependencies_parsed_at":"2024-01-06T12:07:35.584Z","dependency_job_id":"f0caffd8-240e-4dd4-93be-9fdcbc77648a","html_url":"https://github.com/h3rald/nifty","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/h3rald%2Fnifty","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/h3rald%2Fnifty/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/h3rald%2Fnifty/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/h3rald%2Fnifty/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/h3rald","download_url":"https://codeload.github.com/h3rald/nifty/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252140976,"owners_count":21700773,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["nim","package-manager"],"created_at":"2024-08-03T03:01:38.175Z","updated_at":"2025-09-16T18:23:56.252Z","avatar_url":"https://github.com/h3rald.png","language":"Nim","funding_links":[],"categories":["Development Tools"],"sub_categories":["Build Systems / Package Management"],"readme":"[![Nimble](https://raw.githubusercontent.com/yglukhov/nimble-tag/master/nimble.png)](https://nimble.directory/pkg/nifty)\n\n[![Release](https://img.shields.io/github/release/h3rald/nifty.svg)](https://github.com/h3rald/nifty/releases/latest)\n[![License](https://img.shields.io/github/license/h3rald/nifty.svg)](https://raw.githubusercontent.com/h3rald/nifty/master/LICENSE)\n\n# Nifty\n\n*nifty* is a decentralized (pseudo) package manager and script runner written in [Nim](https://nim-lang.org).\n\n## Main features\n\nIn a nutshell, *nifty* is a program that executes user-defined scripts on a set of folders or files within a user-define package folder. It doesn't do (almost) anything by itself, it just relies on other programs and utilities that are typically already available on your system like [git](https://git-scm.com) and [curl](https://curl.haxx.se) to do all the heavy-lifting.\n\n### Run side-by-side your existing package manager\n\n*nifty* doesn't claim to replace your existing package manager, therefore it tries not to get too much in the way of your existing project structure. All it needs to work resides in a humble `nifty.json` file that is used to:\n\n* keep track of what packages are part of the current project\n* provide the full definition of all the available commands and how to execute them on specific packages\n\nThe folder where packages will be stored is by default set to a [packages](class:kwd) subfolder within the current project directory, but even this can be configured in the `nifty.json` file. \n\n\u0026rarr; For an example of `nifty.json` file, see [the one used by HastyScribe](https://github.com/h3rald/hastyscribe/blob/master/nifty.json).\n\n### Define your own packages\n\nFor *nifty*, a package can be a folder containing files, or even a single files. Through the `nifty.json` file, you can define:\n\n* The *source* of a package (typically a git repository or event just a URL).\n* Whether the package supports *git*, *curl* or any other command that will be used to retrieve its contents.\n\n### Define your own commands \n\nYou can use your `nifty.json` to teach *nifty* new tricks, i.e. how to execute new commands on packages. Your commands look like... well, CLI commands, except that you can use placeholders like `{{name}}` and `{{src}}` in them for your package name, source, etc.\n\n### Run on many different platforms and regardless of the type of project\n\n*nifty* is a self-contained executable program written in [Nim](https://nim-lang.org) and runs on all platforms where Nim compiles. Also, unlike other package managers that are typically used within the context of one specific programming language (like [NPM](https://www.npmjs.com) for Javascript or [RubyGems](https://rubygems.org) for Ruby), *nifty* can be used in virtually any project, regardless of the programming language used.\n\n## Usage\n\n* `nifty help [\u003ccommand\u003e]` \u0026middot; Display help on the specified command (or all commands).\n* `nifty info \u003cpackage\u003e` \u0026middot; Displays information on \u003cpackage\u003e\n* `nifty init [\u003cstorage-dir\u003e]` \u0026middot; Initializes a project in the current directory (using \u003cstorage-dir\u003e as storage directory).\n* `nifty list` \u0026middot; Lists all dependencies (recursively) of the current project.\n* `nifty map \u003cpackage\u003e` \u0026middot; Configures a new or existing package \u003cpackage\u003e.\n* `nifty remove [\u003cpackage\u003e]` \u0026middot; Removes the specified package (or all packages) from the storage directory.\n* `nifty unmap \u003cpackage\u003e` \u0026middot; Unmaps the previously-mapped package \u003cpackage\u003e.\n* `nifty update` \u0026middot; Updates the command definitions for the current project and migrate nifty.json file (if necessary).\n* `nifty install [\u003cpackage\u003e]` \u0026middot; Installs the specified package (or all mapped packages) to the storage directory.\n* `nifty upgrade [\u003cpackage\u003e]` \u0026middot; Upgrades the specified previously-installed package (or all packages).\n  \n\u0026rarr; For more information, see the [Nifty User Guide](https://h3rald.com/nifty/Nifty_UserGuide.htm).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fh3rald%2Fnifty","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fh3rald%2Fnifty","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fh3rald%2Fnifty/lists"}