From 1b6219151cdb0ea8409b78e34477b903fad73d23 Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Fri, 3 Nov 2023 02:03:08 +0530 Subject: [PATCH] refactor(docs): automatically publish docs from CI --- .github/workflows/web.yml | 88 +++++++ .gitignore | 3 + README.md | 2 +- docs/adnix-installer.ps1.txt | 193 ---------------- docs/adnix-installer.sh.txt | 280 ----------------------- docs/artifacts.js | 245 -------------------- docs/artifacts/index.html | 212 ----------------- docs/index.html | 431 ----------------------------------- docs/oranda-v0.2.0.css | 3 - oranda.json | 14 +- 10 files changed, 102 insertions(+), 1369 deletions(-) create mode 100644 .github/workflows/web.yml delete mode 100644 docs/adnix-installer.ps1.txt delete mode 100644 docs/adnix-installer.sh.txt delete mode 100644 docs/artifacts.js delete mode 100644 docs/artifacts/index.html delete mode 100644 docs/index.html delete mode 100644 docs/oranda-v0.2.0.css diff --git a/.github/workflows/web.yml b/.github/workflows/web.yml new file mode 100644 index 0000000..1792454 --- /dev/null +++ b/.github/workflows/web.yml @@ -0,0 +1,88 @@ +# Workflow to build your docs with oranda (and mdbook) +# and deploy them to Github Pages +name: Web + +# We're going to push to the gh-pages branch, so we need that permission +permissions: + contents: write + +# What situations do we want to build docs in? +# All of these work independently and can be removed / commented out +# if you don't want oranda/mdbook running in that situation +on: + # Check that a PR didn't break docs! + # + # Note that the "Deploy to Github Pages" step won't run in this mode, + # so this won't have any side-effects. But it will tell you if a PR + # completely broke oranda/mdbook. Sadly we don't provide previews (yet)! + pull_request: + + # Whenever something gets pushed to main, update the docs! + # This is great for getting docs changes live without cutting a full release. + # + # Note that if you're using cargo-dist, this will "race" the Release workflow + # that actually builds the Github Release that oranda tries to read (and + # this will almost certainly complete first). As a result you will publish + # docs for the latest commit but the oranda landing page won't know about + # the latest release. The workflow_run trigger below will properly wait for + # cargo-dist, and so this half-published state will only last for ~10 minutes. + # + # If you only want docs to update with releases, disable this, or change it to + # a "release" branch. You can, of course, also manually trigger a workflow run + # when you want the docs to update. + push: + branches: + - main + + # Whenever a workflow called "Release" completes, update the docs! + # + # If you're using cargo-dist, this is recommended, as it will ensure that + # oranda always sees the latest release right when it's available. Note + # however that Github's UI is wonky when you use workflow_run, and won't + # show this workflow as part of any commit. You have to go to the "actions" + # tab for your repo to see this one running (the gh-pages deploy will also + # only show up there). + workflow_run: + workflows: [ "Release" ] + types: + - completed + +# Alright, let's do it! +jobs: + web: + name: Build and deploy site and docs + runs-on: ubuntu-latest + steps: + # Setup + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + - uses: dtolnay/rust-toolchain@stable + - uses: swatinem/rust-cache@v2 + + # If you use any mdbook plugins, here's the place to install them! + + # Install and run oranda (and mdbook) + # This will write all output to ./public/ (including copying mdbook's output to there) + - name: Install and run oranda + run: | + curl --proto '=https' --tlsv1.2 -LsSf https://github.com/axodotdev/oranda/releases/download/v0.5.0/oranda-installer.sh | sh + oranda build + + # Deploy to our gh-pages branch (creating it if it doesn't exist) + # the "public" dir that oranda made above will become the root dir + # of this branch. + # + # Note that once the gh-pages branch exists, you must + # go into repo's settings > pages and set "deploy from branch: gh-pages" + # the other defaults work fine. + - name: Deploy to Github Pages + uses: JamesIves/github-pages-deploy-action@v4.4.1 + # ONLY if we're on main (so no PRs or feature branches allowed!) + if: ${{ github.ref == 'refs/heads/main' }} + with: + branch: gh-pages + # Gotta tell the action where to find oranda's output + folder: public + token: ${{ secrets.GITHUB_TOKEN }} + single-commit: true \ No newline at end of file diff --git a/.gitignore b/.gitignore index 966a99c..68b7fc1 100644 --- a/.gitignore +++ b/.gitignore @@ -130,3 +130,6 @@ fabric.properties .idea/**/markdown-navigator/ # End of https://www.gitignore.io/api/clion + +# Generated by `oranda generate ci` +public/ diff --git a/README.md b/README.md index 80a7bec..1c4fa18 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ OPTIONS: Sample sources file for use with adnix. -```plaintext +``` Yoyo|http://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=0&mimetype=plaintext Malware Domain List|http://www.malwaredomainlist.com/hostslist/hosts.txt ``` diff --git a/docs/adnix-installer.ps1.txt b/docs/adnix-installer.ps1.txt deleted file mode 100644 index 3e69e9c..0000000 --- a/docs/adnix-installer.ps1.txt +++ /dev/null @@ -1,193 +0,0 @@ -# Licensed under the MIT license -# , at your -# option. This file may not be copied, modified, or distributed -# except according to those terms. - -# This is just a little script that can be downloaded from the internet to -# install an app. It downloads the tarball from artifact_download_url, -# and extracts it to ~/.cargo/bin/ -# -# In the future this script will gain extra features, but for now it's -# intentionally very simplistic to avoid shipping broken things. - -param ( - [Parameter(HelpMessage = 'The name of the App')] - [string]$app_name = 'adnix', - [Parameter(HelpMessage = 'The version of the App')] - [string]$app_version = '0.4.6', - [Parameter(HelpMessage = 'The URL of the directory where artifacts can be fetched from')] - [string]$artifact_download_url = 'https://github.com/msfjarvis/adnix-rs/releases/download/v0.4.6' -) - -function Install-Binary($install_args) { - $old_erroractionpreference = $ErrorActionPreference - $ErrorActionPreference = 'stop' - - Initialize-Environment - - # Platform info injected by cargo-dist - $platforms = @{ - "x86_64-pc-windows-msvc" = @{ - "artifact_name" = "adnix-x86_64-pc-windows-msvc.zip" - "bins" = "adnix.exe" - "zip_ext" = ".zip" - } - } - - $fetched = Download "$artifact_download_url" $platforms - # FIXME: add a flag that lets the user not do this step - Invoke-Installer $fetched "$install_args" - - $ErrorActionPreference = $old_erroractionpreference -} - -function Get-TargetTriple() { - try { - # NOTE: this might return X64 on ARM64 Windows, which is OK since emulation is available. - # It works correctly starting in PowerShell Core 7.3 and Windows PowerShell in Win 11 22H2. - # Ideally this would just be - # [System.Runtime.InteropServices.RuntimeInformation]::OSArchitecture - # but that gets a type from the wrong assembly on Windows PowerShell (i.e. not Core) - $a = [System.Reflection.Assembly]::LoadWithPartialName("System.Runtime.InteropServices.RuntimeInformation") - $t = $a.GetType("System.Runtime.InteropServices.RuntimeInformation") - $p = $t.GetProperty("OSArchitecture") - # Possible OSArchitecture Values: https://learn.microsoft.com/dotnet/api/system.runtime.interopservices.architecture - # Rust supported platforms: https://doc.rust-lang.org/stable/rustc/platform-support.html - switch ($p.GetValue($null).ToString()) - { - "X86" { return "i686-pc-windows-msvc" } - "X64" { return "x86_64-pc-windows-msvc" } - "Arm" { return "thumbv7a-pc-windows-msvc" } - "Arm64" { return "aarch64-pc-windows-msvc" } - } - } catch { - # The above was added in .NET 4.7.1, so Windows PowerShell in versions of Windows - # prior to Windows 10 v1709 may not have this API. - Write-Verbose "Get-TargetTriple: Exception when trying to determine OS architecture." - Write-Verbose $_ - } - - # This is available in .NET 4.0. We already checked for PS 5, which requires .NET 4.5. - Write-Verbose("Get-TargetTriple: falling back to Is64BitOperatingSystem.") - if ([System.Environment]::Is64BitOperatingSystem) { - return "x86_64-pc-windows-msvc" - } else { - return "i686-pc-windows-msvc" - } -} - -function Download($download_url, $platforms) { - # FIXME: make this something we lookup based on the current machine - $arch = Get-TargetTriple - - if (-not $platforms.ContainsKey($arch)) { - # X64 is well-supported, including in emulation on ARM64 - Write-Verbose "$arch is not availablem falling back to X64" - $arch = "x86_64-pc-windows-msvc" - } - - if (-not $platforms.ContainsKey($arch)) { - # should not be possible, as currently we always produce X64 binaries. - $platforms_json = ConvertTo-Json $platforms - throw "ERROR: could not find binaries for this platform. Last platform tried: $arch platform info: $platforms_json" - } - - # Lookup what we expect this platform to look like - $info = $platforms[$arch] - $zip_ext = $info["zip_ext"] - $bin_names = $info["bins"] - $artifact_name = $info["artifact_name"] - - # Make a new temp dir to unpack things to - $tmp = New-Temp-Dir - $dir_path = "$tmp\$app_name$zip_ext" - - # Download and unpack! - $url = "$download_url/$artifact_name" - "Downloading $app_name $app_version $arch" | Out-Host - " from $url" | Out-Host - " to $dir_path" | Out-Host - $wc = New-Object Net.Webclient - $wc.downloadFile($url, $dir_path) - - "Unpacking to $tmp" | Out-Host - - # Select the tool to unpack the files with. - # - # As of windows 10(?), powershell comes with tar preinstalled, but in practice - # it only seems to support .tar.gz, and not xz/zstd. Still, we should try to - # forward all tars to it in case the user has a machine that can handle it! - switch -Wildcard ($zip_ext) { - ".zip" { - Expand-Archive -Path $dir_path -DestinationPath "$tmp"; - Break - } - ".tar.*" { - tar xf $dir_path --strip-components 1 -C "$tmp"; - Break - } - Default { - throw "ERROR: unknown archive format $zip_ext" - } - } - - # Let the next step know what to copy - $bin_paths = @() - foreach ($bin_name in $bin_names) { - " Unpacked $bin_name" | Out-Host - $bin_paths += "$tmp\$bin_name" - } - return $bin_paths -} - -function Invoke-Installer($bin_paths) { - # FIXME: respect $CARGO_HOME if set - # FIXME: add a flag that lets the user pick this dir - # FIXME: try to detect other "nice" dirs on the user's PATH? - # FIXME: detect if the selected install dir exists or is on PATH? - $dest_dir = New-Item -Force -ItemType Directory -Path (Join-Path $HOME ".cargo\bin") - - "Installing to $dest_dir" | Out-Host - # Just copy the binaries from the temp location to the install dir - foreach ($bin_path in $bin_paths) { - Copy-Item "$bin_path" -Destination "$dest_dir" - Remove-Item "$bin_path" -Recurse -Force - } - - "Everything's installed!" | Out-Host -} - -function Initialize-Environment() { - If (($PSVersionTable.PSVersion.Major) -lt 5) { - Write-Error "PowerShell 5 or later is required to install $app_name." - Write-Error "Upgrade PowerShell: https://docs.microsoft.com/en-us/powershell/scripting/setup/installing-windows-powershell" - break - } - - # show notification to change execution policy: - $allowedExecutionPolicy = @('Unrestricted', 'RemoteSigned', 'ByPass') - If ((Get-ExecutionPolicy).ToString() -notin $allowedExecutionPolicy) { - Write-Error "PowerShell requires an execution policy in [$($allowedExecutionPolicy -join ", ")] to run $app_name." - Write-Error "For example, to set the execution policy to 'RemoteSigned' please run :" - Write-Error "'Set-ExecutionPolicy RemoteSigned -scope CurrentUser'" - break - } - - # GitHub requires TLS 1.2 - If ([System.Enum]::GetNames([System.Net.SecurityProtocolType]) -notcontains 'Tls12') { - Write-Error "Installing $app_name requires at least .NET Framework 4.5" - Write-Error "Please download and install it first:" - Write-Error "https://www.microsoft.com/net/download" - break - } -} - -function New-Temp-Dir() { - [CmdletBinding(SupportsShouldProcess)] - param() - $parent = [System.IO.Path]::GetTempPath() - [string] $name = [System.Guid]::NewGuid() - New-Item -ItemType Directory -Path (Join-Path $parent $name) -} - -Install-Binary "$Args" diff --git a/docs/adnix-installer.sh.txt b/docs/adnix-installer.sh.txt deleted file mode 100644 index a346c2b..0000000 --- a/docs/adnix-installer.sh.txt +++ /dev/null @@ -1,280 +0,0 @@ -#!/bin/bash -# -# Licensed under the MIT license -# , at your -# option. This file may not be copied, modified, or distributed -# except according to those terms. - -# This is just a little script that can be downloaded from the internet to -# install $APP_NAME. It downloads the tarball from ARTIFACT_DOWNLOAD_URL, -# and extracts it to ~/.cargo/bin/ -# -# In the future this script will gain extra features, but for now it's -# intentionally very simplistic to avoid shipping broken things. - -set -u - -# FIXME: patch in the repo's URL for suggesting filling an issue -# REPO="{{REPO_URL}}" -APP_NAME="adnix" -APP_VERSION="0.4.6" -ARTIFACT_DOWNLOAD_URL="https://github.com/msfjarvis/adnix-rs/releases/download/v0.4.6" - -download_binary_and_run_installer() { - downloader --check - need_cmd mktemp - need_cmd chmod - need_cmd mkdir - need_cmd rm - need_cmd rmdir - need_cmd tar - need_cmd which - need_cmd dirname - need_cmd awk - need_cmd cut - - - get_architecture || return 1 - local _arch="$RETVAL" - assert_nz "$_arch" "arch" - - local _bins="" - local _zip_ext="" - local _artifact_name="" - - # This """lookup table""" is generated by cargo-dist - # and populates the above locals with the right values - case "$_arch" in - "aarch64-apple-darwin") - _artifact_name="adnix-aarch64-apple-darwin.tar.xz" - _zip_ext=".tar.xz" - _bins="adnix" - ;; - "x86_64-apple-darwin") - _artifact_name="adnix-x86_64-apple-darwin.tar.xz" - _zip_ext=".tar.xz" - _bins="adnix" - ;; - "x86_64-unknown-linux-gnu") - _artifact_name="adnix-x86_64-unknown-linux-gnu.tar.xz" - _zip_ext=".tar.xz" - _bins="adnix" - ;; - *) - err "there isn't a package for $_arch" - ;; - esac - - # download the zip - local _url="$ARTIFACT_DOWNLOAD_URL/$_artifact_name" - local _dir="$(mktemp -d 2>/dev/null || ensure mktemp -d -t $APP_NAME)" - local _file="$_dir/input$_zip_ext" - - say "downloading $APP_NAME $APP_VERSION ${_arch}" 1>&2 - say " from $_url" 1>&2 - say " to $_file" 1>&2 - - ensure mkdir -p "$_dir" - downloader "$_url" "$_file" - if [ $? != 0 ]; then - say "failed to download $_url" - say "this may be a standard network error, but it may also indicate" - say "that $APP_NAME's release process is not working. When in doubt" - say "please feel free to open an issue!" - # say "$REPO/issues/new/choose" - exit 1 - fi - - # unpack the archive - say "unpacking to $_dir" 1>&2 - case "$_zip_ext" in - ".zip") - ensure unzip -q "$_file" -d "$_dir" - ;; - - ".tar."*) - ensure tar xf "$_file" --strip-components 1 -C "$_dir" - ;; - *) - err "unknown archive format: $_zip_ext" - ;; - esac - - for _bin_name in $_bins; do - say " unpacked $_bin_name" - done - - install "$_dir" "$_bins" "$@" - local _retval=$? - - ignore rm -rf "$_dir" - - return "$_retval" -} - -install() { - # FIXME: prefer $CARGO_HOME over $HOME/.cargo/ if available - # FIXME: let the user choose the dir to install to - local _install_dir="$HOME/.cargo/bin/" - say "installing to $_install_dir" - mkdir -p "$_install_dir" - - # copy all the binaries to the install dir - local _src_dir="$1" - local _bins="$2" - for _bin_name in $_bins; do - local _bin="$_src_dir/$_bin_name" - cp "$_bin" "$_install_dir" - # unzip seems to need this chmod - chmod +x "$_install_dir/$_bin_name" - done - - say "everything's installed!" -} - -get_architecture() { - local _ostype="$(uname -s)" - local _cputype="$(uname -m)" - - if [ "$_ostype" = Darwin -a "$_cputype" = i386 ]; then - # Darwin `uname -s` lies - if sysctl hw.optional.x86_64 | grep -q ': 1'; then - local _cputype=x86_64 - fi - fi - - if [ "$_ostype" = Darwin -a "$_cputype" = arm64 ]; then - # Darwin `uname -s` doesn't seem to lie on Big Sur - # but the cputype we want is called aarch64, not arm64 (they are equivalent) - local _cputype=aarch64 - fi - - case "$_ostype" in - Linux) - if has_required_glibc; then - local _ostype=unknown-linux-gnu - else - local _ostype=unknown-linux-musl - say "Downloading musl binary." - fi - ;; - - Darwin) - local _ostype=apple-darwin - ;; - - MINGW* | MSYS* | CYGWIN*) - local _ostype=pc-windows-msvc - ;; - - *) - err "no precompiled binaries available for OS: $_ostype" - ;; - esac - - case "$_cputype" in - # these are the only two acceptable values for cputype - x86_64 | aarch64 ) - ;; - *) - err "no precompiled binaries available for CPU architecture: $_cputype" - - esac - - local _arch="$_cputype-$_ostype" - - RETVAL="$_arch" -} - -say() { - local green=`tput setaf 2 2>/dev/null || echo ''` - local reset=`tput sgr0 2>/dev/null || echo ''` - echo "$1" -} - -err() { - local red=`tput setaf 1 2>/dev/null || echo ''` - local reset=`tput sgr0 2>/dev/null || echo ''` - say "${red}ERROR${reset}: $1" >&2 - exit 1 -} - -has_required_glibc() { - local _ldd_version="$(ldd --version 2>&1 | head -n1)" - # glibc version string is inconsistent across distributions - # instead check if the string does not contain musl (case insensitive) - if echo "${_ldd_version}" | grep -iv musl >/dev/null; then - local _glibc_version=$(echo "${_ldd_version}" | awk 'NR==1 { print $NF }') - local _glibc_major_version=$(echo "${_glibc_version}" | cut -d. -f1) - local _glibc_min_version=$(echo "${_glibc_version}" | cut -d. -f2) - local _min_major_version=2 - local _min_minor_version=17 - if [ "${_glibc_major_version}" -gt "${_min_major_version}" ] \ - || { [ "${_glibc_major_version}" -eq "${_min_major_version}" ] \ - && [ "${_glibc_min_version}" -ge "${_min_minor_version}" ]; }; then - return 0 - else - say "This operating system needs glibc >= ${_min_major_version}.${_min_minor_version}, but only has ${_libc_version} installed." - fi - else - say "This operating system does not support dynamic linking to glibc." - fi - - return 1 -} - -need_cmd() { - if ! check_cmd "$1" - then err "need '$1' (command not found)" - fi -} - -check_cmd() { - command -v "$1" > /dev/null 2>&1 - return $? -} - -need_ok() { - if [ $? != 0 ]; then err "$1"; fi -} - -assert_nz() { - if [ -z "$1" ]; then err "assert_nz $2"; fi -} - -# Run a command that should never fail. If the command fails execution -# will immediately terminate with an error showing the failing -# command. -ensure() { - "$@" - need_ok "command failed: $*" -} - -# This is just for indicating that commands' results are being -# intentionally ignored. Usually, because it's being executed -# as part of error handling. -ignore() { - "$@" -} - -# This wraps curl or wget. Try curl first, if not installed, -# use wget instead. -downloader() { - if check_cmd curl - then _dld=curl - elif check_cmd wget - then _dld=wget - else _dld='curl or wget' # to be used in error message of need_cmd - fi - - if [ "$1" = --check ] - then need_cmd "$_dld" - elif [ "$_dld" = curl ] - then curl -sSfL "$1" -o "$2" - elif [ "$_dld" = wget ] - then wget "$1" -O "$2" - else err "Unknown downloader" # should not reach here - fi -} - -download_binary_and_run_installer "$@" || exit 1 diff --git a/docs/artifacts.js b/docs/artifacts.js deleted file mode 100644 index 2dbfc70..0000000 --- a/docs/artifacts.js +++ /dev/null @@ -1,245 +0,0 @@ -/* Code modified from the blender website - * https://www.blender.org/wp-content/themes/bthree/assets/js/get_os.js?x82196 - */ - -let options = { - windows64: "x86_64-pc-windows", - windows32: "i686-pc-windows", - windowsArm: "aarch64-pc-windows", - - mac64: "x86_64-apple", - mac32: "i686-apple", - macSilicon: "aarch64-apple", - - linux64: "x86_64-unknown-linux", - linux32: "i686-unknown-linux", - linuxArm: "aarch64-unknown-linux", - - // ios: "ios", - // android: "linux-android", - // freebsd: "freebsd", -}; - -function isAppleSilicon() { - try { - var glcontext = document.createElement("canvas").getContext("webgl"); - var debugrenderer = glcontext - ? glcontext.getExtension("WEBGL_debug_renderer_info") - : null; - var renderername = - (debugrenderer && - glcontext.getParameter(debugrenderer.UNMASKED_RENDERER_WEBGL)) || - ""; - if (renderername.match(/Apple M/) || renderername.match(/Apple GPU/)) { - return true; - } - - return false; - } catch (e) {} -} - -function getOS() { - var OS = options.windows64.default; - var userAgent = navigator.userAgent; - var platform = navigator.platform; - - if (navigator.appVersion.includes("Win")) { - if ( - !userAgent.includes("Windows NT 5.0") && - !userAgent.includes("Windows NT 5.1") && - (userAgent.indexOf("Win64") > -1 || - platform == "Win64" || - userAgent.indexOf("x86_64") > -1 || - userAgent.indexOf("x86_64") > -1 || - userAgent.indexOf("amd64") > -1 || - userAgent.indexOf("AMD64") > -1 || - userAgent.indexOf("WOW64") > -1) - ) { - OS = options.windows64; - } else { - if ( - window.external && - window.external.getHostEnvironmentValue && - window.external - .getHostEnvironmentValue("os-architecture") - .includes("ARM64") - ) { - OS = options.windowsArm; - } else { - try { - var canvas = document.createElement("canvas"); - var gl = canvas.getContext("webgl"); - - var debugInfo = gl.getExtension("WEBGL_debug_renderer_info"); - var renderer = gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL); - if (renderer.includes("Qualcomm")) OS = options.windowsArm; - } catch (e) {} - } - } - } - - //MacOS, MacOS X, macOS - if (navigator.appVersion.includes("Mac")) { - if ( - navigator.userAgent.includes("OS X 10.5") || - navigator.userAgent.includes("OS X 10.6") - ) { - OS = options.mac32; - } else { - OS = options.mac64; - - const isSilicon = isAppleSilicon(); - if (isSilicon) { - OS = options.macSilicon; - } - } - } - - // linux - if (platform.includes("Linux")) { - OS = options.linux64; - // FIXME: Can we find out whether linux 32-bit or ARM are used? - } - - // if ( - // userAgent.includes("iPad") || - // userAgent.includes("iPhone") || - // userAgent.includes("iPod") - // ) { - // OS = options.ios; - // } - // if (platform.toLocaleLowerCase().includes("freebsd")) { - // OS = options.freebsd; - // } - - return OS; -} - -let os = getOS(); -window.os = os; - -// Unhide and hydrate selector with events -const archSelect = document.querySelector(".arch-select"); -if (archSelect) { - archSelect.classList.remove("hidden"); - const selector = document.querySelector("#install-arch-select"); - if (selector) { - selector.addEventListener("change", onArchChange); - } -} - -// Hydrate tab buttons with events -Array.from(document.querySelectorAll(".install-tab[data-id]")).forEach((tab) => { - tab.addEventListener("click", onTabClick); -}); - -function onArchChange(evt) { - // Get target - const target = evt.currentTarget.value; - // Find corresponding installer lists - const newContentEl = document.querySelector(`.arch[data-arch=${target}]`); - const oldContentEl = document.querySelector(`.arch[data-arch]:not(.hidden)`); - // Hide old content element (if applicable) - if (oldContentEl) { - oldContentEl.classList.add("hidden"); - } - // Show new content element - newContentEl.classList.remove("hidden"); - // Show the first tab's content if nothing was selected before - if (newContentEl.querySelectorAll(".install-tab.selected").length === 0) { - const firstContentChild = newContentEl.querySelector(".install-content:first-of-type"); - const firstTabChild = newContentEl.querySelector(".install-tab:first-of-type"); - firstContentChild.classList.remove("hidden"); - if (firstTabChild) { - firstTabChild.classList.add("selected"); - } - } - // Hide "no OS detected" message - const noDetectEl = document.querySelector(".no-autodetect"); - noDetectEl.classList.add("hidden"); - // Hide Mac hint - document.querySelector(".mac-switch").classList.add("hidden"); -} - -function onTabClick(evt) { - // Get target and ID - const {triple, id} = evt.currentTarget.dataset; - if (triple) { - // Find corresponding content elements - const newContentEl = document.querySelector(`.install-content[data-id="${String(id)}"][data-triple=${triple}]`); - const oldContentEl = document.querySelector(`.install-content[data-triple=${triple}][data-id]:not(.hidden)`); - // Find old tab to unselect - const oldTabEl = document.querySelector(`.install-tab[data-triple=${triple}].selected`); - // Hide old content element - if (oldContentEl && oldTabEl) { - oldContentEl.classList.add("hidden"); - oldTabEl.classList.remove("selected"); - } - - // Unhide new content element - newContentEl.classList.remove("hidden"); - // Select new tab element - evt.currentTarget.classList.add("selected"); - } -} - -const allPlatforms = Array.from(document.querySelectorAll(`.arch[data-arch]`)); -let hit = allPlatforms.find( - (a) => { - // Show Intel Mac downloads if no M1 Mac downloads are available - if ( - a.attributes["data-arch"].value.includes(options.mac64) && - os.includes(options.macSilicon) && - !allPlatforms.find(p => p.attributes["data-arch"].value.includes(options.macSilicon))) { - // Unhide hint - document.querySelector(".mac-switch").classList.remove("hidden"); - return true; - } - return a.attributes["data-arch"].value.includes(os); - } -); - -if (hit) { - hit.classList.remove("hidden"); - const selectEl = document.querySelector("#install-arch-select"); - selectEl.value = hit.dataset.arch; - const firstContentChild = hit.querySelector(".install-content:first-of-type"); - const firstTabChild = hit.querySelector(".install-tab:first-of-type"); - firstContentChild.classList.remove("hidden"); - if (firstTabChild) { - firstTabChild.classList.add("selected"); - } -} else { - const noDetectEl = document.querySelector(".no-autodetect"); - if (noDetectEl) { - const noDetectElDetails = document.querySelector(".no-autodetect-details"); - if (noDetectElDetails) { - noDetectElDetails.innerHTML = `We detected you're on ${os} but there don't seem to be installers for that. ` - } - noDetectEl.classList.remove("hidden"); - } -} - -let copyButtons = Array.from(document.querySelectorAll("[data-copy]")); -if (copyButtons.length) { - copyButtons.forEach(function (element) { - element.addEventListener("click", () => { - navigator.clipboard.writeText(element.attributes["data-copy"].value); - }); - }); -} - -// Toggle for pre releases -const checkbox = document.getElementById("show-prereleases"); - -if (checkbox) { - checkbox.addEventListener("click", () => { - const all = document.getElementsByClassName("pre-release"); - - if (all) { - for (var item of all) { - item.classList.toggle("hidden"); - } - } - }); -} \ No newline at end of file diff --git a/docs/artifacts/index.html b/docs/artifacts/index.html deleted file mode 100644 index 5c50645..0000000 --- a/docs/artifacts/index.html +++ /dev/null @@ -1,212 +0,0 @@ - - - - adnix - - - - - - - - - - - - - - - - - - - - - -
-
- - - - -
-
- -

adnix

- - - -
- - -
-
- - - -
-

powershell

-
-
-irm https://github.com/msfjarvis/adnix-rs/releases/download/v0.4.6/adnix-installer.ps1 | iex
- - - - - - - - - Source - -
-
- - - - -
-

shell

-
-
-curl --proto '=https' --tlsv1.2 -LsSf https://github.com/msfjarvis/adnix-rs/releases/download/v0.4.6/adnix-installer.sh | sh
- - - - - - - - - Source - -
-
- - - - - - - - - - -
-
-

Downloads

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FilePlatform
adnix-aarch64-apple-darwin.tar.xz - - - macOS Apple Silicon - - -
adnix-x86_64-apple-darwin.tar.xz - - - macOS Intel - - -
adnix-x86_64-pc-windows-msvc.zip - - - Windows x64 - - -
adnix-x86_64-unknown-linux-gnu.tar.xz - - - Linux x64 - - -
-
-
- -
-
- -
- - - - - adnix, MIT - -
-
- - - - - - - - - \ No newline at end of file diff --git a/docs/index.html b/docs/index.html deleted file mode 100644 index e34c1d6..0000000 --- a/docs/index.html +++ /dev/null @@ -1,431 +0,0 @@ - - - - adnix - - - - - - - - - - - - - - - - - - - - - -
-
- - - - -
-
- -

adnix

- - - -
- - - - - - - -
-
-

Install v0.4.6

- -
Published on Jul 24 2023 at 09:01 UTC
- - -
    - - - - - - - - - -
-
- - - - - - - - - -
- View all installation options - - - -
-
- -View all installation options - -

adnix-rs Version info No Maintenance Intended Built with Garnix

-

Rust reimplementation of sniner/adnix for educational purposes.

-

Installation

-

adnix is available on crates.io and you can install it through cargo.

-
cargo install adnix
-
- -

Usage

-
USAGE:
-    adnix [OPTIONS]
-
-FLAGS:
-    -h, --help       Prints help information
-    -V, --version    Prints version information
-
-OPTIONS:
-    -f, --formatter <STRING>       Formatter [default: dnsmasq]  [possible values: dnsmasq, dnsmasq-server, unbound]
-        --address <ADDRESS>        IPv4 address [default: 127.0.0.1]
-        --v6address <ADDRESS>      IPv6 address [default: ::1]
-    -o, --output <OUTPUT>          Output file
-    -s, --sources_file <STRING>    File to read "name|source url" mappings from
-
- -

Sample sources file for use with adnix.

-
Yoyo|http://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=0&mimetype=plaintext
-Malware Domain List|http://www.malwaredomainlist.com/hostslist/hosts.txt
-
- - - -
-
- -
- - - - - adnix, MIT - -
-
- - - - - - - - - - - \ No newline at end of file diff --git a/docs/oranda-v0.2.0.css b/docs/oranda-v0.2.0.css deleted file mode 100644 index 6d2e8ca..0000000 --- a/docs/oranda-v0.2.0.css +++ /dev/null @@ -1,3 +0,0 @@ -@import url("https://fonts.googleapis.com/css2?family=Fira+Sans:wght@400;700;900&display=swap");@import url("https://fonts.googleapis.com/css2?family=Comfortaa:wght@400;700&display=swap");@import url("https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;600;700&display=swap");@import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap");:root{--dark-color:#141414;--light-color:#fff;--link-color:#0284c7;--light-highlight-bg-color:#ededed;--light-highlight-fg-color:#595959;--dark-highlight-bg-color:#27272a;--dark-highlight-fg-color:#ededed;--font-face:"Fira Sans",sans-serif} - -/*! tailwindcss v3.3.3 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}[multiple],[type=date],[type=datetime-local],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],input:where(:not([type])),select,textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0;padding:.5rem .75rem;font-size:1rem;line-height:1.5rem;--tw-shadow:0 0 #0000}[multiple]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=email]:focus,[type=month]:focus,[type=number]:focus,[type=password]:focus,[type=search]:focus,[type=tel]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,[type=week]:focus,input:where(:not([type])):focus,select:focus,textarea:focus{outline:2px solid #0000;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-color:#2563eb}input::-moz-placeholder,textarea::-moz-placeholder{color:#6b7280;opacity:1}input::placeholder,textarea::placeholder{color:#6b7280;opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em}::-webkit-datetime-edit,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-year-field{padding-top:0;padding-bottom:0}select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}[multiple],[size]:where(select:not([size="1"])){background-image:none;background-position:0 0;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}[type=checkbox],[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#2563eb;background-color:#fff;border-color:#6b7280;border-width:1px;--tw-shadow:0 0 #0000}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{outline:2px solid #0000;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}[type=checkbox]:checked,[type=radio]:checked{border-color:#0000;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}[type=checkbox]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 16 16'%3E%3Cpath d='M12.207 4.793a1 1 0 0 1 0 1.414l-5 5a1 1 0 0 1-1.414 0l-2-2a1 1 0 0 1 1.414-1.414L6.5 9.086l4.293-4.293a1 1 0 0 1 1.414 0z'/%3E%3C/svg%3E")}[type=radio]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E")}[type=checkbox]:checked:focus,[type=checkbox]:checked:hover,[type=checkbox]:indeterminate,[type=radio]:checked:focus,[type=radio]:checked:hover{border-color:#0000;background-color:currentColor}[type=checkbox]:indeterminate{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3E%3Cpath stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3E%3C/svg%3E");background-size:100% 100%;background-position:50%;background-repeat:no-repeat}[type=checkbox]:indeterminate:focus,[type=checkbox]:indeterminate:hover{border-color:#0000;background-color:currentColor}[type=file]{background:unset;border-color:inherit;border-width:0;border-radius:0;padding:0;font-size:unset;line-height:inherit}[type=file]:focus{outline:1px solid ButtonText;outline:1px auto -webkit-focus-ring-color}:root{--color-inherit:inherit;--color-current:currentColor;--color-transparent:#0000;--color-black:#000;--color-white:#fff;--color-slate-50:#f8fafc;--color-slate-100:#f1f5f9;--color-slate-200:#e2e8f0;--color-slate-300:#cbd5e1;--color-slate-400:#94a3b8;--color-slate-500:#64748b;--color-slate-600:#475569;--color-slate-700:#334155;--color-slate-800:#1e293b;--color-slate-900:#0f172a;--color-slate-950:#020617;--color-gray-50:#f9fafb;--color-gray-100:#f3f4f6;--color-gray-200:#e5e7eb;--color-gray-300:#d1d5db;--color-gray-400:#9ca3af;--color-gray-500:#6b7280;--color-gray-600:#4b5563;--color-gray-700:#374151;--color-gray-800:#1f2937;--color-gray-900:#111827;--color-gray-950:#030712;--color-zinc-50:#fafafa;--color-zinc-100:#f4f4f5;--color-zinc-200:#e4e4e7;--color-zinc-300:#d4d4d8;--color-zinc-400:#a1a1aa;--color-zinc-500:#71717a;--color-zinc-600:#52525b;--color-zinc-700:#3f3f46;--color-zinc-800:#27272a;--color-zinc-900:#18181b;--color-zinc-950:#09090b;--color-neutral-50:#fafafa;--color-neutral-100:#f5f5f5;--color-neutral-200:#e5e5e5;--color-neutral-300:#d4d4d4;--color-neutral-400:#a3a3a3;--color-neutral-500:#737373;--color-neutral-600:#525252;--color-neutral-700:#404040;--color-neutral-800:#262626;--color-neutral-900:#171717;--color-neutral-950:#0a0a0a;--color-stone-50:#fafaf9;--color-stone-100:#f5f5f4;--color-stone-200:#e7e5e4;--color-stone-300:#d6d3d1;--color-stone-400:#a8a29e;--color-stone-500:#78716c;--color-stone-600:#57534e;--color-stone-700:#44403c;--color-stone-800:#292524;--color-stone-900:#1c1917;--color-stone-950:#0c0a09;--color-red-50:#fef2f2;--color-red-100:#fee2e2;--color-red-200:#fecaca;--color-red-300:#fca5a5;--color-red-400:#f87171;--color-red-500:#ef4444;--color-red-600:#dc2626;--color-red-700:#b91c1c;--color-red-800:#991b1b;--color-red-900:#7f1d1d;--color-red-950:#450a0a;--color-orange-50:#fff7ed;--color-orange-100:#ffedd5;--color-orange-200:#fed7aa;--color-orange-300:#fdba74;--color-orange-400:#fb923c;--color-orange-500:#f97316;--color-orange-600:#ea580c;--color-orange-700:#c2410c;--color-orange-800:#9a3412;--color-orange-900:#7c2d12;--color-orange-950:#431407;--color-amber-50:#fffbeb;--color-amber-100:#fef3c7;--color-amber-200:#fde68a;--color-amber-300:#fcd34d;--color-amber-400:#fbbf24;--color-amber-500:#f59e0b;--color-amber-600:#d97706;--color-amber-700:#b45309;--color-amber-800:#92400e;--color-amber-900:#78350f;--color-amber-950:#451a03;--color-yellow-50:#fefce8;--color-yellow-100:#fef9c3;--color-yellow-200:#fef08a;--color-yellow-300:#fde047;--color-yellow-400:#facc15;--color-yellow-500:#eab308;--color-yellow-600:#ca8a04;--color-yellow-700:#a16207;--color-yellow-800:#854d0e;--color-yellow-900:#713f12;--color-yellow-950:#422006;--color-lime-50:#f7fee7;--color-lime-100:#ecfccb;--color-lime-200:#d9f99d;--color-lime-300:#bef264;--color-lime-400:#a3e635;--color-lime-500:#84cc16;--color-lime-600:#65a30d;--color-lime-700:#4d7c0f;--color-lime-800:#3f6212;--color-lime-900:#365314;--color-lime-950:#1a2e05;--color-green-50:#f0fdf4;--color-green-100:#dcfce7;--color-green-200:#bbf7d0;--color-green-300:#86efac;--color-green-400:#4ade80;--color-green-500:#22c55e;--color-green-600:#16a34a;--color-green-700:#15803d;--color-green-800:#166534;--color-green-900:#14532d;--color-green-950:#052e16;--color-emerald-50:#ecfdf5;--color-emerald-100:#d1fae5;--color-emerald-200:#a7f3d0;--color-emerald-300:#6ee7b7;--color-emerald-400:#34d399;--color-emerald-500:#10b981;--color-emerald-600:#059669;--color-emerald-700:#047857;--color-emerald-800:#065f46;--color-emerald-900:#064e3b;--color-emerald-950:#022c22;--color-teal-50:#f0fdfa;--color-teal-100:#ccfbf1;--color-teal-200:#99f6e4;--color-teal-300:#5eead4;--color-teal-400:#2dd4bf;--color-teal-500:#14b8a6;--color-teal-600:#0d9488;--color-teal-700:#0f766e;--color-teal-800:#115e59;--color-teal-900:#134e4a;--color-teal-950:#042f2e;--color-cyan-50:#ecfeff;--color-cyan-100:#cffafe;--color-cyan-200:#a5f3fc;--color-cyan-300:#67e8f9;--color-cyan-400:#22d3ee;--color-cyan-500:#06b6d4;--color-cyan-600:#0891b2;--color-cyan-700:#0e7490;--color-cyan-800:#155e75;--color-cyan-900:#164e63;--color-cyan-950:#083344;--color-sky-50:#f0f9ff;--color-sky-100:#e0f2fe;--color-sky-200:#bae6fd;--color-sky-300:#7dd3fc;--color-sky-400:#38bdf8;--color-sky-500:#0ea5e9;--color-sky-600:#0284c7;--color-sky-700:#0369a1;--color-sky-800:#075985;--color-sky-900:#0c4a6e;--color-sky-950:#082f49;--color-blue-50:#eff6ff;--color-blue-100:#dbeafe;--color-blue-200:#bfdbfe;--color-blue-300:#93c5fd;--color-blue-400:#60a5fa;--color-blue-500:#3b82f6;--color-blue-600:#2563eb;--color-blue-700:#1d4ed8;--color-blue-800:#1e40af;--color-blue-900:#1e3a8a;--color-blue-950:#172554;--color-indigo-50:#eef2ff;--color-indigo-100:#e0e7ff;--color-indigo-200:#c7d2fe;--color-indigo-300:#a5b4fc;--color-indigo-400:#818cf8;--color-indigo-500:#6366f1;--color-indigo-600:#4f46e5;--color-indigo-700:#4338ca;--color-indigo-800:#3730a3;--color-indigo-900:#312e81;--color-indigo-950:#1e1b4b;--color-violet-50:#f5f3ff;--color-violet-100:#ede9fe;--color-violet-200:#ddd6fe;--color-violet-300:#c4b5fd;--color-violet-400:#a78bfa;--color-violet-500:#8b5cf6;--color-violet-600:#7c3aed;--color-violet-700:#6d28d9;--color-violet-800:#5b21b6;--color-violet-900:#4c1d95;--color-violet-950:#2e1065;--color-purple-50:#faf5ff;--color-purple-100:#f3e8ff;--color-purple-200:#e9d5ff;--color-purple-300:#d8b4fe;--color-purple-400:#c084fc;--color-purple-500:#a855f7;--color-purple-600:#9333ea;--color-purple-700:#7e22ce;--color-purple-800:#6b21a8;--color-purple-900:#581c87;--color-purple-950:#3b0764;--color-fuchsia-50:#fdf4ff;--color-fuchsia-100:#fae8ff;--color-fuchsia-200:#f5d0fe;--color-fuchsia-300:#f0abfc;--color-fuchsia-400:#e879f9;--color-fuchsia-500:#d946ef;--color-fuchsia-600:#c026d3;--color-fuchsia-700:#a21caf;--color-fuchsia-800:#86198f;--color-fuchsia-900:#701a75;--color-fuchsia-950:#4a044e;--color-pink-50:#fdf2f8;--color-pink-100:#fce7f3;--color-pink-200:#fbcfe8;--color-pink-300:#f9a8d4;--color-pink-400:#f472b6;--color-pink-500:#ec4899;--color-pink-600:#db2777;--color-pink-700:#be185d;--color-pink-800:#9d174d;--color-pink-900:#831843;--color-pink-950:#500724;--color-rose-50:#fff1f2;--color-rose-100:#ffe4e6;--color-rose-200:#fecdd3;--color-rose-300:#fda4af;--color-rose-400:#fb7185;--color-rose-500:#f43f5e;--color-rose-600:#e11d48;--color-rose-700:#be123c;--color-rose-800:#9f1239;--color-rose-900:#881337;--color-rose-950:#4c0519;--color-axo-pink:#ff75c3;--color-axo-pink-dark:#cc5c9b;--color-axo-orange:#f57070;--color-axo-orange-dark:#e85e68;--color-axo-highlighter:#ffd900;--color-axo-black:#141414;--color-axo-light-gray:#ededed;--color-axo-dark-gray:#595959}*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }body,html{height:100%;scroll-behavior:smooth;font-family:var(--font-face)}.container{display:flex;min-height:100%;flex-direction:column}.page-body{flex-grow:1}:focus{outline-style:solid;outline-width:2px;outline-offset:4px}body{background-color:var(--light-color);color:var(--dark-color)}.dark body{background-color:var(--dark-color);color:var(--light-color)}a{color:var(--link-color)}a:hover{text-decoration-line:underline;text-underline-offset:4px}.title{padding-bottom:.5rem;text-align:center;font-size:3.75rem;line-height:1}@media (min-width:640px){.title{font-size:6rem;line-height:1}}h1{margin-bottom:2rem;font-size:1.875rem;line-height:2.25rem;font-weight:900;line-height:1.25}@media (min-width:640px){h1{font-size:3.75rem;line-height:1}}h2{margin-bottom:1.5rem;font-size:1.5rem;line-height:2rem;font-weight:700;line-height:1.25}@media (min-width:640px){h2{font-size:3rem;line-height:1}}h2,h3{margin-top:3rem}@media (min-width:640px){h2,h3{margin-top:6rem}}h3{margin-bottom:1rem;font-size:1.5rem;line-height:2rem;font-weight:700;line-height:1.25}@media (min-width:640px){h3{font-size:2.25rem;line-height:2.5rem}}h4{margin-bottom:1rem;font-size:1.5rem;line-height:2rem;line-height:1.25}@media (min-width:640px){h4{font-size:1.875rem;line-height:2.25rem}}h5{margin-bottom:1rem;font-size:1.25rem;line-height:1.75rem;font-weight:700;line-height:1.25;color:rgb(51 65 85/var(--tw-text-opacity))}:is(.dark h5),h5{--tw-text-opacity:1}:is(.dark h5){color:rgb(226 232 240/var(--tw-text-opacity))}@media (min-width:640px){h5{font-size:1.5rem;line-height:2rem}}h6{margin-bottom:1rem;font-size:1.25rem;line-height:1.75rem;font-weight:700;line-height:1.25;color:rgb(30 41 59/var(--tw-text-opacity))}:is(.dark h6),h6{--tw-text-opacity:1}:is(.dark h6){color:rgb(203 213 225/var(--tw-text-opacity))}@media (min-width:640px){h6{font-size:1.25rem;line-height:1.75rem}}p,table{margin-bottom:2rem;font-size:1rem;line-height:1.5rem;line-height:1.625}@media (min-width:640px){p,table{font-size:1.125rem;line-height:1.75rem}}b,li{font-size:1rem;line-height:1.5rem;line-height:1.625}@media (min-width:640px){b,li{font-size:1.125rem;line-height:1.75rem}}table{margin-top:4rem;margin-bottom:4rem}table th{text-align:left;text-transform:uppercase;padding:1rem}table td{padding:1rem;vertical-align:top;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}table td,table td>code{font-size:.875rem;line-height:1.25rem}table tbody tr{border-top-width:1px;border-color:var(--dark-color)}.dark table tbody tr{border-color:var(--light-color)}div.table{margin-top:4rem;margin-bottom:4rem;display:grid;width:100%;grid-template-columns:repeat(4,minmax(0,1fr))}div.table .th{border-top-width:1px;padding:1rem;text-align:left;font-size:1.125rem;line-height:1.75rem;font-weight:700;text-transform:uppercase;border-color:var(--dark-color)}.dark div.table .th{border-color:var(--light-color)}div.table span:not(.th){border-top-width:1px;padding:1rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.875rem;line-height:1.25rem;border-color:var(--dark-color)}.dark div.table span:not(.th){border-color:var(--light-color)}li,ul{list-style-type:none}.rendered-markdown li,.rendered-markdown ul{list-style-type:disc}li{margin-left:1rem;margin-bottom:1rem}@media (min-width:640px){li{margin-left:2rem}}code{margin-bottom:1rem;white-space:pre-wrap;font-size:1rem;line-height:1.5rem;line-height:1.625}@media (min-width:640px){code{font-size:1.125rem;line-height:1.75rem}}code{color:var(--link-color)}div.table code{font-size:.875rem;line-height:1.25rem}h1 code,h2 code,h3 code,h4 code,h5 code,h6 code{font-size:inherit;line-height:inherit}pre{margin-top:4rem;margin-bottom:4rem;overflow:auto;padding:1rem}pre>code{font-size:.75rem;line-height:1rem}@media (min-width:640px){pre>code{font-size:1rem;line-height:1.5rem}}hr{margin:5rem auto;width:16rem;border-width:1px;border-style:dashed;text-align:center}@media (min-width:768px){hr{width:24rem}}img{display:inline}p>img:only-child{margin:auto;display:block}blockquote{border-left-width:2px;padding-left:1.5rem;font-size:1.5rem;line-height:2rem;border-color:var(--link-color)}main{margin:6rem auto;max-width:80%}@media (min-width:1024px){main{max-width:56rem}}.github-icon{height:1.25rem;width:1.25rem;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fff' d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E")}.dark .github-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23141414' d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E")}.dark .artifacts,.light .artifacts{padding:2rem}.logo{margin:auto;display:block;max-width:20rem}.inline-code{word-break:break-all;text-align:center}.oblique{font-style:oblique}.well-color{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}.oranda-hide{display:none}.heading-1{margin-bottom:2rem;font-size:1.875rem;line-height:2.25rem;font-weight:900;line-height:1.25}@media (min-width:640px){.heading-1{font-size:3.75rem;line-height:1}}.heading-2{margin-bottom:1.5rem;font-size:1.5rem;line-height:2rem;font-weight:700;line-height:1.25}@media (min-width:640px){.heading-2{font-size:3rem;line-height:1}}.heading-3{margin-bottom:1rem;font-size:1.5rem;line-height:2rem;font-weight:700;line-height:1.25}@media (min-width:640px){.heading-3{font-size:2.25rem;line-height:2.5rem}}.heading-4{margin-bottom:1rem;font-size:1.5rem;line-height:2rem;line-height:1.25}@media (min-width:640px){.heading-4{font-size:1.875rem;line-height:2.25rem}}.heading-5{margin-bottom:1rem;font-size:1.25rem;line-height:1.75rem;font-weight:700;line-height:1.25;--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity))}:is(.dark .heading-5){--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity))}@media (min-width:640px){.heading-5{font-size:1.5rem;line-height:2rem}}.heading-6{margin-bottom:1rem;font-size:1.25rem;line-height:1.75rem;font-weight:700;line-height:1.25;--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity))}:is(.dark .heading-6){--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity))}@media (min-width:640px){.heading-6{font-size:1.25rem;line-height:1.75rem}}.hidden{display:none}.button{width:10rem;min-width:-moz-max-content;min-width:max-content;cursor:pointer;border-radius:.25rem;border-width:2px;padding:.75rem;font-size:1.125rem;line-height:1.75rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.button:disabled{cursor:default;opacity:.6}.button.primary{border-color:#0000;color:var(--light-color);background-color:var(--dark-color)}.button.secondary,.dark .button.primary{color:var(--dark-color);background-color:var(--light-color)}.button.secondary{border-color:var(--dark-color)}.button.secondary:hover{color:var(--light-color);background-color:var(--dark-color);border-color:var(--light-color)}select{color:var(--dark-color);background-color:var(--light-color)}.dark select,footer{color:var(--light-color);background-color:var(--dark-color)}footer{display:flex;width:100%;flex-shrink:1;flex-grow:0;align-items:center;justify-content:space-between;padding:.5rem 1rem;font-size:.75rem;line-height:1rem}.dark footer{color:var(--dark-color);background-color:var(--light-color)}.nav{margin-bottom:3rem}.nav,.nav ul{padding:0;text-align:center}.nav ul{display:flex;list-style-type:none;flex-wrap:wrap;align-items:center;justify-content:center;gap:1.5rem}.nav ul li{margin:0;text-transform:capitalize}.repo_banner{padding-top:.375rem;padding-bottom:.375rem;color:var(--light-color);background-color:var(--dark-color)}.dark .repo_banner{color:var(--dark-color);background-color:var(--light-color)}.repo_banner>a{display:flex;height:20px;align-items:flex-start;justify-content:center;gap:.5rem}.repo_banner>a,.repo_banner>a:hover{--tw-text-opacity:1;color:rgb(248 250 252/var(--tw-text-opacity))}.repo_banner>a:hover{text-decoration-line:underline;text-decoration-color:#f8fafc;text-underline-offset:1px}:is(.dark .repo_banner>a){color:#141414}:is(.dark .repo_banner>a:hover){color:#141414;text-decoration-color:#141414}.funding-wrapper{margin-top:2rem;display:flex;flex-direction:column;align-items:center}.funding-list{margin-top:3rem;margin-bottom:3rem;width:100%;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}@media (min-width:1024px){.funding-list{display:grid}}.funding-list li{margin:0 0 1rem}.funding-list li a{display:flex;align-items:center;gap:.5rem}.funding-list li a:hover button{border-color:#e85e68;background-color:#e85e68;--tw-text-opacity:1;color:rgb(241 245 249/var(--tw-text-opacity));color:var(--light-color);background-color:var(--dark-color);border-color:var(--light-color)}.dark .funding-list li a:hover button{color:var(--dark-color);background-color:var(--light-color);border-color:var(--dark-color)}.funding-list .button{margin-right:.5rem;display:block;width:auto}.preferred-funding-list{grid-template-columns:repeat(1,minmax(0,1fr))}.preferred-funding-list li a{flex-direction:column;font-size:2.25rem;line-height:2.5rem;font-weight:700}.preferred-funding-list svg{height:3rem;width:3rem}.preferred-funding-list .button{border-width:0}.package-managers-downloads ul{margin-top:4rem;margin-bottom:4rem}.package-managers-downloads ul li{margin-left:0}.package-managers-downloads pre{margin-top:0;margin-bottom:0}.artifacts{margin-bottom:2rem;flex-direction:column;align-items:center;padding:0;display:none}@media (min-width:640px){.artifacts{display:flex}}.artifacts{color:var(--light-highlight-fg-color);background-color:var(--light-highlight-bg-color)}.artifacts-table{display:block;max-width:100%;overflow:auto}.dark .artifacts{color:var(--dark-highlight-fg-color);background-color:var(--dark-highlight-bg-color)}ul.tabs{display:flex;border-bottom-width:2px}ul.tabs li{margin:0;padding:.5rem .75rem;font-size:1rem;line-height:1.5rem}ul.tabs li:hover{cursor:pointer}ul.tabs li.selected{color:var(--light-highlight-bg-color);background-color:var(--light-highlight-fg-color)}.dark ul.tabs li.selected{color:var(--dark-highlight-bg-color);background-color:var(--dark-highlight-fg-color)}.install-content{margin:0;max-width:100%;padding:0}.detect{padding-right:.5rem;text-align:center}@media (min-width:768px){.detect{padding-right:0}}.detect+a{margin-top:.5rem;margin-bottom:.5rem;display:block}@media (min-width:640px){.detect+a{margin-top:0;margin-bottom:0;display:inline}}.detect .detected-os{text-transform:capitalize}.artifact-header pre{margin:0 auto}.artifact-header>h4{margin-bottom:-.5rem;text-align:center;font-weight:700}.artifact-header{width:100%;max-width:100%}.artifact-header>div:not(.install-code-wrapper){margin-top:1rem;align-items:center;justify-content:center;text-align:center}@media (min-width:768px){.artifact-header>div:not(.install-code-wrapper){display:flex;gap:1rem;text-align:left}}.backup-download:hover{text-decoration-line:none}.bottom-options{display:flex;width:100%;flex-direction:row;align-items:center;justify-content:space-between}.bottom-options.one{justify-content:center}.install-code-wrapper{display:flex;align-items:stretch}.install-code-wrapper>pre{flex-shrink:1;flex-grow:1}.install-code-wrapper>.button{display:flex;width:auto;align-items:center;border-top-left-radius:0;border-bottom-left-radius:0}.install-code-wrapper>.button:hover{text-decoration-line:none}.install-code-wrapper>.button:focus{outline-offset:-2px}.install-code-wrapper>.button.copy-clipboard-button{border-radius:0}.download-wrapper{display:flex;flex-direction:row;justify-content:center}.button .button-subtitle{display:block;font-size:.75rem;line-height:1rem}.published-date{margin-bottom:.5rem;display:block}.arch{margin:0;padding:1rem 0 0}.arch .contents{padding-top:1rem;min-height:7rem}.mobile-download{margin-left:auto;margin-right:auto;margin-bottom:3rem;display:block}@media (min-width:640px){.mobile-download{display:none}}.install-code-wrapper>.button svg{height:1.5rem;width:1.5rem}.release-body{word-break:break-word}.release-body h1{margin-top:3rem;margin-bottom:1.5rem;font-size:1.5rem;line-height:2rem;font-weight:700;line-height:1.25}@media (min-width:640px){.release-body h1{font-size:3rem;line-height:1}}.release-body h2{margin-top:3rem;margin-bottom:1rem;font-size:1.5rem;line-height:2rem;font-weight:700;line-height:1.25}@media (min-width:640px){.release-body h2{font-size:2.25rem;line-height:2.5rem}}.release-body h3{margin-bottom:1rem;font-size:1.5rem;line-height:2rem;line-height:1.25}@media (min-width:640px){.release-body h3{font-size:1.875rem;line-height:2.25rem}}.release-body h4{margin-bottom:1rem;font-size:1.25rem;line-height:1.75rem;font-weight:700;line-height:1.25;--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity))}:is(.dark .release-body h4){--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity))}@media (min-width:640px){.release-body h4{font-size:1.5rem;line-height:2rem}}.release-body h5{margin-bottom:1rem;font-size:1.25rem;line-height:1.75rem;font-weight:700;line-height:1.25;--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity))}:is(.dark .release-body h5){--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity))}@media (min-width:640px){.release-body h5{font-size:1.25rem;line-height:1.75rem}}.release-body li,.release-body ul{list-style-type:disc}.releases-nav{position:sticky;top:3rem;width:-moz-max-content;width:max-content;align-self:flex-start}.release>h2{margin-top:0}.release>h2 a{color:var(--dark-color)}.dark .release>h2 a{color:var(--light-color)}.releases-list{display:flex;flex-direction:column;gap:8rem}.releases-wrapper{position:relative;margin-top:3rem;display:grid;align-items:flex-start;gap:3rem;grid-template-columns:160px 1fr}.releases-nav ul{margin:0;display:flex;list-style-type:none;flex-direction:column;gap:.5rem;border-left-width:4px;padding-left:1rem;border-color:var(--dark-color)}.dark .releases-nav ul{border-color:var(--light-color)}.releases-nav ul li{position:relative;margin:0 0 0 .25rem;font-size:.875rem;line-height:1.25rem}.releases-nav ul li:before{content:"";position:absolute;top:50%;left:-1.25rem;display:block;height:.25rem;width:1rem;--tw-translate-y:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));background-color:var(--dark-color)}.dark .releases-nav ul li:before{background-color:var(--light-color)}.releases-nav ul li a{text-decoration-color:#0000;text-underline-offset:2px}.releases-nav ul li a:hover{text-decoration-line:underline}.releases-nav ul li a{color:var(--dark-color)}.dark .releases-nav ul li a{color:var(--light-color)}.release-info{gap:2rem;font-size:1rem;line-height:1.5rem}.prereleases-toggle,.release-info{display:flex;align-items:center}.prereleases-toggle{position:relative;margin-bottom:1.5rem;width:-moz-max-content;width:max-content}.prereleases-toggle input{height:1.25rem;width:1.25rem;border-radius:.25rem;color:var(--dark-color)}.prereleases-toggle label{margin-left:.75rem;font-weight:500}.release-info svg{height:1.5rem;width:1.5rem}.release-info>span{display:flex;align-items:center;gap:.5rem}html.axo{--highlight-color:#a78bfa;--axo-orange-color:#f57070;--axo-pink-color:#ff75c3;--dark-color:#141414;--link-color:var(--axo-pink-color);--light-highlight-bg-color:var(--light-color);--light-highlight-fg-color:var(--dark-color);--dark-highlight-bg-color:var(--dark-color);--dark-highlight-fg-color:var(--light-color);--font-face:"Comfortaa",sans-serif}code,h1,h2,h3{color:var(--highlight-color)}html.axo .button.primary{background-color:var(--link-color)}html.axo .repo_banner,html.axo footer{background:-webkit-linear-gradient(left,var(--axo-orange-color),var(--axo-pink-color),var(--axo-orange-color));background-size:1600px 200px;animation-duration:3s;animation-name:animation-gradient-title;animation-iteration-count:infinite;animation-fill-mode:forwards}@media (prefers-reduced-motion){html.axo .repo_banner,html.axo footer{animation-duration:0s}}html.hacker html.axo .repo_banner,html.hacker html.axo footer{background:-webkit-linear-gradient(left,var(--hacker-green),var(--color-green-600),var(--hacker-green))}html.cupcake html.axo .repo_banner,html.cupcake html.axo footer{background:var(--secondary)}html.axo h1.title{background:-webkit-linear-gradient(left,var(--axo-orange-color),var(--axo-pink-color),var(--axo-orange-color));background-size:1600px 200px;animation-duration:3s;animation-name:animation-gradient-title;animation-iteration-count:infinite;animation-fill-mode:forwards;-webkit-text-fill-color:#0000}@media (prefers-reduced-motion){html.axo h1.title{animation-duration:0s}}html.hacker html.axo h1.title{background:-webkit-linear-gradient(left,var(--hacker-green),var(--color-green-600),var(--hacker-green))}html.cupcake html.axo h1.title{background:var(--secondary)}html.axo h1.title{-webkit-background-clip:text;background-clip:text}.axo-gradient{background:-webkit-linear-gradient(left,var(--axo-orange-color),var(--axo-pink-color),var(--axo-orange-color));background-size:1600px 200px;animation-duration:3s;animation-name:animation-gradient-title;animation-iteration-count:infinite;animation-fill-mode:forwards}.text-fill-transparent{-webkit-text-fill-color:#0000}.axo-gradient-text{background:-webkit-linear-gradient(left,var(--axo-orange-color),var(--axo-pink-color),var(--axo-orange-color));background-size:1600px 200px;animation-duration:3s;animation-name:animation-gradient-title;animation-iteration-count:infinite;animation-fill-mode:forwards;-webkit-text-fill-color:#0000}@media (prefers-reduced-motion){.axo-gradient-text{animation-duration:0s}}html.hacker .axo-gradient-text{background:-webkit-linear-gradient(left,var(--hacker-green),var(--color-green-600),var(--hacker-green))}html.cupcake .axo-gradient-text{background:var(--secondary)}.axo-gradient-text{-webkit-background-clip:text;background-clip:text}@media (prefers-reduced-motion){.axo-gradient{animation-duration:0s}}@keyframes slide-in{0%{top:-100vh}to{top:0}}@keyframes animation-gradient-title{0%{background-position:0 1600px}to{background-position:1600px 0}}html.hacker{--light-highlight-bg-color:var(--dark-highlight-bg-color);--light-highlight-fg-color:var(--dark-highlight-fg-color);--hacker-green:#20c20e}html.hacker ::-moz-selection{color:#141414;background-color:#20c20e}html.hacker ::selection{color:#141414;background-color:#20c20e}html.hacker body{background-color:#141414;--tw-text-opacity:1;font-family:IBM Plex Mono,monospace}html.hacker .button.secondary,html.hacker body{color:rgb(203 213 225/var(--tw-text-opacity))}html.hacker .button.secondary{--tw-border-opacity:1;border-color:rgb(249 115 22/var(--tw-border-opacity));--tw-text-opacity:1}html.hacker .button.secondary:hover{--tw-bg-opacity:1;background-color:rgb(249 115 22/var(--tw-bg-opacity));color:#141414}html.hacker h2,html.hacker h3,html.hacker h4,html.hacker h5,html.hacker h6{--tw-text-opacity:1;color:rgb(124 58 237/var(--tw-text-opacity))}html.hacker .repo_banner>a,html.hacker footer{color:var(--light-color);padding-top:.5rem;padding-bottom:.5rem}html.hacker p,html.hacker table{--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity))}html.hacker .title{position:relative;margin-left:2rem;display:inline-block;text-align:left}@keyframes blink-animation{to{visibility:hidden}}html.hacker .title:after{content:"";height:70px;background:var(--hacker-green);animation:blink-animation 1s steps(5,start) infinite;position:absolute;left:100%;top:.75rem;margin-left:.75rem;display:block;width:1rem}html.hacker .title:before{content:"> ";position:absolute;top:50%;left:-2rem;margin-top:.5rem;display:block;--tw-translate-y:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));font-size:3rem;line-height:1;--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity))}html.hacker .title,html.hacker div.table .th,html.hacker h1{color:var(--hacker-green)}html.hacker a{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity))}html.hacker a:hover{text-decoration-color:#f97316}html.hacker .axo-gradient{background:-webkit-linear-gradient(left,var(--hacker-green),var(--color-green-600),var(--hacker-green))}html.hacker .nav ul{justify-content:flex-start}html.hacker .button.primary{border-color:#0000;--tw-bg-opacity:1;background-color:rgb(249 115 22/var(--tw-bg-opacity));color:#141414}html.hacker .button.primary:hover{--tw-bg-opacity:1;background-color:rgb(234 88 12/var(--tw-bg-opacity))}html.hacker .artifact-header>h4{text-align:left;color:var(--light-color)}html.hacker .releases-nav ul li a{--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity))}html.hacker .releases-nav ul li:before{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity))}html.hacker .releases-nav ul{--tw-border-opacity:1;border-left-color:rgb(75 85 99/var(--tw-border-opacity))}html.hacker .prereleases-toggle input:checked{--tw-bg-opacity:1;background-color:rgb(249 115 22/var(--tw-bg-opacity))}html.hacker .releases-nav ul li a:hover{text-decoration-color:#f97316}html.hacker .funding-wrapper{align-items:flex-start}html.hacker .artifacts{padding:2rem}html.hacker .published-date{display:block;width:100%}html.hacker .logo{margin:0;display:block}html.cupcake body{--b1:#faf7f5;--b2:#dfaff7;--text:#291334cc;--links:#291334;--primary:#65c3c8;--secondary:#291334;--secondary-100:#210f2a;--code:#291334;font-family:Inter,sans-serif;background-color:var(--b1);color:var(--text)}html.cupcake ::-moz-selection{background-color:var(--b2);color:var(--code);-webkit-text-fill-color:var(--code)}html.cupcake ::selection{background-color:var(--b2);color:var(--code);-webkit-text-fill-color:var(--code)}html.cupcake .button.primary{background:var(--secondary);color:var(--b2);border-color:#0000;text-decoration-line:none}html.cupcake .button.primary:hover{--tw-bg-opacity:1;background-color:rgb(234 88 12/var(--tw-bg-opacity));background:var(--secondary-100)}html.cupcake .button.secondary{border:1px solid var(--secondary);color:var(--secondary-100)}html.cupcake .button.secondary:hover{background:var(--secondary);color:var(--b2)}html.cupcake h1,html.cupcake h2,html.cupcake h3,html.cupcake h4,html.cupcake h5,html.cupcake h6,html.cupcake p,html.cupcake table{color:var(--text)}html.cupcake .title{color:var(--primary)}html.cupcake a{color:var(--links);font-weight:500;text-decoration-line:underline;text-underline-offset:4px}html.cupcake a:hover{color:var(--code);text-underline-offset:2px}html.cupcake .axo-gradient{background:var(--secondary)}html.cupcake .github-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23dfaff7' d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E")}html.cupcake .repo_banner>a,html.cupcake footer{color:var(--b2);text-decoration:none}html.cupcake code{color:var(--code);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-weight:500}html.cupcake .prereleases-toggle input:checked{background-color:var(--primary)}html.cupcake .artifacts{padding:2rem}html.cupcake .releases-nav ul li a{color:var(--links)}html.cupcake .releases-nav ul li:before{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}html.cupcake .releases-nav ul{--tw-border-opacity:1;border-left-color:rgb(209 213 219/var(--tw-border-opacity))}html.cupcake div.table .th{color:var(--primary)} \ No newline at end of file diff --git a/oranda.json b/oranda.json index 013261d..67fad31 100644 --- a/oranda.json +++ b/oranda.json @@ -1,13 +1,19 @@ { "build": { - "path_prefix": "adnix-rs", - "dist_dir": "./docs" + "path_prefix": "adnix-rs" }, "components": { + "changelog": false, "artifacts": { - "cargo_dist": true, + "auto": true, "package_managers": { - "nix flakes": "nix profile install github:msfjarvis/adnix" + "preferred": { + "nix flake": "nix profile install github:msfjarvis/adnix-rs", + "cargo": "cargo install adnix --locked --profile=dist" + }, + "additional": { + "binstall": "cargo binstall adnix" + } } } }