From f6fa12579f4c60d4a6e4a77b656c0aaebfc40478 Mon Sep 17 00:00:00 2001 From: kn0wmad <39687477+kn0wmad@users.noreply.github.com> Date: Thu, 1 Sep 2022 11:09:20 -0600 Subject: [PATCH] Initial commit --- .gitignore | 5 ++ Dockerfile | 7 ++ LICENSE | 21 +++++ Makefile | 28 +++++++ README.md | 91 +++++++++++++++++++++ docker_entrypoint.sh | 3 + icon.png | Bin 0 -> 9165 bytes instructions.md | 5 ++ manifest.yaml | 133 +++++++++++++++++++++++++++++++ scripts/deps.ts | 1 + scripts/embassy.ts | 4 + scripts/procedures/getConfig.ts | 5 ++ scripts/procedures/migrations.ts | 4 + scripts/procedures/properties.ts | 3 + scripts/procedures/setConfig.ts | 5 ++ 15 files changed, 315 insertions(+) create mode 100644 .gitignore create mode 100644 Dockerfile create mode 100644 LICENSE create mode 100644 Makefile create mode 100644 README.md create mode 100755 docker_entrypoint.sh create mode 100644 icon.png create mode 100644 instructions.md create mode 100644 manifest.yaml create mode 100644 scripts/deps.ts create mode 100644 scripts/embassy.ts create mode 100644 scripts/procedures/getConfig.ts create mode 100644 scripts/procedures/migrations.ts create mode 100644 scripts/procedures/properties.ts create mode 100644 scripts/procedures/setConfig.ts diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1951ebb --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +hello-world.s9pk +image.tar +scripts/*.js +.DS_Store +.vscode/ diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..f5925f7 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,7 @@ +FROM start9/hello-world + +RUN apk add --no-cache curl && \ + rm -f /var/cache/apk/* + +ADD ./docker_entrypoint.sh /usr/local/bin/docker_entrypoint.sh +RUN chmod a+x /usr/local/bin/docker_entrypoint.sh diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..793257b --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 Start9 Labs + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..2a27443 --- /dev/null +++ b/Makefile @@ -0,0 +1,28 @@ +PKG_ID := $(shell yq e ".id" manifest.yaml) +PKG_VERSION := $(shell yq e ".version" manifest.yaml) +TS_FILES := $(shell find ./ -name \*.ts) + +# delete the target of a rule if it has changed and its recipe exits with a nonzero exit status +.DELETE_ON_ERROR: + +all: verify + +verify: $(PKG_ID).s9pk + embassy-sdk verify s9pk $(PKG_ID).s9pk + +install: + embassy-cli package install $(PKG_ID).s9pk + +clean: + rm -f image.tar + rm -f $(PKG_ID).s9pk + rm -f scripts/*.js + +scripts/embassy.js: $(TS_FILES) + deno bundle scripts/embassy.ts scripts/embassy.js + +image.tar: Dockerfile docker_entrypoint.sh + docker buildx build --tag start9/$(PKG_ID)/main:$(PKG_VERSION) --platform=linux/arm64 -o type=docker,dest=image.tar . + +$(PKG_ID).s9pk: manifest.yaml instructions.md icon.png LICENSE scripts/embassy.js image.tar + embassy-sdk pack diff --git a/README.md b/README.md new file mode 100644 index 0000000..179a0cd --- /dev/null +++ b/README.md @@ -0,0 +1,91 @@ +# Wrapper for hello-world + +`hello-world` is a simple, minimal project to serve as a template for creating an app for the Embassy. Learn more about service packaging in [Developer Docs](https://start9.com/latest/developer-docs/). + +## Dependencies + +- [docker](https://docs.docker.com/get-docker) +- [docker-buildx](https://docs.docker.com/buildx/working-with-buildx/) +- [yq](https://mikefarah.gitbook.io/yq) +- [deno](https://deno.land/) +- [make](https://www.gnu.org/software/make/) +- [embassy-sdk](https://github.com/Start9Labs/embassy-os/tree/master/backend) + +## Build enviroment +Prepare your EmbassyOS build enviroment. In this example we are using Ubuntu 20.04. + +1. Install docker +``` +curl -fsSL https://get.docker.com -o- | bash +sudo usermod -aG docker "$USER" +exec sudo su -l $USER +``` +2. Set buildx as the default builder +``` +docker buildx install +docker buildx create --use +``` +3. Enable cross-arch emulated builds in docker +``` +docker run --privileged --rm linuxkit/binfmt:v0.8 +``` +4. Install yq +``` +sudo snap install yq +``` +5. Install deno +``` +sudo snap install deno +``` +6. Install essentials build packages +``` +sudo apt-get install -y build-essential openssl libssl-dev libc6-dev clang libclang-dev ca-certificates +``` +7. Install Rust +``` +curl https://sh.rustup.rs -sSf | sh +# Choose nr 1 (default install) +source $HOME/.cargo/env +``` +8. Build and install embassy-sdk +``` +cd ~/ && git clone --recursive https://github.com/Start9Labs/embassy-os.git +cd embassy-os/backend/ +./install-sdk.sh +embassy-sdk init +``` +Now you are ready to build your **hello-world** service + +## Cloning + +Clone the project locally. + +``` +git clone https://github.com/Start9Labs/hello-world-wrapper.git +cd hello-world-wrapper +``` + +## Building + +To build the **Hello World** service, run the following command: + +``` +make +``` + +## Installing (on Embassy) + +Run the following commands to determine successful install: +> :information_source: Change embassy-q1w2e3r4.local to your Embassy address + +``` +embassy-cli auth login +#Enter your embassy password +embassy-cli --host https://embassy-q1w2e3r4.local package install hello-world.s9pk +``` +**Tip:** You can also install the hello-world.s9pk using **Sideload Service** under the **Embassy > SETTINGS** section. +## Verify Install + +Go to your Embassy Services page, select **Hello World**, configure and start the service. + +**Done!** diff --git a/docker_entrypoint.sh b/docker_entrypoint.sh new file mode 100755 index 0000000..aab61f3 --- /dev/null +++ b/docker_entrypoint.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +exec tini hello-world diff --git a/icon.png b/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..15d4ec44efe8bbc7795932b3dae4cf8e1fe053d5 GIT binary patch literal 9165 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 w% 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