aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/build-release-binaries.yml181
-rw-r--r--.github/workflows/build-release.yml240
-rw-r--r--.github/workflows/ci.yml7
-rw-r--r--CHANGELOG.md6
-rw-r--r--Cargo.lock2
-rw-r--r--Cargo.toml2
-rw-r--r--Containerfile3
-rw-r--r--Containerfile.alpine3
-rw-r--r--Cross.toml3
-rw-r--r--Dockerfile18
-rw-r--r--Dockerfile.alpine19
-rw-r--r--README.md4
-rw-r--r--src/main.rs3
13 files changed, 258 insertions, 233 deletions
diff --git a/.github/workflows/build-release-binaries.yml b/.github/workflows/build-release-binaries.yml
deleted file mode 100644
index ff36c7a..0000000
--- a/.github/workflows/build-release-binaries.yml
+++ /dev/null
@@ -1,181 +0,0 @@
-name: Build release binaries (and publish them if this is a tag)
-
-on: [push, pull_request]
-
-jobs:
- binaries:
- name: ${{ matrix.os }} for ${{ matrix.target }}
- runs-on: ${{ matrix.os }}
- timeout-minutes: 30
- strategy:
- matrix:
- target:
- - x86_64-unknown-linux-musl
- - aarch64-unknown-linux-musl
- - armv7-unknown-linux-musleabihf
- - arm-unknown-linux-musleabihf
- - mips-unknown-linux-musl
- - mipsel-unknown-linux-musl
- - mips64-unknown-linux-gnuabi64
- - mips64el-unknown-linux-gnuabi64
- - riscv64gc-unknown-linux-gnu
- - x86_64-pc-windows-msvc
- - x86_64-apple-darwin
- - x86_64-unknown-freebsd
- include:
- - os: ubuntu-latest
- target: x86_64-unknown-linux-musl
- artifact_name: target/x86_64-unknown-linux-musl/release/miniserve
- release_name: x86_64-unknown-linux-musl
- cross: true
- strip: true
- compress: true
- cargo_flags: ""
- - os: ubuntu-latest
- target: aarch64-unknown-linux-musl
- artifact_name: target/aarch64-unknown-linux-musl/release/miniserve
- release_name: aarch64-unknown-linux-musl
- cross: true
- strip: false
- compress: true
- cargo_flags: ""
- - os: ubuntu-latest
- target: armv7-unknown-linux-musleabihf
- artifact_name: target/armv7-unknown-linux-musleabihf/release/miniserve
- release_name: armv7-unknown-linux-musleabihf
- cross: true
- strip: false
- compress: true
- cargo_flags: ""
- - os: ubuntu-latest
- target: arm-unknown-linux-musleabihf
- artifact_name: target/arm-unknown-linux-musleabihf/release/miniserve
- release_name: arm-unknown-linux-musleabihf
- cross: true
- strip: false
- compress: true
- cargo_flags: ""
- - os: ubuntu-latest
- target: mips-unknown-linux-musl
- artifact_name: target/mips-unknown-linux-musl/release/miniserve
- release_name: mips-unknown-linux-musl
- cross: true
- strip: false
- compress: true
- cargo_flags: "--no-default-features"
- - os: ubuntu-latest
- target: mipsel-unknown-linux-musl
- artifact_name: target/mipsel-unknown-linux-musl/release/miniserve
- release_name: mipsel-unknown-linux-musl
- cross: true
- strip: false
- compress: true
- cargo_flags: "--no-default-features"
- - os: ubuntu-latest
- target: mips64-unknown-linux-gnuabi64
- artifact_name: target/mips64-unknown-linux-gnuabi64/release/miniserve
- release_name: mips64-unknown-linux-gnuabi64
- cross: true
- strip: false
- compress: false
- cargo_flags: "--no-default-features"
- - os: ubuntu-latest
- target: mips64el-unknown-linux-gnuabi64
- artifact_name: target/mips64el-unknown-linux-gnuabi64/release/miniserve
- release_name: mips64el-unknown-linux-gnuabi64
- cross: true
- strip: false
- compress: false
- cargo_flags: "--no-default-features"
- - os: ubuntu-latest
- target: riscv64gc-unknown-linux-gnu
- artifact_name: target/riscv64gc-unknown-linux-gnu/release/miniserve
- release_name: riscv64gc-unknown-linux-gnu
- cross: true
- strip: false
- compress: false
- cargo_flags: "--no-default-features"
- - os: windows-latest
- target: x86_64-pc-windows-msvc
- artifact_name: target/x86_64-pc-windows-msvc/release/miniserve.exe
- release_name: x86_64-pc-windows-msvc.exe
- cross: false
- strip: true
- compress: true
- cargo_flags: ""
- - os: macos-latest
- target: x86_64-apple-darwin
- artifact_name: target/x86_64-apple-darwin/release/miniserve
- release_name: x86_64-apple-darwin
- cross: false
- strip: true
- compress: true
- cargo_flags: ""
- - os: ubuntu-latest
- target: x86_64-unknown-freebsd
- artifact_name: target/x86_64-unknown-freebsd/release/miniserve
- release_name: x86_64-unknown-freebsd
- cross: true
- strip: false
- compress: false
- cargo_flags: ""
-
- steps:
- - name: Checkout code
- uses: actions/checkout@v2
-
- - name: Setup Rust toolchain
- uses: actions-rs/toolchain@v1
- with:
- toolchain: stable
- target: ${{ matrix.target }}
-
- - name: cargo build
- uses: actions-rs/cargo@v1
- with:
- command: build
- args: --release --locked --target=${{ matrix.target }} ${{ matrix.cargo_flags }}
- use-cross: ${{ matrix.cross }}
-
- - name: Compress binaries
- uses: svenstaro/upx-action@v2
- with:
- file: ${{ matrix.artifact_name }}
- args: --lzma
- strip: ${{ matrix.strip }}
- if: ${{ matrix.compress }}
-
- - name: Upload artifact
- uses: actions/upload-artifact@v2
- with:
- name: ${{ matrix.target }}
- path: ${{ matrix.artifact_name }}
-
- ###
- # Below this line, steps will only be run if a tag was pushed.
- ###
-
- - name: Get tag name
- id: tag_name
- run: |
- echo ::set-output name=current_version::${GITHUB_REF#refs/tags/v}
- shell: bash
- if: startsWith(github.ref, 'refs/tags/v')
-
- - name: Get CHANGELOG.md entry
- id: changelog_reader
- uses: mindsers/changelog-reader-action@v1
- with:
- version: ${{ steps.tag_name.outputs.current_version }}
- path: ./CHANGELOG.md
- if: startsWith(github.ref, 'refs/tags/v')
-
- - name: Publish
- uses: svenstaro/upload-release-action@v2
- with:
- repo_token: ${{ secrets.GITHUB_TOKEN }}
- file: ${{ matrix.artifact_name }}
- tag: ${{ github.ref }}
- asset_name: miniserve-$tag-${{ matrix.release_name }}
- body: ${{ steps.changelog_reader.outputs.log_entry }}
- if: startsWith(github.ref, 'refs/tags/v')
diff --git a/.github/workflows/build-release.yml b/.github/workflows/build-release.yml
new file mode 100644
index 0000000..9c5e0cb
--- /dev/null
+++ b/.github/workflows/build-release.yml
@@ -0,0 +1,240 @@
+name: Build/publish release
+
+on: [push, pull_request]
+
+jobs:
+ publish:
+ name: Binary ${{ matrix.target }} (on ${{ matrix.os }})
+ runs-on: ${{ matrix.os }}
+ outputs:
+ version: ${{ steps.extract_version.outputs.version }}
+ strategy:
+ matrix:
+ include:
+ - os: ubuntu-latest
+ target: x86_64-unknown-linux-musl
+ cross: true
+ compress: true
+ cargo_flags: ""
+ - os: ubuntu-latest
+ target: x86_64-unknown-linux-gnu
+ cross: true
+ compress: true
+ cargo_flags: ""
+ - os: ubuntu-latest
+ target: aarch64-unknown-linux-musl
+ cross: true
+ compress: true
+ cargo_flags: ""
+ - os: ubuntu-latest
+ target: aarch64-unknown-linux-gnu
+ cross: true
+ compress: true
+ cargo_flags: ""
+ - os: ubuntu-latest
+ target: armv7-unknown-linux-musleabihf
+ cross: true
+ compress: true
+ cargo_flags: ""
+ - os: ubuntu-latest
+ target: armv7-unknown-linux-gnueabihf
+ cross: true
+ compress: true
+ cargo_flags: ""
+ - os: ubuntu-latest
+ target: arm-unknown-linux-musleabihf
+ cross: true
+ compress: true
+ cargo_flags: ""
+ - os: ubuntu-latest
+ target: mips-unknown-linux-musl
+ cross: true
+ compress: true
+ cargo_flags: "--no-default-features"
+ - os: ubuntu-latest
+ target: mipsel-unknown-linux-musl
+ cross: true
+ compress: true
+ cargo_flags: "--no-default-features"
+ - os: ubuntu-latest
+ target: mips64-unknown-linux-gnuabi64
+ cross: true
+ compress: false
+ cargo_flags: "--no-default-features"
+ - os: ubuntu-latest
+ target: mips64el-unknown-linux-gnuabi64
+ cross: true
+ compress: false
+ cargo_flags: "--no-default-features"
+ - os: ubuntu-latest
+ target: riscv64gc-unknown-linux-gnu
+ cross: true
+ compress: false
+ cargo_flags: "--no-default-features"
+ - os: windows-latest
+ target: x86_64-pc-windows-msvc
+ cross: false
+ compress: true
+ cargo_flags: ""
+ - os: macos-latest
+ target: x86_64-apple-darwin
+ cross: false
+ compress: true
+ cargo_flags: ""
+ - os: ubuntu-latest
+ target: x86_64-unknown-freebsd
+ cross: true
+ compress: false
+ cargo_flags: ""
+
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v2
+
+ - name: Setup Rust toolchain
+ uses: actions-rs/toolchain@v1
+ with:
+ toolchain: stable
+ target: ${{ matrix.target }}
+ override: true
+
+ - run: sudo apt install musl-tools
+ if: startsWith(matrix.os, 'ubuntu')
+
+ - name: cargo build
+ uses: actions-rs/cargo@v1
+ with:
+ command: build
+ args: --release --locked --target=${{ matrix.target }} ${{ matrix.cargo_flags }}
+ use-cross: ${{ matrix.cross }}
+
+ - name: Set exe extension for Windows
+ run: echo "EXE=.exe" >> $env:GITHUB_ENV
+ if: startsWith(matrix.os, 'windows')
+
+ - name: Compress binaries
+ uses: svenstaro/upx-action@v2
+ with:
+ file: target/${{ matrix.target }}/release/miniserve${{ env.EXE }}
+ args: --best --lzma
+ strip: false # We're stripping already in Cargo.toml
+ if: ${{ matrix.compress }}
+
+ - name: Upload artifact
+ uses: actions/upload-artifact@v3
+ with:
+ name: ${{ matrix.target }}
+ path: target/${{ matrix.target }}/release/miniserve${{ env.EXE }}
+
+ - name: Get version from tag
+ id: extract_version
+ run: |
+ echo ::set-output name=version::${GITHUB_REF_NAME#v}
+ shell: bash
+
+ - name: Install CHANGELOG parser
+ uses: taiki-e/install-action@parse-changelog
+
+ - name: Get CHANGELOG entry
+ run: parse-changelog CHANGELOG.md ${{ steps.extract_version.outputs.version }} | tee changelog_entry
+ if: startsWith(github.ref_name, 'v') && github.ref_type == 'tag'
+ shell: bash
+
+ - name: Read changelog entry from file
+ id: changelog_entry
+ uses: juliangruber/read-file-action@v1
+ with:
+ path: ./changelog_entry
+ if: startsWith(github.ref_name, 'v') && github.ref_type == 'tag'
+
+ - name: Release
+ uses: svenstaro/upload-release-action@v2
+ with:
+ repo_token: ${{ secrets.GITHUB_TOKEN }}
+ file: target/${{ matrix.target }}/release/miniserve${{ env.EXE }}
+ tag: ${{ github.ref_name }}
+ asset_name: miniserve-${{ steps.extract_version.outputs.version }}-${{ matrix.target }}${{ env.EXE }}
+ body: ${{ steps.changelog_entry.outputs.content }}
+ if: startsWith(github.ref_name, 'v') && github.ref_type == 'tag'
+
+ container-images:
+ name: Publish images
+ runs-on: ubuntu-latest
+ needs: publish
+ # Run for tags and pushes to the default branch
+ if: (startsWith(github.ref_name, 'v') && github.ref_type == 'tag') || github.event.repository.default_branch == github.ref_name
+
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v2
+
+ - name: Download artifact aarch64-unknown-linux-gnu
+ uses: actions/download-artifact@v3
+ with:
+ name: aarch64-unknown-linux-gnu
+ path: target/aarch64-unknown-linux-gnu/release
+
+ - name: Download artifact x86_64-unknown-linux-gnu
+ uses: actions/download-artifact@v3
+ with:
+ name: x86_64-unknown-linux-gnu
+ path: target/x86_64-unknown-linux-gnu/release
+
+ - name: Download artifact armv7-unknown-linux-gnueabihf
+ uses: actions/download-artifact@v3
+ with:
+ name: armv7-unknown-linux-gnueabihf
+ path: target/armv7-unknown-linux-gnueabihf/release
+
+ - name: Download artifact aarch64-unknown-linux-musl
+ uses: actions/download-artifact@v3
+ with:
+ name: aarch64-unknown-linux-musl
+ path: target/aarch64-unknown-linux-musl/release
+
+ - name: Download artifact x86_64-unknown-linux-musl
+ uses: actions/download-artifact@v3
+ with:
+ name: x86_64-unknown-linux-musl
+ path: target/x86_64-unknown-linux-musl/release
+
+ - name: Download artifact armv7-unknown-linux-musleabihf
+ uses: actions/download-artifact@v3
+ with:
+ name: armv7-unknown-linux-musleabihf
+ path: target/armv7-unknown-linux-musleabihf/release
+
+ - name: podman login
+ run: podman login --username ${{ secrets.DOCKERHUB_USERNAME }} --password ${{ secrets.DOCKERHUB_TOKEN }} docker.io
+
+ - name: podman build linux/arm64
+ run: podman build --format docker --platform linux/arm64/v8 --manifest miniserve -f Containerfile target/aarch64-unknown-linux-gnu/release
+
+ - name: podman build linux/amd64
+ run: podman build --format docker --platform linux/amd64 --manifest miniserve -f Containerfile target/x86_64-unknown-linux-gnu/release
+
+ - name: podman build linux/arm
+ run: podman build --format docker --platform linux/arm/v7 --manifest miniserve -f Containerfile target/armv7-unknown-linux-gnueabihf/release
+
+ - name: podman manifest push latest
+ run: podman manifest push miniserve docker.io/svenstaro/miniserve:latest
+
+ - name: podman manifest push tag version
+ run: podman manifest push miniserve docker.io/svenstaro/miniserve:${{ needs.publish.outputs.version }}
+ if: startsWith(github.ref_name, 'v')
+
+ - name: podman build linux/arm64 (alpine edition)
+ run: podman build --format docker --platform linux/arm64/v8 --manifest miniserve-alpine -f Containerfile.alpine target/aarch64-unknown-linux-musl/release
+
+ - name: podman build linux/amd64 (alpine edition)
+ run: podman build --format docker --platform linux/amd64 --manifest miniserve-alpine -f Containerfile.alpine target/x86_64-unknown-linux-musl/release
+
+ - name: podman build linux/arm (alpine edition)
+ run: podman build --format docker --platform linux/arm/v7 --manifest miniserve-alpine -f Containerfile.alpine target/armv7-unknown-linux-musleabihf/release
+
+ - name: podman manifest push latest (alpine edition)
+ run: podman manifest push miniserve-alpine docker.io/svenstaro/miniserve:alpine
+
+ - name: podman manifest push tag version (alpine edition)
+ run: podman manifest push miniserve-alpine docker.io/svenstaro/miniserve:${{ needs.publish.outputs.version }}-alpine
+ if: startsWith(github.ref_name, 'v')
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 02d4808..840f43a 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -4,13 +4,11 @@ on: [push, pull_request]
jobs:
ci:
- name: ${{ matrix.rust }} on ${{ matrix.os }}
+ name: ${{ matrix.os }}
runs-on: ${{ matrix.os }}
- timeout-minutes: 30
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
- rust: [stable, nightly]
steps:
- name: Checkout code
@@ -20,7 +18,7 @@ jobs:
uses: actions-rs/toolchain@v1
with:
profile: minimal
- toolchain: ${{ matrix.rust }}
+ toolchain: stable
override: true
components: rustfmt, clippy
@@ -45,4 +43,3 @@ jobs:
with:
command: clippy
args: -- -D warnings
- if: matrix.rust == 'nightly'
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1850f28..f226627 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -8,8 +8,11 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
<!-- next-header -->
## [Unreleased] - ReleaseDate
+
+## [0.21.0] - 2022-09-15
- Fix bug where static files would be served incorrectly when using `--random-route` [#835](https://github.com/svenstaro/miniserve/pull/835) (thanks @solarknight)
- Add `--readme` to render the README in the current directory after the file listing [#860](https://github.com/svenstaro/miniserve/pull/860) (thanks @Atreyagaurav)
+- Add more architectures (and also additional container images)
## [0.20.0] - 2022-06-26
- Fixed security issue where it was possible to upload files to locations pointed to by symlinks
@@ -150,7 +153,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
- Some theme related bug fixes (thanks @boastful-squirrel)
<!-- next-url -->
-[Unreleased]: https://github.com/svenstaro/miniserve/compare/v0.20.0...HEAD
+[Unreleased]: https://github.com/svenstaro/miniserve/compare/v0.21.0...HEAD
+[0.21.0]: https://github.com/svenstaro/miniserve/compare/v0.20.0...v0.21.0
[0.20.0]: https://github.com/svenstaro/miniserve/compare/v0.19.5...v0.20.0
[0.19.5]: https://github.com/svenstaro/miniserve/compare/v0.19.4...v0.19.5
[0.19.4]: https://github.com/svenstaro/miniserve/compare/v0.19.3...v0.19.4
diff --git a/Cargo.lock b/Cargo.lock
index 174d5bc..98e68cb 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1513,7 +1513,7 @@ dependencies = [
[[package]]
name = "miniserve"
-version = "0.20.0"
+version = "0.21.0"
dependencies = [
"actix-files",
"actix-multipart",
diff --git a/Cargo.toml b/Cargo.toml
index de73987..70773ff 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "miniserve"
-version = "0.20.0"
+version = "0.21.0"
description = "For when you really just want to serve some files over HTTP right now!"
authors = ["Sven-Hendrik Haase <svenstaro@gmail.com>", "Boastful Squirrel <boastful.squirrel@gmail.com>"]
repository = "https://github.com/svenstaro/miniserve"
diff --git a/Containerfile b/Containerfile
new file mode 100644
index 0000000..3f2d866
--- /dev/null
+++ b/Containerfile
@@ -0,0 +1,3 @@
+FROM docker.io/ubuntu
+COPY --chmod=755 miniserve /app/
+ENTRYPOINT ["/app/miniserve"]
diff --git a/Containerfile.alpine b/Containerfile.alpine
new file mode 100644
index 0000000..d297f83
--- /dev/null
+++ b/Containerfile.alpine
@@ -0,0 +1,3 @@
+FROM docker.io/alpine
+COPY --chmod=755 miniserve /app/
+ENTRYPOINT ["/app/miniserve"]
diff --git a/Cross.toml b/Cross.toml
deleted file mode 100644
index ccb61cf..0000000
--- a/Cross.toml
+++ /dev/null
@@ -1,3 +0,0 @@
-# NOTE: Custom image specification for freebsd is required until new version of cross is released.
-[target.x86_64-unknown-freebsd]
-image = "svenstaro/cross-x86_64-unknown-freebsd:latest"
diff --git a/Dockerfile b/Dockerfile
deleted file mode 100644
index 6fb6d10..0000000
--- a/Dockerfile
+++ /dev/null
@@ -1,18 +0,0 @@
-# This Dockerfile results in a super small container containing only the miniserve binary and nothing else.
-# Use this in case you don't need any additional tools in the container.
-FROM rust as builder
-
-ENV APP_HOME /usr/src/app/
-
-RUN rustup target add x86_64-unknown-linux-musl
-RUN apt update && apt-get install -y upx musl-tools
-
-COPY . $APP_HOME
-WORKDIR $APP_HOME
-RUN make build-linux
-
-FROM scratch
-COPY --from=builder /usr/src/app/target/x86_64-unknown-linux-musl/release/miniserve /app/
-
-EXPOSE 8080
-ENTRYPOINT ["/app/miniserve"]
diff --git a/Dockerfile.alpine b/Dockerfile.alpine
deleted file mode 100644
index f99d757..0000000
--- a/Dockerfile.alpine
+++ /dev/null
@@ -1,19 +0,0 @@
-# This Dockerfile results in an Alpine container containing the minishift executable.
-# Use this in case you need additional basic tools provided by Alpine in this container.
-FROM rust as builder
-
-ENV APP_HOME /usr/src/app/
-
-RUN rustup target add x86_64-unknown-linux-musl
-RUN apt update && apt-get install -y upx musl-tools
-
-COPY . $APP_HOME
-WORKDIR $APP_HOME
-RUN make build-linux
-
-FROM alpine
-RUN apk add rsync
-COPY --from=builder /usr/src/app/target/x86_64-unknown-linux-musl/release/miniserve /app/
-
-EXPOSE 8080
-ENTRYPOINT ["/app/miniserve"]
diff --git a/README.md b/README.md
index a44cdae..ab17fb6 100644
--- a/README.md
+++ b/README.md
@@ -5,7 +5,7 @@
# miniserve - a CLI tool to serve files and dirs over HTTP
[![CI](https://github.com/svenstaro/miniserve/workflows/CI/badge.svg)](https://github.com/svenstaro/miniserve/actions)
-[![Docker Cloud Build Status](https://img.shields.io/docker/cloud/build/svenstaro/miniserve)](https://cloud.docker.com/repository/docker/svenstaro/miniserve/)
+[![Docker Hub](https://img.shields.io/docker/pulls/svenstaro/miniserve)](https://cloud.docker.com/repository/docker/svenstaro/miniserve/)
[![Crates.io](https://img.shields.io/crates/v/miniserve.svg)](https://crates.io/crates/miniserve)
[![license](http://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/svenstaro/miniserve/blob/master/LICENSE)
[![Stars](https://img.shields.io/github/stars/svenstaro/miniserve.svg)](https://github.com/svenstaro/miniserve/stargazers)
@@ -105,7 +105,7 @@ Some mobile browsers like Firefox on Android will offer to open the camera app w
## Usage
- miniserve 0.20.0
+ miniserve 0.21.0
Sven-Hendrik Haase <svenstaro@gmail.com>, Boastful Squirrel <boastful.squirrel@gmail.com>
diff --git a/src/main.rs b/src/main.rs
index b46262d..08cb19a 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -11,7 +11,6 @@ use actix_web::{middleware, App, HttpRequest, HttpResponse};
use actix_web_httpauth::middleware::HttpAuthentication;
use anyhow::Result;
use clap::{crate_version, IntoApp, Parser};
-use clap_complete::generate;
use log::{error, warn};
use qrcodegen::{QrCode, QrCodeEcc};
use yansi::{Color, Paint};
@@ -35,7 +34,7 @@ fn main() -> Result<()> {
if let Some(shell) = args.print_completions {
let mut clap_app = args::CliArgs::command();
let app_name = clap_app.get_name().to_string();
- generate(shell, &mut clap_app, app_name, &mut io::stdout());
+ clap_complete::generate(shell, &mut clap_app, app_name, &mut io::stdout());
return Ok(());
}