.github, fetch-configlet: rename release assets#705
Conversation
Refs: 24 Refs: 363
Refs: 24 Refs: 363
We need to distinguish between different 64bit architectures, like `x86-64` and `arm64`. Also rename `32bit` to `i386`. Refs: 24 Refs: 363
Rationale:
- We want to start including the version string in the filenames of
release assets.
- Configlet uses version strings that are compatible with the semantic
versioning spec.
- The semantic versioning spec forbids using an underscore, and
specifies that prerelease versions can use hyphens [1]:
Section 9:
A pre-release version MAY be denoted by appending a hyphen and a
series of dot separated identifiers immediately following the patch
version. Identifiers MUST comprise only ASCII alphanumerics and
hyphens [0-9A-Za-z-].
[...]
Examples: 1.0.0-alpha, 1.0.0-alpha.1, 1.0.0-0.3.7, 1.0.0-x.7.z.92
Therefore, let's work towards asset names like
some-app_1.0.0-beta.1_linux_x86-64.tar.gz
rather than
some_app-1.0.0-beta.1-linux-x86_64.tar.gz
because the first is semantically delimited by `_`, but the second is
not semantically delimited by `-` (as the `-beta` part of the version
string is awkward).
[1] https://semver.org/
Refs: 24
Refs: 363
Refs: 24 Refs: 363
ErikSchierboom
left a comment
There was a problem hiding this comment.
With this commit, the next release will have assets named:
Those look good to me.
We can't merge this until we've handled the syncing of the scripts, right?
We can - it's just that we need to manually add assets with the old names before undrafting the release. I could have made the build workflow automatically upload the duplicate assets, but:
I'll also remove the newly named assets from |
|
Okay sure |
|
@ee7 wrote:
Done.
gh release view -R exercism/configlet \
--json assets \
--jq '.assets.[] | {updatedAt,name}' \
| jq{
"name": "configlet-linux-64bit.tgz",
"updatedAt": "2022-10-27T21:00:06Z"
}
{
"name": "configlet-mac-64bit.tgz",
"updatedAt": "2022-10-27T21:00:35Z"
}
{
"name": "configlet-windows-64bit.zip",
"updatedAt": "2022-10-27T21:01:34Z"
}
{
"name": "configlet_4.0.0-beta.7_checksums_sha256.txt",
"updatedAt": "2022-10-27T21:01:50Z"
}
{
"name": "configlet_4.0.0-beta.7_linux_x86-64.tar.gz",
"updatedAt": "2022-11-05T15:34:31Z"
}
{
"name": "configlet_4.0.0-beta.7_macos_x86-64.tar.gz",
"updatedAt": "2022-11-05T15:34:31Z"
}
{
"name": "configlet_4.0.0-beta.7_windows_x86-64.zip",
"updatedAt": "2022-11-05T15:34:31Z"
} |
Before this commit, the release assets were named like:
configlet-linux-64bit.tgz
configlet-mac-64bit.tgz
configlet-windows-64bit.zip
configlet_4.0.0-beta.7_checksums_sha256.txt
With this commit, the next release will have assets named:
configlet_4.0.0-beta.8_checksums_sha256.txt
configlet_4.0.0-beta.8_linux_x86-64.tar.gz
configlet_4.0.0-beta.8_macos_x86-64.tar.gz
configlet_4.0.0-beta.8_windows_x86-64.zip
Where we:
- Make the archive naming format match that of the checksums file
- Add a version string
- Delimit with an underscore, not a hyphen
- Rename `64bit` to `x86-64`
- Rename `32bit` to `i386`
- Rename `tgz` to `tar.gz`
- Rename `mac` to `macos`
So far, we have only released configlet for x86-64, and the release
assets have always had an ambiguous `64bit` in the names. This naming
format was old (added by d4c6e26836a5, 2020-10-09), and was ultimately
inherited from:
- the `exercism/configlet-v2` releases [1]
- the `exercism/cli` releases [2][3]
However, we're getting closer to adding releases for other 64-bit
architectures, so it's especially important to change the names now.
The rationale for the particular use of underscores and hyphens is:
- We want to have the version string in the asset filenames
- Configlet uses version strings that are compatible with the Semantic
Versioning spec
- It is more common to use hyphens in executable names than
underscores
- The Semantic Versioning spec forbids using an underscore, and
specifies that prerelease versions can use hyphens [4]:
Section 9:
A pre-release version MAY be denoted by appending a hyphen and a
series of dot separated identifiers immediately following the patch
version. Identifiers MUST comprise only ASCII alphanumerics and
hyphens [0-9A-Za-z-].
[...]
Examples: 1.0.0-alpha, 1.0.0-alpha.1, 1.0.0-0.3.7, 1.0.0-x.7.z.92
That is, there's an argument for the format of:
some-app_1.0.0-beta.1_linux_x86-64.tar.gz
rather than:
some_app-1.0.0-beta.1-linux-x86_64.tar.gz
because `_` fully separates the components of the first, and `-` does
not separate the components of the second (due to the `-beta` part of
the version string). This does ignore the convention of `_` as an
inter-word space, however.
[1] https://github.com/exercism/v2-configlet/releases
[2] exercism/cli#700 (comment)
[3] https://github.com/exercism/cli/releases/tag/v3.0.12
[4] https://semver.org/
Closes: exercism/configlet#363
Refs: exercism/configlet#24
exercism/configlet#705
Before this commit, the release assets were named like:
configlet-linux-64bit.tgz
configlet-mac-64bit.tgz
configlet-windows-64bit.zip
configlet_4.0.0-beta.7_checksums_sha256.txt
With this commit, the next release will have assets named:
configlet_4.0.0-beta.8_checksums_sha256.txt
configlet_4.0.0-beta.8_linux_x86-64.tar.gz
configlet_4.0.0-beta.8_macos_x86-64.tar.gz
configlet_4.0.0-beta.8_windows_x86-64.zip
Where we:
- Make the archive naming format match that of the checksums file
- Add a version string
- Delimit with an underscore, not a hyphen
- Rename `64bit` to `x86-64`
- Rename `32bit` to `i386`
- Rename `tgz` to `tar.gz`
- Rename `mac` to `macos`
So far, we have only released configlet for x86-64, and the release
assets have always had an ambiguous `64bit` in the names. This naming
format was old (added by d4c6e26836a5, 2020-10-09), and was ultimately
inherited from:
- the `exercism/configlet-v2` releases [1]
- the `exercism/cli` releases [2][3]
However, we're getting closer to adding releases for other 64-bit
architectures, so it's especially important to change the names now.
The rationale for the particular use of underscores and hyphens is:
- We want to have the version string in the asset filenames
- Configlet uses version strings that are compatible with the Semantic
Versioning spec
- It is more common to use hyphens in executable names than
underscores
- The Semantic Versioning spec forbids using an underscore, and
specifies that prerelease versions can use hyphens [4]:
Section 9:
A pre-release version MAY be denoted by appending a hyphen and a
series of dot separated identifiers immediately following the patch
version. Identifiers MUST comprise only ASCII alphanumerics and
hyphens [0-9A-Za-z-].
[...]
Examples: 1.0.0-alpha, 1.0.0-alpha.1, 1.0.0-0.3.7, 1.0.0-x.7.z.92
That is, there's an argument for the format of:
some-app_1.0.0-beta.1_linux_x86-64.tar.gz
rather than:
some_app-1.0.0-beta.1-linux-x86_64.tar.gz
because `_` fully separates the components of the first, and `-` does
not separate the components of the second (due to the `-beta` part of
the version string). This does ignore the convention of `_` as an
inter-word space, however.
[1] https://github.com/exercism/v2-configlet/releases
[2] exercism/cli#700 (comment)
[3] https://github.com/exercism/cli/releases/tag/v3.0.12
[4] https://semver.org/
Closes: exercism/configlet#363
Refs: exercism/configlet#24
exercism/configlet#705
Before this commit, the release assets were named like:
configlet-linux-64bit.tgz
configlet-mac-64bit.tgz
configlet-windows-64bit.zip
configlet_4.0.0-beta.7_checksums_sha256.txt
With this commit, the next release will have assets named:
configlet_4.0.0-beta.8_checksums_sha256.txt
configlet_4.0.0-beta.8_linux_x86-64.tar.gz
configlet_4.0.0-beta.8_macos_x86-64.tar.gz
configlet_4.0.0-beta.8_windows_x86-64.zip
Where we:
- Make the archive naming format match that of the checksums file
- Add a version string
- Delimit with an underscore, not a hyphen
- Rename `64bit` to `x86-64`
- Rename `32bit` to `i386`
- Rename `tgz` to `tar.gz`
- Rename `mac` to `macos`
So far, we have only released configlet for x86-64, and the release
assets have always had an ambiguous `64bit` in the names. This naming
format was old (added by d4c6e26836a5, 2020-10-09), and was ultimately
inherited from:
- the `exercism/configlet-v2` releases [1]
- the `exercism/cli` releases [2][3]
However, we're getting closer to adding releases for other 64-bit
architectures, so it's especially important to change the names now.
The rationale for the particular use of underscores and hyphens is:
- We want to have the version string in the asset filenames
- Configlet uses version strings that are compatible with the Semantic
Versioning spec
- It is more common to use hyphens in executable names than
underscores
- The Semantic Versioning spec forbids using an underscore, and
specifies that prerelease versions can use hyphens [4]:
Section 9:
A pre-release version MAY be denoted by appending a hyphen and a
series of dot separated identifiers immediately following the patch
version. Identifiers MUST comprise only ASCII alphanumerics and
hyphens [0-9A-Za-z-].
[...]
Examples: 1.0.0-alpha, 1.0.0-alpha.1, 1.0.0-0.3.7, 1.0.0-x.7.z.92
That is, there's an argument for the format of:
some-app_1.0.0-beta.1_linux_x86-64.tar.gz
rather than:
some_app-1.0.0-beta.1-linux-x86_64.tar.gz
because `_` fully separates the components of the first, and `-` does
not separate the components of the second (due to the `-beta` part of
the version string). This does ignore the convention of `_` as an
inter-word space, however.
[1] https://github.com/exercism/v2-configlet/releases
[2] exercism/cli#700 (comment)
[3] https://github.com/exercism/cli/releases/tag/v3.0.12
[4] https://semver.org/
exercism/configlet#363
exercism/configlet#24
exercism/configlet#705
Before this commit, the release assets were named like:
configlet-linux-64bit.tgz
configlet-mac-64bit.tgz
configlet-windows-64bit.zip
configlet_4.0.0-beta.7_checksums_sha256.txt
With this commit, the next release will have assets named:
configlet_4.0.0-beta.8_checksums_sha256.txt
configlet_4.0.0-beta.8_linux_x86-64.tar.gz
configlet_4.0.0-beta.8_macos_x86-64.tar.gz
configlet_4.0.0-beta.8_windows_x86-64.zip
Where we:
- Make the archive naming format match that of the checksums file
- Add a version string
- Delimit with an underscore, not a hyphen
- Rename `64bit` to `x86-64`
- Rename `32bit` to `i386`
- Rename `tgz` to `tar.gz`
- Rename `mac` to `macos`
So far, we have only released configlet for x86-64, and the release
assets have always had an ambiguous `64bit` in the names. This naming
format was old (added by d4c6e26836a5, 2020-10-09), and was ultimately
inherited from:
- the `exercism/configlet-v2` releases [1]
- the `exercism/cli` releases [2][3]
However, we're getting closer to adding releases for other 64-bit
architectures, so it's especially important to change the names now.
The rationale for the particular use of underscores and hyphens is:
- We want to have the version string in the asset filenames
- Configlet uses version strings that are compatible with the Semantic
Versioning spec
- It is more common to use hyphens in executable names than
underscores
- The Semantic Versioning spec forbids using an underscore, and
specifies that prerelease versions can use hyphens [4]:
Section 9:
A pre-release version MAY be denoted by appending a hyphen and a
series of dot separated identifiers immediately following the patch
version. Identifiers MUST comprise only ASCII alphanumerics and
hyphens [0-9A-Za-z-].
[...]
Examples: 1.0.0-alpha, 1.0.0-alpha.1, 1.0.0-0.3.7, 1.0.0-x.7.z.92
That is, there's an argument for the format of:
some-app_1.0.0-beta.1_linux_x86-64.tar.gz
rather than:
some_app-1.0.0-beta.1-linux-x86_64.tar.gz
because `_` fully separates the components of the first, and `-` does
not separate the components of the second (due to the `-beta` part of
the version string). This does ignore the convention of `_` as an
inter-word space, however.
[1] https://github.com/exercism/v2-configlet/releases
[2] exercism/cli#700 (comment)
[3] https://github.com/exercism/cli/releases/tag/v3.0.12
[4] https://semver.org/
exercism/configlet#363
exercism/configlet#24
exercism/configlet#705
Summary:
64bittox86-6432bittoi386(note that we do not have 32-bit releases yet anyway)tgztotar.gzmactomacosThe configlet release assets have always had architecture-ambiguous names:
This naming format is old (added by d4c6e26 in the
canonical-data-syncerdays), and was ultimately inheirited from:exercism/configlet-v2releases (https://github.com/exercism/v2-configlet/releases)exercism/clireleases (see Release tarballs are named ambiguously cli#700 (comment) and cli-v3.0.12).The ambiguous names haven't mattered much so far, because configlet has only released for
x86-64. However, I'm getting closer to adding releases for other 64bit architectures, so we finally need to change the names.For the rationale being the new naming format, see my (hopefully sufficiently exhaustive) bikeshedding in #363 (comment).
Before this commit, the release assets were named like:
With this commit, the next release will have assets named:
where the archive names now match the naming format for the existing checksums file.
Closes: #363
Refs: #24
I've tried to convince myself that the naming format with underscores everywhere but architecture and version string (where semver mandates a hyphen):
is a better format than hyphens everywhere but architecture:
or hyphens everywhere:
or underscores everywhere possible:
Even though I don't love that:
x86_64andx86-64if you aren't aware of this - the first selects the whole thing, the second doesn't). Note that double-clickingbetain4.0.0-beta.7won't select the whole version, and the same is true of4.0.0_beta.7even if semver permitted that, so us using underscores everywhere possible doesn't achieve a naming format where double-clicking on part of the name always performs tokenization.uname -mreturnsx86_64, notx86-64. It is still referred to asx86-64in plenty of other places (e.g. https://en.wikipedia.org/wiki/X86-64)to this PR's:
To allow the
fetch-configletworkflow to pass, I have added assets with the new naming format to the configlet 4.0.0-beta.7 release - they're copies of the existing assets, with the same checksums.Before we create a release that includes this PR, we need to:
fetch-configletscript used by the org-wide configlet workflow.fetch-configlet{.ps1}scripts. We can do this mass PR either:fetch-configlettoorg-wide-files(tracked in consider addingfetch-configletorg-wide-files#262)But for some period of time, we should keep assets with the old naming format in releases. Then an out-of-date
fetch-configletscript will continue to work.