From 8e0cecec8e99a72cb8fbf751d6452e7888a16eb8 Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Wed, 10 Jun 2026 08:53:08 +0200 Subject: [PATCH] set up a simple scopes demo projact / application (work in progress) --- .gitignore | 10 +++++----- projects/demo/config/config.exs | 10 ++++++++++ projects/demo/config/dev.exs | 8 ++++++++ projects/demo/config/prod.exs | 9 +++++++++ projects/demo/config/test.exs | 9 +++++++++ projects/demo/lib/application.ex | 12 ++++++++++++ projects/demo/mix.exs | 29 +++++++++++++++++++++++++++++ projects/demo/mix.lock | 11 +++++++++++ 8 files changed, 93 insertions(+), 5 deletions(-) create mode 100644 projects/demo/config/config.exs create mode 100644 projects/demo/config/dev.exs create mode 100644 projects/demo/config/prod.exs create mode 100644 projects/demo/config/test.exs create mode 100644 projects/demo/lib/application.ex create mode 100644 projects/demo/mix.exs create mode 100644 projects/demo/mix.lock diff --git a/.gitignore b/.gitignore index f1a267f..ce88720 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,11 @@ -/_build/ -/cover/ -/deps/ -/doc/ +_build/ +cover/ +deps/ +doc/ erl_crash.dump *.ez scopes-*.tar -/tmp/ +tmp/ log/ .env diff --git a/projects/demo/config/config.exs b/projects/demo/config/config.exs new file mode 100644 index 0000000..bb906fb --- /dev/null +++ b/projects/demo/config/config.exs @@ -0,0 +1,10 @@ +# scopes: basic config file + +import Config + +config :logger, :default_formatter, + format: "$date $time [$level] $metadata $message\n", + colors: [enabled: false], + metadata: [:mfa, :pid] + +import_config "#{config_env()}.exs" diff --git a/projects/demo/config/dev.exs b/projects/demo/config/dev.exs new file mode 100644 index 0000000..b833e50 --- /dev/null +++ b/projects/demo/config/dev.exs @@ -0,0 +1,8 @@ +# scopes: development config file + +import Config + +config :logger, :default_handler, + config: [ + file: ~c"log/scopes_dev.log" + ] diff --git a/projects/demo/config/prod.exs b/projects/demo/config/prod.exs new file mode 100644 index 0000000..0cd72b6 --- /dev/null +++ b/projects/demo/config/prod.exs @@ -0,0 +1,9 @@ +# scopes: production config file + +import Config + +config :logger, :default_handler, + config: [ + file: ~c"log/scopes.log" + ] + diff --git a/projects/demo/config/test.exs b/projects/demo/config/test.exs new file mode 100644 index 0000000..5185143 --- /dev/null +++ b/projects/demo/config/test.exs @@ -0,0 +1,9 @@ +# scopes: config file for testing + +import Config + +config :logger, :default_handler, + level: System.get_env("SCOPES_LOG_LEVEL", "info") |> String.to_atom, + config: [ + file: ~c"test/log/scopes_test.log" + ] diff --git a/projects/demo/lib/application.ex b/projects/demo/lib/application.ex new file mode 100644 index 0000000..592736a --- /dev/null +++ b/projects/demo/lib/application.ex @@ -0,0 +1,12 @@ +defmodule Scopes.Demo.Application do + use Application + + @impl true + def start(_type, _args) do + IO.puts("Hello World") + children = [] + opts = [strategy: :one_for_one, name: Scopes.Supervisor] + Supervisor.start_link(children, opts) + end +end + diff --git a/projects/demo/mix.exs b/projects/demo/mix.exs new file mode 100644 index 0000000..5bd6a27 --- /dev/null +++ b/projects/demo/mix.exs @@ -0,0 +1,29 @@ +defmodule Scopes.DemoProject do + use Mix.Project + + def project do + [ + app: :scopes_demo, + version: "0.1.0", + elixir: "~> 1.18", + start_permanent: Mix.env() == :prod, + deps: deps() + ] + end + + # Run "mix help compile.app" to learn about applications. + def application do + [ + mod: {Scopes.Demo.Application, []}, + extra_applications: [:logger] + ] + end + + # Run "mix help deps" to learn about dependencies. + defp deps do + [ + {:phoenix, "~> 1.8.5"}, + # {:dep_from_git, git: "https://github.com/elixir-lang/my_dep.git", tag: "0.1.0"} + ] + end +end diff --git a/projects/demo/mix.lock b/projects/demo/mix.lock new file mode 100644 index 0000000..1822fa1 --- /dev/null +++ b/projects/demo/mix.lock @@ -0,0 +1,11 @@ +%{ + "mime": {:hex, :mime, "2.0.7", "b8d739037be7cd402aee1ba0306edfdef982687ee7e9859bee6198c1e7e2f128", [:mix], [], "hexpm", "6171188e399ee16023ffc5b76ce445eb6d9672e2e241d2df6050f3c771e80ccd"}, + "phoenix": {:hex, :phoenix, "1.8.7", "d8d755b4ff4b449f610223dd706b4ae64155cb720d3dc09c706c079ecea189e4", [:mix], [{:bandit, "~> 1.0", [hex: :bandit, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.1", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.7", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.2 or ~> 2.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:websock_adapter, "~> 0.5.3", [hex: :websock_adapter, repo: "hexpm", optional: false]}], "hexpm", "47352f72d6ab31009ef77516b1b3a14745be97b54061fd458031b9d8294869d5"}, + "phoenix_pubsub": {:hex, :phoenix_pubsub, "2.2.0", "ff3a5616e1bed6804de7773b92cbccfc0b0f473faf1f63d7daf1206c7aeaaa6f", [:mix], [], "hexpm", "adc313a5bf7136039f63cfd9668fde73bba0765e0614cba80c06ac9460ff3e96"}, + "phoenix_template": {:hex, :phoenix_template, "1.0.4", "e2092c132f3b5e5b2d49c96695342eb36d0ed514c5b252a77048d5969330d639", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}], "hexpm", "2c0c81f0e5c6753faf5cca2f229c9709919aba34fab866d3bc05060c9c444206"}, + "plug": {:hex, :plug, "1.19.2", "e4950525b22c6789dfb38a3f95d47171ba159da3fc5a33be9643b43d5e8adb98", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2 or ~> 2.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.3 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "b6fce20a56af5e60fa5dfecf3f907bb98ec981be43c79a3809a499bc3d133de0"}, + "plug_crypto": {:hex, :plug_crypto, "2.1.1", "19bda8184399cb24afa10be734f84a16ea0a2bc65054e23a62bb10f06bc89491", [:mix], [], "hexpm", "6470bce6ffe41c8bd497612ffde1a7e4af67f36a15eea5f921af71cf3e11247c"}, + "telemetry": {:hex, :telemetry, "1.4.2", "a0cb522801dffb1c49fe6e30561badffc7b6d0e180db1300df759faa22062855", [:rebar3], [], "hexpm", "928f6495066506077862c0d1646609eed891a4326bee3126ba54b60af61febb1"}, + "websock": {:hex, :websock, "0.5.3", "2f69a6ebe810328555b6fe5c831a851f485e303a7c8ce6c5f675abeb20ebdadc", [:mix], [], "hexpm", "6105453d7fac22c712ad66fab1d45abdf049868f253cf719b625151460b8b453"}, + "websock_adapter": {:hex, :websock_adapter, "0.5.9", "43dc3ba6d89ef5dec5b1d0a39698436a1e856d000d84bf31a3149862b01a287f", [:mix], [{:bandit, ">= 0.6.0", [hex: :bandit, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.6", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:websock, "~> 0.5", [hex: :websock, repo: "hexpm", optional: false]}], "hexpm", "5534d5c9adad3c18a0f58a9371220d75a803bf0b9a3d87e6fe072faaeed76a08"}, +}