Update: 将子项目从 submodule 转为完整内容
- 移除 GovAI, nomifun-tauri, 算力盒子 的 submodule 引用 - 添加所有子项目的完整源代码 - 保留原始 .git 为 .git.bak 备份
This commit is contained in:
+345
@@ -0,0 +1,345 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
OUTPUT="$SCRIPT_DIR/dark__luxury_minimal.pptx"
|
||||
|
||||
echo "Building: dark--luxury-minimal (AURA COFFEE)"
|
||||
rm -f "$OUTPUT"
|
||||
officecli create "$OUTPUT"
|
||||
|
||||
# Colors
|
||||
BG=111111
|
||||
GOLD=D4AF37
|
||||
WHITE=FFFFFF
|
||||
GRAY1=888888
|
||||
GRAY2=555555
|
||||
GRAY3=333333
|
||||
GRAY4=CCCCCC
|
||||
|
||||
# Off-canvas position
|
||||
OFFSCREEN=36cm
|
||||
|
||||
# ============================================
|
||||
# SLIDE 1 - HERO
|
||||
# ============================================
|
||||
echo "Building Slide 1: Hero..."
|
||||
|
||||
officecli add "$OUTPUT" '/' --type slide --prop layout=blank --prop background=$BG
|
||||
|
||||
# Scene actors: golden line + all text elements
|
||||
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
||||
--prop 'name=!!deco-line' \
|
||||
--prop fill=$GOLD \
|
||||
--prop x=4cm --prop y=8.5cm --prop width=2cm --prop height=0.1cm
|
||||
|
||||
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
||||
--prop 'name=!!brand-title' \
|
||||
--prop text="AURA COFFEE" \
|
||||
--prop font="Helvetica" \
|
||||
--prop size=60 \
|
||||
--prop bold=true \
|
||||
--prop color=$WHITE \
|
||||
--prop fill=none \
|
||||
--prop x=4cm --prop y=9cm --prop width=25cm --prop height=3cm
|
||||
|
||||
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
||||
--prop 'name=!!brand-sub' \
|
||||
--prop text="纯 粹 之 境 | 极简高级精品咖啡" \
|
||||
--prop font="Helvetica" \
|
||||
--prop size=16 \
|
||||
--prop color=$GRAY1 \
|
||||
--prop lineSpacing=1.5 \
|
||||
--prop fill=none \
|
||||
--prop x=4.2cm --prop y=12cm --prop width=25cm --prop height=1cm
|
||||
|
||||
# Pre-create all other actors (hidden off-canvas)
|
||||
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
||||
--prop 'name=!!statement-main' \
|
||||
--prop text="少即是多,剥离繁杂,只为一杯纯粹好咖啡。" \
|
||||
--prop font="Helvetica" \
|
||||
--prop size=36 \
|
||||
--prop color=$WHITE \
|
||||
--prop fill=none \
|
||||
--prop x=${OFFSCREEN} --prop y=0cm --prop width=25cm --prop height=2cm
|
||||
|
||||
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
||||
--prop 'name=!!statement-sub' \
|
||||
--prop text="在喧嚣的都市中,我们坚持做减法。\n拒绝过度包装与人工添加,让咖啡回归最本真的风味,\n这是 AURA 的美学,也是对品质的极致专注。" \
|
||||
--prop font="Helvetica" \
|
||||
--prop size=16 \
|
||||
--prop color=$GRAY1 \
|
||||
--prop lineSpacing=1.8 \
|
||||
--prop valign=top \
|
||||
--prop fill=none \
|
||||
--prop x=${OFFSCREEN} --prop y=1cm --prop width=20cm --prop height=4cm
|
||||
|
||||
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
||||
--prop 'name=!!pillar-title' \
|
||||
--prop text="三大核心原则" \
|
||||
--prop font="Helvetica" \
|
||||
--prop size=24 \
|
||||
--prop color=$WHITE \
|
||||
--prop fill=none \
|
||||
--prop x=${OFFSCREEN} --prop y=2cm --prop width=25cm --prop height=1.5cm
|
||||
|
||||
# Pillar 1
|
||||
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
||||
--prop 'name=!!box1-line' \
|
||||
--prop fill=$GRAY3 \
|
||||
--prop x=${OFFSCREEN} --prop y=3cm --prop width=0.1cm --prop height=7cm
|
||||
|
||||
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
||||
--prop 'name=!!box1-title' \
|
||||
--prop text="01. 严苛寻豆" \
|
||||
--prop font="Helvetica" \
|
||||
--prop size=16 \
|
||||
--prop color=$WHITE \
|
||||
--prop fill=none \
|
||||
--prop x=${OFFSCREEN} --prop y=4cm --prop width=8cm --prop height=1cm
|
||||
|
||||
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
||||
--prop 'name=!!box1-desc' \
|
||||
--prop text="深入埃塞俄比亚、哥伦比亚等原产地,仅甄选海拔 1500 米以上的 SCA 85+ 级精品生豆。" \
|
||||
--prop font="Helvetica" \
|
||||
--prop size=14 \
|
||||
--prop color=$GRAY1 \
|
||||
--prop lineSpacing=1.6 \
|
||||
--prop valign=top \
|
||||
--prop fill=none \
|
||||
--prop x=${OFFSCREEN} --prop y=5cm --prop width=7.5cm --prop height=5cm
|
||||
|
||||
# Pillar 2
|
||||
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
||||
--prop 'name=!!box2-line' \
|
||||
--prop fill=$GRAY3 \
|
||||
--prop x=${OFFSCREEN} --prop y=6cm --prop width=0.1cm --prop height=7cm
|
||||
|
||||
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
||||
--prop 'name=!!box2-title' \
|
||||
--prop text="02. 精准烘焙" \
|
||||
--prop font="Helvetica" \
|
||||
--prop size=16 \
|
||||
--prop color=$WHITE \
|
||||
--prop fill=none \
|
||||
--prop x=${OFFSCREEN} --prop y=7cm --prop width=8cm --prop height=1cm
|
||||
|
||||
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
||||
--prop 'name=!!box2-desc' \
|
||||
--prop text="采用德国 Probat 烘焙机,结合气象数据微调曲线,激发每一支豆子的风土之味。" \
|
||||
--prop font="Helvetica" \
|
||||
--prop size=14 \
|
||||
--prop color=$GRAY1 \
|
||||
--prop lineSpacing=1.6 \
|
||||
--prop valign=top \
|
||||
--prop fill=none \
|
||||
--prop x=${OFFSCREEN} --prop y=8cm --prop width=7.5cm --prop height=5cm
|
||||
|
||||
# Pillar 3
|
||||
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
||||
--prop 'name=!!box3-line' \
|
||||
--prop fill=$GRAY3 \
|
||||
--prop x=${OFFSCREEN} --prop y=9cm --prop width=0.1cm --prop height=7cm
|
||||
|
||||
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
||||
--prop 'name=!!box3-title' \
|
||||
--prop text="03. 科学萃取" \
|
||||
--prop font="Helvetica" \
|
||||
--prop size=16 \
|
||||
--prop color=$WHITE \
|
||||
--prop fill=none \
|
||||
--prop x=${OFFSCREEN} --prop y=10cm --prop width=8cm --prop height=1cm
|
||||
|
||||
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
||||
--prop 'name=!!box3-desc' \
|
||||
--prop text="精准控制 93°C 水温与 9 Bar 压力,金杯法则护航,确保每一杯出品的稳定与完美。" \
|
||||
--prop font="Helvetica" \
|
||||
--prop size=14 \
|
||||
--prop color=$GRAY1 \
|
||||
--prop lineSpacing=1.6 \
|
||||
--prop valign=top \
|
||||
--prop fill=none \
|
||||
--prop x=${OFFSCREEN} --prop y=11cm --prop width=7.5cm --prop height=5cm
|
||||
|
||||
# Evidence elements
|
||||
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
||||
--prop 'name=!!ev-number' \
|
||||
--prop text="1%" \
|
||||
--prop font="Arial" \
|
||||
--prop size=110 \
|
||||
--prop bold=true \
|
||||
--prop color=$GOLD \
|
||||
--prop fill=none \
|
||||
--prop x=${OFFSCREEN} --prop y=12cm --prop width=10cm --prop height=5cm
|
||||
|
||||
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
||||
--prop 'name=!!ev-title' \
|
||||
--prop text="全球前 1% 极微批次特选" \
|
||||
--prop font="Helvetica" \
|
||||
--prop size=20 \
|
||||
--prop color=$WHITE \
|
||||
--prop fill=none \
|
||||
--prop x=${OFFSCREEN} --prop y=13cm --prop width=12cm --prop height=2cm
|
||||
|
||||
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
||||
--prop 'name=!!ev-desc1' \
|
||||
--prop text="• 年度限量供应 500kg 庄园级瑰夏" \
|
||||
--prop font="Helvetica" \
|
||||
--prop size=16 \
|
||||
--prop color=$GRAY4 \
|
||||
--prop fill=none \
|
||||
--prop x=${OFFSCREEN} --prop y=14cm --prop width=15cm --prop height=1.5cm
|
||||
|
||||
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
||||
--prop 'name=!!ev-desc2' \
|
||||
--prop text="• 100% 环保可降解极简材质包装" \
|
||||
--prop font="Helvetica" \
|
||||
--prop size=16 \
|
||||
--prop color=$GRAY4 \
|
||||
--prop fill=none \
|
||||
--prop x=${OFFSCREEN} --prop y=15cm --prop width=15cm --prop height=1.5cm
|
||||
|
||||
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
||||
--prop 'name=!!ev-desc3' \
|
||||
--prop text="• 多位 Q-Grader 国际品鉴师严格把控" \
|
||||
--prop font="Helvetica" \
|
||||
--prop size=16 \
|
||||
--prop color=$GRAY4 \
|
||||
--prop fill=none \
|
||||
--prop x=${OFFSCREEN} --prop y=16cm --prop width=15cm --prop height=1.5cm
|
||||
|
||||
# CTA elements
|
||||
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
||||
--prop 'name=!!cta-title' \
|
||||
--prop text="品味纯粹,即刻启程" \
|
||||
--prop font="Helvetica" \
|
||||
--prop size=44 \
|
||||
--prop color=$WHITE \
|
||||
--prop fill=none \
|
||||
--prop x=${OFFSCREEN} --prop y=17cm --prop width=25cm --prop height=3cm
|
||||
|
||||
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
||||
--prop 'name=!!cta-web' \
|
||||
--prop text="www.auracoffee.com" \
|
||||
--prop font="Helvetica" \
|
||||
--prop size=14 \
|
||||
--prop color=$GRAY2 \
|
||||
--prop fill=none \
|
||||
--prop x=${OFFSCREEN} --prop y=18cm --prop width=10cm --prop height=1cm
|
||||
|
||||
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
||||
--prop 'name=!!cta-email' \
|
||||
--prop text="partner@auracoffee.com" \
|
||||
--prop font="Helvetica" \
|
||||
--prop size=14 \
|
||||
--prop color=$GRAY2 \
|
||||
--prop fill=none \
|
||||
--prop x=${OFFSCREEN} --prop y=18.5cm --prop width=10cm --prop height=1cm
|
||||
|
||||
# ============================================
|
||||
# SLIDE 2 - STATEMENT
|
||||
# ============================================
|
||||
echo "Building Slide 2: Statement..."
|
||||
|
||||
officecli add "$OUTPUT" '/' --from '/slide[1]'
|
||||
officecli set "$OUTPUT" '/slide[2]' --prop transition=morph
|
||||
|
||||
# Move actors
|
||||
officecli set "$OUTPUT" '/slide[2]/shape[1]' --prop x=4cm --prop y=7cm --prop width=1cm
|
||||
officecli set "$OUTPUT" '/slide[2]/shape[2]' --prop x=4cm --prop y=2cm --prop width=10cm --prop height=1cm --prop size=14 --prop color=$GRAY2
|
||||
officecli set "$OUTPUT" '/slide[2]/shape[3]' --prop x=${OFFSCREEN}
|
||||
|
||||
# Show statement
|
||||
officecli set "$OUTPUT" '/slide[2]/shape[4]' --prop x=4cm --prop y=8cm
|
||||
officecli set "$OUTPUT" '/slide[2]/shape[5]' --prop x=4cm --prop y=11cm
|
||||
|
||||
# ============================================
|
||||
# SLIDE 3 - PILLARS
|
||||
# ============================================
|
||||
echo "Building Slide 3: Pillars..."
|
||||
|
||||
officecli add "$OUTPUT" '/' --from '/slide[2]'
|
||||
officecli set "$OUTPUT" '/slide[3]' --prop transition=morph
|
||||
|
||||
# Move actors
|
||||
officecli set "$OUTPUT" '/slide[3]/shape[1]' --prop x=4cm --prop y=4.5cm --prop width=5cm
|
||||
officecli set "$OUTPUT" '/slide[3]/shape[2]' --prop x=4cm --prop y=2cm
|
||||
|
||||
# Hide statement
|
||||
officecli set "$OUTPUT" '/slide[3]/shape[4]' --prop x=${OFFSCREEN}
|
||||
officecli set "$OUTPUT" '/slide[3]/shape[5]' --prop x=${OFFSCREEN}
|
||||
|
||||
# Show pillars
|
||||
officecli set "$OUTPUT" '/slide[3]/shape[6]' --prop x=4cm --prop y=3cm
|
||||
officecli set "$OUTPUT" '/slide[3]/shape[7]' --prop x=4cm --prop y=7cm
|
||||
officecli set "$OUTPUT" '/slide[3]/shape[8]' --prop x=4.5cm --prop y=7cm
|
||||
officecli set "$OUTPUT" '/slide[3]/shape[9]' --prop x=4.5cm --prop y=8.5cm
|
||||
officecli set "$OUTPUT" '/slide[3]/shape[10]' --prop x=13.5cm --prop y=7cm
|
||||
officecli set "$OUTPUT" '/slide[3]/shape[11]' --prop x=14cm --prop y=7cm
|
||||
officecli set "$OUTPUT" '/slide[3]/shape[12]' --prop x=14cm --prop y=8.5cm
|
||||
officecli set "$OUTPUT" '/slide[3]/shape[13]' --prop x=23cm --prop y=7cm
|
||||
officecli set "$OUTPUT" '/slide[3]/shape[14]' --prop x=23.5cm --prop y=7cm
|
||||
officecli set "$OUTPUT" '/slide[3]/shape[15]' --prop x=23.5cm --prop y=8.5cm
|
||||
|
||||
# ============================================
|
||||
# SLIDE 4 - EVIDENCE
|
||||
# ============================================
|
||||
echo "Building Slide 4: Evidence..."
|
||||
|
||||
officecli add "$OUTPUT" '/' --from '/slide[3]'
|
||||
officecli set "$OUTPUT" '/slide[4]' --prop transition=morph
|
||||
|
||||
# Move actors
|
||||
officecli set "$OUTPUT" '/slide[4]/shape[1]' --prop x=15cm --prop y=10.5cm --prop width=3cm
|
||||
officecli set "$OUTPUT" '/slide[4]/shape[2]' --prop x=4cm --prop y=2cm
|
||||
|
||||
# Hide pillars
|
||||
officecli set "$OUTPUT" '/slide[4]/shape[6]' --prop x=${OFFSCREEN}
|
||||
officecli set "$OUTPUT" '/slide[4]/shape[7]' --prop x=${OFFSCREEN}
|
||||
officecli set "$OUTPUT" '/slide[4]/shape[8]' --prop x=${OFFSCREEN}
|
||||
officecli set "$OUTPUT" '/slide[4]/shape[9]' --prop x=${OFFSCREEN}
|
||||
officecli set "$OUTPUT" '/slide[4]/shape[10]' --prop x=${OFFSCREEN}
|
||||
officecli set "$OUTPUT" '/slide[4]/shape[11]' --prop x=${OFFSCREEN}
|
||||
officecli set "$OUTPUT" '/slide[4]/shape[12]' --prop x=${OFFSCREEN}
|
||||
officecli set "$OUTPUT" '/slide[4]/shape[13]' --prop x=${OFFSCREEN}
|
||||
officecli set "$OUTPUT" '/slide[4]/shape[14]' --prop x=${OFFSCREEN}
|
||||
officecli set "$OUTPUT" '/slide[4]/shape[15]' --prop x=${OFFSCREEN}
|
||||
|
||||
# Show evidence
|
||||
officecli set "$OUTPUT" '/slide[4]/shape[16]' --prop x=4cm --prop y=7cm
|
||||
officecli set "$OUTPUT" '/slide[4]/shape[17]' --prop x=4cm --prop y=12cm
|
||||
officecli set "$OUTPUT" '/slide[4]/shape[18]' --prop x=15cm --prop y=7cm
|
||||
officecli set "$OUTPUT" '/slide[4]/shape[19]' --prop x=15cm --prop y=8.5cm
|
||||
officecli set "$OUTPUT" '/slide[4]/shape[20]' --prop x=15cm --prop y=12cm
|
||||
|
||||
# ============================================
|
||||
# SLIDE 5 - CTA
|
||||
# ============================================
|
||||
echo "Building Slide 5: CTA..."
|
||||
|
||||
officecli add "$OUTPUT" '/' --from '/slide[4]'
|
||||
officecli set "$OUTPUT" '/slide[5]' --prop transition=morph
|
||||
|
||||
# Move actors
|
||||
officecli set "$OUTPUT" '/slide[5]/shape[1]' --prop x=4cm --prop y=7cm --prop width=2cm
|
||||
officecli set "$OUTPUT" '/slide[5]/shape[2]' --prop x=4cm --prop y=12cm --prop width=15cm --prop height=1.5cm --prop size=20
|
||||
|
||||
# Hide evidence
|
||||
officecli set "$OUTPUT" '/slide[5]/shape[16]' --prop x=${OFFSCREEN}
|
||||
officecli set "$OUTPUT" '/slide[5]/shape[17]' --prop x=${OFFSCREEN}
|
||||
officecli set "$OUTPUT" '/slide[5]/shape[18]' --prop x=${OFFSCREEN}
|
||||
officecli set "$OUTPUT" '/slide[5]/shape[19]' --prop x=${OFFSCREEN}
|
||||
officecli set "$OUTPUT" '/slide[5]/shape[20]' --prop x=${OFFSCREEN}
|
||||
|
||||
# Show CTA
|
||||
officecli set "$OUTPUT" '/slide[5]/shape[21]' --prop x=4cm --prop y=8cm
|
||||
officecli set "$OUTPUT" '/slide[5]/shape[22]' --prop x=4cm --prop y=14cm
|
||||
officecli set "$OUTPUT" '/slide[5]/shape[23]' --prop x=10cm --prop y=14cm
|
||||
|
||||
# ============================================
|
||||
# FINAL VALIDATION
|
||||
# ============================================
|
||||
officecli validate "$OUTPUT"
|
||||
officecli view "$OUTPUT" outline
|
||||
|
||||
echo "✅ Build complete: $OUTPUT"
|
||||
Reference in New Issue
Block a user