cue modules: move stdlib to pkg/alpha.dagger.io
In preparation for Europa, we will vendor multiple CUE modules: - `pkg/alpha.dagger.io`: legacy non-europa packages - `pkg/dagger.io`: core Europa packages - `pkg/universe.dagger.io`: Europa universe Signed-off-by: Andrea Luzzardi <aluzzardi@gmail.com>
This commit is contained in:
89
pkg/alpha.dagger.io/git/commit.cue
Normal file
89
pkg/alpha.dagger.io/git/commit.cue
Normal file
@@ -0,0 +1,89 @@
|
||||
package git
|
||||
|
||||
import (
|
||||
"alpha.dagger.io/dagger"
|
||||
"alpha.dagger.io/os"
|
||||
)
|
||||
|
||||
// Commit & push to git repository
|
||||
#Commit: {
|
||||
// Git repository
|
||||
repository: {
|
||||
// Repository source code
|
||||
source: dagger.#Artifact
|
||||
|
||||
// Repository remote URL
|
||||
remote: dagger.#Input & {string}
|
||||
|
||||
// Authentication token (PAT or password)
|
||||
authToken: dagger.#Input & {*null | dagger.#Secret}
|
||||
|
||||
// Git branch
|
||||
branch: dagger.#Input & {string}
|
||||
}
|
||||
|
||||
// Username
|
||||
name: dagger.#Input & {string}
|
||||
|
||||
// Email
|
||||
email: dagger.#Input & {string}
|
||||
|
||||
// Commit message
|
||||
message: dagger.#Input & {string}
|
||||
|
||||
// Content to commit
|
||||
content: dagger.#Artifact
|
||||
|
||||
// Force push options
|
||||
force: dagger.#Input & {*false | bool}
|
||||
|
||||
_ctr: os.#Container & {
|
||||
image: #Image
|
||||
command: #"""
|
||||
# Move changes into repository
|
||||
mv /input/content/* .
|
||||
|
||||
# Commit changes
|
||||
git add .
|
||||
git -c user.name="$USER_NAME" -c user.email="$USER_EMAIL" commit -m "$COMMIT_MESSAGE"
|
||||
|
||||
# Push
|
||||
git push "$OPT_FORCE" -u "$GIT_REMOTE" HEAD:refs/heads/"$GIT_BRANCH"
|
||||
|
||||
# Retrieve commit hash
|
||||
git rev-parse --verify HEAD | tr -d '\n' > /commit.txt
|
||||
"""#
|
||||
dir: "/input/repo"
|
||||
mount: {
|
||||
"/input/repo": from: repository.source
|
||||
"/input/content": from: content
|
||||
}
|
||||
env: {
|
||||
USER_NAME: name
|
||||
USER_EMAIL: email
|
||||
COMMIT_MESSAGE: message
|
||||
GIT_BRANCH: repository.branch
|
||||
GIT_REMOTE: repository.remote
|
||||
if force {
|
||||
OPT_FORCE: "-f"
|
||||
}
|
||||
|
||||
}
|
||||
if repository.authToken != null {
|
||||
env: GIT_ASKPASS: "/get_authToken"
|
||||
files: "/get_authToken": {
|
||||
content: "cat /secrets/authToken"
|
||||
mode: 0o500
|
||||
}
|
||||
secret: "/secrets/authToken": repository.authToken
|
||||
}
|
||||
}
|
||||
|
||||
// Commit hash
|
||||
hash: {
|
||||
os.#File & {
|
||||
from: _ctr
|
||||
path: "/commit.txt"
|
||||
}
|
||||
}.contents & dagger.#Output
|
||||
}
|
Reference in New Issue
Block a user