-
Notifications
You must be signed in to change notification settings - Fork 13
Expand file tree
/
Copy pathbuildfile.m
More file actions
132 lines (86 loc) · 3.07 KB
/
Copy pathbuildfile.m
File metadata and controls
132 lines (86 loc) · 3.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
function plan = buildfile
% Define maintainer build, test, and release tasks.
% Copyright 2025-2026 The MathWorks, Inc.
% Maintainers run the build in the latest MATLAB release. The packaged
% toolbox output still declares support for MATLAB R2021a and later.
if isMATLABReleaseOlderThan("R2023b")
error("R2023b or later is required to run Build Tool tasks.")
end
% Prepare the build plan
plan = buildplan(localfunctions);
% Clean task
% plan("clean") = matlab.buildtool.tasks.CleanTask;
% Code issues task
plan("check") = matlab.buildtool.tasks.CodeIssuesTask;
plan("check").SourceFiles = fullfile(plan.RootFolder,"widgets");
plan("check").WarningThreshold = 0;
% Release workflow
plan("prepareRelease").Dependencies = "test";
plan("publishDocHtml").Dependencies = "prepareRelease";
plan("publishExampleHtml").Dependencies = "prepareRelease";
plan("publishGettingStarted").Dependencies = "prepareRelease";
plan("buildDocSearchDb").Dependencies = ...
["publishDocHtml","publishExampleHtml","publishGettingStarted"];
% Top-level release aggregation task
plan("archive").Dependencies = ["check","buildDocSearchDb"];
% Set default tasks
plan.DefaultTasks = ["check","test"];
end
function testTask(context)
% Run the release test gate.
rootFolder = string(context.Plan.RootFolder);
ensureProjectLoaded(rootFolder);
wt.deploy.runReleaseTests();
end
function prepareReleaseTask(context)
% Perform release preparation ahead of documentation generation.
rootFolder = string(context.Plan.RootFolder);
ensureProjectLoaded(rootFolder);
end
function publishDocHtmlTask(context)
% Publish widgets/doc live scripts to HTML.
rootFolder = string(context.Plan.RootFolder);
ensureProjectLoaded(rootFolder);
wt.deploy.publishReleaseDocumentation(rootFolder);
end
function publishExampleHtmlTask(context)
% Publish widgets/examples live scripts to HTML.
rootFolder = string(context.Plan.RootFolder);
ensureProjectLoaded(rootFolder);
wt.deploy.publishReleaseExamples(rootFolder);
end
function publishGettingStartedTask(context)
% Publish GettingStarted.mlx to HTML.
rootFolder = string(context.Plan.RootFolder);
ensureProjectLoaded(rootFolder);
wt.deploy.publishGettingStartedHtml(rootFolder);
end
function buildDocSearchDbTask(context)
% Rebuild the documentation search database.
rootFolder = string(context.Plan.RootFolder);
ensureProjectLoaded(rootFolder);
wt.deploy.buildDocumentationSearchDb(rootFolder);
end
function archiveTask(context)
% Package the toolbox and perform legacy release finalization.
rootFolder = string(context.Plan.RootFolder);
ensureProjectLoaded(rootFolder);
wt.deploy.incrementVersionNumber();
outputFile = wt.deploy.packageRelease(rootFolder);
wt.deploy.finalizeRelease(rootFolder, outputFile);
end
function ensureProjectLoaded(rootFolder)
% Open the MATLAB project so deploy helpers and resources are available.
arguments
rootFolder (1,1) string
end
projectFile = fullfile(rootFolder, "WidgetsToolbox.prj");
try
project = currentProject;
catch
project = [];
end
if isempty(project) || string(project.RootFolder) ~= rootFolder
openProject(projectFile);
end
end