From 2a5f38df364f2bab4abff2d3f2b99da8682e8542 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Jutteau?= Date: Wed, 19 Oct 2022 11:19:28 +0200 Subject: [PATCH] First Commit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - license checking - basic test structure - PR checking - crendential scanning - few standard documentation items Signed-off-by: Jérôme Jutteau --- .github/dependabot.yml | 9 + .github/workflows/cred-scan.yml | 15 ++ .github/workflows/pull-request.yml | 72 +++++++ .gitignore | 1 + .reuse/dep5 | 12 ++ Cargo.lock | 7 + Cargo.toml | 8 + LICENSES/BSD-3-Clause.txt | 26 +++ LICENSES/CC-BY-4.0.txt | 324 +++++++++++++++++++++++++++++ Makefile | 35 ++++ docs/CONTRIBUTING.md | 24 +++ docs/README.md | 21 ++ int-tests/run.sh | 44 ++++ src/main.rs | 3 + 14 files changed, 601 insertions(+) create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/cred-scan.yml create mode 100644 .github/workflows/pull-request.yml create mode 100644 .gitignore create mode 100644 .reuse/dep5 create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 LICENSES/BSD-3-Clause.txt create mode 100644 LICENSES/CC-BY-4.0.txt create mode 100644 Makefile create mode 100644 docs/CONTRIBUTING.md create mode 100644 docs/README.md create mode 100755 int-tests/run.sh create mode 100644 src/main.rs diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..3d2b08f --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,9 @@ +# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates + +version: 1 +updates: + - package-ecosystem: "cargo" + directory: "/" + target-branch: "main" + schedule: + interval: "daily" diff --git a/.github/workflows/cred-scan.yml b/.github/workflows/cred-scan.yml new file mode 100644 index 0000000..f47a70d --- /dev/null +++ b/.github/workflows/cred-scan.yml @@ -0,0 +1,15 @@ +name: Credential Scanner + +on: + pull_request: + branches: [ main ] + +jobs: + cred-scan: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v2 + - name: Scan credentials + uses: outscale-dev/cred-scan@main + with: + scan_path: "./" diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml new file mode 100644 index 0000000..f6625a0 --- /dev/null +++ b/.github/workflows/pull-request.yml @@ -0,0 +1,72 @@ +name: pull-request + +on: + pull_request: + branches: [ main ] + +permissions: + pull-requests: write + contents: write + +jobs: + reuse-test: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v2 + - name: Reuse specification test + run: make reuse-test + format-test: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v2 + - name: Stable Rust with rustfmt + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: stable + components: rustfmt, clippy + - name: Check code format + run: make format-test + cargo-test: + environment: eu-west-2 + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v2 + - name: Stable Rust with rustfmt + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: stable + - name: Run tests + env: + OSC_ACCESS_KEY: ${{ secrets.OSC_ACCESS_KEY }} + OSC_SECRET_KEY: ${{ secrets.OSC_SECRET_KEY }} + OSC_REGION: ${{ secrets.OSC_REGION }} + run: make cargo-test + integration-test: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v2 + - name: Stable Rust with rustfmt + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: stable + target: x86_64-unknown-linux-musl + - name: Run integration tests + run: make integration-test + dependabot-auto-merge: + needs: [reuse-test, cargo-test, integration-test] + runs-on: ubuntu-latest + if: ${{ github.actor == 'dependabot[bot]' }} + steps: + - name: Dependabot metadata + id: metadata + uses: dependabot/fetch-metadata@v1.1.1 + with: + github-token: "${{ secrets.GITHUB_TOKEN }}" + - name: Auto-merge + run: gh pr merge --auto --rebase "$PR_URL" + env: + PR_URL: ${{github.event.pull_request.html_url}} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ea8c4bf --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/target diff --git a/.reuse/dep5 b/.reuse/dep5 new file mode 100644 index 0000000..11c817a --- /dev/null +++ b/.reuse/dep5 @@ -0,0 +1,12 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: osc-cost +Upstream-Contact: Outscale support +Source: https://gitlab.com/outscale/osc-cost/ + +Files: *.md +Copyright: 2022 Outscale SAS +License: CC-BY-4.0 + +Files: version Makefile sdk_version api_version *.rs .git* src/* *.yml *.yaml .patch/*.patch *.patch Cargo.toml Cargo.lock examples/config_example.json int-tests/* +Copyright: 2022 Outscale SAS +License: BSD-3-Clause \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..7e1f28c --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "osc-cost" +version = "0.1.0" diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..8e9680e --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "osc-cost" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/LICENSES/BSD-3-Clause.txt b/LICENSES/BSD-3-Clause.txt new file mode 100644 index 0000000..7e2c96a --- /dev/null +++ b/LICENSES/BSD-3-Clause.txt @@ -0,0 +1,26 @@ +Copyright (c) Outscale SAS. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its contributors +may be used to endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/LICENSES/CC-BY-4.0.txt b/LICENSES/CC-BY-4.0.txt new file mode 100644 index 0000000..3f92dfc --- /dev/null +++ b/LICENSES/CC-BY-4.0.txt @@ -0,0 +1,324 @@ +Creative Commons Attribution 4.0 International Creative Commons Corporation +("Creative Commons") is not a law firm and does not provide legal services +or legal advice. Distribution of Creative Commons public licenses does not +create a lawyer-client or other relationship. Creative Commons makes its licenses +and related information available on an "as-is" basis. Creative Commons gives +no warranties regarding its licenses, any material licensed under their terms +and conditions, or any related information. Creative Commons disclaims all +liability for damages resulting from their use to the fullest extent possible. + +Using Creative Commons Public Licenses + +Creative Commons public licenses provide a standard set of terms and conditions +that creators and other rights holders may use to share original works of +authorship and other material subject to copyright and certain other rights +specified in the public license below. The following considerations are for +informational purposes only, are not exhaustive, and do not form part of our +licenses. + +Considerations for licensors: Our public licenses are intended for use by +those authorized to give the public permission to use material in ways otherwise +restricted by copyright and certain other rights. Our licenses are irrevocable. +Licensors should read and understand the terms and conditions of the license +they choose before applying it. Licensors should also secure all rights necessary +before applying our licenses so that the public can reuse the material as +expected. Licensors should clearly mark any material not subject to the license. +This includes other CC-licensed material, or material used under an exception +or limitation to copyright. More considerations for licensors : wiki.creativecommons.org/Considerations_for_licensors + +Considerations for the public: By using one of our public licenses, a licensor +grants the public permission to use the licensed material under specified +terms and conditions. If the licensor's permission is not necessary for any +reason–for example, because of any applicable exception or limitation to copyright–then +that use is not regulated by the license. Our licenses grant only permissions +under copyright and certain other rights that a licensor has authority to +grant. Use of the licensed material may still be restricted for other reasons, +including because others have copyright or other rights in the material. A +licensor may make special requests, such as asking that all changes be marked +or described. Although not required by our licenses, you are encouraged to +respect those requests where reasonable. More considerations for the public +: wiki.creativecommons.org/Considerations_for_licensees Creative Commons Attribution +4.0 International Public License + +By exercising the Licensed Rights (defined below), You accept and agree to +be bound by the terms and conditions of this Creative Commons Attribution +4.0 International Public License ("Public License"). To the extent this Public +License may be interpreted as a contract, You are granted the Licensed Rights +in consideration of Your acceptance of these terms and conditions, and the +Licensor grants You such rights in consideration of benefits the Licensor +receives from making the Licensed Material available under these terms and +conditions. + +Section 1 – Definitions. + +a. Adapted Material means material subject to Copyright and Similar Rights +that is derived from or based upon the Licensed Material and in which the +Licensed Material is translated, altered, arranged, transformed, or otherwise +modified in a manner requiring permission under the Copyright and Similar +Rights held by the Licensor. For purposes of this Public License, where the +Licensed Material is a musical work, performance, or sound recording, Adapted +Material is always produced where the Licensed Material is synched in timed +relation with a moving image. + +b. Adapter's License means the license You apply to Your Copyright and Similar +Rights in Your contributions to Adapted Material in accordance with the terms +and conditions of this Public License. + +c. Copyright and Similar Rights means copyright and/or similar rights closely +related to copyright including, without limitation, performance, broadcast, +sound recording, and Sui Generis Database Rights, without regard to how the +rights are labeled or categorized. For purposes of this Public License, the +rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights. + +d. Effective Technological Measures means those measures that, in the absence +of proper authority, may not be circumvented under laws fulfilling obligations +under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, +and/or similar international agreements. + +e. Exceptions and Limitations means fair use, fair dealing, and/or any other +exception or limitation to Copyright and Similar Rights that applies to Your +use of the Licensed Material. + +f. Licensed Material means the artistic or literary work, database, or other +material to which the Licensor applied this Public License. + +g. Licensed Rights means the rights granted to You subject to the terms and +conditions of this Public License, which are limited to all Copyright and +Similar Rights that apply to Your use of the Licensed Material and that the +Licensor has authority to license. + +h. Licensor means the individual(s) or entity(ies) granting rights under this +Public License. + +i. Share means to provide material to the public by any means or process that +requires permission under the Licensed Rights, such as reproduction, public +display, public performance, distribution, dissemination, communication, or +importation, and to make material available to the public including in ways +that members of the public may access the material from a place and at a time +individually chosen by them. + +j. Sui Generis Database Rights means rights other than copyright resulting +from Directive 96/9/EC of the European Parliament and of the Council of 11 +March 1996 on the legal protection of databases, as amended and/or succeeded, +as well as other essentially equivalent rights anywhere in the world. + +k. You means the individual or entity exercising the Licensed Rights under +this Public License. Your has a corresponding meaning. + +Section 2 – Scope. + + a. License grant. + +1. Subject to the terms and conditions of this Public License, the Licensor +hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, +irrevocable license to exercise the Licensed Rights in the Licensed Material +to: + + A. reproduce and Share the Licensed Material, in whole or in part; and + + B. produce, reproduce, and Share Adapted Material. + +2. Exceptions and Limitations. For the avoidance of doubt, where Exceptions +and Limitations apply to Your use, this Public License does not apply, and +You do not need to comply with its terms and conditions. + + 3. Term. The term of this Public License is specified in Section 6(a). + +4. Media and formats; technical modifications allowed. The Licensor authorizes +You to exercise the Licensed Rights in all media and formats whether now known +or hereafter created, and to make technical modifications necessary to do +so. The Licensor waives and/or agrees not to assert any right or authority +to forbid You from making technical modifications necessary to exercise the +Licensed Rights, including technical modifications necessary to circumvent +Effective Technological Measures. For purposes of this Public License, simply +making modifications authorized by this Section 2(a)(4) never produces Adapted +Material. + + 5. Downstream recipients. + +A. Offer from the Licensor – Licensed Material. Every recipient of the Licensed +Material automatically receives an offer from the Licensor to exercise the +Licensed Rights under the terms and conditions of this Public License. + +B. No downstream restrictions. You may not offer or impose any additional +or different terms or conditions on, or apply any Effective Technological +Measures to, the Licensed Material if doing so restricts exercise of the Licensed +Rights by any recipient of the Licensed Material. + +6. No endorsement. Nothing in this Public License constitutes or may be construed +as permission to assert or imply that You are, or that Your use of the Licensed +Material is, connected with, or sponsored, endorsed, or granted official status +by, the Licensor or others designated to receive attribution as provided in +Section 3(a)(1)(A)(i). + + b. Other rights. + +1. Moral rights, such as the right of integrity, are not licensed under this +Public License, nor are publicity, privacy, and/or other similar personality +rights; however, to the extent possible, the Licensor waives and/or agrees +not to assert any such rights held by the Licensor to the limited extent necessary +to allow You to exercise the Licensed Rights, but not otherwise. + +2. Patent and trademark rights are not licensed under this Public License. + +3. To the extent possible, the Licensor waives any right to collect royalties +from You for the exercise of the Licensed Rights, whether directly or through +a collecting society under any voluntary or waivable statutory or compulsory +licensing scheme. In all other cases the Licensor expressly reserves any right +to collect such royalties. + +Section 3 – License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the following +conditions. + + a. Attribution. + +1. If You Share the Licensed Material (including in modified form), You must: + +A. retain the following if it is supplied by the Licensor with the Licensed +Material: + +i. identification of the creator(s) of the Licensed Material and any others +designated to receive attribution, in any reasonable manner requested by the +Licensor (including by pseudonym if designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of warranties; + +v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable; + +B. indicate if You modified the Licensed Material and retain an indication +of any previous modifications; and + +C. indicate the Licensed Material is licensed under this Public License, and +include the text of, or the URI or hyperlink to, this Public License. + +2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner +based on the medium, means, and context in which You Share the Licensed Material. +For example, it may be reasonable to satisfy the conditions by providing a +URI or hyperlink to a resource that includes the required information. + +3. If requested by the Licensor, You must remove any of the information required +by Section 3(a)(1)(A) to the extent reasonably practicable. + +4. If You Share Adapted Material You produce, the Adapter's License You apply +must not prevent recipients of the Adapted Material from complying with this +Public License. + +Section 4 – Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that apply to +Your use of the Licensed Material: + +a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, +reuse, reproduce, and Share all or a substantial portion of the contents of +the database; + +b. if You include all or a substantial portion of the database contents in +a database in which You have Sui Generis Database Rights, then the database +in which You have Sui Generis Database Rights (but not its individual contents) +is Adapted Material; and + +c. You must comply with the conditions in Section 3(a) if You Share all or +a substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not replace +Your obligations under this Public License where the Licensed Rights include +other Copyright and Similar Rights. + +Section 5 – Disclaimer of Warranties and Limitation of Liability. + +a. Unless otherwise separately undertaken by the Licensor, to the extent possible, +the Licensor offers the Licensed Material as-is and as-available, and makes +no representations or warranties of any kind concerning the Licensed Material, +whether express, implied, statutory, or other. This includes, without limitation, +warranties of title, merchantability, fitness for a particular purpose, non-infringement, +absence of latent or other defects, accuracy, or the presence or absence of +errors, whether or not known or discoverable. Where disclaimers of warranties +are not allowed in full or in part, this disclaimer may not apply to You. + +b. To the extent possible, in no event will the Licensor be liable to You +on any legal theory (including, without limitation, negligence) or otherwise +for any direct, special, indirect, incidental, consequential, punitive, exemplary, +or other losses, costs, expenses, or damages arising out of this Public License +or use of the Licensed Material, even if the Licensor has been advised of +the possibility of such losses, costs, expenses, or damages. Where a limitation +of liability is not allowed in full or in part, this limitation may not apply +to You. + +c. The disclaimer of warranties and limitation of liability provided above +shall be interpreted in a manner that, to the extent possible, most closely +approximates an absolute disclaimer and waiver of all liability. + +Section 6 – Term and Termination. + +a. This Public License applies for the term of the Copyright and Similar Rights +licensed here. However, if You fail to comply with this Public License, then +Your rights under this Public License terminate automatically. + +b. Where Your right to use the Licensed Material has terminated under Section +6(a), it reinstates: + +1. automatically as of the date the violation is cured, provided it is cured +within 30 days of Your discovery of the violation; or + + 2. upon express reinstatement by the Licensor. + +c. For the avoidance of doubt, this Section 6(b) does not affect any right +the Licensor may have to seek remedies for Your violations of this Public +License. + +d. For the avoidance of doubt, the Licensor may also offer the Licensed Material +under separate terms or conditions or stop distributing the Licensed Material +at any time; however, doing so will not terminate this Public License. + + e. Sections 1, 5, 6, 7, and 8 survive termination of this Public License. + +Section 7 – Other Terms and Conditions. + +a. The Licensor shall not be bound by any additional or different terms or +conditions communicated by You unless expressly agreed. + +b. Any arrangements, understandings, or agreements regarding the Licensed +Material not stated herein are separate from and independent of the terms +and conditions of this Public License. + +Section 8 – Interpretation. + +a. For the avoidance of doubt, this Public License does not, and shall not +be interpreted to, reduce, limit, restrict, or impose conditions on any use +of the Licensed Material that could lawfully be made without permission under +this Public License. + +b. To the extent possible, if any provision of this Public License is deemed +unenforceable, it shall be automatically reformed to the minimum extent necessary +to make it enforceable. If the provision cannot be reformed, it shall be severed +from this Public License without affecting the enforceability of the remaining +terms and conditions. + +c. No term or condition of this Public License will be waived and no failure +to comply consented to unless expressly agreed to by the Licensor. + +d. Nothing in this Public License constitutes or may be interpreted as a limitation +upon, or waiver of, any privileges and immunities that apply to the Licensor +or You, including from the legal processes of any jurisdiction or authority. + +Creative Commons is not a party to its public licenses. Notwithstanding, Creative +Commons may elect to apply one of its public licenses to material it publishes +and in those instances will be considered the "Licensor." The text of the +Creative Commons public licenses is dedicated to the public domain under the +CC0 Public Domain Dedication. Except for the limited purpose of indicating +that material is shared under a Creative Commons public license or as otherwise +permitted by the Creative Commons policies published at creativecommons.org/policies, +Creative Commons does not authorize the use of the trademark "Creative Commons" +or any other trademark or logo of Creative Commons without its prior written +consent including, without limitation, in connection with any unauthorized +modifications to any of its public licenses or any other arrangements, understandings, +or agreements concerning use of licensed material. For the avoidance of doubt, +this paragraph does not form part of the public licenses. + +Creative Commons may be contacted at creativecommons.org. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..55623a4 --- /dev/null +++ b/Makefile @@ -0,0 +1,35 @@ +TARGET=target/x86_64-unknown-linux-musl/release/osc-cost + +all: help + +.PHONY: help +help: + @echo "help:" + @echo "- make build : build stand-alone binary of osc-cost" + @echo "- make test : run all tests" + +build: $(TARGET) + +target/x86_64-unknown-linux-musl/release/osc-cost: src/*.rs + cargo build --target x86_64-unknown-linux-musl --release + +.PHONY: test +test: cargo-test format-test integration-test reuse-test + @echo all tests OK + +.PHONY: cargo-test + cargo test + +.PHONY: format-test +format-test: + cargo fmt --check + cargo clippy + +.PHONY: integration-test +integration-test: $(TARGET) + ./int-tests/run.sh + +.PHONY: reuse-test +reuse-test: + docker run --rm --volume $(PWD):/data fsfe/reuse:0.11.1 lint + diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md new file mode 100644 index 0000000..09bba60 --- /dev/null +++ b/docs/CONTRIBUTING.md @@ -0,0 +1,24 @@ +# Versioning + +This project follows [semantic versioning](https://semver.org/). + +Some events may trigger a major (breaking) version like option deprecation or mandatory option. + +# Sending a Merge Request + +If you plan to make some change in source code, consider making a pull request in [openapi-generator project](https://github.com/OpenAPITools/openapi-generator/). + +Otherwise: +- Your merge request must be rebased on the latest commit. +- Be sure that tests still pass by running `make test`. + +# How to release + +Gitub bot should have produced a new version and creating the new release tag should push release to crate.io. + +If this is not the case: +1. Be sure have the latest version from repository. +2. `make test` and fix any issue. +3. Update Cargo.toml with new version following [semantic versioning](https://semver.org/) and commit +4. PR, review and merge +5. Create new release \ No newline at end of file diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000..5145cf2 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,21 @@ +osc-cost allow Outscale users to estimate their cloud costs. + +# Features + +WIP :) + +# Installation + +Go to release and download latest binary. + +# Contributing + +Check [contributing documentation](CONTRIBUTING.md). + +# License + +> Copyright Outscale SAS +> +> BSD-3-Clause + +This project is compliant with [REUSE](https://reuse.software/). \ No newline at end of file diff --git a/int-tests/run.sh b/int-tests/run.sh new file mode 100755 index 0000000..2a54627 --- /dev/null +++ b/int-tests/run.sh @@ -0,0 +1,44 @@ +#!/bin/bash +ROOT=$(cd "$(dirname "${0}")/.." && pwd) +SHELLCHECK_URL=https://github.com/koalaman/shellcheck/releases/download/v0.8.0/shellcheck-v0.8.0.linux.x86_64.tar.xz +errors=false + +if ! [ -f "$ROOT/target/x86_64-unknown-linux-musl/release/osc-cost" ]; then + echo 'error: "target/x86_64-unknown-linux-musl/release/osc-cost" not found' + errors=true +fi + +if [ -z "$OSC_ACCESS_KEY" ]; then + echo 'error: OSC_ACCESS_KEY not set' + errors=true +fi + +if [ -z "$OSC_SECRET_KEY" ]; then + echo 'error: OSC_SECRET_KEY not set' + errors=true +fi + +if ! shellcheck --help &> /dev/null ; then + echo "shellcheck not found. Downloading..." + if ! wget -O "/tmp/shellcheck.tar.xz" "$SHELLCHECK_URL"; then + echo "error: shellcheck is not installed and cannot download it" + errors=true + fi + cd /tmp/ && tar xvf "shellcheck.tar.xz" + if ! sudo cp shellcheck-v0.8.0/shellcheck /usr/local/bin/; then + echo "error: shellcheck is not installed and installation failed to copy binary to /usr/local/bin/" + errors=true + fi +fi + +if [ "$errors" = true ]; then + echo "pre-flight check failed, exiting" + exit 1 +fi + +echo -n "self testing with shellcheck... " +if shellcheck int-tests/run.sh &> /dev/null; then + echo "OK" +else + echo "FAILED" +fi \ No newline at end of file diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..6bbf5b0 --- /dev/null +++ b/src/main.rs @@ -0,0 +1,3 @@ +fn main() { + println!("Thanks for testing osc-cost, the project is in progress. Feel free to ask questions by opening an issue."); +}