From ebb633039c6c08693edfb65e47ef5b6534028fbe Mon Sep 17 00:00:00 2001 From: baldeau Date: Fri, 17 Jan 2025 16:04:37 +0100 Subject: [PATCH] testing --- README.md | 1 + template/dart/.dart_tool/package_config.json | 21 + template/dart/CHANGELOG.md | 0 template/dart/Dockerfile | 43 ++ template/dart/README.md | 1 + template/dart/bin/main.dart | 23 ++ template/dart/function/.gitignore | 3 + template/dart/function/CHANGELOG.md | 3 + template/dart/function/README.md | 2 + template/dart/function/analysis_options.yaml | 30 ++ template/dart/function/lib/handler.dart | 3 + template/dart/function/pubspec.lock | 402 +++++++++++++++++++ template/dart/function/pubspec.yaml | 15 + template/dart/pubspec.lock | 12 + template/dart/pubspec.yaml | 15 + 15 files changed, 574 insertions(+) create mode 100644 README.md create mode 100644 template/dart/.dart_tool/package_config.json create mode 100644 template/dart/CHANGELOG.md create mode 100644 template/dart/Dockerfile create mode 100644 template/dart/README.md create mode 100644 template/dart/bin/main.dart create mode 100644 template/dart/function/.gitignore create mode 100644 template/dart/function/CHANGELOG.md create mode 100644 template/dart/function/README.md create mode 100644 template/dart/function/analysis_options.yaml create mode 100644 template/dart/function/lib/handler.dart create mode 100644 template/dart/function/pubspec.lock create mode 100644 template/dart/function/pubspec.yaml create mode 100644 template/dart/pubspec.lock create mode 100644 template/dart/pubspec.yaml diff --git a/README.md b/README.md new file mode 100644 index 0000000..2ea548d --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# OpenFaaS Templates diff --git a/template/dart/.dart_tool/package_config.json b/template/dart/.dart_tool/package_config.json new file mode 100644 index 0000000..30136f5 --- /dev/null +++ b/template/dart/.dart_tool/package_config.json @@ -0,0 +1,21 @@ +{ + "configVersion": 2, + "packages": [ + { + "name": "function", + "rootUri": "../function", + "packageUri": "lib/", + "languageVersion": "3.6" + }, + { + "name": "openfaas_dart_template", + "rootUri": "../", + "packageUri": "lib/", + "languageVersion": "3.6" + } + ], + "generated": "2025-01-17T14:56:26.255979Z", + "generator": "pub", + "generatorVersion": "3.6.0", + "pubCache": "file:///Users/fabian/.puro/shared/pub_cache" +} diff --git a/template/dart/CHANGELOG.md b/template/dart/CHANGELOG.md new file mode 100644 index 0000000..e69de29 diff --git a/template/dart/Dockerfile b/template/dart/Dockerfile new file mode 100644 index 0000000..669246c --- /dev/null +++ b/template/dart/Dockerfile @@ -0,0 +1,43 @@ +FROM openfaas/classic-watchdog:0.3.1 as watchdog + +FROM dart:3.6.0 AS build + +# Allows you to add additional packages via build-arg +ARG ADDITIONAL_PACKAGE + +RUN apt-get update -qy \ + && apt-get install -qy ca-certificates ${ADDITIONAL_PACKAGE} --no-install-recommends \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +COPY --from=watchdog /fwatchdog /usr/bin/fwatchdog +RUN chmod +x /usr/bin/fwatchdog + +# Add non root user +RUN addgroup --system app && adduser --system --group app +RUN mkdir -p /home/app + +WORKDIR /home/app +COPY bin /home/app/bin +COPY pubspec.yaml . +RUN chown -R app /home/app + +COPY function function + +RUN pub get +RUN pub get --offline + +WORKDIR /home/app/function/ + +RUN pub get && pub get --offline + +RUN chown -R app /home/app + +USER app + +ENV fprocess="dart /home/app/bin/main.dart" +EXPOSE 8080 + +HEALTHCHECK --interval=3s CMD [ -e /tmp/.lock ] || exit 1 + +CMD ["fwatchdog"] \ No newline at end of file diff --git a/template/dart/README.md b/template/dart/README.md new file mode 100644 index 0000000..9f527b0 --- /dev/null +++ b/template/dart/README.md @@ -0,0 +1 @@ +# openfaas-dart-template \ No newline at end of file diff --git a/template/dart/bin/main.dart b/template/dart/bin/main.dart new file mode 100644 index 0000000..2fcdc98 --- /dev/null +++ b/template/dart/bin/main.dart @@ -0,0 +1,23 @@ +import 'package:function/handler.dart' as handler; +import 'dart:io'; +import 'dart:convert'; + +String streamReadAllSync(Stream> stream, + {Encoding encoding = systemEncoding}) { + final List input = []; + int byte; + + while ((byte = stdin.readByteSync()) != -1) input.add(byte); + + final String inputStr = encoding.decode(input); + + if (inputStr.isEmpty) return inputStr; + + // Manually trim the trailing newline added in the response string + return inputStr.substring(0, inputStr.length - 1); +} + +void main() async { + String input = streamReadAllSync(stdin); + print(handler.Handle(input)); +} diff --git a/template/dart/function/.gitignore b/template/dart/function/.gitignore new file mode 100644 index 0000000..3a85790 --- /dev/null +++ b/template/dart/function/.gitignore @@ -0,0 +1,3 @@ +# https://dart.dev/guides/libraries/private-files +# Created by `dart pub` +.dart_tool/ diff --git a/template/dart/function/CHANGELOG.md b/template/dart/function/CHANGELOG.md new file mode 100644 index 0000000..effe43c --- /dev/null +++ b/template/dart/function/CHANGELOG.md @@ -0,0 +1,3 @@ +## 1.0.0 + +- Initial version. diff --git a/template/dart/function/README.md b/template/dart/function/README.md new file mode 100644 index 0000000..3816eca --- /dev/null +++ b/template/dart/function/README.md @@ -0,0 +1,2 @@ +A sample command-line application with an entrypoint in `bin/`, library code +in `lib/`, and example unit test in `test/`. diff --git a/template/dart/function/analysis_options.yaml b/template/dart/function/analysis_options.yaml new file mode 100644 index 0000000..dee8927 --- /dev/null +++ b/template/dart/function/analysis_options.yaml @@ -0,0 +1,30 @@ +# This file configures the static analysis results for your project (errors, +# warnings, and lints). +# +# This enables the 'recommended' set of lints from `package:lints`. +# This set helps identify many issues that may lead to problems when running +# or consuming Dart code, and enforces writing Dart using a single, idiomatic +# style and format. +# +# If you want a smaller set of lints you can change this to specify +# 'package:lints/core.yaml'. These are just the most critical lints +# (the recommended set includes the core lints). +# The core lints are also what is used by pub.dev for scoring packages. + +include: package:lints/recommended.yaml + +# Uncomment the following section to specify additional rules. + +# linter: +# rules: +# - camel_case_types + +# analyzer: +# exclude: +# - path/to/excluded/files/** + +# For more information about the core and recommended set of lints, see +# https://dart.dev/go/core-lints + +# For additional information about configuring this file, see +# https://dart.dev/guides/language/analysis-options diff --git a/template/dart/function/lib/handler.dart b/template/dart/function/lib/handler.dart new file mode 100644 index 0000000..64e0b5d --- /dev/null +++ b/template/dart/function/lib/handler.dart @@ -0,0 +1,3 @@ +String Handle(String req) { + return req; +} diff --git a/template/dart/function/pubspec.lock b/template/dart/function/pubspec.lock new file mode 100644 index 0000000..8cb5d7d --- /dev/null +++ b/template/dart/function/pubspec.lock @@ -0,0 +1,402 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + _fe_analyzer_shared: + dependency: transitive + description: + name: _fe_analyzer_shared + sha256: "03f6da266a27a4538a69295ec142cb5717d7d4e5727b84658b63e1e1509bac9c" + url: "https://pub.dev" + source: hosted + version: "79.0.0" + _macros: + dependency: transitive + description: dart + source: sdk + version: "0.3.3" + analyzer: + dependency: transitive + description: + name: analyzer + sha256: c9040fc56483c22a5e04a9f6a251313118b1a3c42423770623128fa484115643 + url: "https://pub.dev" + source: hosted + version: "7.2.0" + args: + dependency: transitive + description: + name: args + sha256: bf9f5caeea8d8fe6721a9c358dd8a5c1947b27f1cfaa18b39c301273594919e6 + url: "https://pub.dev" + source: hosted + version: "2.6.0" + async: + dependency: transitive + description: + name: async + sha256: d2872f9c19731c2e5f10444b14686eb7cc85c76274bd6c16e1816bff9a3bab63 + url: "https://pub.dev" + source: hosted + version: "2.12.0" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + collection: + dependency: transitive + description: + name: collection + sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" + url: "https://pub.dev" + source: hosted + version: "1.19.1" + convert: + dependency: transitive + description: + name: convert + sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68 + url: "https://pub.dev" + source: hosted + version: "3.1.2" + coverage: + dependency: transitive + description: + name: coverage + sha256: e3493833ea012784c740e341952298f1cc77f1f01b1bbc3eb4eecf6984fb7f43 + url: "https://pub.dev" + source: hosted + version: "1.11.1" + crypto: + dependency: transitive + description: + name: crypto + sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855" + url: "https://pub.dev" + source: hosted + version: "3.0.6" + file: + dependency: transitive + description: + name: file + sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4 + url: "https://pub.dev" + source: hosted + version: "7.0.1" + frontend_server_client: + dependency: transitive + description: + name: frontend_server_client + sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694 + url: "https://pub.dev" + source: hosted + version: "4.0.0" + glob: + dependency: transitive + description: + name: glob + sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + http_multi_server: + dependency: transitive + description: + name: http_multi_server + sha256: aa6199f908078bb1c5efb8d8638d4ae191aac11b311132c3ef48ce352fb52ef8 + url: "https://pub.dev" + source: hosted + version: "3.2.2" + http_parser: + dependency: transitive + description: + name: http_parser + sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571" + url: "https://pub.dev" + source: hosted + version: "4.1.2" + io: + dependency: transitive + description: + name: io + sha256: dfd5a80599cf0165756e3181807ed3e77daf6dd4137caaad72d0b7931597650b + url: "https://pub.dev" + source: hosted + version: "1.0.5" + js: + dependency: transitive + description: + name: js + sha256: c1b2e9b5ea78c45e1a0788d29606ba27dc5f71f019f32ca5140f61ef071838cf + url: "https://pub.dev" + source: hosted + version: "0.7.1" + lints: + dependency: "direct dev" + description: + name: lints + sha256: c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7 + url: "https://pub.dev" + source: hosted + version: "5.1.1" + logging: + dependency: transitive + description: + name: logging + sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61 + url: "https://pub.dev" + source: hosted + version: "1.3.0" + macros: + dependency: transitive + description: + name: macros + sha256: "1d9e801cd66f7ea3663c45fc708450db1fa57f988142c64289142c9b7ee80656" + url: "https://pub.dev" + source: hosted + version: "0.1.3-main.0" + matcher: + dependency: transitive + description: + name: matcher + sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 + url: "https://pub.dev" + source: hosted + version: "0.12.17" + meta: + dependency: transitive + description: + name: meta + sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c + url: "https://pub.dev" + source: hosted + version: "1.16.0" + mime: + dependency: transitive + description: + name: mime + sha256: "41a20518f0cb1256669420fdba0cd90d21561e560ac240f26ef8322e45bb7ed6" + url: "https://pub.dev" + source: hosted + version: "2.0.0" + node_preamble: + dependency: transitive + description: + name: node_preamble + sha256: "6e7eac89047ab8a8d26cf16127b5ed26de65209847630400f9aefd7cd5c730db" + url: "https://pub.dev" + source: hosted + version: "2.0.2" + package_config: + dependency: transitive + description: + name: package_config + sha256: "92d4488434b520a62570293fbd33bb556c7d49230791c1b4bbd973baf6d2dc67" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + path: + dependency: transitive + description: + name: path + sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" + url: "https://pub.dev" + source: hosted + version: "1.9.1" + pool: + dependency: transitive + description: + name: pool + sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a" + url: "https://pub.dev" + source: hosted + version: "1.5.1" + pub_semver: + dependency: transitive + description: + name: pub_semver + sha256: "7b3cfbf654f3edd0c6298ecd5be782ce997ddf0e00531b9464b55245185bbbbd" + url: "https://pub.dev" + source: hosted + version: "2.1.5" + shelf: + dependency: transitive + description: + name: shelf + sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12 + url: "https://pub.dev" + source: hosted + version: "1.4.2" + shelf_packages_handler: + dependency: transitive + description: + name: shelf_packages_handler + sha256: "89f967eca29607c933ba9571d838be31d67f53f6e4ee15147d5dc2934fee1b1e" + url: "https://pub.dev" + source: hosted + version: "3.0.2" + shelf_static: + dependency: transitive + description: + name: shelf_static + sha256: c87c3875f91262785dade62d135760c2c69cb217ac759485334c5857ad89f6e3 + url: "https://pub.dev" + source: hosted + version: "1.1.3" + shelf_web_socket: + dependency: transitive + description: + name: shelf_web_socket + sha256: cc36c297b52866d203dbf9332263c94becc2fe0ceaa9681d07b6ef9807023b67 + url: "https://pub.dev" + source: hosted + version: "2.0.1" + source_map_stack_trace: + dependency: transitive + description: + name: source_map_stack_trace + sha256: c0713a43e323c3302c2abe2a1cc89aa057a387101ebd280371d6a6c9fa68516b + url: "https://pub.dev" + source: hosted + version: "2.1.2" + source_maps: + dependency: transitive + description: + name: source_maps + sha256: "190222579a448b03896e0ca6eca5998fa810fda630c1d65e2f78b3f638f54812" + url: "https://pub.dev" + source: hosted + version: "0.10.13" + source_span: + dependency: transitive + description: + name: source_span + sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c" + url: "https://pub.dev" + source: hosted + version: "1.10.1" + stack_trace: + dependency: transitive + description: + name: stack_trace + sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" + url: "https://pub.dev" + source: hosted + version: "1.12.1" + stream_channel: + dependency: transitive + description: + name: stream_channel + sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + string_scanner: + dependency: transitive + description: + name: string_scanner + sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" + url: "https://pub.dev" + source: hosted + version: "1.4.1" + term_glyph: + dependency: transitive + description: + name: term_glyph + sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" + url: "https://pub.dev" + source: hosted + version: "1.2.2" + test: + dependency: "direct dev" + description: + name: test + sha256: "8391fbe68d520daf2314121764d38e37f934c02fd7301ad18307bd93bd6b725d" + url: "https://pub.dev" + source: hosted + version: "1.25.14" + test_api: + dependency: transitive + description: + name: test_api + sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd + url: "https://pub.dev" + source: hosted + version: "0.7.4" + test_core: + dependency: transitive + description: + name: test_core + sha256: "84d17c3486c8dfdbe5e12a50c8ae176d15e2a771b96909a9442b40173649ccaa" + url: "https://pub.dev" + source: hosted + version: "0.6.8" + typed_data: + dependency: transitive + description: + name: typed_data + sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006 + url: "https://pub.dev" + source: hosted + version: "1.4.0" + vm_service: + dependency: transitive + description: + name: vm_service + sha256: ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02 + url: "https://pub.dev" + source: hosted + version: "15.0.0" + watcher: + dependency: transitive + description: + name: watcher + sha256: "69da27e49efa56a15f8afe8f4438c4ec02eff0a117df1b22ea4aad194fe1c104" + url: "https://pub.dev" + source: hosted + version: "1.1.1" + web: + dependency: transitive + description: + name: web + sha256: cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb + url: "https://pub.dev" + source: hosted + version: "1.1.0" + web_socket: + dependency: transitive + description: + name: web_socket + sha256: "3c12d96c0c9a4eec095246debcea7b86c0324f22df69893d538fcc6f1b8cce83" + url: "https://pub.dev" + source: hosted + version: "0.1.6" + web_socket_channel: + dependency: transitive + description: + name: web_socket_channel + sha256: "9f187088ed104edd8662ca07af4b124465893caf063ba29758f97af57e61da8f" + url: "https://pub.dev" + source: hosted + version: "3.0.1" + webkit_inspection_protocol: + dependency: transitive + description: + name: webkit_inspection_protocol + sha256: "87d3f2333bb240704cd3f1c6b5b7acd8a10e7f0bc28c28dcf14e782014f4a572" + url: "https://pub.dev" + source: hosted + version: "1.2.1" + yaml: + dependency: transitive + description: + name: yaml + sha256: b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce + url: "https://pub.dev" + source: hosted + version: "3.1.3" +sdks: + dart: ">=3.6.0 <4.0.0" diff --git a/template/dart/function/pubspec.yaml b/template/dart/function/pubspec.yaml new file mode 100644 index 0000000..21c246c --- /dev/null +++ b/template/dart/function/pubspec.yaml @@ -0,0 +1,15 @@ +name: function +description: A sample command-line application. +version: 1.0.0 +# repository: https://github.com/my_org/my_repo + +environment: + sdk: ^3.6.0 + +# Add regular dependencies here. +dependencies: + # path: ^1.8.0 + +dev_dependencies: + lints: ^5.0.0 + test: ^1.24.0 diff --git a/template/dart/pubspec.lock b/template/dart/pubspec.lock new file mode 100644 index 0000000..ebcf15f --- /dev/null +++ b/template/dart/pubspec.lock @@ -0,0 +1,12 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + function: + dependency: "direct main" + description: + path: function + relative: true + source: path + version: "1.0.0" +sdks: + dart: ">=3.6.0 <4.0.0" diff --git a/template/dart/pubspec.yaml b/template/dart/pubspec.yaml new file mode 100644 index 0000000..b86b684 --- /dev/null +++ b/template/dart/pubspec.yaml @@ -0,0 +1,15 @@ +name: openfaas_dart_template +description: An OpenFaaS template for writing functions in Dart. +version: 0.0.1 +# repository: https://github.com/my_org/my_repo +publish_to: 'none' + +environment: + sdk: ^3.6.0 + +dependencies: + function: + path: ./function + +executables: + dart-faas-function: main \ No newline at end of file