This repository has been archived on 2024-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
dagger/stdlib/random/string.cue
Andrea Luzzardi f3f5e7c714 docs: make universe
Signed-off-by: Andrea Luzzardi <aluzzardi@gmail.com>
2021-06-08 18:29:02 -07:00

74 lines
1.2 KiB
CUE

// Random generation utilities.
//
// Example:
//
// ```cue
// str: random.#String & {
// seed: "str"
// length: 10
// }
// ```
//
//
//
package random
import (
"strconv"
"dagger.io/alpine"
"dagger.io/dagger/op"
)
// Generate a random string
#String: {
// Seed of the random string to generate.
// When using the same `seed`, the same random string will be generated
// because of caching.
// FIXME: this is necessary because of https://github.com/dagger/dagger/issues/591
seed: string @dagger(input)
// length of the string
length: *12 | number @dagger(input)
// generated random string
out: {
string
#up: [
op.#Load & {from: alpine.#Image & {
package: python3: "=~3.8"
}},
op.#WriteFile & {
dest: "/entrypoint.py"
content: #"""
import random
import string
import os
length = int(os.environ['LENGTH'])
letters = string.ascii_lowercase
print ( ''.join(random.choice(letters) for i in range(length)) )
"""#
},
op.#Exec & {
args: ["sh", "-c", #"""
printf "$(python3 /entrypoint.py)" > /rand
"""#,
]
env: LENGTH: strconv.FormatInt(length, 10)
env: SEED: seed
always: true
},
op.#Export & {
source: "/rand"
},
]
} @dagger(output)
}