Criando e copiando entidades
Buildprint materializa uma ramificação do Bubble como uma árvore de sistema de arquivos fragmentada que você edita como código. Em vez de escrever manualmente o JSON para uma nova página, tipo de dado ou workflow, use buildprint new para gerar uma base válida, buildprint copy para duplicar algo que já existe e buildprint components para empacotar ou instalar bundles de componentes reutilizáveis (os componentes têm sua própria documentação dedicada).
Execute estes comandos de dentro de um workspace de ramificação clonada (<app-root>/<branch>/). Cada scaffold e cópia grava arquivos somente nesse workspace. Nada é enviado ao Bubble até você executar apply.
Os scaffolds são um ponto de partida, não o resultado final. Depois que um comando é executado, ele imprime os arquivos que criou e lembra você de inspecioná-los e refiná-los. Quando terminar, valide o workspace com buildprint check e envie o resultado com buildprint apply.
Criando entidades com buildprint new
buildprint new agrupa um comando de scaffold por tipo de entidade. Execute buildprint new --help para listar todos eles.
Páginas, visualizações mobile e reusables
Páginas, visualizações mobile e reusables são raízes de canvas. Cada uma compartilha um --layout opcional (um de column, row ou fixed) e um --copy opcional para clonar uma raiz existente por id ou nome. --layout não pode ser combinado com --copy.
buildprint new page --name "Dashboard"
buildprint new page --name "Dashboard Copy" --copy "Dashboard"
buildprint new mobile --name "Home"
buildprint new mobile --name "Home Copy" --copy "Home"
buildprint new reusable --name "Sidebar"
buildprint new reusable --name "Create Modal" --element-type Popup
buildprint new mobile_reusable --name "Bottom Tab Shell"
buildprint new mobile_reusable --name "Account Sheet" --element-type Sheet--name <name>é obrigatório para todas as quatro.reusableemobile_reusabletambém aceitam--element-type <type>(por exemploGroupouPopup; o padrão éGroup).
A opção --copy nesses comandos é a mesma operação que buildprint copy root; veja Copiando entidades abaixo.
Tipos de dado
buildprint new data_type --name "Project"
buildprint new data_type --name "Invoice" --field total:number --field owner:user
buildprint new data_type --name "Project API" --exposed-api --field status:option.project_status--name <name>(obrigatório) define o nome de exibição.--field <display:value>adiciona um campo no formatodisplay:value(por exemplotitle:textouowner:user). Repita a flag para adicionar mais de um campo.--exposed-apimarca o tipo de dado como exposto pela Data API.
Conjuntos de opções
buildprint new option_set --name "Project Status"
buildprint new option_set --name "Project Status" --value Open --value Closed
buildprint new option_set --name "Project Status" --value "In Progress:in_progress"
buildprint new option_set --name "Evidence Strength" --value High --value Moderate --attribute color:text --attribute threshold:number--name <name>(obrigatório) define o nome de exibição.--value <value>adiciona uma opção. Passe um rótulo de exibição simples comoOpenpara derivar automaticamente odb_value, ouDisplay:db_value(por exemploIn Progress:in_progress) para definir ambos explicitamente. Repita para adicionar mais opções.--attribute <display:value>adiciona um atributo de opção no formatodisplay:value(por exemplocolor:textouthreshold:number). Repita para adicionar mais.
Expressões globais
buildprint new global-expression --name "Current User"--name <name>é obrigatório.
Workflows
buildprint new workflow gera um scaffold de workflow sob um proprietário de workflow existente (o diretório workflows de uma página ou a raiz api) e, opcionalmente, uma pasta dentro dele.
buildprint new workflow --path api --name "Use Tool" --type CustomEvent
buildprint new workflow --path api --folder "Tools" --name "Use Tool" --type CustomEvent --param toolCallName:text --param toolCallArguments:text --actions 2
buildprint new workflow --path api --name "Find User" --type CustomEvent --param email:text --returnParam user:user --actions 1
buildprint new workflow --path api --folder "Queue" --name "Queue Work" --type APIEvent --param "users:user[]?"
buildprint new workflow --path pages/home/workflows --name "Page Loaded" --type PageLoaded
buildprint new workflow --path pages/home/workflows/modals --name "Open Modal" --type ConditionTrue--path <path>(obrigatório) é a raiz do proprietário do workflow ou o caminho de uma pasta de workflow existente. Se já apontar para uma pasta, essa pasta é inferida como destino.--name <name>(obrigatório) é o nome do workflow.--type <type>(obrigatório) é o tipo de evento do workflow, comoAPIEvent,CustomEvent,ButtonClickedouConditionTrue.--folder <folder>coloca o workflow em uma pasta por chave bruta ou nome de exibição. Se for omitido e--pathjá apontar para uma pasta, essa pasta será usada.--param <name:type>adiciona um parâmetro. Os nomes aceitam os sufixos opcionais[](lista) e?(opcional); entre aspas as especificações que contiverem[]ou?em shells como zsh. Repita para adicionar mais.--returnParam <name:type>adiciona um valor de retorno, usando o mesmo formatoname:type. Suportado para workflowsAPIEventeCustomEvent.--actions <count>cria essa quantidade de arquivos de ação placeholder.
Ações
buildprint new action adiciona uma ação a um workflow existente. Por padrão, a ação é acrescentada como o último passo; use --after ou --before para inserir em uma posição específica.
buildprint new action --path api/my-workflow --type TriggerCustomEvent
buildprint new action --path api/tools/my-workflow --type ScheduleAPIEvent --name "Schedule audit event"
buildprint new action --path pages/home/workflows/load-page --after 1 --type HideElement
buildprint new action --path pages/home/workflows/modals/open-popup/workflow.json --before bpAction123 --type ShowElement--path <path>(obrigatório) é um diretório de workflow existente ou um caminhoworkflow.json.--type <type>(obrigatório) é o tipo de ação, comoChangeThingouTriggerCustomEvent.--name <name>define um nome opcional para a ação.--after <step-or-id>insere depois de um número de passo baseado em um existente ou do id de uma ação.--before <step-or-id>insere antes de um número de passo baseado em um existente ou do id de uma ação.
--after e --before não podem ser usados juntos. A inserção é rejeitada quando um passo posterior contém uma referência posicional ao passo anterior que a reorganização quebraria; o erro lista os arquivos afetados para que você possa acrescentar em vez disso.
Pastas de workflow
buildprint new folder --path api --name "Tools"
buildprint new folder --path pages/home/workflows --name "Modals"--path <path>(obrigatório) é a raiz do proprietário do workflow, comoapioupages/<page>/workflows. Passe a raiz do proprietário, não uma pasta que já exista.--name <name>(obrigatório) é o nome de exibição da pasta.
Testes locais
buildprint new test e buildprint new test-step geram definições de testes locais e acrescentam passos a elas.
buildprint new test --name "Checkout"
buildprint new test --name "Checkout" --folder smoke
buildprint new test --component --name "Login"
buildprint new test-step --path tests/smoke/checkout.json --type test --instruction "Open checkout"
buildprint new test-step --path tests/smoke/checkout.json --type component --component loginbuildprint new test:
--name <name>(obrigatório) é o nome de exibição do teste ou do componente.--folder <key-or-name>agrupa o teste em uma pasta.--componentcria um componente de teste reutilizável em vez de um teste.
buildprint new test-step:
--path <path>(obrigatório) é o caminho JSON do teste, comotests/smoke/checkout.json.--type <type>(obrigatório) étest,conditionoucomponent.--component <key>é a chave estável do componente, obrigatória para passoscomponent.--parent <key>é a chave do nó pai no grafo (o padrão é o passo anterior ou o nó inicial).--condition <outcome>é o resultado do pai da condição,metounot_met.--instruction <text>,--details <text>e--tips <text>preenchem o texto para passostestecondition.--on-failure <mode>é o comportamento em caso de falha,stopoucontinue(padrãostop).
Workspaces de plugin
Os projetos de plugin têm seus próprios scaffolds em buildprint new plugin <command> (por exemplo buildprint new plugin element, buildprint new plugin action e buildprint new plugin api-call). Execute buildprint new plugin --help para listá-los. A criação de plugins é abordada em sua própria página.
Copiando entidades com buildprint copy
buildprint copy duplica raízes, workflows, ações ou subárvores de elementos existentes. Cada cópia cria novos ids, de modo que a nova entidade é independente da origem (veja Como os ids são reescritos).
buildprint copy root --kind page --source "Marketing Home" --name "Marketing Home Copy"
buildprint copy workflow --source api/tools/use-tool --path api --folder "Backups" --name "Use Tool Copy"
buildprint copy element --source pages/home/elements/sidebar --path pages/home
buildprint copy action --from api/tools/use-tool --source 0 --path pages/home/workflows/load-page --after 1copy root
Copia uma página, visualização mobile ou reusable para uma nova raiz.
--kind <kind>(obrigatório) é o tipo de destino:page,mobile,reusableoumobile_reusable.--source <source>(obrigatório) é o id da raiz de origem, a chave bruta ou o nome de exibição.--name <name>(obrigatório) é o nome da nova raiz.--element-type <type>substitui o tipo de elemento para destinos reusable.
copy workflow
Copia um workflow existente para outro proprietário de workflow ou pasta.
--source <path>(obrigatório) é o diretório de workflow existente ou o caminhoworkflow.json.--path <path>(obrigatório) é a raiz do proprietário do workflow de destino ou o caminho da pasta de workflow.--folder <folder>é a chave bruta ou o nome de exibição da pasta de destino.--name <name>substitui o nome do workflow copiado.
copy element
Copia uma subárvore de elemento sob uma raiz de canvas ou outro elemento.
--source <path>(obrigatório) é o diretório de elemento existente ou o caminhoelement.json.--path <path>(obrigatório) é a raiz de canvas de destino ou o caminho do elemento pai.
copy action
Copia uma ou mais ações de um workflow para outro.
--from <path>(obrigatório) é o diretório de workflow de origem ou o caminhoworkflow.json.--path <path>(obrigatório) é o diretório de workflow de destino ou o caminhoworkflow.json.--source <step-or-id>seleciona uma ação de origem por número de passo baseado em um existente ou por id de ação. Repita a flag para copiar várias ações.--name <name>substitui o nome da ação copiada e só é permitido ao copiar exatamente uma ação.--after <step-or-id>insere depois de um passo de destino existente ou do id de uma ação.--before <step-or-id>insere antes de um passo de destino existente ou do id de uma ação.
--after e --before não podem ser usados juntos. Assim como em new action, uma inserção é rejeitada quando ela reordenaria passos posteriores que mantêm referências posicionais ao passo anterior. Copiar uma ação cuja referência PreviousStep aponta para fora do conjunto copiado também é rejeitado; portanto, copie toda a cadeia dependente ou remova primeiro a dependência posicional.
Depois de criar ou copiar
Cada comando new e copy grava arquivos de base no workspace e para por aí. Inspecione o que foi criado, complete quaisquer campos deixados como placeholders e então:
Execute
buildprint checkpara validar o workspace. O check é direcionado às entidades que você modificou, então é nele que campos obrigatórios e outros problemas aparecem.Execute
buildprint applypara compilar o diff em gravações no Bubble e enviá-lo para sua branch.