open-index/open-npm huggingface dataset:
npm package: @sunodo/car-sync
Description: This utility can be used to download an [IPFS CAR](https://ipld.io/specs/transport/car/carv1/) identified by a CID to a local directory. It takes advantage of IPFS properties like deduplication and content addressing to only download data that is not alre
Latest version: 0.2.0

# IPFS CAR Download

This utility can be used to download an [IPFS CAR](https://ipld.io/specs/transport/car/carv1/) identified by a CID to a local directory. It takes advantage of IPFS properties like deduplication and content addressing to only download data that is not already present in the local filesystem and use symlinks to avoid duplicating data at rest.

## Example

The CID [bafybeibwirqufwrm5oohry2v22cmkgtx4sf2yszjikdpe4zlrraz66ewwm](https://explore.ipld.io/#/explore/bafybeibwirqufwrm5oohry2v22cmkgtx4sf2yszjikdpe4zlrraz66ewwm) is a `dag-pb` UnixFS directory, containing 11 files. Each file is identified by a CID and can be downloaded individually. So instead of downloading the entire CAR (over 400Mb) we can download only the files we still don't have. Note as well that some of the files have different names like `0000000060000000-200000.bin` and `0000000060200000-200000.bin` but have the same CID, as their contents are the same. So we can use symlinks to avoid not only downloading but also storing duplicated data.

## Usage

Install the package globally and run the command:

```shell
$ npm install -g @sunodo/car-sync
$ car-sync --help

Usage: car-sync [options] <cid> [output]

Arguments:
  cid         Content ID of the CAR file
  output      Output directory (default: ".")

Options:
  -h, --help  display help for command
```

To download a CAR file to the current directory:

```shell
car-sync bafybeibwirqufwrm5oohry2v22cmkgtx4sf2yszjikdpe4zlrraz66ewwm
```

## API

car-sync can also be used as a library:

```shell
npm install @sunodo/car-sync
```

```typescript
import { unixfs } from "@helia/unixfs";
import { carfs, text } from "@sunodo/car-sync";
import { createHelia } from "helia";
import { CID } from "multiformats/cid";
import ora from "ora";

const helia = await createHelia();
const fs = unixfs(helia);
const car = carfs(fs);

for await (const file of car.ls(
    CID.parse("bafybeibwirqufwrm5oohry2v22cmkgtx4sf2yszjikdpe4zlrraz66ewwm"),
)) {
    const spinner = ora(file.path).start();
    for await (const progress of car.save(file, ".")) {
        spinner.text = text(progress);
        if (progress.status === "downloaded" || progress.status === "cached") {
            spinner.succeed();
        } else if (progress.status === "error") {
            spinner.fail(progress.error);
        }
    }
}
```
npm package: @sunodo/cli
Description: Sunodo CLI
Author: Danilo Tuler
Latest version: 0.14.0

# Sunodo CLI

Sunodo provides a CLI to help developers to:

-   `create` applications from templates
-   `build` applications from source to a cartesi machine
-   `run` applications in a local development environment
-   `test` applications running inside a cartesi machine
-   `deploy` applications to a cloud provider
-   `monitor` application already running on a cloud provider

It's implemented using the [oclif framework](https://oclif.io) and distributed through several channels including `npm` and `homebrew`.

## Installation

```shell
brew install sunodo/tap/sunodo
sunodo --help
```

More documentation at [https://docs.sunodo.io](https://docs.sunodo.io).