Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions .execs/build.flow
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,6 @@ executables:
execs:
- cmd: go run ./tools/docsgen/.
- cmd: ./scripts/completions.sh
# HACK: Copy the index.html to 404.html GitHub Pages redirect with the history router
- cmd: cp docs/index.html docs/404.html

- verb: generate
name: cli
Expand Down
25 changes: 0 additions & 25 deletions .execs/docs.flow
Original file line number Diff line number Diff line change
Expand Up @@ -2,31 +2,6 @@
visibility: public
tags: [docs]
executables:
- verb: start
name: site
aliases: [docs]
description: Run the documentation site locally (from prerendered content)
serial:
dir: //
execs:
- ref: build docs
- cmd: npx serve dist -l 3000

- verb: start
name: docsify
description: Run the documentation site locally using the docsify CLI
exec:
dir: //
cmd: docsify serve docs --open

- verb: build
name: docs
description: Prerender docsify documentation site for the project
exec:
dir: //
cmd:
node ./scripts/prerender.js

- verb: show
name: flowfile
aliases: [executables, exec, executable]
Expand Down
2 changes: 1 addition & 1 deletion desktop/scripts/generate-rust-types.sh
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#!/bin/bash
set -euo pipefail

SCHEMAS_DIR="../docs/schemas"
SCHEMAS_DIR="../docs/public/schemas"
OUTPUT_DIR="src-tauri/src/types/generated"

mkdir -p "$OUTPUT_DIR"
Expand Down
2 changes: 1 addition & 1 deletion desktop/scripts/generate-ts-types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import fs from "fs/promises";
import { compile } from "json-schema-to-typescript";
import path from "path";

const SCHEMAS_DIR = path.resolve(process.cwd(), "../docs/schemas");
const SCHEMAS_DIR = path.resolve(process.cwd(), "../docs/public/schemas");
const OUTPUT_DIR = path.resolve(process.cwd(), "src/types/generated");

async function generateTypes() {
Expand Down
4 changes: 2 additions & 2 deletions desktop/src-tauri/src/types/generated/template.rs
Original file line number Diff line number Diff line change
Expand Up @@ -373,7 +373,7 @@ impl ::std::default::Default for FieldType {
#[doc = " }"]
#[doc = " },"]
#[doc = " \"form\": {"]
#[doc = " \"description\": \"Form fields to be displayed to the user when generating a flow file from a template. \\nThe form will be rendered first, and the user's input can be used to render the template.\\nFor example, a form field with the key `name` can be used in the template as `{{.name}}`.\\n\","]
#[doc = " \"description\": \"Form fields to be displayed to the user when generating a flow file from a template. \\nThe form will be rendered first, and the user's input can be used to render the template.\\n\","]
#[doc = " \"default\": [],"]
#[doc = " \"type\": \"array\","]
#[doc = " \"items\": {"]
Expand Down Expand Up @@ -407,7 +407,7 @@ pub struct Template {
#[doc = "A list of artifacts to be copied after generating the flow file."]
#[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
pub artifacts: ::std::vec::Vec<Artifact>,
#[doc = "Form fields to be displayed to the user when generating a flow file from a template. \nThe form will be rendered first, and the user's input can be used to render the template.\nFor example, a form field with the key `name` can be used in the template as `{{.name}}`.\n"]
#[doc = "Form fields to be displayed to the user when generating a flow file from a template. \nThe form will be rendered first, and the user's input can be used to render the template.\n"]
#[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
pub form: ::std::vec::Vec<Field>,
#[doc = "A list of exec executables to run after generating the flow file."]
Expand Down
1 change: 0 additions & 1 deletion desktop/src/types/generated/template.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ export interface Template {
/**
* Form fields to be displayed to the user when generating a flow file from a template.
* The form will be rendered first, and the user's input can be used to render the template.
* For example, a form field with the key `name` can be used in the template as `{{.name}}`.
*
*/
form?: Field[];
Expand Down
12 changes: 12 additions & 0 deletions docs/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Astro / Starlight
node_modules/
.dist/
.next/
.DS_Store
.vitepress/cache
.vitepress/dist/
dist/
.env
.env.*
# Pagefind search index
pagefind/
Empty file removed docs/.nojekyll
Empty file.
202 changes: 202 additions & 0 deletions docs/.vitepress/config.mts
Original file line number Diff line number Diff line change
@@ -0,0 +1,202 @@
import { defineConfig } from 'vitepress'
import { tabsMarkdownPlugin } from 'vitepress-plugin-tabs'

// https://vitepress.dev/reference/site-config
export default defineConfig({
title: "flow",
description: "Local developer automation platform that flows with you.",
base: '/',
outDir: './dist',

head: [
['link', { rel: 'icon', href: '/favicon.ico' }]
],

markdown: {
config(md) {
md.use(tabsMarkdownPlugin)
},
},

themeConfig: {
logo: {
light: '/logo-light.png',
dark: '/logo-dark.png'
},

siteTitle: false,

nav: [
{ text: 'Home', link: '/' },
{ text: 'Guides', link: '/guides/', activeMatch: '/guides/'},
{ text: 'CLI Reference', link: '/cli/', activeMatch: '/cli/' },
{ text: 'Config Reference', link: '/types/', activeMatch: '/types/' }
],

sidebar: {
'/guides/': [
{
text: 'User Guides',
items: [
{ text: 'Overview', link: '/guides/' },
{ text: 'Getting Started',
items: [
{ text: 'Concepts', link: '/guides/concepts' },
{ text: 'Your First Workflow', link: '/guides/first-workflow' },
]
},
{ text: 'Essentials',
items: [
{ text: 'Executables', link: '/guides/executables' },
{ text: 'Workspaces', link: '/guides/workspaces' },
{ text: 'Secrets', link: '/guides/secrets' },
]},
{ text: 'Advanced',
items: [
{ text: 'Imported Executables', link: '/guides/generated-config' },
{ text: 'Templates & Workflow Generation', link: '/guides/templating' },
{ text: 'Advanced Workflows', link: '/guides/advanced' },
{ text: 'Interactive UI', link: '/guides/interactive' },
{ text: 'Integrations', link: '/guides/integrations' },
]},
]
}
],
'/cli/': [
{
text: 'CLI Reference',
items: [
{ text: 'Overview', link: '/cli/flow' },
{ text: 'flow browse', link: '/cli/flow_browse' },
{ text: 'flow exec', link: '/cli/flow_exec' },
{ text: 'flow logs', link: '/cli/flow_logs' },
{ text: 'flow mcp', link: '/cli/flow_mcp' },
{ text: 'flow sync', link: '/cli/flow_sync' },
{
text: 'Cache',
collapsed: true,
items: [
{ text: 'flow cache', link: '/cli/flow_cache' },
{ text: 'flow cache clear', link: '/cli/flow_cache_clear' },
{ text: 'flow cache get', link: '/cli/flow_cache_get' },
{ text: 'flow cache list', link: '/cli/flow_cache_list' },
{ text: 'flow cache remove', link: '/cli/flow_cache_remove' },
{ text: 'flow cache set', link: '/cli/flow_cache_set' }
]
},
{
text: 'Config',
collapsed: true,
items: [
{ text: 'flow config', link: '/cli/flow_config' },
{ text: 'flow config get', link: '/cli/flow_config_get' },
{ text: 'flow config reset', link: '/cli/flow_config_reset' },
{ text: 'flow config set', link: '/cli/flow_config_set' },
{ text: 'flow config set log-mode', link: '/cli/flow_config_set_log-mode' },
{ text: 'flow config set namespace', link: '/cli/flow_config_set_namespace' },
{ text: 'flow config set notifications', link: '/cli/flow_config_set_notifications' },
{ text: 'flow config set theme', link: '/cli/flow_config_set_theme' },
{ text: 'flow config set timeout', link: '/cli/flow_config_set_timeout' },
{ text: 'flow config set tui', link: '/cli/flow_config_set_tui' },
{ text: 'flow config set workspace', link: '/cli/flow_config_set_workspace' },
{ text: 'flow config set workspace-mode', link: '/cli/flow_config_set_workspace-mode' }
]
},
{
text: 'Secret',
collapsed: true,
items: [
{ text: 'flow secret', link: '/cli/flow_secret' },
{ text: 'flow secret get', link: '/cli/flow_secret_get' },
{ text: 'flow secret list', link: '/cli/flow_secret_list' },
{ text: 'flow secret remove', link: '/cli/flow_secret_remove' },
{ text: 'flow secret set', link: '/cli/flow_secret_set' }
]
},
{
text: 'Template',
collapsed: true,
items: [
{ text: 'flow template', link: '/cli/flow_template' },
{ text: 'flow template add', link: '/cli/flow_template_add' },
{ text: 'flow template generate', link: '/cli/flow_template_generate' },
{ text: 'flow template get', link: '/cli/flow_template_get' },
{ text: 'flow template list', link: '/cli/flow_template_list' }
]
},
{
text: 'Vault',
collapsed: true,
items: [
{ text: 'flow vault', link: '/cli/flow_vault' },
{ text: 'flow vault create', link: '/cli/flow_vault_create' },
{ text: 'flow vault edit', link: '/cli/flow_vault_edit' },
{ text: 'flow vault get', link: '/cli/flow_vault_get' },
{ text: 'flow vault list', link: '/cli/flow_vault_list' },
{ text: 'flow vault remove', link: '/cli/flow_vault_remove' },
{ text: 'flow vault switch', link: '/cli/flow_vault_switch' }
]
},
{
text: 'Workspace',
collapsed: true,
items: [
{ text: 'flow workspace', link: '/cli/flow_workspace' },
{ text: 'flow workspace add', link: '/cli/flow_workspace_add' },
{ text: 'flow workspace get', link: '/cli/flow_workspace_get' },
{ text: 'flow workspace list', link: '/cli/flow_workspace_list' },
{ text: 'flow workspace remove', link: '/cli/flow_workspace_remove' },
{ text: 'flow workspace switch', link: '/cli/flow_workspace_switch' },
{ text: 'flow workspace view', link: '/cli/flow_workspace_view' }
]
}
]
}
],
'/types/': [
{
text: 'Configuration Reference',
items: [
{ text: 'Overview', link: '/types/' },
{ text: 'Config', link: '/types/config' },
{ text: 'Flow File', link: '/types/flowfile' },
{ text: 'Template', link: '/types/template' },
{ text: 'Workspace', link: '/types/workspace' }
]
}
],
'/': [
{
text: 'Getting Started',
items: [
{ text: 'Installation', link: '/installation' },
{ text: 'Quick Start', link: '/quickstart' }
]
},
{
text: 'More',
items: [
{ text: 'User Guides', link: '/guides/' },
{ text: 'CLI Reference', link: '/cli/' },
{ text: 'Configuration Reference', link: '/types/' },
{ text: 'Contributing', link: '/development' },
{ text: 'TUI Kit', link: '/tuikit' }
]
}
]
},

socialLinks: [
{ icon: 'github', link: 'https://github.com/flowexec/flow' },
{ icon: 'discord', link: 'https://discord.gg/CtByNKNMxM' }
],

search: {
provider: 'local'
},

outline: {
level: [2, 3]
}
}
})
26 changes: 26 additions & 0 deletions docs/.vitepress/theme/custom.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
:root {
--vp-c-brand-1: #7FBBB3;
--vp-c-brand-2: #83C092;
--vp-c-brand-3: #D699B6;
--vp-home-hero-name-color: #D699B6;
}

/* Hero image glow effect */
.VPHero .image-src {
filter: drop-shadow(5px 5px 100px #D699B6);
}

.VPHero .name {
font-size: 1.8em !important;
line-height: 1.8em !important;
}

.VPHero .text {
font-size: 3.2em !important;
line-height: 1.2em !important;
}

.VPHero .tagline {
font-size: 1.4em !important;
line-height: 1.8em !important;
}
11 changes: 11 additions & 0 deletions docs/.vitepress/theme/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import type { Theme } from 'vitepress'
import DefaultTheme from 'vitepress/theme'
import { enhanceAppWithTabs } from 'vitepress-plugin-tabs/client'
import './custom.css'

export default {
extends: DefaultTheme,
enhanceApp({ app }) {
enhanceAppWithTabs(app)
},
} satisfies Theme
Loading
Loading