Skip to content

Commit 76c1bc7

Browse files
committed
feat: reading release type
1 parent 4b59ea3 commit 76c1bc7

File tree

5 files changed

+78
-30
lines changed

5 files changed

+78
-30
lines changed

.github/scripts/release.sh

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ echo "=========================================================="
77

88
# Declerations
99
RELEASE_CONFIG_FILE=null
10-
RELEASE_TYPE=null
10+
VERSION_UPGRADE_TYPE=null
11+
RELEASE_TYPE=''
1112
TAG=null
1213

1314
PACKAGEJSON=$(cat package.json)
@@ -30,15 +31,27 @@ fi
3031
# Check if release config file has `versionUpgradeType`
3132
echo "- reading 'versionUpgradeType'"
3233
if [ "$(echo "$RELEASE_CONFIG_FILE" | jq -r ".versionUpgradeType")" != "null" ]; then
33-
RELEASE_TYPE=$(echo "$RELEASE_CONFIG_FILE" | jq -r ".versionUpgradeType")
34-
echo "- 'versionUpgradeType': $RELEASE_TYPE"
34+
VERSION_UPGRADE_TYPE=$(echo "$RELEASE_CONFIG_FILE" | jq -r ".versionUpgradeType")
35+
echo "- 'versionUpgradeType': $VERSION_UPGRADE_TYPE"
3536
else
36-
RELEASE_TYPE=null
37+
VERSION_UPGRADE_TYPE=null
3738
echo "- no 'versionUpgradeType' provided"
3839
echo "- abort"
3940
exit 1
4041
fi
4142

43+
# Check if release config file has `releaseType`
44+
echo "- reading 'releaseType'"
45+
if [ "$(echo "$RELEASE_CONFIG_FILE" | jq -r ".releaseType")" != "null" ]; then
46+
RELEASE_TYPE=$(echo "$RELEASE_CONFIG_FILE" | jq -r ".releaseType")
47+
echo "- 'releaseType': $RELEASE_TYPE"
48+
else
49+
RELEASE_TYPE=''
50+
echo "- no 'releaseType' provided"
51+
echo "- abort"
52+
exit 1
53+
fi
54+
4255
# Check if npm view command succeeded or failed
4356
echo "- reading package version from npm"
4457
PACKAGE_NPM_VERSION=$(npm view $PACKAGE_NAME version 2>/dev/null)
@@ -54,7 +67,7 @@ else
5467
FINAL_RELEASE_VERSION=$PACKAGE_VERSION
5568
fi
5669

57-
# Function to update version based on RELEASE_TYPE
70+
# Function to update version based on VERSION_UPGRADE_TYPE
5871
update_version() {
5972
local current_version=$1
6073
local release_type=$2
@@ -84,14 +97,14 @@ update_version() {
8497
if [ "$PACKAGE_NPM_VERSION" == "null" ]; then
8598
FINAL_RELEASE_VERSION=$PACKAGE_VERSION
8699
else
87-
case $RELEASE_TYPE in
100+
case $VERSION_UPGRADE_TYPE in
88101
"major" | "minor" | "patch")
89102
echo "- analysing version"
90-
FINAL_RELEASE_VERSION=$(update_version "$PACKAGE_NPM_VERSION" "$RELEASE_TYPE") TAG=$FINAL_RELEASE_VERSION
103+
FINAL_RELEASE_VERSION=$(update_version "$PACKAGE_NPM_VERSION" "$VERSION_UPGRADE_TYPE") TAG=$FINAL_RELEASE_VERSION
91104
echo "- analysed deployable version $FINAL_RELEASE_VERSION"
92105
;;
93106
*)
94-
echo "- invalid release type: $RELEASE_TYPE"
107+
echo "- invalid release type: $VERSION_UPGRADE_TYPE"
95108
;;
96109
esac
97110
fi
@@ -121,12 +134,14 @@ echo "- RELEASE_NOTES: $RELEASE_NOTES"
121134
echo "- PACKAGE_NAME: $PACKAGE_NAME"
122135
echo "- PACKAGE_VERSION: $PACKAGE_VERSION"
123136
echo "- FINAL_RELEASE_VERSION: $FINAL_RELEASE_VERSION"
124-
echo "- RELEASE_TYPE:$RELEASE_TYPE"
125-
echo "- TAG:$TAG"
137+
echo "- VERSION_UPGRADE_TYPE: $VERSION_UPGRADE_TYPE"
138+
echo "- TAG: $TAG"
139+
echo "- RELEASE_TYPE: $RELEASE_TYPE"
126140

127141
# Set output
128142
echo "tag=$(echo $TAG)" >>$GITHUB_OUTPUT
129143
echo "release-notes=$(echo $RELEASE_NOTES)" >>$GITHUB_OUTPUT
130144
echo "final-release-version=$(echo $FINAL_RELEASE_VERSION)" >>$GITHUB_OUTPUT
131-
echo "release-type=$(echo $RELEASE_TYPE)" >>$GITHUB_OUTPUT
145+
echo "release-type=$(echo $VERSION_UPGRADE_TYPE)" >>$GITHUB_OUTPUT
132146
echo "package-version=$(echo $PACKAGE_VERSION)" >>$GITHUB_OUTPUT
147+
echo "release-type=$(echo $RELEASE_TYPE)" >>$GITHUB_OUTPUT

.github/workflows/release.yaml

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ jobs:
4242
git config --global user.email $USER_EMAIL
4343
4444
- name: Commit logs
45+
continue-on-error: true
4546
run: |
4647
git add .
4748
git commit -m "ci: Release props logs generated."
@@ -52,15 +53,6 @@ jobs:
5253
name: get-release-props-logs
5354
path: get-release-props-logs.log
5455

55-
- name: Debug variables
56-
run: |
57-
echo "tag=${{steps.read-release-props.outputs.tag}}"
58-
echo "release-notes=${{steps.read-release-props.outputs.release-notes}}"
59-
echo "package-version: ${{steps.read-release-props.outputs.package-version}}"
60-
echo "release-type: ${{steps.read-release-props.outputs.release-type}}"
61-
echo "final-release-version: ${{steps.read-release-props.outputs.final-release-version}}"
62-
echo "final-release-version: ${{steps.read-release-props.outputs.final-release-version}}"
63-
6456
- name: Checkout to new branch and update package json with new version
6557
# if: steps.read-release-props.outcome.package-version != steps.read-release-props.outputs.final-release-version
6658
# continue-on-error: true
@@ -124,4 +116,5 @@ jobs:
124116
--base ${{steps.branch-checkout-details.outputs.current_branch}} \
125117
--title "version ${{steps.read-release-props.outputs.final-release-version}}" \
126118
--body "* version: ${{steps.read-release-props.outputs.final-release-version}} | $(date -u +"%Y-%m-%d %H:%M:%S")" \
127-
--no-maintainer-edit
119+
--no-maintainer-edit \
120+
${{steps.read-release-props.outputs.release-type}}

.release/config.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
{
2-
"versionUpgradeType": "patch"
2+
"versionUpgradeType": "patch",
3+
"releaseType": "--prerelease"
34
}

.release/release-notes.md

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1 @@
1-
## Fixes
2-
- Wait for flags task to complete before exit
3-
4-
## Changes
5-
- Updated documentation
1+
## Presease to check if reading release type is working

src/tasks/createRelease.ts

Lines changed: 46 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,15 @@ export default async function createRelease() {
2828
]);
2929

3030
// Read release type
31+
const releaseType = await inquirer.prompt([
32+
{
33+
type: "list",
34+
name: "value",
35+
message: "Choose your version upgrade type:",
36+
choices: ["--latest (default)", "--prerelease"],
37+
},
38+
]);
39+
// Read version upgrade type
3140
const versionUpgradeType = await inquirer.prompt([
3241
{
3342
type: "list",
@@ -58,13 +67,13 @@ export default async function createRelease() {
5867
return; // Exit function if there's an error creating the directory
5968
}
6069

61-
// 1. If there are releaseNotes then create a file named .release/release-notes.md
70+
// If there are releaseNotes then create a file named .release/release-notes.md
6271
if (releaseNotes.value) {
6372
await writeFileAsync(".release/release-notes.md", releaseNotes.value);
6473
logger.info("Release notes saved.");
6574
}
6675

67-
// 2. If there is a tag, add the tag to .release/config.json
76+
// If there is a tag, add the tag to .release/config.json
6877
if (tag.value.length) {
6978
const config = { tag: tag.value };
7079
await writeFileAsync(
@@ -74,7 +83,7 @@ export default async function createRelease() {
7483
logger.info("Tag added to config.");
7584
}
7685

77-
// 3. If there is a versionUpgradeType, add the versionUpgradeType to .release/config.json
86+
// If there is a versionUpgradeType, add the versionUpgradeType to .release/config.json
7887
if (versionUpgradeType.value) {
7988
try {
8089
await accessAsync(".release/config.json", fs.constants.F_OK);
@@ -108,6 +117,40 @@ export default async function createRelease() {
108117
logger.info("VersionUpgradeType added to config.");
109118
}
110119

120+
// If there is a release type, add the releaseType to .release/config.json
121+
if (releaseType.value) {
122+
try {
123+
await accessAsync(".release/config.json", fs.constants.F_OK);
124+
} catch (error) {
125+
if (error.code === "ENOENT") {
126+
// File doesn't exist, create it with default content
127+
128+
const defaultConfig = { releaseType: "--latest" };
129+
await writeFileAsync(
130+
".release/config.json",
131+
JSON.stringify(defaultConfig, null, 2)
132+
);
133+
logger.info("Config file created.");
134+
}
135+
}
136+
137+
const configFileContent = await readFileAsync(
138+
".release/config.json",
139+
"utf-8"
140+
);
141+
142+
const configFile = JSON.parse(configFileContent);
143+
const config = {
144+
...configFile,
145+
releaseType: releaseType.value.split(" ")[0],
146+
};
147+
await writeFileAsync(
148+
".release/config.json",
149+
JSON.stringify(config, null, 2)
150+
);
151+
logger.info("VersionUpgradeType added to config.");
152+
}
153+
111154
console.log(`
112155
${chalk.cyan.bold(
113156
"\n----------------------------------------------------------------------------------------------------------------------------------------------"

0 commit comments

Comments
 (0)