Skip to content

Commit 6a6c12a

Browse files
mirkoCrobumirkoCrobu
andauthored
Feat/454 set example as default (#477)
Co-authored-by: mirkoCrobu <mirkocrobu@NB-0531.localdomain>
1 parent 9537ab4 commit 6a6c12a

File tree

4 files changed

+38
-35
lines changed

4 files changed

+38
-35
lines changed

Taskfile.yml

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -201,11 +201,23 @@ tasks:
201201
setup:examples:local:
202202
desc: Download and locally install the official examples
203203
cmds:
204-
- rm -rf ~/.arduino-app-cli/examples ~/.arduino-app-cli/tmp
205-
- mkdir -p ~/.arduino-app-cli/tmp
206-
- git clone https://github.com/bcmi-labs/app-bricks-example.git ~/.arduino-app-cli/tmp
207-
- mv ~/.arduino-app-cli/tmp/examples ~/.arduino-app-cli/
208-
- rm -rf ~/.arduino-app-cli/tmp
204+
- |
205+
set -e
206+
DEST_PATH="$HOME/.config/arduino-app-cli/"
207+
TMP_PATH="$(mktemp -d)"
208+
209+
echo "Cloning examples into temporary directory ${TMP_PATH}..."
210+
git clone --depth 1 https://github.com/bcmi-labs/app-bricks-example.git "${TMP_PATH}"
211+
212+
echo "Installing examples to ${DEST_PATH}examples"
213+
rm -rf "${DEST_PATH}examples"
214+
mkdir -p "${DEST_PATH}"
215+
216+
mv "${TMP_PATH}/examples" "${DEST_PATH}"
217+
218+
rm -rf "${TMP_PATH}"
219+
echo "Examples installed successfully."
220+
silent: false
209221

210222
wails:dev:
211223
desc: Run the Wails dev locally

internal/api/handlers/app_details.go

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -53,35 +53,44 @@ func HandleAppDetailsEdits(dockerClient *dockerClient.Client, bricksIndex *brick
5353
render.EncodeResponse(w, http.StatusPreconditionFailed, models.ErrorResponse{Details: "invalid id"})
5454
return
5555
}
56-
if id.IsExample() {
57-
render.EncodeResponse(w, http.StatusBadRequest, models.ErrorResponse{Details: "cannot patch the example"})
58-
return
59-
}
60-
6156
app, err := app.Load(id.ToPath().String())
6257
if err != nil {
6358
slog.Error("Unable to parse the app.yaml", slog.String("error", err.Error()), slog.String("path", id.String()))
6459
render.EncodeResponse(w, http.StatusInternalServerError, models.ErrorResponse{Details: "unable to find the app"})
6560
return
6661
}
6762

63+
var appEditRequest orchestrator.AppEditRequest
6864
var editRequest EditRequest
65+
6966
if err := json.NewDecoder(r.Body).Decode(&editRequest); err != nil {
7067
slog.Error("Unable to decode the request body", slog.String("error", err.Error()))
7168
render.EncodeResponse(w, http.StatusBadRequest, models.ErrorResponse{Details: "invalid request"})
7269
return
7370
}
74-
err = orchestrator.EditApp(orchestrator.AppEditRequest{
75-
Default: editRequest.Default,
76-
Name: editRequest.Name,
77-
Icon: editRequest.Icon,
78-
Description: editRequest.Description,
79-
}, &app)
71+
if id.IsExample() {
72+
if editRequest.Description != nil || editRequest.Icon != nil || editRequest.Name != nil {
73+
render.EncodeResponse(w, http.StatusBadRequest, models.ErrorResponse{Details: "you can patch just the default field for example apps"})
74+
return
75+
}
76+
appEditRequest = orchestrator.AppEditRequest{
77+
Default: editRequest.Default,
78+
}
79+
} else {
80+
appEditRequest = orchestrator.AppEditRequest{
81+
Default: editRequest.Default,
82+
Name: editRequest.Name,
83+
Icon: editRequest.Icon,
84+
Description: editRequest.Description,
85+
}
86+
}
87+
err = orchestrator.EditApp(appEditRequest, &app)
8088
if err != nil {
8189
slog.Error("Unable to edit the app", slog.String("error", err.Error()))
8290
render.EncodeResponse(w, http.StatusInternalServerError, models.ErrorResponse{Details: "unable to edit the app"})
8391
return
8492
}
93+
8594
res, err := orchestrator.AppDetails(r.Context(), dockerClient, app, bricksIndex)
8695
if err != nil {
8796
slog.Error("Unable to parse the app.yaml", slog.String("error", err.Error()))

internal/e2e/daemon/app_test.go

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -169,25 +169,6 @@ func TestEditApp(t *testing.T) {
169169
require.NoError(t, err)
170170
require.Equal(t, "invalid id", actualResponseBody.Details)
171171
})
172-
173-
t.Run("PatchingExampleApp_Fail", func(t *testing.T) {
174-
var actualResponseBody models.ErrorResponse
175-
editResp, err := httpClient.EditApp(
176-
t.Context(),
177-
noExisitingExample,
178-
client.EditRequest{Name: f.Ptr("any-name")},
179-
)
180-
require.NoError(t, err)
181-
defer editResp.Body.Close()
182-
183-
require.Equal(t, http.StatusBadRequest, editResp.StatusCode)
184-
body, err := io.ReadAll(editResp.Body)
185-
require.NoError(t, err)
186-
err = json.Unmarshal(body, &actualResponseBody)
187-
require.NoError(t, err)
188-
require.Equal(t, "cannot patch the example", actualResponseBody.Details)
189-
})
190-
191172
t.Run("NonExistentAppId_Fail", func(t *testing.T) {
192173
var actualResponseBody models.ErrorResponse
193174
editResp, err := httpClient.EditApp(

internal/e2e/daemon/const.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,5 @@ const (
88
noExistingApp = "dXNlcjp0ZXN0LWFwcAw"
99
malformedAppId = "this-is-definitely-not-base64"
1010
noExisitingExample = "ZXhhbXBsZXM6anVzdGJsaW5f"
11+
existingExampleAppId = "ZXhhbXBsZXM6YWlyLXF1YWxpdHktbW9uaXRvcmluZw"
1112
)

0 commit comments

Comments
 (0)