From 5923476c741a30d24433f5f874c7d2efa8cde215 Mon Sep 17 00:00:00 2001
From: Richard Davison <ridaviso@amazon.com>
Date: Mon, 9 Sep 2024 15:33:58 +0200
Subject: [PATCH] Fix typings and add a test

---
 __tests__/util.test.ts | 13 +++++++++++++
 action.yml             |  3 +++
 src/main.ts            |  2 +-
 src/util.ts            |  4 ++++
 4 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/__tests__/util.test.ts b/__tests__/util.test.ts
index c3966ed..c0a7d16 100644
--- a/__tests__/util.test.ts
+++ b/__tests__/util.test.ts
@@ -46,6 +46,7 @@ describe("util", () => {
           input_body_path: undefined,
           input_draft: false,
           input_prerelease: false,
+          input_preserve_order: undefined,
           input_files: [],
           input_name: undefined,
           input_tag_name: undefined,
@@ -67,6 +68,7 @@ describe("util", () => {
           input_body_path: "__tests__/release.txt",
           input_draft: false,
           input_prerelease: false,
+          input_preserve_order: undefined,
           input_files: [],
           input_name: undefined,
           input_tag_name: undefined,
@@ -88,6 +90,7 @@ describe("util", () => {
           input_body_path: "__tests__/release.txt",
           input_draft: false,
           input_prerelease: false,
+          input_preserve_order: undefined,
           input_files: [],
           input_name: undefined,
           input_tag_name: undefined,
@@ -121,6 +124,7 @@ describe("util", () => {
           input_body_path: undefined,
           input_draft: undefined,
           input_prerelease: undefined,
+          input_preserve_order: undefined,
           input_files: [],
           input_name: undefined,
           input_tag_name: undefined,
@@ -148,6 +152,7 @@ describe("util", () => {
           input_draft: undefined,
           input_prerelease: undefined,
           input_files: [],
+          input_preserve_order: undefined,
           input_name: undefined,
           input_tag_name: undefined,
           input_fail_on_unmatched_files: false,
@@ -173,6 +178,7 @@ describe("util", () => {
           input_draft: undefined,
           input_prerelease: undefined,
           input_files: [],
+          input_preserve_order: undefined,
           input_name: undefined,
           input_tag_name: undefined,
           input_fail_on_unmatched_files: false,
@@ -198,6 +204,7 @@ describe("util", () => {
           input_body_path: undefined,
           input_draft: undefined,
           input_prerelease: undefined,
+          input_preserve_order: undefined,
           input_files: [],
           input_name: undefined,
           input_tag_name: undefined,
@@ -215,6 +222,7 @@ describe("util", () => {
         parseConfig({
           INPUT_DRAFT: "false",
           INPUT_PRERELEASE: "true",
+          INPUT_PRESERVE_ORDER: "true",
           GITHUB_TOKEN: "env-token",
           INPUT_TOKEN: "input-token",
         }),
@@ -227,6 +235,7 @@ describe("util", () => {
           input_body_path: undefined,
           input_draft: false,
           input_prerelease: true,
+          input_preserve_order: true,
           input_files: [],
           input_name: undefined,
           input_tag_name: undefined,
@@ -254,6 +263,7 @@ describe("util", () => {
           input_body_path: undefined,
           input_draft: false,
           input_prerelease: true,
+          input_preserve_order: undefined,
           input_files: [],
           input_name: undefined,
           input_tag_name: undefined,
@@ -280,6 +290,7 @@ describe("util", () => {
           input_body_path: undefined,
           input_draft: false,
           input_prerelease: true,
+          input_preserve_order: undefined,
           input_files: [],
           input_name: undefined,
           input_tag_name: undefined,
@@ -305,6 +316,7 @@ describe("util", () => {
           input_body_path: undefined,
           input_draft: undefined,
           input_prerelease: undefined,
+          input_preserve_order: undefined,
           input_files: [],
           input_name: undefined,
           input_tag_name: undefined,
@@ -330,6 +342,7 @@ describe("util", () => {
           input_body_path: undefined,
           input_draft: undefined,
           input_prerelease: undefined,
+          input_preserve_order: undefined,
           input_files: [],
           input_name: undefined,
           input_tag_name: undefined,
diff --git a/action.yml b/action.yml
index 580a57e..f9b5206 100644
--- a/action.yml
+++ b/action.yml
@@ -21,6 +21,9 @@ inputs:
   prerelease:
     description: "Identify the release as a prerelease. Defaults to false"
     required: false
+  preserve_order:
+    description: "Preserver the order of the artifacts when uploading"
+    required: false
   files:
     description: "Newline-delimited list of path globs for asset files to upload"
     required: false
diff --git a/src/main.ts b/src/main.ts
index 3c3cf21..73a033d 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -88,7 +88,7 @@ async function run() {
       };
       
       let assets;
-      if (config.preserve_order) {
+      if (!config.input_preserve_order) {
         assets = await Promise.all(files.map(uploadFile));
       } else {
         assets = [];
diff --git a/src/util.ts b/src/util.ts
index 6ca51bf..f98760a 100644
--- a/src/util.ts
+++ b/src/util.ts
@@ -13,6 +13,7 @@ export interface Config {
   input_body_path?: string;
   input_files?: string[];
   input_draft?: boolean;
+  input_preserve_order?: boolean;
   input_prerelease?: boolean;
   input_fail_on_unmatched_files?: boolean;
   input_target_commitish?: string;
@@ -62,6 +63,9 @@ export const parseConfig = (env: Env): Config => {
     input_body_path: env.INPUT_BODY_PATH,
     input_files: parseInputFiles(env.INPUT_FILES || ""),
     input_draft: env.INPUT_DRAFT ? env.INPUT_DRAFT === "true" : undefined,
+    input_preserve_order: env.INPUT_PRESERVE_ORDER
+    ? env.INPUT_PRESERVE_ORDER == "true"
+    : undefined,
     input_prerelease: env.INPUT_PRERELEASE
       ? env.INPUT_PRERELEASE == "true"
       : undefined,