@@ -1116,38 +1116,19 @@ func (a *agent) handleManifest(manifestOK *checkpoint) func(ctx context.Context,
1116
1116
}
1117
1117
1118
1118
var (
1119
- // Clone the scripts so we can remove the devcontainer scripts.
1120
- scripts = slices .Clone (manifest .Scripts )
1119
+ scripts = manifest .Scripts
1120
+ scriptRunnerOpts []agentscripts.InitOption
1121
+ )
1122
+ if a .experimentalDevcontainersEnabled {
1123
+ var dcScripts []codersdk.WorkspaceAgentScript
1124
+ scripts , dcScripts = agentcontainers .ExtractDevcontainerScripts (a .logger , expandPathToAbs , manifest .Devcontainers , scripts )
1121
1125
// The post-start scripts are used to autostart Dev Containers
1122
1126
// after the start scripts have completed. This is necessary
1123
1127
// because the Dev Container may depend on the workspace being
1124
1128
// initialized (git clone, etc).
1125
- postStartScripts []codersdk.WorkspaceAgentScript
1126
- )
1127
- if a .experimentalDevcontainersEnabled {
1128
- for _ , dc := range manifest .Devcontainers {
1129
- // TODO(mafredri): Verify `@devcontainers/cli` presence.
1130
- // TODO(mafredri): Verify workspace folder exists.
1131
- // TODO(mafredri): If set, verify config path exists.
1132
- dc = expandDevcontainerPaths (a .logger , dc )
1133
-
1134
- for i , s := range scripts {
1135
- // The devcontainer scripts match the devcontainer ID for
1136
- // identification.
1137
- if s .ID == dc .ID {
1138
- scripts = slices .Delete (scripts , i , i + 1 )
1139
- postStartScripts = append (postStartScripts , agentcontainers .DevcontainerStartupScript (dc , s ))
1140
- break
1141
- }
1142
- }
1143
- }
1129
+ scriptRunnerOpts = append (scriptRunnerOpts , agentscripts .WithPostStartScripts (dcScripts ... ))
1144
1130
}
1145
-
1146
- err = a .scriptRunner .Init (
1147
- manifest .Scripts ,
1148
- aAPI .ScriptCompleted ,
1149
- agentscripts .WithPostStartScripts (postStartScripts ... ),
1150
- )
1131
+ err = a .scriptRunner .Init (scripts , aAPI .ScriptCompleted , scriptRunnerOpts ... )
1151
1132
if err != nil {
1152
1133
return xerrors .Errorf ("init script runner: %w" , err )
1153
1134
}
@@ -1911,19 +1892,6 @@ func expandPathToAbs(path string) (string, error) {
1911
1892
return path , nil
1912
1893
}
1913
1894
1914
- func expandDevcontainerPaths (logger slog.Logger , dc codersdk.WorkspaceAgentDevcontainer ) codersdk.WorkspaceAgentDevcontainer {
1915
- var err error
1916
- if dc .WorkspaceFolder , err = expandPathToAbs (dc .WorkspaceFolder ); err != nil {
1917
- logger .Warn (context .Background (), "expand devcontainer workspace folder failed" , slog .Error (err ))
1918
- }
1919
- if dc .ConfigPath != "" {
1920
- if dc .ConfigPath , err = expandPathToAbs (dc .ConfigPath ); err != nil {
1921
- logger .Warn (context .Background (), "expand devcontainer config path failed" , slog .Error (err ))
1922
- }
1923
- }
1924
- return dc
1925
- }
1926
-
1927
1895
// EnvAgentSubsystem is the environment variable used to denote the
1928
1896
// specialized environment in which the agent is running
1929
1897
// (e.g. envbox, envbuilder).
0 commit comments