Skip to content
This repository was archived by the owner on Nov 9, 2022. It is now read-only.

Commit 0a3ef8e

Browse files
committed
Readme
1 parent 3925192 commit 0a3ef8e

File tree

1 file changed

+63
-54
lines changed

1 file changed

+63
-54
lines changed

README.md

Lines changed: 63 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
### Module
1313
.NET DLL文件,里面包含一些Action,供Bake脚本调用。
1414

15-
### Bake脚本
15+
### Bake Script
1616
使用Import动作导入Module并调用其Action,用于描述真实的项目构建过程。
1717

1818
## 基本流程
@@ -21,81 +21,90 @@
2121
2. 为要构建的项目创建Build.bake,bake脚本使用Import导入需要的Modules后调用Action编写此脚本和子脚本。
2222
3. 执行构建。
2323

24-
## 基本可用的Actions
25-
* GetDateTime - 将日期和时间设置到变量中
26-
* Delete - 删除文件和目录
27-
* Atomic - 同步执行,如果块中失败,则停止所有后续操作
28-
* Import - 导入Modules
29-
* Action - 创建一个动作
30-
* Include - 包含子Bake脚本文件
31-
* Set - 用于设置一个环境变量
32-
* Parallel - 此Action内的子脚本将会并行执行
33-
* CreateDirectory - 创建文件夹
34-
* Copy - 复制
35-
* Zip - 打包
36-
3724
## 规则
3825
1. 输入文件全部使用相对路径(相对于脚本文件)
3926
2. 输出文件全部使用绝对路径(可使用$StartDir获取启动脚本的路径以设置$Output变量)
4027

4128
## 脚本语言示例
4229

43-
##### Build.bake
30+
##### Publish.bake
31+
这个脚本用于构建Bake构建系统本身,并且将会在publish文件夹下整理各个平台的二进制文件、NuGet包和源代码。
4432

4533
```
46-
Set $Output "../build"
47-
Set $Temp "../build-temp"
34+
Title "Bake Building System"
4835
49-
Print-Split-Line "Compile Modules"
36+
Print "=== Bake Building System ==="
5037
51-
Parallel {
52-
Compile-Module "$Temp/modules" {
53-
First.fsx
54-
Second.fsx
55-
Third.fsx
56-
*-Module.fsx
57-
}
58-
}
38+
Set $Output "publish"
39+
GetDateTime $DateTime
5940
41+
Set $PublishToPlatform "dotnet publish Bake/Bake.fsproj -c Release"
42+
Run {
43+
$PublishToPlatform -p:PublishTrimmed=true -f net472
44+
$PublishToPlatform -r osx-x64 -f netcoreapp3.1
45+
$PublishToPlatform -p:PublishTrimmed=true -r linux-x64 -f netcoreapp3.1
6046
61-
Import-Module {
62-
$Temp/modules/*.dll
47+
dotnet pack Bake.Core/Bake.Core.fsproj -o $Output -c Release
48+
dotnet pack Bake.Actions/Bake.Actions.fsproj -o $Output -c Release
49+
dotnet pack Bake.Parser/Bake.Parser.fsproj -o $Output -c Release
6350
}
6451
65-
Print-Split-Line "Build"
66-
67-
Parallel {
68-
Call {
69-
Bake.bake
70-
CompileScript.bake
71-
}
52+
CreateDirectory {
53+
$Output
54+
$Output/src
55+
$Output/src/Bake
56+
$Output/src/Bake.Core
57+
$Output/src/Bake.Actions
58+
$Output/src/Bake.Parser
7259
}
7360
74-
75-
Encrypt
76-
77-
PowerShell {
78-
rem Some Power Shell Here
61+
Action CopyProject projectName {
62+
Copy "$Output/src/projectName" {
63+
projectName/*.fs
64+
projectName/*.fsproj
65+
projectName/Properties
66+
}
7967
}
8068
81-
Cmd {
82-
rem Some CMD Here
69+
Parallel {
70+
Zip "$Output/Bake-bin-windows-$DateTime.zip" {
71+
Bake/bin/Release/net472/publish/*
72+
}
73+
74+
Zip "$Output/Bake-bin-osx-x64-$DateTime.zip" {
75+
Bake/bin/Release/netcoreapp3.1/osx-x64/publish/*
76+
}
77+
78+
Zip "$Output/Bake-bin-linux-x64-$DateTime.zip" {
79+
Bake/bin/Release/netcoreapp3.1/linux-x64/publish/*
80+
}
81+
82+
Atomic {
83+
Parallel {
84+
85+
CopyProject Bake.Core
86+
CopyProject Bake.Actions
87+
CopyProject Bake.Parser
88+
CopyProject Bake
89+
90+
91+
Copy "$Output/src" {
92+
LICENSE
93+
Bake.sln
94+
Package.bake
95+
README.md
96+
}
97+
}
98+
99+
Zip "$Output/Bake-src-$DateTime.zip" {
100+
$Output/src/*
101+
}
102+
}
83103
}
84-
```
85104
86-
##### Clean.bake
87-
```
88-
Delete "../build"
89105
```
90106

91-
##### Rebuid.bake
92-
```
93-
Call {
94-
Clean
95-
Build
96-
}
97-
```
98107

99108
## 扩展性
100109
* 可使用.NET DLL导入扩展模块
101-
* 可现场下载并编译模块
110+

0 commit comments

Comments
 (0)