Skip to content

Commit

Permalink
Detect broken links for haddock,metatheory,docusaurus + local repo fi…
Browse files Browse the repository at this point in the history
…les (#6294)
  • Loading branch information
zeme-wana committed Jul 8, 2024
1 parent 317b63d commit 92f390c
Show file tree
Hide file tree
Showing 23 changed files with 378 additions and 356 deletions.
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ body:
attributes:
value: |
Thanks for taking the time to fill out this bug report.
Please check the existing issues, [Plutus Docs](https://intersectmbo.github.io/plutus/docs) and [Cardano Stack Exchange](https://cardano.stackexchange.com/) before raising.
Please check the existing issues, [Plutus Docs](https://plutus.cardano.intersectmbo.org/docs) and [Cardano Stack Exchange](https://cardano.stackexchange.com/) before raising.
- type: textarea
id: summary
attributes:
Expand Down
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ body:
attributes:
value: |
Thanks for taking the time to fill out this feature request.
Please check the existing issues and [Plutus Docs](https://intersectmbo.github.io/plutus/docs) before raising.
Please check the existing issues and [Plutus Docs](https://plutus.cardano.intersectmbo.org/docs) before raising.
- type: textarea
id: description
attributes:
Expand Down
27 changes: 9 additions & 18 deletions .github/workflows/broken-links.yml
Original file line number Diff line number Diff line change
@@ -1,24 +1,12 @@
# This job checks for broken links in the various files.
# This job checks for broken links in various files in the repo.

name: "🔗 Broken Links"

on:
schedule:
- cron: 0 0 * * * # Daily at midnight
workflow_dispatch: # Or manually dispatch the job
pull_request:
paths:
- .github/ISSUE_TEMPLATE/bug_report.yml
- .github/ISSUE_TEMPLATE/feature_request.yml
- .github/PULL_REQUEST_TEMPLATE.md
- .github/SECURITY.md
- CODE_OF_CONDUCT.md
- CONTRIBUTING.adoc
- LICENSE
- NOTICE
- README.adoc
- RELEASE.adoc
- STYLEGUIDE.adoc
push:
branches:
master

jobs:
check:
Expand All @@ -30,4 +18,7 @@ jobs:

- name: Run Linkchecker
run: |
nix develop --no-warn-dirty --accept-flake-config --command ./scripts/check-broken-links.sh
nix develop --no-warn-dirty --accept-flake-config --command ./scripts/check-broken-links.sh

16 changes: 14 additions & 2 deletions .github/workflows/docusaurus-site.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# This workflow builds and publishes the Docusaurus site to:
# https://intersectmbo.github.io/plutus/docs
# https://plutus.cardano.intersectmbo.org/docs

name: "🦕 Docusaurus Site"

Expand Down Expand Up @@ -31,4 +31,16 @@ jobs:
folder: doc/docusaurus/build
target-folder: docs
single-commit: true


- name: Check Broken Links
run: |
IGNORE_URLS=(
--ignore-url "https://plutus.cardano.intersectmbo.org/haddock/.*"
)
URL="https://plutus.cardano.intersectmbo.org/docs"
linkchecker --no-warnings --check-extern --output failures "${URL}" "${IGNORE_URLS[@]}"
if [ $? -ne 0 ]; then
echo "${URL} has broken links, see output above"
exit 1
fi
295 changes: 289 additions & 6 deletions .github/workflows/haddock-site.yml

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions .github/workflows/longitudinal-benchmark.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
# It will collect and aggreate the benchmark output, format it and feed it to the
# github-action-benchmark action.
#
# The benchmark charts are live at https://intersectmbo.github.io/plutus/dev/bench
# The benchmark data is available at https://intersectmbo.github.io/plutus/dev/bench/data.js
# The benchmark charts are live at https://plutus.cardano.intersectmbo.org/dev/bench
# The benchmark data is available at https://plutus.cardano.intersectmbo.org/dev/bench/data.js
#
# This is a performance regression check that is run on every push master.

Expand Down
52 changes: 10 additions & 42 deletions .github/workflows/metatheory-site.yml
Original file line number Diff line number Diff line change
@@ -1,42 +1,12 @@
# This workflow builds and publishes the metatheory site to:
# https://intersectmbo.github.io/plutus/metatheory/$version
# And optionally to:
# https://intersectmbo.github.io/plutus/metatheory/latest
# On push to master, this workflows publishes to:
# https://intersectmbo.github.io/plutus/metatheory/master
# https://plutus.cardano.intersectmbo.org/metatheory

name: "🔮 Metatheory Site"

on:
push:
branches:
- master

workflow_dispatch:
inputs:
ref:
description: |
The $ref to build off of, e.g. "1.29.0.0", "master", or any other valid git ref.
When making a release, this is usually the version tag, e.g. "1.29.0.0", and will be
equal to the $destination input below. When back-porting this could be a commit sha instead.
required: true
type: string

destination:
description: |
The $destination folder, e.g. when "1.29.0.0" the metatheory will be deploy to:
https://intersectmbo.github.io/plutus/metatheory/1.29.0.0
required: true
type: string

latest:
description: |
If true, then the metatheory site will also be deploy to:
https://intersectmbo.github.io/plutus/metatheory/latest.
You want to leave this to true unless you are deploying old versions or back-porting.
type: boolean
required: true
default: true

jobs:
deploy:
Expand All @@ -49,8 +19,6 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@main
with:
ref: ${{ inputs.ref || github.ref_name }}

- name: Build Site
run: |
Expand All @@ -62,14 +30,14 @@ jobs:
uses: JamesIves/github-pages-deploy-action@v4.6.3
with:
folder: _site
target-folder: metatheory/${{ inputs.destination || github.ref_name }}
single-commit: true

- name: Deploy Latest
if: ${{ inputs.latest == true }}
uses: JamesIves/github-pages-deploy-action@v4.6.3
with:
folder: _site
target-folder: metatheory/latest
target-folder: metatheory
single-commit: true

- name: Check Broken Links
run: |
URL="https://plutus.cardano.intersectmbo.org/metatheory"
linkchecker --no-warnings --check-extern --output failures "${URL}"
if [ $? -ne 0 ]; then
echo "${URL}" has broken links, see output above"
exit 1
fi
2 changes: 1 addition & 1 deletion .github/workflows/papers-and-specs.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# This job builds various papers and deploys them to:
# https://intersectmbo.github.io/plutus/resources
# https://plutus.cardano.intersectmbo.org/resources

name: "📝 Papers & Specs"

Expand Down
22 changes: 11 additions & 11 deletions README.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,11 @@ After setting it up you should just be able to depend on the `plutus` packages a

=== User documentation

The main documentation is located https://intersectmbo.github.io/plutus/docs/[here].
The main documentation is located https://plutus.cardano.intersectmbo.org/docs/[here].

The haddock documentation is located https://intersectmbo.github.io/plutus/haddock/latest[here].
The haddock documentation is located https://plutus.cardano.intersectmbo.org/haddock/latest[here].

The documentation for the metatheory can be found https://intersectmbo.github.io/plutus/metatheory/latest[here].
The documentation for the metatheory can be found https://plutus.cardano.intersectmbo.org/metatheory[here].

=== Talks

Expand All @@ -55,17 +55,17 @@ The documentation for the metatheory can be found https://intersectmbo.github.io

=== Specifications and design

- https://intersectmbo.github.io/plutus/resources/plutus-report.pdf[Plutus Technical Report (draft)]: a technical report and design document for the project.
- https://intersectmbo.github.io/plutus/resources/plutus-core-spec.pdf[Plutus Core Specification]: the formal specification of the core language.
- https://intersectmbo.github.io/plutus/resources/extended-utxo-spec.pdf[Extended UTXO Model]: a design document for the core changes to the Cardano ledger.
- https://plutus.cardano.intersectmbo.org/resources/plutus-report.pdf[Plutus Technical Report (draft)]: a technical report and design document for the project.
- https://plutus.cardano.intersectmbo.org/resources/plutus-core-spec.pdf[Plutus Core Specification]: the formal specification of the core language.
- https://plutus.cardano.intersectmbo.org/resources/extended-utxo-spec.pdf[Extended UTXO Model]: a design document for the core changes to the Cardano ledger.

=== Academic papers

- https://intersectmbo.github.io/plutus/resources/unraveling-recursion-paper.pdf[Unraveling Recursion]: a description of some of the compilation strategies used in Plutus IR (https://doi.org/10.1007/978-3-030-33636-3_15[published version]).
- https://intersectmbo.github.io/plutus/resources/system-f-in-agda-paper.pdf[System F in Agda]: a formal model of System F in Agda (https://doi.org/10.1007/978-3-030-33636-3_10[published version]).
- https://intersectmbo.github.io/plutus/resources/eutxo-paper.pdf[The Extended UTXO Model]: a full presentation of the EUTXO ledger extension (https://doi.org/10.1007/978-3-030-54455-3_37[published version]).
- https://intersectmbo.github.io/plutus/resources/utxoma-paper.pdf[UTXOma: UTXO with Multi-Asset Support]: a full presentation of the multi-asset ledger extension (https://doi.org/10.1007/978-3-030-61467-6_8[published version]).
- https://intersectmbo.github.io/plutus/resources/eutxoma-paper.pdf[Native Custom Tokens in the Extended UTXO Model]: a discussion of the interaction of the multi-asset support with EUTXO (https://doi.org/10.1007/978-3-030-61467-6_7[published version]).
- https://plutus.cardano.intersectmbo.org/resources/unraveling-recursion-paper.pdf[Unraveling Recursion]: a description of some of the compilation strategies used in Plutus IR (https://doi.org/10.1007/978-3-030-33636-3_15[published version]).
- https://plutus.cardano.intersectmbo.org/resources/system-f-in-agda-paper.pdf[System F in Agda]: a formal model of System F in Agda (https://doi.org/10.1007/978-3-030-33636-3_10[published version]).
- https://plutus.cardano.intersectmbo.org/resources/eutxo-paper.pdf[The Extended UTXO Model]: a full presentation of the EUTXO ledger extension (https://doi.org/10.1007/978-3-030-54455-3_37[published version]).
- https://plutus.cardano.intersectmbo.org/resources/utxoma-paper.pdf[UTXOma: UTXO with Multi-Asset Support]: a full presentation of the multi-asset ledger extension (https://doi.org/10.1007/978-3-030-61467-6_8[published version]).
- https://plutus.cardano.intersectmbo.org/resources/eutxoma-paper.pdf[Native Custom Tokens in the Extended UTXO Model]: a discussion of the interaction of the multi-asset support with EUTXO (https://doi.org/10.1007/978-3-030-61467-6_7[published version]).
- https://arxiv.org/abs/2201.04919[Translation Certification for Smart Contracts]: a certifier of Plutus IR compiler passes written in Coq.

== Licensing
Expand Down
2 changes: 1 addition & 1 deletion doc/docusaurus/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,4 @@ yarn start # for live development on localhost

Go to the [docusaurus-site.yml](https://github.com/IntersectMBO/plutus/actions/workflows/docusaurus-site.yml) workflow and click `Run workflow` on the right.

This will build and publish the website to [GitHub pages](https://intersectmbo.github.io/plutus/docs).
This will build and publish the website to [GitHub pages](https://plutus.cardano.intersectmbo.org/plutus/docs).
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,4 @@ Supporting "mixed" code in this way enables libraries written with the Plutus Ha

The formal details of Plutus Core are in its [specification](https://github.com/IntersectMBO/plutus#specifications-and-design).

The design is discussed in the [technical report](https://intersectmbo.github.io/plutus/resources/plutus-report.pdf).
The design is discussed in the [technical report](https://plutus.cardano.intersectmbo.org/plutus/resources/plutus-report.pdf).
2 changes: 1 addition & 1 deletion doc/docusaurus/docs/essential-concepts/plutus-platform.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -87,5 +87,5 @@ Even simple applications must deal with this complexity, and for more advanced a

- Michael Peyton-Jones and Jann Mueller introduce the Plutus platform in [this session](https://youtu.be/usMPt8KpBeI?si=4zkS3J7Bq8aFxWbU) from the Cardano 2020 event.

- The design of the platform is discussed in the [Plutus technical report](https://intersectmbo.github.io/plutus/resources/plutus-report.pdf).
- The design of the platform is discussed in the [Plutus technical report](https://plutus.cardano.intersectmbo.org/plutus/resources/plutus-report.pdf).

6 changes: 3 additions & 3 deletions doc/docusaurus/docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ All of these elements are used in combination to write Plutus Core scripts that

To develop and deploy a smart contract, you also need off-chain code for building transactions, submitting transactions, deploying smart contracts, querying for available UTXOs on the chain, and so on. You may also want a front-end interface for your smart contract for a better user experience.

Plutus allows all programming to be done from a [single Haskell library](https://intersectmbo.github.io/plutus/haddock/latest). This lets developers build secure applications, forge new assets, and create smart contracts in a predictable, deterministic environment with the highest level of assurance. Furthermore, developers don’t have to run a full Cardano node to test their work.
Plutus allows all programming to be done from a [single Haskell library](https://plutus.cardano.intersectmbo.org/plutus/haddock/latest). This lets developers build secure applications, forge new assets, and create smart contracts in a predictable, deterministic environment with the highest level of assurance. Furthemore, developers don’t have to run a full Cardano node to test their work.

With Plutus you can:

Expand All @@ -38,15 +38,15 @@ See, for example:

- the [Cardano ledger specification](https://github.com/IntersectMBO/cardano-ledger#cardano-ledger)
- the [Plutus Core specification](https://github.com/IntersectMBO/plutus#specifications-and-design)
- the [public Plutus code libraries](https://intersectmbo.github.io/plutus/haddock/latest) generated using Haddock.
- the [public Plutus code libraries](https://plutus.cardano.intersectmbo.org/plutus/haddock/latest) generated using Haddock.

## The Plutus repository

The [Plutus repository](https://github.com/IntersectMBO/plutus) includes:

* the implementation, specification, and mechanized metatheory of Plutus Core
* the Plutus Tx compiler
* the combined documentation, generated using Haddock, for all the [public Plutus code libraries](https://intersectmbo.github.io/plutus/haddock/latest), such as `PlutusTx.List`, enabling developers to write Haskell code that can be compiled to Plutus Core.
* the combined documentation, generated using Haddock, for all the [public Plutus code libraries](https://plutus.cardano.intersectmbo.org/plutus/haddock/latest), such as `PlutusTx.List`, enabling developers to write Haskell code that can be compiled to Plutus Core.

## Educational resources

Expand Down
10 changes: 5 additions & 5 deletions doc/docusaurus/docs/reference/haddock-documentation.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@ sidebar_position: 3

## Public Plutus code libraries

The documentation generated by Haddock provides a comprehehsive reference for the [public Plutus code libraries](https://intersectmbo.github.io/plutus/haddock/latest), an essential resource for developers working with Haskell and Plutus Core.
The documentation generated by Haddock provides a comprehehsive reference for the [public Plutus code libraries](https://plutus.cardano.intersectmbo.org/plutus/haddock/latest), an essential resource for developers working with Haskell and Plutus Core.

### Highlighted modules

Highlighted modules in the documentation include the following:
- [PlutusTx](https://intersectmbo.github.io/plutus/haddock/latest/plutus-tx/PlutusTx.html): compiling Haskell to PLC (Plutus Core; on-chain code)
- [PlutusTx.Prelude](https://intersectmbo.github.io/plutus/haddock/latest/plutus-tx/PlutusTx-Prelude.html): Haskell prelude replacement compatible with PLC
- [PlutusCore](https://intersectmbo.github.io/plutus/haddock/latest/plutus-core/PlutusCore.html): programming language in which scripts on the Cardano blockchain are written
- [UntypedPlutusCore](https://intersectmbo.github.io/plutus/haddock/latest/plutus-core/UntypedPlutusCore.html): on-chain Plutus code.
- [PlutusTx](https://plutus.cardano.intersectmbo.org/plutus/haddock/latest/plutus-tx/PlutusTx.html): compiling Haskell to PLC (Plutus Core; on-chain code)
- [PlutusTx.Prelude](https://plutus.cardano.intersectmbo.org/plutus/haddock/latest/plutus-tx/PlutusTx-Prelude.html): Haskell prelude replacement compatible with PLC
- [PlutusCore](https://plutus.cardano.intersectmbo.org/plutus/haddock/latest/plutus-core/PlutusCore.html): programming language in which scripts on the Cardano blockchain are written
- [UntypedPlutusCore](https://plutus.cardano.intersectmbo.org/plutus/haddock/latest/plutus-core/UntypedPlutusCore.html): on-chain Plutus code.
6 changes: 1 addition & 5 deletions doc/docusaurus/docusaurus.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,10 @@ const config: Config = {
favicon: "img/favicon.ico",

// Set the production url of your site here
url: "https://intersectmbo.github.io",
url: "https://plutus.cardano.intersectmbo.org",

// Set the /<baseUrl>/ pathname under which your site is served
// For GitHub pages deployment, it is often '/<projectName>/'
// WARNING: normally this would be /plutus/docs/, because
// https://intersectmbo.github.io is a GitHub Pages URL.
// However we setup a redirect from intersectmbo.github.io/plutus
// to plutus.cardano.intersectmbo.org, so /docs/ is used here instead.
baseUrl: "/docs/",

// GitHub pages deployment config.
Expand Down
2 changes: 1 addition & 1 deletion doc/plutus-core-spec/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ This directory contains a draft of a version of the Plutus Core specification
updated so that the language is parametric over a collection of built-in types
and functions. It also updates the specification to reflect the fact that
built-in functions can now be partially applied. ~Click
[here](https://intersectmbo.github.io/plutus/resources/plutus-core-spec.pdf)
[here](https://plutus.cardano.intersectmbo.org/resources/plutus-core-spec.pdf)
to open a PDF of the most recent version of the specification in the main branch
of this repository.~ The link given in the previous sentence currently appears to be broken: would-be readers should build the PDF themselves. On a Linux system, `make` in the main source directory should do this.

Expand Down
4 changes: 2 additions & 2 deletions doc/read-the-docs-site/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@ https://plutus.readthedocs.io
```
Is now permanently redirecting to:
```
https://intersectmbo.github.io/plutus/docs
https://plutus.cardano.intersectmbo.org/docs
```
Using the [Exact Redirect](https://readthedocs.org/dashboard/plutus/redirects/):
```
/* -> https://intersectmbo.github.io/plutus/docs
/* -> https://plutus.cardano.intersectmbo.org/docs
```
And the [GitHub Webhook](https://readthedocs.org/dashboard/plutus/webhooks/) has been deleted.

2 changes: 1 addition & 1 deletion plutus-core/docs/BuiltinsOverview.md
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ toBuiltinMeaning
-> BuiltinMeaning val (CostingPart uni fun)
```

i.e. in order to construct a `BuiltinMeaning` one needs not only a built-in function, but also a semantics variant (a "version") of the set of built-in functions. You can read more about versioning of builtins and everything else in [CIP-35](https://cips.cardano.org/cips/cip35) and in Chapter 4 of the Plutus Core [specification](https://intersectmbo.github.io/plutus/resources/plutus-core-spec.pdf#page=8).
i.e. in order to construct a `BuiltinMeaning` one needs not only a built-in function, but also a semantics variant (a "version") of the set of built-in functions. You can read more about versioning of builtins and everything else in [CIP-35](https://cips.cardano.org/cips/cip35) and in Chapter 4 of the Plutus Core [specification](https://plutus.cardano.intersectmbo.org/resources/plutus-core-spec.pdf#page=8).

We do not construct `BuiltinMeaning`s manually, because that would be extremely laborious. Instead, we use an auxiliary function that does the heavy lifting for us. Here's its type signature with a few lines of constraints omitted for clarity:

Expand Down
Loading

0 comments on commit 92f390c

Please sign in to comment.