Share.Ninja

A linha de comando

O sninja é o Share.Ninja no terminal. O programa compartilha arquivos por link e baixa os links dos outros, com a mesma conta e os mesmos links dos apps. Os arquivos são criptografados no seu computador antes de sair dele, e o link abre em qualquer navegador de quem recebe.

Instalação

macOS 13 ou mais recente em Apple Silicon, pelo Homebrew:

brew install shareninjahq/sninja/sninja

Windows 10 ou mais recente, x64, pelo winget:

winget install Share.Ninja.CLI

Para conferir se está tudo no lugar: sninja --version.

Compartilhar por link

sninja put report.pdf photos/

O programa criptografa os arquivos, envia e imprime o link. Mande para quem quiser: o link abre em qualquer navegador, e quem recebe não precisa de app nem de conta.

Com o nome de uma pasta, a pasta inteira é compartilhada. Com uma barra no final, ou um glob, só o que está dentro dela:

sninja put build # a folder named build sninja put build/ # the contents of build

Opções:

-d "Q3 slides"
Uma descrição do compartilhamento; quem abre o link vê.
--validity 12h
Por quanto tempo o link vale: segundos, ou 90s, 15m, 12h, 7d, 2w; 0 quer dizer até você mesmo apagar. O padrão é sete dias. Se pedir mais do que o seu plano permite, o prazo é cortado para o máximo do plano, e o programa avisa.
--streams 1
Enviar um arquivo por vez; o padrão são cinco ao mesmo tempo.

Baixar

Primeiro dá para ver o que tem dentro:

sninja list 'https://share.ninja/#…' --tree

--table mostra tamanhos e datas no lugar da árvore, --path docs começa por uma pasta interna, --non-recursive mostra só um nível. Depois:

sninja get 'https://share.ninja/#…' -o ~/Downloads

Os arquivos vão para a pasta indicada em -o, por padrão a atual. Coloque o link entre aspas, senão o shell engole tudo depois do #.

--filter 'docs/**/*.pdf'
Baixar só os arquivos cujo caminho bate com o padrão.
--force
Se o nome já existe, salvar o arquivo ao lado como "Nome 1" em vez de parar.

Um download interrompido continua de onde parou: basta rodar o mesmo get de novo.

Um link sem subir nada

sninja direct build/ --ttl 3600

O programa imprime um link na hora e serve os arquivos direto deste computador enquanto estiver rodando. Para a nuvem não vai nada. Pare com Ctrl+C ou dê uma duração em segundos com --ttl; de um jeito ou de outro, depois não sobra nada para baixar. Essa é a ideia.

Sua conta

Tudo até aqui funciona sem conta. Entre se quiser ver seus compartilhamentos também nos outros dispositivos:

sninja auth login

O navegador abre para você entrar. A sessão fica no chaveiro do sistema: sninja auth status mostra, sninja auth logout apaga.

Um dispositivo novo só ganha acesso depois de confirmado por um dispositivo em que você já confia. Este terminal não é exceção:

sninja vault join --wait

O programa imprime a impressão digital do dispositivo e espera. Aprove o pedido em um dispositivo confiável, conferindo a impressão digital, e o comando termina conectado. Sem --wait ele volta na hora; sninja vault status diz em que ponto você está.

Conectado:

sninja links
Seus links; sem entrar, os links deste dispositivo.
sninja link <token>
Um link em detalhe. Com --mint, o comando imprime um link novo para o mesmo compartilhamento, pronto para enviar.

Por enquanto, parar de compartilhar só dá pelo app ou no share.ninja; a linha de comando ainda não tem esse comando.

Scripts

Progresso e status também saem no stdout, então pegue o link das últimas linhas, não da saída inteira. list, link e links podem gravar o resultado em um arquivo JSON: --json <file>. Os logs vão para o stderr; --verbose deixa tudo mais detalhado.