brut 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +7 -0
- data/CODE_OF_CONDUCT.txt +99 -0
- data/Dockerfile.dx +32 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +133 -0
- data/LICENSE.txt +370 -0
- data/README.md +21 -0
- data/Rakefile +1 -0
- data/bin/bin_kit.rb +39 -0
- data/bin/rake +27 -0
- data/bin/setup +145 -0
- data/brut.gemspec +60 -0
- data/docker-compose.dx.yml +16 -0
- data/dx/build +26 -0
- data/dx/docker-compose.env +22 -0
- data/dx/dx.sh.lib +24 -0
- data/dx/exec +58 -0
- data/dx/prune +19 -0
- data/dx/setupkit.sh.lib +144 -0
- data/dx/show-help-in-app-container-then-wait.sh +38 -0
- data/dx/start +30 -0
- data/dx/stop +23 -0
- data/lib/brut/back_end/action.rb +3 -0
- data/lib/brut/back_end/result.rb +46 -0
- data/lib/brut/back_end/seed_data.rb +24 -0
- data/lib/brut/back_end/validator.rb +3 -0
- data/lib/brut/back_end/validators/form_validator.rb +37 -0
- data/lib/brut/cli/app.rb +130 -0
- data/lib/brut/cli/app_runner.rb +219 -0
- data/lib/brut/cli/apps/build_assets.rb +123 -0
- data/lib/brut/cli/apps/db.rb +279 -0
- data/lib/brut/cli/apps/scaffold.rb +256 -0
- data/lib/brut/cli/apps/test.rb +200 -0
- data/lib/brut/cli/command.rb +130 -0
- data/lib/brut/cli/error.rb +12 -0
- data/lib/brut/cli/execution_results.rb +81 -0
- data/lib/brut/cli/executor.rb +37 -0
- data/lib/brut/cli/options.rb +46 -0
- data/lib/brut/cli/output.rb +30 -0
- data/lib/brut/cli.rb +24 -0
- data/lib/brut/factory_bot.rb +20 -0
- data/lib/brut/framework/app.rb +55 -0
- data/lib/brut/framework/config.rb +415 -0
- data/lib/brut/framework/container.rb +190 -0
- data/lib/brut/framework/errors/abstract_method.rb +9 -0
- data/lib/brut/framework/errors/bug.rb +14 -0
- data/lib/brut/framework/errors/not_found.rb +10 -0
- data/lib/brut/framework/errors.rb +14 -0
- data/lib/brut/framework/fussy_type_enforcement.rb +50 -0
- data/lib/brut/framework/mcp.rb +215 -0
- data/lib/brut/framework/project_environment.rb +18 -0
- data/lib/brut/framework.rb +13 -0
- data/lib/brut/front_end/asset_metadata.rb +76 -0
- data/lib/brut/front_end/component.rb +213 -0
- data/lib/brut/front_end/components/form_tag.rb +71 -0
- data/lib/brut/front_end/components/i18n_translations.rb +36 -0
- data/lib/brut/front_end/components/input.rb +13 -0
- data/lib/brut/front_end/components/inputs/csrf_token.rb +8 -0
- data/lib/brut/front_end/components/inputs/select.rb +100 -0
- data/lib/brut/front_end/components/inputs/text_field.rb +63 -0
- data/lib/brut/front_end/components/inputs/textarea.rb +51 -0
- data/lib/brut/front_end/components/locale_detection.rb +25 -0
- data/lib/brut/front_end/components/page_identifier.rb +13 -0
- data/lib/brut/front_end/components/timestamp.rb +33 -0
- data/lib/brut/front_end/download.rb +23 -0
- data/lib/brut/front_end/flash.rb +57 -0
- data/lib/brut/front_end/form.rb +171 -0
- data/lib/brut/front_end/forms/constraint_violation.rb +39 -0
- data/lib/brut/front_end/forms/input.rb +119 -0
- data/lib/brut/front_end/forms/input_definition.rb +100 -0
- data/lib/brut/front_end/forms/validity_state.rb +36 -0
- data/lib/brut/front_end/handler.rb +48 -0
- data/lib/brut/front_end/handlers/csp_reporting_handler.rb +11 -0
- data/lib/brut/front_end/handlers/locale_detection_handler.rb +22 -0
- data/lib/brut/front_end/handling_results.rb +14 -0
- data/lib/brut/front_end/http_method.rb +33 -0
- data/lib/brut/front_end/http_status.rb +16 -0
- data/lib/brut/front_end/middleware.rb +7 -0
- data/lib/brut/front_end/middlewares/reload_app.rb +31 -0
- data/lib/brut/front_end/page.rb +47 -0
- data/lib/brut/front_end/request_context.rb +82 -0
- data/lib/brut/front_end/route_hook.rb +15 -0
- data/lib/brut/front_end/route_hooks/age_flash.rb +8 -0
- data/lib/brut/front_end/route_hooks/csp_no_inline_scripts.rb +17 -0
- data/lib/brut/front_end/route_hooks/csp_no_inline_styles_or_scripts.rb +46 -0
- data/lib/brut/front_end/route_hooks/locale_detection.rb +24 -0
- data/lib/brut/front_end/route_hooks/setup_request_context.rb +11 -0
- data/lib/brut/front_end/routing.rb +236 -0
- data/lib/brut/front_end/session.rb +56 -0
- data/lib/brut/front_end/template.rb +32 -0
- data/lib/brut/front_end/templates/block_filter.rb +60 -0
- data/lib/brut/front_end/templates/erb_engine.rb +26 -0
- data/lib/brut/front_end/templates/erb_parser.rb +84 -0
- data/lib/brut/front_end/templates/escapable_filter.rb +18 -0
- data/lib/brut/front_end/templates/html_safe_string.rb +40 -0
- data/lib/brut/i18n/base_methods.rb +168 -0
- data/lib/brut/i18n/for_cli.rb +4 -0
- data/lib/brut/i18n/for_html.rb +4 -0
- data/lib/brut/i18n/http_accept_language.rb +68 -0
- data/lib/brut/i18n.rb +6 -0
- data/lib/brut/instrumentation/basic.rb +66 -0
- data/lib/brut/instrumentation/event.rb +19 -0
- data/lib/brut/instrumentation/http_event.rb +5 -0
- data/lib/brut/instrumentation/subscriber.rb +41 -0
- data/lib/brut/instrumentation.rb +11 -0
- data/lib/brut/junk_drawer.rb +88 -0
- data/lib/brut/sinatra_helpers.rb +183 -0
- data/lib/brut/spec_support/component_support.rb +49 -0
- data/lib/brut/spec_support/flash_support.rb +7 -0
- data/lib/brut/spec_support/general_support.rb +18 -0
- data/lib/brut/spec_support/handler_support.rb +7 -0
- data/lib/brut/spec_support/matcher.rb +9 -0
- data/lib/brut/spec_support/matchers/be_a_bug.rb +14 -0
- data/lib/brut/spec_support/matchers/be_page_for.rb +14 -0
- data/lib/brut/spec_support/matchers/be_routing_for.rb +11 -0
- data/lib/brut/spec_support/matchers/have_constraint_violation.rb +56 -0
- data/lib/brut/spec_support/matchers/have_html_attribute.rb +69 -0
- data/lib/brut/spec_support/matchers/have_rendered.rb +20 -0
- data/lib/brut/spec_support/matchers/have_returned_http_status.rb +27 -0
- data/lib/brut/spec_support/session_support.rb +3 -0
- data/lib/brut/spec_support.rb +12 -0
- data/lib/brut/version.rb +3 -0
- data/lib/brut.rb +38 -0
- data/lib/sequel/extensions/brut_instrumentation.rb +37 -0
- data/lib/sequel/extensions/brut_migrations.rb +98 -0
- data/lib/sequel/plugins/created_at.rb +14 -0
- data/lib/sequel/plugins/external_id.rb +45 -0
- data/lib/sequel/plugins/find_bang.rb +13 -0
- data/lib/sequel/plugins.rb +3 -0
- metadata +484 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: c756b30db51ff455ac587492ee974356c0dbe4084483fc562854ce682cca8014
|
4
|
+
data.tar.gz: 7ce5250e1bfac5f9cd61f3329399a5896f83ce4af9457882190a9e089cf35fcd
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 35f7f592155864b2bc178c2c8267967c95a141da0105c07e2969c3a646435fb23101a3070e686aebd5fc797e1938155e7e8d4f6af029bb93eb208350f4774014
|
7
|
+
data.tar.gz: db78b9b4ac1be3561a599cae098a2ae4c005a027d0f9c768e8d766add2c736ee87614505bc131750cb1b3af8d99b916054c427c48556ba8d2f5422c002125de8
|
data/.gitignore
ADDED
data/CODE_OF_CONDUCT.txt
ADDED
@@ -0,0 +1,99 @@
|
|
1
|
+
Contributor Covenant Code of Conduct
|
2
|
+
|
3
|
+
Our Pledge
|
4
|
+
|
5
|
+
We as members, contributors, and leaders pledge to make participation in our
|
6
|
+
community a harassment-free experience for everyone, regardless of age, body
|
7
|
+
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
8
|
+
identity and expression, level of experience, education, socio-economic status,
|
9
|
+
nationality, personal appearance, race, caste, color, religion, or sexual
|
10
|
+
identity and orientation.
|
11
|
+
We pledge to act and interact in ways that contribute to an open, welcoming,
|
12
|
+
diverse, inclusive, and healthy community.
|
13
|
+
Our Standards
|
14
|
+
Examples of behavior that contributes to a positive environment for our
|
15
|
+
community include:
|
16
|
+
|
17
|
+
* Demonstrating empathy and kindness toward other people
|
18
|
+
* Being respectful of differing opinions, viewpoints, and experiences
|
19
|
+
* Giving and gracefully accepting constructive feedback
|
20
|
+
* Accepting responsibility and apologizing to those affected by our mistakes,
|
21
|
+
and learning from the experience
|
22
|
+
* Focusing on what is best not just for us as individuals, but for the overall
|
23
|
+
community
|
24
|
+
|
25
|
+
Examples of unacceptable behavior include:
|
26
|
+
|
27
|
+
* The use of sexualized language or imagery, and sexual attention or advances of
|
28
|
+
any kind
|
29
|
+
* Trolling, insulting or derogatory comments, and personal or political attacks
|
30
|
+
* Public or private harassment
|
31
|
+
* Publishing others’ private information, such as a physical or email address,
|
32
|
+
without their explicit permission
|
33
|
+
* Other conduct which could reasonably be considered inappropriate in a
|
34
|
+
professional setting
|
35
|
+
|
36
|
+
Enforcement Responsibilities
|
37
|
+
Community leaders are responsible for clarifying and enforcing our standards of
|
38
|
+
acceptable behavior and will take appropriate and fair corrective action in
|
39
|
+
response to any behavior that they deem inappropriate, threatening, offensive,
|
40
|
+
or harmful.
|
41
|
+
Community leaders have the right and responsibility to remove, edit, or reject
|
42
|
+
comments, commits, code, wiki edits, issues, and other contributions that are
|
43
|
+
not aligned to this Code of Conduct, and will communicate reasons for moderation
|
44
|
+
decisions when appropriate.
|
45
|
+
Scope
|
46
|
+
This Code of Conduct applies within all community spaces, and also applies when
|
47
|
+
an individual is officially representing the community in public spaces.
|
48
|
+
Examples of representing our community include using an official email address,
|
49
|
+
posting via an official social media account, or acting as an appointed
|
50
|
+
representative at an online or offline event.
|
51
|
+
Enforcement
|
52
|
+
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
53
|
+
reported to the community leaders responsible for enforcement at
|
54
|
+
[INSERT CONTACT METHOD].
|
55
|
+
All complaints will be reviewed and investigated promptly and fairly.
|
56
|
+
All community leaders are obligated to respect the privacy and security of the
|
57
|
+
reporter of any incident.
|
58
|
+
Enforcement Guidelines
|
59
|
+
Community leaders will follow these Community Impact Guidelines in determining
|
60
|
+
the consequences for any action they deem in violation of this Code of Conduct:
|
61
|
+
1. Correction
|
62
|
+
Community Impact: Use of inappropriate language or other behavior deemed
|
63
|
+
unprofessional or unwelcome in the community.
|
64
|
+
Consequence: A private, written warning from community leaders, providing
|
65
|
+
clarity around the nature of the violation and an explanation of why the
|
66
|
+
behavior was inappropriate. A public apology may be requested.
|
67
|
+
2. Warning
|
68
|
+
Community Impact: A violation through a single incident or series of
|
69
|
+
actions.
|
70
|
+
Consequence: A warning with consequences for continued behavior. No
|
71
|
+
interaction with the people involved, including unsolicited interaction with
|
72
|
+
those enforcing the Code of Conduct, for a specified period of time. This
|
73
|
+
includes avoiding interactions in community spaces as well as external channels
|
74
|
+
like social media. Violating these terms may lead to a temporary or permanent
|
75
|
+
ban.
|
76
|
+
3. Temporary Ban
|
77
|
+
Community Impact: A serious violation of community standards, including
|
78
|
+
sustained inappropriate behavior.
|
79
|
+
Consequence: A temporary ban from any sort of interaction or public
|
80
|
+
communication with the community for a specified period of time. No public or
|
81
|
+
private interaction with the people involved, including unsolicited interaction
|
82
|
+
with those enforcing the Code of Conduct, is allowed during this period.
|
83
|
+
Violating these terms may lead to a permanent ban.
|
84
|
+
4. Permanent Ban
|
85
|
+
Community Impact: Demonstrating a pattern of violation of community
|
86
|
+
standards, including sustained inappropriate behavior, harassment of an
|
87
|
+
individual, or aggression toward or disparagement of classes of individuals.
|
88
|
+
Consequence: A permanent ban from any sort of public interaction within the
|
89
|
+
community.
|
90
|
+
Attribution
|
91
|
+
This Code of Conduct is adapted from the Contributor Covenant,
|
92
|
+
version 2.1, available at
|
93
|
+
https://www.contributor-covenant.org/version/2/1/code_of_conduct.html.
|
94
|
+
Community Impact Guidelines were inspired by
|
95
|
+
Mozilla’s code of conduct enforcement ladder.
|
96
|
+
For answers to common questions about this code of conduct, see the FAQ at
|
97
|
+
https://www.contributor-covenant.org/faq. Translations are available at
|
98
|
+
https://www.contributor-covenant.org/translations.
|
99
|
+
|
data/Dockerfile.dx
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
FROM ruby:3.3
|
2
|
+
|
3
|
+
SHELL [ "/bin/bash", "-o", "pipefail", "-c" ]
|
4
|
+
|
5
|
+
ENV DEBIAN_FRONTEND noninteractive
|
6
|
+
|
7
|
+
# These packages are needed to set up other repos to install other
|
8
|
+
# packages and/or are useful in installing other software
|
9
|
+
RUN apt-get -y clean && \
|
10
|
+
apt-get -y update && \
|
11
|
+
apt-get install --quiet --yes ca-certificates curl gnupg rsync
|
12
|
+
|
13
|
+
# Install NODE per https://github.com/nodesource/distributions?tab=readme-ov-file#using-debian-as-root-nodejs-20
|
14
|
+
RUN curl -fsSL https://deb.nodesource.com/setup_20.x -o /tmp/nodesource_setup.sh && \
|
15
|
+
bash /tmp/nodesource_setup.sh && \
|
16
|
+
apt-get install -y nodejs
|
17
|
+
|
18
|
+
# Install Postgres client per https://www.postgresql.org/download/linux/debian/ - note that the
|
19
|
+
# automated configuration doesn't work, I think because it assumes non-root.
|
20
|
+
RUN apt-get -y install lsb-release && \
|
21
|
+
sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' && \
|
22
|
+
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - && \
|
23
|
+
apt-get update && \
|
24
|
+
apt-get -y install postgresql-client-16
|
25
|
+
|
26
|
+
RUN echo "gem: --no-document" >> ~/.gemrc && \
|
27
|
+
gem update --system && \
|
28
|
+
gem install bundler
|
29
|
+
|
30
|
+
# This entrypoint produces a nice help message and waits around for you to do
|
31
|
+
# something with the container.
|
32
|
+
COPY dx/show-help-in-app-container-then-wait.sh /root
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,133 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
brut (0.0.1)
|
5
|
+
dotenv
|
6
|
+
factory_bot
|
7
|
+
faker
|
8
|
+
i18n
|
9
|
+
nokogiri
|
10
|
+
ostruct
|
11
|
+
prism
|
12
|
+
rack-protection
|
13
|
+
rackup
|
14
|
+
rexml
|
15
|
+
semantic_logger
|
16
|
+
sequel
|
17
|
+
sinatra
|
18
|
+
temple
|
19
|
+
tilt
|
20
|
+
tzinfo
|
21
|
+
tzinfo-data
|
22
|
+
zeitwerk
|
23
|
+
|
24
|
+
GEM
|
25
|
+
remote: https://rubygems.org/
|
26
|
+
specs:
|
27
|
+
activesupport (8.0.0)
|
28
|
+
base64
|
29
|
+
benchmark (>= 0.3)
|
30
|
+
bigdecimal
|
31
|
+
concurrent-ruby (~> 1.0, >= 1.3.1)
|
32
|
+
connection_pool (>= 2.2.5)
|
33
|
+
drb
|
34
|
+
i18n (>= 1.6, < 2)
|
35
|
+
logger (>= 1.4.2)
|
36
|
+
minitest (>= 5.1)
|
37
|
+
securerandom (>= 0.3)
|
38
|
+
tzinfo (~> 2.0, >= 2.0.5)
|
39
|
+
uri (>= 0.13.1)
|
40
|
+
base64 (0.2.0)
|
41
|
+
benchmark (0.4.0)
|
42
|
+
bigdecimal (3.1.8)
|
43
|
+
concurrent-ruby (1.3.4)
|
44
|
+
connection_pool (2.4.1)
|
45
|
+
diff-lcs (1.5.1)
|
46
|
+
dotenv (3.1.4)
|
47
|
+
drb (2.2.1)
|
48
|
+
factory_bot (6.5.0)
|
49
|
+
activesupport (>= 5.0.0)
|
50
|
+
faker (3.5.1)
|
51
|
+
i18n (>= 1.8.11, < 2)
|
52
|
+
i18n (1.14.6)
|
53
|
+
concurrent-ruby (~> 1.0)
|
54
|
+
logger (1.6.1)
|
55
|
+
minitest (5.25.1)
|
56
|
+
mustermann (3.0.3)
|
57
|
+
ruby2_keywords (~> 0.0.1)
|
58
|
+
nokogiri (1.16.7-aarch64-linux)
|
59
|
+
racc (~> 1.4)
|
60
|
+
nokogiri (1.16.7-arm-linux)
|
61
|
+
racc (~> 1.4)
|
62
|
+
nokogiri (1.16.7-arm64-darwin)
|
63
|
+
racc (~> 1.4)
|
64
|
+
nokogiri (1.16.7-x86-linux)
|
65
|
+
racc (~> 1.4)
|
66
|
+
nokogiri (1.16.7-x86_64-darwin)
|
67
|
+
racc (~> 1.4)
|
68
|
+
nokogiri (1.16.7-x86_64-linux)
|
69
|
+
racc (~> 1.4)
|
70
|
+
ostruct (0.6.1)
|
71
|
+
prism (1.2.0)
|
72
|
+
racc (1.8.1)
|
73
|
+
rack (3.1.8)
|
74
|
+
rack-protection (4.0.0)
|
75
|
+
base64 (>= 0.1.0)
|
76
|
+
rack (>= 3.0.0, < 4)
|
77
|
+
rack-session (2.0.0)
|
78
|
+
rack (>= 3.0.0)
|
79
|
+
rackup (2.2.1)
|
80
|
+
rack (>= 3)
|
81
|
+
rake (13.2.1)
|
82
|
+
rexml (3.3.9)
|
83
|
+
rspec (3.13.0)
|
84
|
+
rspec-core (~> 3.13.0)
|
85
|
+
rspec-expectations (~> 3.13.0)
|
86
|
+
rspec-mocks (~> 3.13.0)
|
87
|
+
rspec-core (3.13.2)
|
88
|
+
rspec-support (~> 3.13.0)
|
89
|
+
rspec-expectations (3.13.3)
|
90
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
91
|
+
rspec-support (~> 3.13.0)
|
92
|
+
rspec-mocks (3.13.2)
|
93
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
94
|
+
rspec-support (~> 3.13.0)
|
95
|
+
rspec-support (3.13.1)
|
96
|
+
ruby2_keywords (0.0.5)
|
97
|
+
securerandom (0.3.2)
|
98
|
+
semantic_logger (4.16.1)
|
99
|
+
concurrent-ruby (~> 1.0)
|
100
|
+
sequel (5.86.0)
|
101
|
+
bigdecimal
|
102
|
+
sinatra (4.0.0)
|
103
|
+
mustermann (~> 3.0)
|
104
|
+
rack (>= 3.0.0, < 4)
|
105
|
+
rack-protection (= 4.0.0)
|
106
|
+
rack-session (>= 2.0.0, < 3)
|
107
|
+
tilt (~> 2.0)
|
108
|
+
temple (0.10.3)
|
109
|
+
tilt (2.4.0)
|
110
|
+
tzinfo (2.0.6)
|
111
|
+
concurrent-ruby (~> 1.0)
|
112
|
+
tzinfo-data (1.2024.2)
|
113
|
+
tzinfo (>= 1.0.0)
|
114
|
+
uri (1.0.2)
|
115
|
+
zeitwerk (2.7.1)
|
116
|
+
|
117
|
+
PLATFORMS
|
118
|
+
aarch64-linux
|
119
|
+
arm-linux
|
120
|
+
arm64-darwin
|
121
|
+
x86-linux
|
122
|
+
x86_64-darwin
|
123
|
+
x86_64-linux
|
124
|
+
|
125
|
+
DEPENDENCIES
|
126
|
+
activesupport
|
127
|
+
brut!
|
128
|
+
bundler
|
129
|
+
rake
|
130
|
+
rspec (~> 3.0)
|
131
|
+
|
132
|
+
BUNDLED WITH
|
133
|
+
2.5.23
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,370 @@
|
|
1
|
+
HIPPOCRATIC LICENSE
|
2
|
+
|
3
|
+
Version 3.0, October 2021
|
4
|
+
|
5
|
+
https://firstdonoharm.dev/version/3/0/cl-eco-media-my-tal-xuar.txt
|
6
|
+
|
7
|
+
TERMS AND CONDITIONS
|
8
|
+
|
9
|
+
TERMS AND CONDITIONS FOR USE, COPY, MODIFICATION, PREPARATION OF DERIVATIVE
|
10
|
+
WORK, REPRODUCTION, AND DISTRIBUTION:
|
11
|
+
|
12
|
+
1. DEFINITIONS:
|
13
|
+
|
14
|
+
This section defines certain terms used throughout this license agreement.
|
15
|
+
|
16
|
+
1.1. “License” means the terms and conditions, as stated herein, for use, copy,
|
17
|
+
modification, preparation of derivative work, reproduction, and distribution of
|
18
|
+
Software (as defined below).
|
19
|
+
|
20
|
+
1.2. “Licensor” means the copyright and/or patent owner or entity authorized by
|
21
|
+
the copyright and/or patent owner that is granting the License.
|
22
|
+
|
23
|
+
1.3. “Licensee” means the individual or entity exercising permissions granted by
|
24
|
+
this License, including the use, copy, modification, preparation of derivative
|
25
|
+
work, reproduction, and distribution of Software (as defined below).
|
26
|
+
|
27
|
+
1.4. “Software” means any copyrighted work, including but not limited to
|
28
|
+
software code, authored by Licensor and made available under this License.
|
29
|
+
|
30
|
+
1.5. “Supply Chain” means the sequence of processes involved in the production
|
31
|
+
and/or distribution of a commodity, good, or service offered by the Licensee.
|
32
|
+
|
33
|
+
1.6. “Supply Chain Impacted Party” or “Supply Chain Impacted Parties” means any
|
34
|
+
person(s) directly impacted by any of Licensee’s Supply Chain, including the
|
35
|
+
practices of all persons or entities within the Supply Chain prior to a good or
|
36
|
+
service reaching the Licensee.
|
37
|
+
|
38
|
+
1.7. “Duty of Care” is defined by its use in tort law, delict law, and/or
|
39
|
+
similar bodies of law closely related to tort and/or delict law, including
|
40
|
+
without limitation, a requirement to act with the watchfulness, attention,
|
41
|
+
caution, and prudence that a reasonable person in the same or similar
|
42
|
+
circumstances would use towards any Supply Chain Impacted Party.
|
43
|
+
|
44
|
+
1.8. “Worker” is defined to include any and all permanent, temporary, and agency
|
45
|
+
workers, as well as piece-rate, salaried, hourly paid, legal young (minors),
|
46
|
+
part-time, night, and migrant workers.
|
47
|
+
|
48
|
+
2. INTELLECTUAL PROPERTY GRANTS:
|
49
|
+
|
50
|
+
This section identifies intellectual property rights granted to a Licensee.
|
51
|
+
|
52
|
+
2.1. Grant of Copyright License: Subject to the terms and conditions of this
|
53
|
+
License, Licensor hereby grants to Licensee a worldwide, non-exclusive,
|
54
|
+
no-charge, royalty-free copyright license to use, copy, modify, prepare
|
55
|
+
derivative work, reproduce, or distribute the Software, Licensor authored
|
56
|
+
modified software, or other work derived from the Software.
|
57
|
+
|
58
|
+
2.2. Grant of Patent License: Subject to the terms and conditions of this
|
59
|
+
License, Licensor hereby grants Licensee a worldwide, non-exclusive, no-charge,
|
60
|
+
royalty-free patent license to make, have made, use, offer to sell, sell,
|
61
|
+
import, and otherwise transfer Software.
|
62
|
+
|
63
|
+
3. ETHICAL STANDARDS:
|
64
|
+
|
65
|
+
This section lists conditions the Licensee must comply with in order to have
|
66
|
+
rights under this License.
|
67
|
+
|
68
|
+
The rights granted to the Licensee by this License are expressly made subject to
|
69
|
+
the Licensee’s ongoing compliance with the following conditions:
|
70
|
+
|
71
|
+
* 3.1. The Licensee SHALL NOT, whether directly or indirectly, through agents
|
72
|
+
or assigns:
|
73
|
+
|
74
|
+
* 3.1.1. Infringe upon any person’s right to life or security of person,
|
75
|
+
engage in extrajudicial killings, or commit murder, without lawful cause
|
76
|
+
(See Article 3, United Nations Universal Declaration of Human Rights;
|
77
|
+
Article 6, International Covenant on Civil and Political Rights)
|
78
|
+
|
79
|
+
* 3.1.2. Hold any person in slavery, servitude, or forced labor (See Article
|
80
|
+
4, United Nations Universal Declaration of Human Rights; Article 8,
|
81
|
+
International Covenant on Civil and Political Rights);
|
82
|
+
|
83
|
+
* 3.1.3. Contribute to the institution of slavery, slave trading, forced
|
84
|
+
labor, or unlawful child labor (See Article 4, United Nations Universal
|
85
|
+
Declaration of Human Rights; Article 8, International Covenant on Civil and
|
86
|
+
Political Rights);
|
87
|
+
|
88
|
+
* 3.1.4. Torture or subject any person to cruel, inhumane, or degrading
|
89
|
+
treatment or punishment (See Article 5, United Nations Universal
|
90
|
+
Declaration of Human Rights; Article 7, International Covenant on Civil and
|
91
|
+
Political Rights);
|
92
|
+
|
93
|
+
* 3.1.5. Discriminate on the basis of sex, gender, sexual orientation, race,
|
94
|
+
ethnicity, nationality, religion, caste, age, medical disability or
|
95
|
+
impairment, and/or any other like circumstances (See Article 7, United
|
96
|
+
Nations Universal Declaration of Human Rights; Article 2, International
|
97
|
+
Covenant on Economic, Social and Cultural Rights; Article 26, International
|
98
|
+
Covenant on Civil and Political Rights);
|
99
|
+
|
100
|
+
* 3.1.6. Prevent any person from exercising his/her/their right to seek an
|
101
|
+
effective remedy by a competent court or national tribunal (including
|
102
|
+
domestic judicial systems, international courts, arbitration bodies, and
|
103
|
+
other adjudicating bodies) for actions violating the fundamental rights
|
104
|
+
granted to him/her/them by applicable constitutions, applicable laws, or by
|
105
|
+
this License (See Article 8, United Nations Universal Declaration of Human
|
106
|
+
Rights; Articles 9 and 14, International Covenant on Civil and Political
|
107
|
+
Rights);
|
108
|
+
|
109
|
+
* 3.1.7. Subject any person to arbitrary arrest, detention, or exile (See
|
110
|
+
Article 9, United Nations Universal Declaration of Human Rights; Article 9,
|
111
|
+
International Covenant on Civil and Political Rights);
|
112
|
+
|
113
|
+
* 3.1.8. Subject any person to arbitrary interference with a person’s
|
114
|
+
privacy, family, home, or correspondence without the express written
|
115
|
+
consent of the person (See Article 12, United Nations Universal Declaration
|
116
|
+
of Human Rights; Article 17, International Covenant on Civil and Political
|
117
|
+
Rights);
|
118
|
+
|
119
|
+
* 3.1.9. Arbitrarily deprive any person of his/her/their property (See
|
120
|
+
Article 17, United Nations Universal Declaration of Human Rights);
|
121
|
+
|
122
|
+
* 3.1.10. Forcibly remove indigenous peoples from their lands or territories
|
123
|
+
or take any action with the aim or effect of dispossessing indigenous
|
124
|
+
peoples from their lands, territories, or resources, including without
|
125
|
+
limitation the intellectual property or traditional knowledge of indigenous
|
126
|
+
peoples, without the free, prior, and informed consent of indigenous
|
127
|
+
peoples concerned (See Articles 8 and 10, United Nations Declaration on the
|
128
|
+
Rights of Indigenous Peoples);
|
129
|
+
|
130
|
+
* 3.1.11. Ecocide: Commit ecocide:
|
131
|
+
|
132
|
+
* 3.1.11.1. For the purpose of this section, “ecocide” means unlawful or
|
133
|
+
wanton acts committed with knowledge that there is a substantial
|
134
|
+
likelihood of severe and either widespread or long-term damage to the
|
135
|
+
environment being caused by those acts;
|
136
|
+
|
137
|
+
* 3.1.11.2. For the purpose of further defining ecocide and the terms
|
138
|
+
contained in the previous paragraph:
|
139
|
+
|
140
|
+
* 3.1.11.2.1. “Wanton” means with reckless disregard for damage which
|
141
|
+
would be clearly excessive in relation to the social and economic
|
142
|
+
benefits anticipated;
|
143
|
+
|
144
|
+
* 3.1.11.2.2. “Severe” means damage which involves very serious adverse
|
145
|
+
changes, disruption, or harm to any element of the environment,
|
146
|
+
including grave impacts on human life or natural, cultural, or
|
147
|
+
economic resources;
|
148
|
+
|
149
|
+
* 3.1.11.2.3. “Widespread” means damage which extends beyond a limited
|
150
|
+
geographic area, crosses state boundaries, or is suffered by an entire
|
151
|
+
ecosystem or species or a large number of human beings;
|
152
|
+
|
153
|
+
* 3.1.11.2.4. “Long-term” means damage which is irreversible or which
|
154
|
+
cannot be redressed through natural recovery within a reasonable
|
155
|
+
period of time; and
|
156
|
+
|
157
|
+
* 3.1.11.2.5. “Environment” means the earth, its biosphere, cryosphere,
|
158
|
+
lithosphere, hydrosphere, and atmosphere, as well as outer space
|
159
|
+
|
160
|
+
(See Section II, Independent Expert Panel for the Legal Definition of
|
161
|
+
Ecocide, Stop Ecocide Foundation and the Promise Institute for Human
|
162
|
+
Rights at UCLA School of Law, June 2021);
|
163
|
+
|
164
|
+
* 3.1.12. Taliban: Be an individual or entity that:
|
165
|
+
|
166
|
+
* 3.1.12.1. engages in any commercial transactions with the Taliban; or
|
167
|
+
|
168
|
+
* 3.1.12.2. is a representative, agent, affiliate, successor, attorney, or
|
169
|
+
assign of the Taliban;
|
170
|
+
|
171
|
+
* 3.1.13. Myanmar: Be an individual or entity that:
|
172
|
+
|
173
|
+
* 3.1.13.1. engages in any commercial transactions with the
|
174
|
+
Myanmar/Burmese military junta; or
|
175
|
+
|
176
|
+
* 3.1.13.2. is a representative, agent, affiliate, successor, attorney, or
|
177
|
+
assign of the Myanmar/Burmese government;
|
178
|
+
|
179
|
+
* 3.1.14. Xinjiang Uygur Autonomous Region: Be an individual or entity, or a
|
180
|
+
representative, agent, affiliate, successor, attorney, or assign of any
|
181
|
+
individual or entity, that does business in, purchases goods from, or
|
182
|
+
otherwise benefits from goods produced in the Xinjiang Uygur Autonomous
|
183
|
+
Region of China;
|
184
|
+
|
185
|
+
* 3.1.15. Media: Be an individual or entity, or a representative, agent,
|
186
|
+
affiliate, successor, attorney, or assign of an individual or entity, that
|
187
|
+
broadcasts messages promoting killing, torture, or other forms of extreme
|
188
|
+
violence;
|
189
|
+
|
190
|
+
* 3.1.16. Interfere with Workers' free exercise of the right to organize and
|
191
|
+
associate (See Article 20, United Nations Universal Declaration of Human
|
192
|
+
Rights; C087 - Freedom of Association and Protection of the Right to
|
193
|
+
Organise Convention, 1948 (No. 87), International Labour Organization;
|
194
|
+
Article 8, International Covenant on Economic, Social and Cultural Rights);
|
195
|
+
and
|
196
|
+
|
197
|
+
* 3.1.17. Harm the environment in a manner inconsistent with local, state,
|
198
|
+
national, or international law.
|
199
|
+
|
200
|
+
* 3.2. The Licensee SHALL:
|
201
|
+
|
202
|
+
* 3.2.1. Provide equal pay for equal work where the performance of such work
|
203
|
+
requires equal skill, effort, and responsibility, and which are performed
|
204
|
+
under similar working conditions, except where such payment is made
|
205
|
+
pursuant to:
|
206
|
+
|
207
|
+
* 3.2.1.1. A seniority system;
|
208
|
+
|
209
|
+
* 3.2.1.2. A merit system;
|
210
|
+
|
211
|
+
* 3.2.1.3. A system which measures earnings by quantity or quality of
|
212
|
+
production; or
|
213
|
+
|
214
|
+
* 3.2.1.4. A differential based on any other factor other than sex, gender,
|
215
|
+
sexual orientation, race, ethnicity, nationality, religion, caste, age,
|
216
|
+
medical disability or impairment, and/or any other like circumstances
|
217
|
+
(See 29 U.S.C.A. § 206(d)(1); Article 23, United Nations Universal
|
218
|
+
Declaration of Human Rights; Article 7, International Covenant on
|
219
|
+
Economic, Social and Cultural Rights; Article 26, International Covenant
|
220
|
+
on Civil and Political Rights); and
|
221
|
+
|
222
|
+
* 3.2.2. Allow for reasonable limitation of working hours and periodic
|
223
|
+
holidays with pay (See Article 24, United Nations Universal Declaration of
|
224
|
+
Human Rights; Article 7, International Covenant on Economic, Social and
|
225
|
+
Cultural Rights).
|
226
|
+
|
227
|
+
4. SUPPLY CHAIN IMPACTED PARTIES:
|
228
|
+
|
229
|
+
This section identifies additional individuals or entities that a Licensee could
|
230
|
+
harm as a result of violating the Ethical Standards section, the condition that
|
231
|
+
the Licensee must voluntarily accept a Duty of Care for those individuals or
|
232
|
+
entities, and the right to a private right of action that those individuals or
|
233
|
+
entities possess as a result of violations of the Ethical Standards section.
|
234
|
+
|
235
|
+
4.1. In addition to the above Ethical Standards, Licensee voluntarily accepts a
|
236
|
+
Duty of Care for Supply Chain Impacted Parties of this License, including
|
237
|
+
individuals and communities impacted by violations of the Ethical Standards. The
|
238
|
+
Duty of Care is breached when a provision within the Ethical Standards section
|
239
|
+
is violated by a Licensee, one of its successors or assigns, or by an individual
|
240
|
+
or entity that exists within the Supply Chain prior to a good or service
|
241
|
+
reaching the Licensee.
|
242
|
+
|
243
|
+
4.2. Breaches of the Duty of Care, as stated within this section, shall create a
|
244
|
+
private right of action, allowing any Supply Chain Impacted Party harmed by the
|
245
|
+
Licensee to take legal action against the Licensee in accordance with applicable
|
246
|
+
negligence laws, whether they be in tort law, delict law, and/or similar bodies
|
247
|
+
of law closely related to tort and/or delict law, regardless if Licensee is
|
248
|
+
directly responsible for the harms suffered by a Supply Chain Impacted Party.
|
249
|
+
Nothing in this section shall be interpreted to include acts committed by
|
250
|
+
individuals outside of the scope of his/her/their employment.
|
251
|
+
|
252
|
+
5. NOTICE: This section explains when a Licensee must notify others of the
|
253
|
+
License.
|
254
|
+
|
255
|
+
5.1. Distribution of Notice: Licensee must ensure that everyone who receives a
|
256
|
+
copy of or uses any part of Software from Licensee, with or without changes,
|
257
|
+
also receives the License and the copyright notice included with Software (and
|
258
|
+
if included by the Licensor, patent, trademark, and attribution notice).
|
259
|
+
Licensee must ensure that License is prominently displayed so that any
|
260
|
+
individual or entity seeking to download, copy, use, or otherwise receive any
|
261
|
+
part of Software from Licensee is notified of this License and its terms and
|
262
|
+
conditions. Licensee must cause any modified versions of the Software to carry
|
263
|
+
prominent notices stating that Licensee changed the Software.
|
264
|
+
|
265
|
+
5.2. Modified Software: Licensee is free to create modifications of the Software
|
266
|
+
and distribute only the modified portion created by Licensee, however, any
|
267
|
+
derivative work stemming from the Software or its code must be distributed
|
268
|
+
pursuant to this License, including this Notice provision.
|
269
|
+
|
270
|
+
5.3. Recipients as Licensees: Any individual or entity that uses, copies,
|
271
|
+
modifies, reproduces, distributes, or prepares derivative work based upon the
|
272
|
+
Software, all or part of the Software’s code, or a derivative work developed by
|
273
|
+
using the Software, including a portion of its code, is a Licensee as defined
|
274
|
+
above and is subject to the terms and conditions of this License.
|
275
|
+
|
276
|
+
6. REPRESENTATIONS AND WARRANTIES:
|
277
|
+
|
278
|
+
6.1. Disclaimer of Warranty: TO THE FULL EXTENT ALLOWED BY LAW, THIS SOFTWARE
|
279
|
+
COMES “AS IS,” WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED, AND LICENSOR SHALL NOT
|
280
|
+
BE LIABLE TO ANY PERSON OR ENTITY FOR ANY DAMAGES OR OTHER LIABILITY ARISING
|
281
|
+
FROM, OUT OF, OR IN CONNECTION WITH THE SOFTWARE OR THIS LICENSE, UNDER ANY
|
282
|
+
LEGAL CLAIM.
|
283
|
+
|
284
|
+
6.2. Limitation of Liability: LICENSEE SHALL HOLD LICENSOR HARMLESS AGAINST ANY
|
285
|
+
AND ALL CLAIMS, DEBTS, DUES, LIABILITIES, LIENS, CAUSES OF ACTION, DEMANDS,
|
286
|
+
OBLIGATIONS, DISPUTES, DAMAGES, LOSSES, EXPENSES, ATTORNEYS' FEES, COSTS,
|
287
|
+
LIABILITIES, AND ALL OTHER CLAIMS OF EVERY KIND AND NATURE WHATSOEVER, WHETHER
|
288
|
+
KNOWN OR UNKNOWN, ANTICIPATED OR UNANTICIPATED, FORESEEN OR UNFORESEEN, ACCRUED
|
289
|
+
OR UNACCRUED, DISCLOSED OR UNDISCLOSED, ARISING OUT OF OR RELATING TO LICENSEE’S
|
290
|
+
USE OF THE SOFTWARE. NOTHING IN THIS SECTION SHOULD BE INTERPRETED TO REQUIRE
|
291
|
+
LICENSEE TO INDEMNIFY LICENSOR, NOR REQUIRE LICENSOR TO INDEMNIFY LICENSEE.
|
292
|
+
|
293
|
+
7. TERMINATION
|
294
|
+
|
295
|
+
7.1. Violations of Ethical Standards or Breaching Duty of Care: If Licensee
|
296
|
+
violates the Ethical Standards section or Licensee, or any other person or
|
297
|
+
entity within the Supply Chain prior to a good or service reaching the Licensee,
|
298
|
+
breaches its Duty of Care to Supply Chain Impacted Parties, Licensee must remedy
|
299
|
+
the violation or harm caused by Licensee within 30 days of being notified of the
|
300
|
+
violation or harm. If Licensee fails to remedy the violation or harm within 30
|
301
|
+
days, all rights in the Software granted to Licensee by License will be null and
|
302
|
+
void as between Licensor and Licensee.
|
303
|
+
|
304
|
+
7.2. Failure of Notice: If any person or entity notifies Licensee in writing
|
305
|
+
that Licensee has not complied with the Notice section of this License, Licensee
|
306
|
+
can keep this License by taking all practical steps to comply within 30 days
|
307
|
+
after the notice of noncompliance. If Licensee does not do so, Licensee’s
|
308
|
+
License (and all rights licensed hereunder) will end immediately.
|
309
|
+
|
310
|
+
7.3. Judicial Findings: In the event Licensee is found by a civil, criminal,
|
311
|
+
administrative, or other court of competent jurisdiction, or some other
|
312
|
+
adjudicating body with legal authority, to have committed actions which are in
|
313
|
+
violation of the Ethical Standards or Supply Chain Impacted Party sections of
|
314
|
+
this License, all rights granted to Licensee by this License will terminate
|
315
|
+
immediately.
|
316
|
+
|
317
|
+
7.4. Patent Litigation: If Licensee institutes patent litigation against any
|
318
|
+
entity (including a cross-claim or counterclaim in a suit) alleging that the
|
319
|
+
Software, all or part of the Software’s code, or a derivative work developed
|
320
|
+
using the Software, including a portion of its code, constitutes direct or
|
321
|
+
contributory patent infringement, then any patent license, along with all other
|
322
|
+
rights, granted to Licensee under this License will terminate as of the date
|
323
|
+
such litigation is filed.
|
324
|
+
|
325
|
+
7.5. Additional Remedies: Termination of the License by failing to remedy harms
|
326
|
+
in no way prevents Licensor or Supply Chain Impacted Party from seeking
|
327
|
+
appropriate remedies at law or in equity.
|
328
|
+
|
329
|
+
8. MISCELLANEOUS:
|
330
|
+
|
331
|
+
8.1. Conditions: Sections 3, 4.1, 5.1, 5.2, 7.1, 7.2, 7.3, and 7.4 are
|
332
|
+
conditions of the rights granted to Licensee in the License.
|
333
|
+
|
334
|
+
8.2. Equitable Relief: Licensor and any Supply Chain Impacted Party shall be
|
335
|
+
entitled to equitable relief, including injunctive relief or specific
|
336
|
+
performance of the terms hereof, in addition to any other remedy to which they
|
337
|
+
are entitled at law or in equity.
|
338
|
+
|
339
|
+
8.3. Copyleft: Modified software, source code, or other derivative work must be
|
340
|
+
licensed, in its entirety, under the exact same conditions as this License.
|
341
|
+
|
342
|
+
8.4. Severability: If any term or provision of this License is determined to be
|
343
|
+
invalid, illegal, or unenforceable by a court of competent jurisdiction, any
|
344
|
+
such determination of invalidity, illegality, or unenforceability shall not
|
345
|
+
affect any other term or provision of this License or invalidate or render
|
346
|
+
unenforceable such term or provision in any other jurisdiction. If the
|
347
|
+
determination of invalidity, illegality, or unenforceability by a court of
|
348
|
+
competent jurisdiction pertains to the terms or provisions contained in the
|
349
|
+
Ethical Standards section of this License, all rights in the Software granted to
|
350
|
+
Licensee shall be deemed null and void as between Licensor and Licensee.
|
351
|
+
|
352
|
+
8.5. Section Titles: Section titles are solely written for organizational
|
353
|
+
purposes and should not be used to interpret the language within each section.
|
354
|
+
|
355
|
+
8.6. Citations: Citations are solely written to provide context for the source
|
356
|
+
of the provisions in the Ethical Standards.
|
357
|
+
|
358
|
+
8.7. Section Summaries: Some sections have a brief italicized description which
|
359
|
+
is provided for the sole purpose of briefly describing the section and should
|
360
|
+
not be used to interpret the terms of the License.
|
361
|
+
|
362
|
+
8.8. Entire License: This is the entire License between the Licensor and
|
363
|
+
Licensee with respect to the claims released herein and that the consideration
|
364
|
+
stated herein is the only consideration or compensation to be paid or exchanged
|
365
|
+
between them for this License. This License cannot be modified or amended except
|
366
|
+
in a writing signed by Licensor and Licensee.
|
367
|
+
|
368
|
+
8.9. Successors and Assigns: This License shall be binding upon and inure to the
|
369
|
+
benefit of the Licensor’s and Licensee’s respective heirs, successors, and
|
370
|
+
assigns.
|
data/README.md
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# Brut - The Raw, Simple, Powerful, Standards-Based Web Framework
|
2
|
+
|
3
|
+
Brut is a way to make web apps with Ruby, captializing on the knowledge you have—HTTP, HTML, CSS, JavaScript, SQL—without requiring
|
4
|
+
*too* much extra stuff to learn.
|
5
|
+
|
6
|
+
## Installation
|
7
|
+
|
8
|
+
Add this line to your application's Gemfile:
|
9
|
+
|
10
|
+
```ruby
|
11
|
+
gem "brut"
|
12
|
+
```
|
13
|
+
|
14
|
+
And then execute:
|
15
|
+
|
16
|
+
$ bundle
|
17
|
+
|
18
|
+
Or install it yourself as:
|
19
|
+
|
20
|
+
$ gem install brut
|
21
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|