Init
This commit is contained in:
commit
6994167306
6 changed files with 135 additions and 0 deletions
9
.editorconfig
Normal file
9
.editorconfig
Normal file
|
@ -0,0 +1,9 @@
|
|||
root = true
|
||||
|
||||
[*.cr]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
trim_trailing_whitespace = true
|
9
.gitignore
vendored
Normal file
9
.gitignore
vendored
Normal file
|
@ -0,0 +1,9 @@
|
|||
/docs/
|
||||
/lib/
|
||||
/bin/
|
||||
/.shards/
|
||||
*.dwarf
|
||||
|
||||
# Libraries don't need dependency lock
|
||||
# Dependencies will be locked in applications that use them
|
||||
/shard.lock
|
21
LICENSE
Normal file
21
LICENSE
Normal file
|
@ -0,0 +1,21 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2022 Dominic Grimm <dominic.grimm@gmail.com>
|
||||
|
||||
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.
|
49
README.md
Normal file
49
README.md
Normal file
|
@ -0,0 +1,49 @@
|
|||
# senf
|
||||
|
||||
A safe environment variable requester.
|
||||
Should not be used in any kind of production environment.
|
||||
|
||||
## Installation
|
||||
|
||||
1. Add the dependency to your `shard.yml`:
|
||||
|
||||
```yaml
|
||||
dependencies:
|
||||
senf:
|
||||
git: https://git.dergrimm.net/dergrimm/senf.git
|
||||
```
|
||||
|
||||
2. Run `shards install`
|
||||
|
||||
## Usage
|
||||
|
||||
```crystal
|
||||
require "senf"
|
||||
|
||||
SAFE_ENV = Senf::SafeEnv.new([
|
||||
"TEST_1",
|
||||
"TEST_2"
|
||||
])
|
||||
|
||||
SAFE_ENV << "TEST_3"
|
||||
|
||||
p! SAFE_ENV["TEST_1"],
|
||||
SAFE_ENV["TEST_2"],
|
||||
SAFE_ENV["TEST_3"]
|
||||
```
|
||||
|
||||
## Development
|
||||
|
||||
TODO: Write development instructions here
|
||||
|
||||
## Contributing
|
||||
|
||||
1. Fork it
|
||||
2. Create your feature branch (`git checkout -b my-new-feature`)
|
||||
3. Commit your changes (`git commit -am 'Add some feature'`)
|
||||
4. Push to the branch (`git push origin my-new-feature`)
|
||||
5. Create a new Pull Request
|
||||
|
||||
## Contributors
|
||||
|
||||
- [Dominic Grimm](https://git.dergrimm.net/dergrimm) - creator and maintainer
|
9
shard.yml
Normal file
9
shard.yml
Normal file
|
@ -0,0 +1,9 @@
|
|||
name: senf
|
||||
version: 0.1.0
|
||||
|
||||
authors:
|
||||
- Dominic Grimm <dominic.grimm@gmail.com>
|
||||
|
||||
crystal: 1.3.0
|
||||
|
||||
license: MIT
|
38
src/senf.cr
Normal file
38
src/senf.cr
Normal file
|
@ -0,0 +1,38 @@
|
|||
module Senf
|
||||
VERSION = {{ `shards version`.stringify.chomp.downcase }}
|
||||
|
||||
class SafeEnv
|
||||
private property keys
|
||||
|
||||
def initialize(@keys = {} of String => String?)
|
||||
end
|
||||
|
||||
def initialize(keys : Array(String))
|
||||
@keys = {} of String => String?
|
||||
keys.each { |k| self.<< k }
|
||||
end
|
||||
|
||||
def <<(key : String) : self
|
||||
@keys[key] = ENV[key]?
|
||||
|
||||
self
|
||||
end
|
||||
|
||||
def []?(key : String) : String?
|
||||
if @keys.has_key?(key)
|
||||
@keys[key]?
|
||||
end
|
||||
end
|
||||
|
||||
def [](key : String) : String
|
||||
if @keys.has_key?(key)
|
||||
val = @keys[key]?
|
||||
raise "ENV[#{key}] is nil" unless val
|
||||
|
||||
val
|
||||
else
|
||||
raise "No such key: #{key}"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Reference in a new issue