internal/dl: show versions in sorted order in JSON listing

When include=all is used, archived versions (old) and unstable versions
(new) are appended to the list of returned versions. This makes the
order of the list rather awkward: current, old, new. This commit makes
the ordering a bit more natural: new, current, old. However, even like
that, releases will be out of order, because, for example, 1.18rc1 is
new, while 1.17.6 is current, but 1.18beta1 is old. So, this commit
takes care to sort the entire list properly to avoid that. This way, the
entire list is sorted by version. Nothing changes semantically, as users
of the API can still filter out unstable releases using the "stable:
true" field.

This commit also adds a test case, to make sure this behavior doesn't
regress.

Fixes golang/go#50201.
Fixes golang/go#47367.

Change-Id: Ic136197dcdd47aa149601b75ba5152a2006c790a
Reviewed-on: https://go-review.googlesource.com/c/website/+/371934
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Run-TryBot: Jason Donenfeld <Jason@zx2c4.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Trust: Jamal Carvalho <jamalcarvalho@google.com>
3 files changed
tree: fa84f720c451b05d0b8ddf43a02f83fac2ea2e9b
  1. _content/
  2. _later/
  3. cmd/
  4. internal/
  5. tour/
  6. .eslintrc.yaml
  7. .gitattributes
  8. .prettierrc.yaml
  9. .stylelintrc.yaml
  10. AUTHORS
  11. codereview.cfg
  12. content.go
  13. CONTRIBUTING.md
  14. CONTRIBUTORS
  15. go-app-deploy.sh
  16. go.mod
  17. go.sum
  18. jest-transform.cjs
  19. LICENSE
  20. npm
  21. npx
  22. package-lock.json
  23. package.json
  24. PATENTS
  25. README.md
  26. tsconfig.json
README.md

Go website

Go Reference

This repo holds content and serving programs for the go.dev and golang.org web sites.

Content is in _content/ (go.dev) and tour/ (go.dev/tour). Server code is in cmd/ and internal/.

To run the combined go.dev+golang.org server to preview local content changes, use:

go run ./cmd/golangorg

The supporting programs cmd/admingolangorg and cmd/googlegolangorg are the servers for admin.golang.org and google.golang.org. (They do not use the _content/ directories.)

Each command directory has its own README.md explaining deployment.

JS/TS/CSS Formatting

This repository uses eslint to format JS and TS files, and stylelint to format CSS files.

See also:

It is encouraged that all JS, TS, and CSS code be run through formatters before submitting a change. However, it is not a strict requirement enforced by CI.

Installing npm Dependencies:

  1. Install docker
  2. Create a .gitignore file at repo root
  3. Add .gitignore and node_modules to .gitignore
  4. Run ./npm install

Run ESlint

./npx eslint [options] [file] [dir]

Run Stylelint

./npx stylelint [input] [options]

TypeScript Support

TypeScript files served from _content are transformed into JavaScript. Reference .ts files in html templates as module code.

<script type="module" src="/ts/filename.ts">

Write unit tests for TypeScript code using the jest testing framework.

Run Jest

./npx jest [TestPathPattern]

Deploying

Each time a CL is reviewed and submitted, the code is deployed to App Engine. See cmd/golangorg/README.md for details.

Report Issues / Send Patches

This repository uses Gerrit for code changes. To learn how to submit changes to this repository, see https://go.dev/doc/contribute.

The main issue tracker for the website repository is located at https://github.com/golang/go/issues. Prefix your issue with “x/website:” in the subject line, so it is easy to find.