This PR is part of porting all old scripts #221 and ports `make_release`
folder
## Summary
### make_release/this_week_in_nu_weekly.nu
This script has already been ported and has received some updates: #433.
So I just removed it
```yaml
from: before_v0.60/make_release/this_week_in_nu_weekly.nu
to: make_release/this_week_in_nu_weekly.nu
functions:
do-work: make_release/this_week_in_nu_weekly.nu:1:query-week-span
```
### make_release/this_week_in_nu_release.nu
I have ported this, but I'm not sure if we need it because it has
strange name and we have `prs.nu` and `make_release/release-note/`
```yaml
from: before_v0.60/make_release/this_week_in_nu_release.nu
to: make_release/this_week_in_nu_release.nu
functions:
do-work: make_release/this_week_in_nu_release.nu:1:do-work
```
### make_release/nu_release.nu
This has already been ported to `make_release/nu_release.nu` and has
received new updates #828 so I just removed it
```yaml
from: before_v0.60/make_release/nu_release.nu
to: make_release/nu_release.nu
```
### make_release/gen-js-ext.nu
This has already been moved to `make_release/gen-js-ext.nu` and has
received new updates #621 but not completely ported so I have ported it
- pipeline `for` to `each`
- `$nu.scope.commands` to `scope commands`
- explicit `print`
```yaml
from: before_v0.60/make_release/gen-js-ext.nu
to: make_release/gen-js-ext.nu
functions:
gen_keywords: make_release/gen-js-ext.nu:1:gen_keywords
gen_sub_keywords: make_release/gen-js-ext.nu:20:gen_sub_keywords
```
### make_release/gen-ts-ext.nu
I have ported this script
```yaml
from: before_v0.60/make_release/gen-ts-ext.nu
to: make_release/gen-ts-ext.nu
functions:
gen-ts-cmds-begin: make_release/gen-ts-ext.nu:1:gen-ts-cmds-begin
gen-ts-cmds: make_release/gen-ts-ext.nu:18:gen-ts-cmds
gen-ts-subs: make_release/gen-ts-ext.nu:40:gen-ts-subs
```
I used [typos](https://github.com/crate-ci/typos/).
I manually checked all the corrections and they seem safe to me.
There are still some left, but those in this PR are good
What it says on the tin. This just updates the `bump-version.nu` script
to also edit the version in
the new nu_plugin_nu_example plugin, the same way it does for python
This PR adds two [`cargo hack`](https://github.com/taiki-e/cargo-hack)
commands to the release process to check for errors due to combination
of features. The first one will run `cargo check` on each crate multiple
times over, toggling different combinations of features each time. This
is to check for compilation errors regarding missing imports, etc. The
second command will run `cargo build` for each crate separately (with
default features) to check for build errors (from `build.rs` or
whatever).
Using the [error](https://github.com/nushell/nushell/pull/11786) from
the 0.90.0 publishing as a test, the first command does indeed find the
compilation error.
In the future, we should probably put these commands into a manually
triggered CI job so that they will be run on multiple platforms.
Also, this PR cleans up `nu_release.nu` a little bit.
The script was running endlessly for me and the notion of crate waves
may be out of date, after removing them and manually aligning the output
with the relevant crate waves things went smooth.
New crate `nu-lsp`
Only treat `nu-cmd-lang` with the `build.rs` for `version` with the
`--no-verify` treatment in the separate wave
Reorder `nu-command` crates as there are dev-dependencies that may be a
problem
should be the last one... 😇
this PR adds `-toc` to the links in the TOC of the release note
template, they need that for the back reference to the TOC itself in the
section titles
was writing https://github.com/nushell/nushell.github.io/pull/1114 and
noticed a very nice bug...
yeah HTML comments in `.md` documents can't be indented otherwise `npm
install` + `npm run dev` can't render the page 👀
this PR adds
```nushell
let last_release_date = ^gh api /repos/nushell/nushell/releases
| from json
| into datetime published_at
| get published_at
| sort
| last
```
to the relaease note template to get the date of the last release and
list the PRs from there to now.
i've started writting the [release note for
0.86.0](https://github.com/nushell/nushell.github.io/pull/1071) and
thought we could enhance the template for the note even further:
- add some TODOs to make sure we don't forget anything
- make the `NOTE` a real note in the first section, it's just for
prettier rendering
- add some template tables in the "hall of fame"
- ❗ add a table of content to allow jumping back and forth
more easily when the note starts to get big
related to
- https://github.com/nushell/nushell.github.io/pull/1114
i had to use `create-pr` to open
https://github.com/nushell/nushell.github.io/pull/1114 and i thought the
script could be improved in a few ways
- the template had a hardcoded `.0` path version in the semver, this PR
removes is so that the CLI argument can be a full semver, e.g. `0.87.0`
- switch from `explore` to `$env.EDITOR` to preview the completed
template: because it's valid markdown, it looks better in an editor
- fetch the website repo with HTTP and push with SSH: this allows to not
enter the password of an SSH key in the clone step
to help writing the release notes, i think being able to list all the
PRs between the last two releases and format them directly to a raw
table is really nice.
this PR
- `export`s the `main` command from `list-merged-prs`
- adds an example to the `template.md` file of the release notes
the example:
```nushell
use ./make_release/release-note/list-merged-prs
list-merged-prs nushell/nushell <last-release-date>
| where author != "app/dependabot"
| sort-by mergedAt
| update url {|it| $"[#($it.number)]\(($it.url)\)" }
| update author { $"[@($in)]\(https://github.com/($in)\)" }
| select author title url
| rename -c {url: pr}
| to md --pretty
```
will dump all the PRs in a `table<author: string, title: string, pr:
string>` in `md` format:
- `author` is a mardown link to the GitHub page of each author
- `title` is the title of the PRs
- `pr` is a markdown link to the GitHub page of each PR
this pipeline will omit the contributions from @app/dependabot.
in this PR i propose
- to add a note about the use of a "breaking change" banner when
detailing a breaking change in it's own section
👉 see the [*Pythonesque operators removal* section of
0.85](https://www.nushell.sh/blog/2023-09-19-nushell_0_85_0.html#pythonesque-operators-removal)
- because we have had these sections for a few releases now, add "hall
of fame" and "changed to commands" sections
* Script to generate the excerpt of the GH release
This will add a list of PR authors so they will be shown with a profile
image at the end of the GH release.
* Update make_release/release-note/gh-release-excerpt
Co-authored-by: Antoine Stevan <44101798+amtoine@users.noreply.github.com>
* Sort authors, feeks default release cycle
---------
Co-authored-by: Antoine Stevan <44101798+amtoine@users.noreply.github.com>
* pass the date as an argument to `get-full-changelog`
* simplify the computation of default date in `list-merged-prs`
* switch to the 4 week-schedule by default
* show the queried date before printing merged PRs
* remove `ansi link` as it's an extra command
* create-pr: show PR parts, explore the note and ask for confirmation
* add `bump-version.nu` to bump a version automatically
* mention `bump-version` in the release guide insted of `sd`
* remove the Note about `sd`ing the `Cargo.lock` file
* break very long lines
* find and replace in the `.nu` config files only
* fix the `str expand` command call for windows
it appears to not work properly with the `\` introduced by `path join`.
* remove useless comments
* use `--manifest-path` instead of `cd`ing
* add a bit of logging
* use an env-scoped `publish` command instead of `--manifest-path`
this will achieve the same result and make sure we control the
behaviour of the options, which we do not with unclear
`--manifest-path`.
* update the `make_release/Readme.md` with the whole process
* complete the release process of `reedline` and `nu-ansi-term`
* make the 0 section title more clear
* make the Git remotes more general and be clear about that
* use `v0.xx.0` tags for both `reedline` and `nu-ansi-term`
* move "create release PR" script to `make_release/release-note/`
* move "since last release" script to `make_release/release-note/`
* add a script to list contributions for the release note
* rewrite `since_last_release` to use `list-merged-prs`
This commit also makes the script executable.
* update the `make_release/` readme
* add the commands to run to the release note template
* rename `since_last_release.nu` to `get-full-changelog`
* move the release note PR template to a standalone file
* add another section to inspect Nushell PRs to write changelogs
* fix the name of the command inside it's own doc
* add a script to create the release note PR of the website
* make the script executable
* pass the PR data to the open-pr command in a record
* add instructions to run the script in the readme
* move the core of the instructions to the help of the script
* refactor the repo cleaning in a tool command
* link to the repo if the user is not logged into `gh`
we also clean the repo in that case.
* refactor: ✨ move in one commit
Eveything in modules should probably be changed to `exported` defs.
The idea is to move everything first to keep proper history.
* refactor: 📝 add modules readme (wip)
* refactor: ✨ small move
* refactor: 📝 changed nestring, updated modules readme
* refactor: 📝 to document or not to document
* fix: 🐛 themes
replaced the template to use `main` and regenerated them
from lemnos themes.
* Revert "fix: 🐛 themes"
This reverts commit 4918d3633c.
* refactor: ✨ introduce sourced
- Created a source `root` in which sourcable demos are stored.
Some might get converted to modules later on.
- Moved some files to bin too.
* fix: 🐛 fehbg.nu
* fix: 🐛 modules/after.nu
* moved some other stuff around
---------
Co-authored-by: Darren Schroeder <343840+fdncred@users.noreply.github.com>