CLI projetado para ajudar os desenvolvedores a criar ótimos temas para o Tray E-commerce.

Overview

Tray CLI

Interface de linha de comando desenvolvida em Node.js e TypeScript para ajudar desenvolvedores a criarem ótimos temas para Tray.

Índice

Instalação

Para usar esse programa basta instalar com os comandos abaixo. Recomendados fazer a instalação global. No linux a instalação global necessita ser feita com administrador com o comando sudo.

# Instala globalmente no sistema (Recomendado)
npm install @tray-tecnologia/tray-cli --global

# Instala na pasta local
npm install @tray-tecnologia/tray-cli

Se desejar usar localmente, todos os comando abaixo precisaram ter acrescido npx antes para que ele seja executado corretamente.

Linha de comando

Os comandos abaixo estão disponíveis no programa. Parâmetros obrigatórios são indicados entre sinais de menor < e maior > e parâmetros opcionais entre colchetes []. Parâmetros opcionais são independentes de ordem, ou seja, podem ser passados no início ou no final do comando.

tray help [command]

Mostra uma listagem de todos os comando disponíveis, bem como uma descrição sucinta sobre o comando. Se o parâmetro command for passado mostra a ajuda específica do comando solicitado.

tray configure [options] [key] [password] [theme_id]

Cria o arquivo de configuração. Caso não passe os parâmetros acima o programa irá solicitá-los interativamente. A única opção disponível para esse comando é --debug. Isso fará com que arquivos de log sejam gerados na pasta raiz onde o comando é executado. Esses arquivos começam com . e são ignorados pelo programa.

tray list

Lista todos os temas disponíveis atualmente na loja.

tray create [options] [key] [password] [theme-name] [theme-base]

Cria um novo tema na loja com o nome passado e baseado no tema base. Caso algum parâmetro não seja informado, o programa irá solicitá-lo. É possível usar a opçao --debug nesse comando para gerar arquivos de log sejam na pasta raiz onde o comando é executado. Esses arquivos começam com . e são ignorados pelo programa.

tray clean-cache [theme-id]

Limpa o cache de um tema. Se o parâmetro opcional theme-id não for fornecido, o programa usará o tema configurado no arquivo config.yml.

tray delete [theme-id]

Deleta um tema da loja. Se o parâmetro opcional theme-id não for fornecido, o programa usará o tema configurado no arquivo config.yml.

tray download [files...]

Baixa os arquivos especificados do tema configurado. Se o parâmetro opcional files não for fornecido, o programa irá baixar todos os arquivos do tema.

tray upload [options] [files...]

Envia os arquivos para a loja no tema configurado. Se o parâmetro opcional files não for fornecido, o programa irá enviar todos os arquivos, pastas e subpastas presentes na pasta raiz onde o comando é executado.

Esse comando possui a opçào --core, que indica ao programa para enviar somente os arquivos essenciais, ignorando o arquivos settings.json e a pasta imagem por completo.

Esse comando suporta padrões Glob e usa a biblioteca node-glob para isso.

tray remove

Remove os arquivos especificados do tema configurado. É obrigatório passar os arquivos que deseja remover. Esse comando suporta padrões Glob e usa a biblioteca node-glob para isso.

tray watch

Monitora os arquivos para verificar se ocorreram mudanças e já realiza as devidas alterações na loja. Atenção: nem todas as operações do sistema de arquivos do seu computador são suportadas pela API da Tray. Apenas as operações de criação, atualização, remoção e renomeação de arquivos são suportadas. Operações com pastas não são suportadas e serão ignoradas.

tray open

Abre o link de prévia do tema no navegador padrão.

API

O Tray Cli também expõe uma API para que você possa usar integrar os commandos do CLI em outra ferramenta. Com exceção dos comandos open e watch, todos os outros comandos estão disponíveis nessa API.

Todos os métodos dessa API retornam uma Promise. Você deverá observá-la para detectar quando ela foi resolvida ou rejeitada. Como algumas operações demoram a serem executadas, recomendamos sempre executá-las de modo assíncrono.

Veja o exemplo abaixo de um uso simples para gerar a configuração do tema

const Tray = require('@tray-tecnologia/tray-cli').default;

const api = new Tray({
    key: 'MINHA-CHAVE-AQUI',
    password: 'MINHA-SENHA-AQUI',
    themeId: 1, // Id do meu tema
    debug: false,
});

api.configure()
    .then((success) => console.log(success))
    .catch((error) => console.error(error));

Erros

O Tray Cli pode retornar vários erros que indicam problemas diferentes durante a execução do programa.

SaveConfigurationFileError (CLI::0001)

Retornado caso não seja possível salvar o arquivo de configurações necessário para todas as outras ações.

FileNotFoundError (CLI::0002)

Retornado caso não for encontrado o arquivo config.yml na pasta atual.

ParameterNotDefinedError (CLI::0003)

Retornado quando algum parâmetro necessário não for informado.

SaveThemeAssetError (CLI::0004)

Retornado quando algum problema ocorre ao tentar salva o arquivo baixado do tema.

LoadThemeAssetError (CLI::0005)

Retornado quando o programa não consegue carregar os dados do arquivo do tema a ser enviado.

ThemeFilesNotFoundError (CLI::0006)

Retornado quando o programa não consegue listar automaticamente os arquivos a serem enviado para a loja.

UnknownError (CLI::9999)

Retornando quando um erro acontecer, mas que o programa não consegue identificar qual foi a causa.

Contribuições

Tray CLI é um projeto de código fonte aberto no qual todos são bem-vindos a ajudar a comunidade contribuindo com o projeto. Fique a vontade para reportar problemas, sugerir melhorias ou enviar código de novas funcionalidades. Confira Como contribuir com o projeto e ajudá-lo a melhorar a cada dia.

Licença

GPLv3

Comments
  • Idéia

    Idéia

    Seria muito interessante ter a opção de trabalhar com o tema da tray localmente. Assim ficaria bem mais rápido o desenvolvimento usando o VScode ~Se já existir, peço desculpas

    wontfix 
    opened by juanfariasdev 6
  • Comando Tray Watch não funcionando

    Comando Tray Watch não funcionando

    Olá, estou tendo um problema com o comando "tray watch", toda vez que eu inicio ele encerra sozinho instantaneamente. Tentei ativar o debug porém não ta gerando nenhum log

    image

    bug 
    opened by guiibraun 4
  • Comandos de upload tentam enviar pastas do node_modules

    Comandos de upload tentam enviar pastas do node_modules

    Descrição

    Ao fazer upload de arquivos em massa com upload ou upload --core, o comando tenta subir a pasta node_modules

    Motivo

    Existem regras sobre quais pastas podem subir ou não para o tema, e se elas não podem ser subidas, deveriam ser ignoradas. Uma vez que a pasta node_modules é uma pasta que pode estar presente em projetos que instalem a CLI localmente, é uma pasta que pode inclusive ter uma regra específica para que nunca seja tentado seu upload.

    O problema de tentar subi-la é que ela possui geralmente muitos arquivos, o que cria um relatório de erros muito grande.

    Comportamento esperado

    A pasta node_modules pode ser totalmente ignorada, de preferência com alguma mensagem que explique por que ela está sendo ignorada.

    not a bug not related 
    opened by leolopes 2
  • Falha ao subir tema

    Falha ao subir tema

    Quanto tento subir um tema completo com tray upload exibe a falha abaixo:

    ⚠ Folder paths are not supported and will be ignored. ✖ TypeError: glob_1.default.sync(...).flat is not a function

    docs not a bug 
    opened by karanguilherme 2
  • Dúvida sobre arquivos scss

    Dúvida sobre arquivos scss

    Pelo que me lembre o opencode_theme, fazia também a parte de transformar o scss para css e também subia arquivos scss. Esse novo CLI não sobe arquivos scss e nem transforma para css. É assim que deveria funcionar de fato ou pode ser que tenha algo errado, no setup?

    Não que seja um problema, só para saber se o processo de build deveria ser de fato nosso mesmo.

    question 
    opened by joaoghummel 2
  • Arquivo errado mencionado na explicação da flag --core

    Arquivo errado mencionado na explicação da flag --core

    Descrição

    Na explicação sobre a flag --core do comando upload, é mencionado que se ignora o arquivo settings.html

    Detalhes

    Porém, no código menciona o settings.json, que seria o que originalmente planejamos ignorar.

    Também fala em ignorar a pasta de imagens inteiramente. Não lembro como era no plano original, mas no meu entendimento, a pasta que realmente precisaria ser ignorada é a img/settings.

    ==

    No mais, legal que o projeto evoluiu para este novo! Pode ter certeza que contribuiremos!

    docs question 
    opened by leolopes 2
  • Erro upload sass

    Erro upload sass

    Funcionou corretamente por algum tempo mas derepente começou a dar esse erro ao tentar enviar os arquivos .sass

    [UnknownError] [SDK::9999]: Unable to process request. Please try again in few moments

    Tanto usando direto no cli quanto via api no gulp

    wontfix not a bug 
    opened by albreis 1
  • Limpeza de Cache Tema

    Limpeza de Cache Tema

    Rafa, não sei se estou fazendo de forma incorreta, mas quando tento limpar o cache do tema usando tray clean-cache (ID DO TEMA), nada acontece.

    No Dev do tema o cache está se mantendo por muito tempo, então tentei usar essa função, porem nada aconteceu.

    not related 
    opened by karanguilherme 3
  • Erro ao tentar fazer download de vários arquivos por

    Erro ao tentar fazer download de vários arquivos por "glob"

    Descrição

    Ao tentar fazer o download de vários arquivos usando padrões de glob, apresenta o erro:

    Unable to process request. Please try again in few moments.

    Captura de tela da CLI mostrando erro ao tentar baixar múltiplos arquivos com glob

    Motivo

    Utilizamos padrões glob para fazer upload de pastas inteiras, tipos de arquivo específicos, etc, o que economiza tempo e dados, uma vez que não são subidos todos os arquivos de uma vez.

    Porém, ao tentar fazer a mesma coisa no processo de download, não conseguimos. Isso é até pior do que não poder fazê-lo no upload, pois pressupõe que nós saibamos de antemão os nomes dos arquivos, e que são poucos o suficiente para podermos fazer um por um.

    Acabamos tendo de fazer download de todo o tema para economizar tempo.

    Outro problema ainda é o fato de que a mensagem de erro não corresponde necessariamente ao erro, de modo que o usuário pode achar que seja apenas uma instabilidade.

    Comportamento Esperado

    Que ao utilizar padrões de glob no comando try download, sejam baixados os arquivos que correspondam ao padrão, assim como acontece no upload.

    opened by leolopes 2
  • Baixo feedback de processos de upload de arquivos em massa

    Baixo feedback de processos de upload de arquivos em massa

    Descrição

    Ao fazer upload de arquivos em massa com upload ou upload --core, não temos ideia do progresso da tarefa.

    Motivo

    Durante o progresso de upload, é mostrada uma mensagem com spinner indicando que o upload está sendo feito. Porém, não sabemos quais arquivos já subiram ou estão subindo. Apenas somos avisados, ao final do processo, dos arquivos que não subiram.

    Comportamento esperado

    • A interface poderia logar cada um dos arquivos durante seu upload e após o upload, indicando sucesso ou erro,
    • ou, no mínimo, poderia exibir o arquivo que está subindo no momento,
    • e/ou exibir o número do arquivo na fila (ex: Subindo arquivo 1 de 150)
    • e logar os erros todos à medida em que acontecem, a fim de o usuário ter a oportunidade de interromper o processo no meio, caso haja um erro.
    opened by leolopes 2
  • Mensagem de erro genérica ao subir para tema já publicado

    Mensagem de erro genérica ao subir para tema já publicado

    Descrição

    Ao fazer upload de arquivos para um tema já publicado, é mostrada uma mensagem genérica.

    Motivo

    É importante apresentar uma mensagem específica sobre o problema para auxiliar o usuário na sua solução.

    Comportamento esperado

    A mensagem deveria ter teor similar a: "O tema para o qual você está tentando subir arquivos já está publicado. Despublique o tema e tente novamente".

    opened by leolopes 1
  • Erro ao realizar o download os arquivos do tema

    Erro ao realizar o download os arquivos do tema

    Estava funcionando normalmente, de repente começou a dar isso em todos os temas que tento baixar:

    /js/theme.min.js -> Unable to process request. Please try again in few moments. /js/navigator.min.js -> Unable to process request. Please try again in few moments. /js/zoom.min.js -> Unable to process request. Please try again in few moments. /img/compartilhamento.jpg -> Unable to process request. Please try again in few moments.

    OBS: Baixa a maioria dos arquivos, porém fica faltando alguns.

    opened by gabrieltelescosta 1
  • Repetição no envio de assets

    Repetição no envio de assets

    Descrição

    Quando assets são modificados automaticamente com gulp ocorre repetição no envio dos arquivos no Tray CLI.

    Motivo

    Repetição do mesmo arquivo.

    Detalhes

    O envio ocorre 4 vezes para cada arquivo .

    Comportamento esperado

    Os assets deveriam ser enviados apenas uma única vez ao ser modificado.

    Comportamento encontrado

    Assets minificados e não minificados são enviados várias vezes.

    opened by Merieli 2
Releases(v1.0.1)
Owner
Tray
Projetos open source mantidos pela Tray
Tray
LinkFree CLI is a command line tool that helps you to create your LinkFree profile through CLI.

LinkFree CLI LinkFree CLI is a command line tool that helps you to create your LinkFree profile through CLI. Demo Using the CLI (Commands) Note First

Pradumna Saraf 32 Dec 26, 2022
Infinite Red's cutting edge React Native project boilerplate, along with a CLI, component/model generators, and more!

Ignite - the hottest React Native boilerplate Battle-tested React Native boilerplate The culmination of five years of constant React Native developmen

Infinite Red, Inc. 14.7k Dec 29, 2022
CLI tool for running Yeoman generators

yo What's Yeoman? Yeoman helps you to kickstart new projects, prescribing best practices and tools to help you stay productive. To do so, we provide a

Yeoman 3.6k Dec 30, 2022
Test your internet connection speed and ping using speedtest.net from the CLI

speed-test Test your internet connection speed and ping using speedtest.net from the CLI Install Ensure you have Node.js version 8+ installed. Then ru

Sindre Sorhus 3.8k Jan 7, 2023
Distributed, realtime CLI for live Node apps.

Vantage = CLI + SSH + REPL for your live node app. In one line: require("vantage")().listen(4000); What just happened? That's voodoo magic: show me th

dc 3.5k Dec 30, 2022
download torrents with node from the CLI

torrent Download torrents from the command line usage torrent <magnet link OR path to .torrent file> Download a torrent from a magnet link to torre

Max Ogden 619 Dec 26, 2022
:white_square_button: WhatsApp chat from commandline/console/cli using GoogleChrome puppeteer

Whatspup Use Whatsapp from commandline/console/cli using GoogleChrome puppeteer! ?? Features ✅ Send and receive messages ✅ Read Receipts ✅ Switch betw

Sarfraz Ahmed 343 Dec 1, 2022
:notes: Control iTunes via CLI

itunes-remote Control iTunes via your terminal ?? Using JXA via osascript via Node.js. Requirements Node.js (v0.12.7 or greater) Mac OS X (Yosemite 10

Michael Kühnel 422 Nov 19, 2022
Add stdin support to any CLI app that accepts file input

tmpin Add stdin support to any CLI app that accepts file input It pipes stdin to a temp file and spawns the chosen app with the temp file path as the

Sindre Sorhus 121 Oct 3, 2022
A CLI for peer-to-peer file sharing using the Hypercore Protocol.

A CLI for peer-to-peer file sharing (and more) using the Hypercore Protocol.

Hypercore Protocol 207 Dec 30, 2022
Node.js Open CLI Framework. Built with 💜 by Heroku.

oclif: Node.JS Open CLI Framework ?? Description ?? Getting Started Tutorial ✨ Features ?? Requirements ?? CLI Types ?? Usage ?? Examples ?? Commands

oclif 8k Jan 4, 2023
Git commit CLI

commitme Based on this gist by @gustavopch Installation You can install this on your package using npm i -D commitme or run it once using npx commitme

Roz 7 Jun 6, 2021
An extension geared towards Spotify users with larger libraries; view all your playlists that contain a specific song with the click of a button. Designed for Spicetify (https://github.com/khanhas/spicetify-cli)

ViewPlaylistsWithSong An extension developed for Spicetify that allows you to view all the playlists in your library that contain a certain song. Idea

null 21 Dec 13, 2022
HMSC (How Much Stuffs CLI) analyst for your files and folders

HMSC ?? About HMSC (How Much Stuffs CLI) analyst for your files and folders ?? Screenshot ?? Requirements Node.js NPM ?? Installation $ npm i -g hmsc

Abdullah Veliyev 26 Jan 10, 2022
A C++ based command-line (CLI) program that lets you manage your tasks

COMMAND LINE INTERFACE TODO APP a command-line (CLI) program that lets you manage your tasks. The specification for this project is written down as te

Rahul Prabhakar 1 Dec 25, 2021
A CLI progam show teminal outputs as gradients.

GRADIENT-TERMINAL A CLI progam to display teminal outputs as gradients. Requirements For Installation, you will only need Node.js. Install $ git clone

Ritin George 34 Jan 3, 2023
Tasks Management CLI application with Nodejs, Mongodb, inquirer.js, and commander

Tasks CLI Tasks CLI is a program to manage your tasks in a database using terminal or console. This is a sample project for beginners Requirements Nod

Fazt Web 9 Nov 17, 2022
A cli tool to generate random mock data from OpenAPI definition for msw.

msw-auto-mock A cli tool to generate random mock data from OpenAPI descriptions for msw. Why We already have all the type definitions from OpenAPI spe

null 76 Dec 15, 2022