Skip to content

Commit 8cd73e2

Browse files
committed
feat: expose flat types options
1 parent ca13668 commit 8cd73e2

3 files changed

Lines changed: 36 additions & 20 deletions

File tree

src/cli.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,9 @@ try {
5959
.option('--html [html]', 'Generate HTML template and save to file')
6060
.option('--animate [animate]', 'Generate animated HTML template and save to file')
6161
.option('--loop <loop>', 'Loop the animation for a given number of milliseconds')
62+
.option('--typed-speed <typed-speed>', 'Typing speed in milliseconds per character')
63+
.option('--typed-initial-delay <typed-initial-delay>', 'Initial delay before starting to type')
64+
.option('--typed-pause-after <typed-pause-after>', 'Pause after typing completes')
6265
.option('--open', 'Open the browser after generating the HTML template', { default: false })
6366
.option('--force', 'Force to download the theme from remote', { default: false })
6467
.option('--ffmpeg <ffmpeg>', 'FFmpeg path')

src/config.ts

Lines changed: 28 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,26 @@ function normalizeFileExt(ext: string, name?: string) {
2121
return name
2222
}
2323

24+
async function getFFmpegPath(options: Partial<CommandOptions>) {
25+
if (options.ffmpeg)
26+
return options.ffmpeg
27+
28+
try {
29+
const { installPackage } = await import('@antfu/install-pkg')
30+
await installPackage('@ffmpeg-installer/ffmpeg', {
31+
cwd: PACKAGE_ROOT,
32+
silent: true,
33+
preferOffline: true,
34+
})
35+
36+
const { default: ffmpeg } = await import('@ffmpeg-installer/ffmpeg')
37+
return ffmpeg.path
38+
}
39+
catch {
40+
return 'ffmpeg'
41+
}
42+
}
43+
2444
export async function resolveConfig(command: string, options: Partial<CommandOptions>): Promise<ConfigOptions> {
2545
options = normalizeConfig(options)
2646

@@ -86,7 +106,15 @@ export async function resolveConfig(command: string, options: Partial<CommandOpt
86106
const themeConfig = await loadTheme(merged.theme, options.force) as DeepRequired<ThemeConfig>
87107

88108
merged.port = await getPort({ port: portNumbers(options.port, options.port + 100) })
109+
110+
// merge flat typed options
89111
merged.typedOptions = { ...DEFAULT_TYPED_OPTIONS, ...merged.typedOptions }
112+
if (merged.typedSpeed)
113+
merged.typedOptions.speed = merged.typedSpeed
114+
if (merged.typedInitialDelay)
115+
merged.typedOptions.initialDelay = merged.typedInitialDelay
116+
if (merged.typedPauseAfter)
117+
merged.typedOptions.pauseAfter = merged.typedPauseAfter
90118

91119
// character width (approximate for monospace fonts)
92120
merged.fontAspectRatio = merged.fontAspectRatio ? Number(merged.fontAspectRatio) : 0.6
@@ -116,23 +144,3 @@ export async function resolveConfig(command: string, options: Partial<CommandOpt
116144
...themeConfig,
117145
} as ConfigOptions
118146
}
119-
120-
async function getFFmpegPath(options: Partial<CommandOptions>) {
121-
if (options.ffmpeg)
122-
return options.ffmpeg
123-
124-
try {
125-
const { installPackage } = await import('@antfu/install-pkg')
126-
await installPackage('@ffmpeg-installer/ffmpeg', {
127-
cwd: PACKAGE_ROOT,
128-
silent: true,
129-
preferOffline: true,
130-
})
131-
132-
const { default: ffmpeg } = await import('@ffmpeg-installer/ffmpeg')
133-
return ffmpeg.path
134-
}
135-
catch {
136-
return 'ffmpeg'
137-
}
138-
}

src/types/core.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,11 @@ export type BuiltinTheme = (typeof BUILTIN_THEME_CHOICES)[number]
99

1010
export interface CommandOptions extends CommonOptions, AppearanceOptions {
1111
typedOptions?: TypedOptions
12+
13+
// flat typed options
14+
typedSpeed?: number
15+
typedInitialDelay?: number
16+
typedPauseAfter?: number
1217
}
1318

1419
export interface CommonOptions {

0 commit comments

Comments
 (0)