-
-
Notifications
You must be signed in to change notification settings - Fork 14
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
.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
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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:
64bit
tox86-64
32bit
toi386
(note that we do not have 32-bit releases yet anyway)tgz
totar.gz
mac
tomacos
The configlet release assets have always had architecture-ambiguous names:
This naming format is old (added by d4c6e26 in the
canonical-data-syncer
days), and was ultimately inheirited from:exercism/configlet-v2
releases (https://github.com/exercism/v2-configlet/releases)exercism/cli
releases (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_64
andx86-64
if you aren't aware of this - the first selects the whole thing, the second doesn't). Note that double-clickingbeta
in4.0.0-beta.7
won't select the whole version, and the same is true of4.0.0_beta.7
even 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 -m
returnsx86_64
, notx86-64
. It is still referred to asx86-64
in plenty of other places (e.g. https://en.wikipedia.org/wiki/X86-64)to this PR's:
To allow the
fetch-configlet
workflow 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-configlet
script used by the org-wide configlet workflow.fetch-configlet{.ps1}
scripts. We can do this mass PR either:fetch-configlet
toorg-wide-files
(tracked in consider addingfetch-configlet
org-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-configlet
script will continue to work.