Merge branch 'release-ci' into 'main'
Release CI See merge request whom/relish!13
This commit is contained in:
commit
386d0900a9
6 changed files with 176 additions and 17 deletions
|
|
@ -1,6 +1,11 @@
|
||||||
default:
|
default:
|
||||||
image: rust:latest
|
image: rust:latest
|
||||||
|
|
||||||
|
stages:
|
||||||
|
- build
|
||||||
|
- test
|
||||||
|
- release
|
||||||
|
|
||||||
compile-with-posix-features:
|
compile-with-posix-features:
|
||||||
stage: build
|
stage: build
|
||||||
script:
|
script:
|
||||||
|
|
@ -16,19 +21,6 @@ compile-implicit-load:
|
||||||
script:
|
script:
|
||||||
- cargo build -F implicit-load
|
- cargo build -F implicit-load
|
||||||
|
|
||||||
compile-release:
|
|
||||||
stage: build
|
|
||||||
script:
|
|
||||||
- cargo build --release
|
|
||||||
artifacts:
|
|
||||||
paths:
|
|
||||||
- target/release/flesh
|
|
||||||
only:
|
|
||||||
variables:
|
|
||||||
- $CI_COMMIT_TAG =~ /^v\d+.\d+.\d+-?.*$/
|
|
||||||
except:
|
|
||||||
- branches
|
|
||||||
|
|
||||||
unit-tests:
|
unit-tests:
|
||||||
stage: test
|
stage: test
|
||||||
script:
|
script:
|
||||||
|
|
@ -38,3 +30,52 @@ userlib-tests:
|
||||||
stage: test
|
stage: test
|
||||||
script:
|
script:
|
||||||
- cargo run --no-default-features snippets/userlib.f snippets/userlib-tests.f
|
- cargo run --no-default-features snippets/userlib.f snippets/userlib-tests.f
|
||||||
|
|
||||||
|
prepare-release:
|
||||||
|
stage: release
|
||||||
|
script:
|
||||||
|
- cargo build -F implicit-load --release
|
||||||
|
- |
|
||||||
|
tar -czf flesh-$CI_COMMIT_TAG.tar.gz \
|
||||||
|
--xform='s,target/release/,,' \
|
||||||
|
--xform='s,snippets/,,' \
|
||||||
|
--xform='s,snippets/release/,,' \
|
||||||
|
--xform='s,release/,,' \
|
||||||
|
target/release/flesh \
|
||||||
|
Readme.org Writing.org Shell.org \
|
||||||
|
snippets/flesh-mode.el \
|
||||||
|
snippets/genbind.f \
|
||||||
|
snippets/interactive-devel.f \
|
||||||
|
snippets/userlib.f \
|
||||||
|
LICENSE.md \
|
||||||
|
snippets/release/default_fleshrc.f \
|
||||||
|
snippets/release/release_contents.txt \
|
||||||
|
snippets/release/install.sh
|
||||||
|
- echo $CI_COMMIT_TAG > VERSION
|
||||||
|
- echo $CI_JOB_ID > ID
|
||||||
|
artifacts:
|
||||||
|
paths:
|
||||||
|
- flesh-$CI_COMMIT_TAG.tar.gz
|
||||||
|
- VERSION
|
||||||
|
- ID
|
||||||
|
rules:
|
||||||
|
- if: '$CI_COMMIT_TAG =~ "/^v\d+.\d+.\d+/"'
|
||||||
|
|
||||||
|
create-release:
|
||||||
|
stage: release
|
||||||
|
image: registry.gitlab.com/gitlab-org/release-cli:latest
|
||||||
|
needs:
|
||||||
|
- job: prepare-release
|
||||||
|
artifacts: true
|
||||||
|
script:
|
||||||
|
- echo "running job for release!"
|
||||||
|
rules:
|
||||||
|
- if: '$CI_COMMIT_TAG =~ "/^v\d+.\d+.\d+/"'
|
||||||
|
release:
|
||||||
|
name: 'Release $(cat VERSION)'
|
||||||
|
description: 'This release was cut automatically from a git tag. See release_contents.txt for more information on the contents of the release.'
|
||||||
|
tag_name: $CI_COMMIT_TAG
|
||||||
|
assets:
|
||||||
|
links:
|
||||||
|
- name: Get the release here
|
||||||
|
url: https://gitlab.com/whom/relish/-/jobs/`cat ID`/artifacts/file/flesh-`cat VERSION`.tar.gz
|
||||||
|
|
|
||||||
|
|
@ -166,9 +166,6 @@ Note: this section only tracks the state of incomplete TODO items. Having everyt
|
||||||
- Can pass args to flesh scripts (via command line)
|
- Can pass args to flesh scripts (via command line)
|
||||||
- Can pass args to flesh scripts (via interpreter)
|
- Can pass args to flesh scripts (via interpreter)
|
||||||
- declare macros
|
- declare macros
|
||||||
- Release CI
|
|
||||||
- Make an icon if you feel like it
|
|
||||||
- Post release to relevant channels
|
|
||||||
** TODO v1.1 tasks
|
** TODO v1.1 tasks
|
||||||
- all autocomplete is done via configurable userfunction, default documented with 1:1 functionality
|
- all autocomplete is done via configurable userfunction, default documented with 1:1 functionality
|
||||||
- Pipe also operates on stderr
|
- Pipe also operates on stderr
|
||||||
|
|
|
||||||
BIN
logo.png
Normal file
BIN
logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.3 KiB |
65
snippets/release/default_fleshrc.f
Normal file
65
snippets/release/default_fleshrc.f
Normal file
|
|
@ -0,0 +1,65 @@
|
||||||
|
#!/usr/bin/env flesh
|
||||||
|
|
||||||
|
(set (q CFG_FLESH_POSIX) true)
|
||||||
|
(set (q CFG_FLESH_ENV) true)
|
||||||
|
|
||||||
|
(def snippets 'flesh conf snippets' (concat HOME "/.flesh/"))
|
||||||
|
(def _user_libraries 'flesh support libs'
|
||||||
|
((concat snippets '/userlib.f')
|
||||||
|
(concat snippets '/genbind.f')
|
||||||
|
(concat snippets '/interactive-devel.f')
|
||||||
|
;; add your own scripts here
|
||||||
|
))
|
||||||
|
|
||||||
|
(def loadlibs 'load all flesh libs'
|
||||||
|
(lambda ()
|
||||||
|
(let ((lib-iter (pop _user_libraries)))
|
||||||
|
(while (gt? (len lib-iter) 1)
|
||||||
|
(let ((lib (car lib-iter))
|
||||||
|
(next (cdr lib-iter)))
|
||||||
|
(call lib)
|
||||||
|
(def lib-iter '' (pop next)))))))
|
||||||
|
;(loadlibs)
|
||||||
|
|
||||||
|
(def user-paths 'custom path entries'
|
||||||
|
((concat HOME "/bin")
|
||||||
|
;; add more here
|
||||||
|
))
|
||||||
|
|
||||||
|
;; add path if not already included
|
||||||
|
;; only you can stop $PATH pollution
|
||||||
|
(map
|
||||||
|
(lambda (entry) (if (not (contains? (get-paths) entry))
|
||||||
|
(add-path entry)
|
||||||
|
()))
|
||||||
|
user-paths)
|
||||||
|
|
||||||
|
(def _fancy-cwd 'prints (up to) last three segments of current path'
|
||||||
|
()
|
||||||
|
(let ((cdir (load-to-string pwd))
|
||||||
|
(dir-segs (split cdir '/'))
|
||||||
|
(dir-iter (dq dir-segs))
|
||||||
|
(i 0))
|
||||||
|
(if (lte? (len dir-segs) 4)
|
||||||
|
cdir
|
||||||
|
(let ((final ""))
|
||||||
|
(while (lt? i 3)
|
||||||
|
(set (q final) (concat "/" (car dir-iter) final))
|
||||||
|
(set (q dir-iter) (dq (cdr dir-iter)))
|
||||||
|
(inc i))
|
||||||
|
(concat "..." final)))))
|
||||||
|
|
||||||
|
;; (def CFG_FLESH_CD_CB "directory based configs" ....... )
|
||||||
|
(def CFG_FLESH_L_PROMPT "left prompt" ()
|
||||||
|
(concat
|
||||||
|
"[" USER "]" "\t"
|
||||||
|
(_fancy-cwd)
|
||||||
|
"\n" ;; newline before delimiter
|
||||||
|
))
|
||||||
|
|
||||||
|
(def CFG_FLESH_R_PROMPT "right prompt" ()
|
||||||
|
(concat
|
||||||
|
"(" (load-to-string date "+%H:%M") ")" ))
|
||||||
|
|
||||||
|
(def CFG_FLESH_PROMPT_DELIMITER "delimiter" ()
|
||||||
|
" -> ")
|
||||||
33
snippets/release/install.sh
Normal file
33
snippets/release/install.sh
Normal file
|
|
@ -0,0 +1,33 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
if [ "$USER" != "root" ]; then
|
||||||
|
echo you will likely need root to place in /bin.
|
||||||
|
echo comment out this test to continue without it
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -n "$SUDO_USER" ]; then
|
||||||
|
echo SUDO_USER not set, so I dont know where to install to
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
libdir=/home/$SUDO_USER/.flesh/
|
||||||
|
|
||||||
|
if [ ! -d "$libdir" ]; then
|
||||||
|
mkdir $libdir
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -d "/home/$SUDO_USER/.emacs.d" ]; then
|
||||||
|
mv flesh-mode.el /home/$SUDO_USER/.emacs.d/
|
||||||
|
chown $SUDO_USER:$SUDO_USER /home/$SUDO_USER/.emacs.d/flesh-mode.el
|
||||||
|
fi
|
||||||
|
|
||||||
|
mv userlib.f $libdir
|
||||||
|
mv genbind.f $libdir
|
||||||
|
mv interactive-devel.f $libdir
|
||||||
|
mv default_fleshrc.f /home/$SUDO_USER/.fleshrc
|
||||||
|
chown -R $SUDO_USER:$SUDO_USER $libdir
|
||||||
|
chown $SUDO_USER:$SUDO_USER /home/$SUDO_USER/.fleshrc
|
||||||
|
|
||||||
|
mv flesh /bin/flesh
|
||||||
|
chmod +x /bin/flesh
|
||||||
23
snippets/release/release_contents.txt
Normal file
23
snippets/release/release_contents.txt
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
This file elaborates on the contents of this release zip
|
||||||
|
|
||||||
|
1. LICENSE.md: A copy of the license these procedures are offered under
|
||||||
|
2. Readme.org: A snapshot of the readme at time of release
|
||||||
|
3. Writing.org: A snapshot of the language spec at time of release
|
||||||
|
4. Shell.org: A snapshot of the shell spec at time of release
|
||||||
|
5. flesh: A binary executable for the flesh interpreter
|
||||||
|
This binary will have been build with the
|
||||||
|
implicit-load flag
|
||||||
|
6. flesh-mode.el: A copy of the Emacs flesh mode
|
||||||
|
7. genbind.f: A snapshot of the genbind library, mostly included
|
||||||
|
as an example of metaprogramming in flesh.
|
||||||
|
|
||||||
|
8. interactive-devel.f: A snapshot of the interactive development features.
|
||||||
|
9. userlib.f: A snapshot of the userlib at time of release
|
||||||
|
10: default_fleshrc.f: An example .fleshrc
|
||||||
|
11: install.sh An install script in shell for first time users.
|
||||||
|
this will overwrite .fleshrc with the example
|
||||||
|
this will install libraries to ~/.flesh/...
|
||||||
|
this will install flesh-mode.el in ~/.emacs.d if it exists
|
||||||
|
this will add the flesh binary to /bin/flesh
|
||||||
|
IT IS THE USER'S RESPONSIBILITY TO EDIT /etc/shells
|
||||||
|
Or to perform whatever tasks are desired to run flesh
|
||||||
Loading…
Add table
Add a link
Reference in a new issue