Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
A
asdf
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
16
Issues
16
List
Boards
Labels
Service Desk
Milestones
Merge Requests
9
Merge Requests
9
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
asdf
asdf
Commits
46c0a3b1
Commit
46c0a3b1
authored
May 22, 2015
by
Francois-Rene Rideau
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
tools: export the success / failure infrastructure.
parent
68d2fa4b
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
14 additions
and
8 deletions
+14
-8
tools/failure.lisp
tools/failure.lisp
+9
-0
tools/main.lisp
tools/main.lisp
+1
-7
tools/package.lisp
tools/package.lisp
+4
-1
No files found.
tools/failure.lisp
View file @
46c0a3b1
...
...
@@ -136,3 +136,12 @@
(
when
(
failurep
(
multiple-value-list
(
with-failure-context
()
(
funcall
thunk
))))
(
setf
failurep
t
)))
(
failure-if
failurep
(
make-failures
)))))
(
defun
run-command
(
fun
&rest
args
)
(
let
((
results
(
multiple-value-list
(
with-failure-context
()
(
apply
fun
(
rest
args
))))))
;; Don't print anything on success for regular commands, otherwise print all values returned.
(
if
(
failurep
results
)
(
let
((
failures
(
failure-failures
results
)))
(
format
t
"~&Failure~P:~{~& ~A~}~&"
(
length
failures
)
failures
))
(
format
t
"~{~&~S~&~}"
(
if
(
successp
results
)
(
success-values
results
)
results
)))
(
apply
'values
results
)))
tools/main.lisp
View file @
46c0a3b1
...
...
@@ -96,13 +96,7 @@ based on a list of targets"
;;; NB: For access control, you could check that only exported symbols are used as entry points.
(
defun
process-arguments
(
args
)
(
if-let
((
fun
(
and
args
(
find-command
(
first
args
)))))
(
let
((
results
(
multiple-value-list
(
with-failure-context
()
(
apply
fun
(
rest
args
))))))
;; Don't print anything on success for regular commands, otherwise print all values returned.
(
if
(
failurep
results
)
(
let
((
failures
(
failure-failures
results
)))
(
format
t
"~&Failure~P:~{~& ~A~}~&"
(
length
failures
)
failures
))
(
format
t
"~{~&~S~&~}"
(
if
(
successp
results
)
(
success-values
results
)
results
)))
(
apply
'values
results
))
(
run-command
fun
(
rest
args
))
(
progn
(
if
args
(
format
t
"Command ~A not found~%"
(
first
args
))
...
...
tools/package.lisp
View file @
46c0a3b1
(
defpackage
:asdf-tools
(
:use
:common-lisp
:uiop
:asdf
:fare-utils
:inferior-shell
:lisp-invocation
:cl-ppcre
:optima
:optima.ppcre
)
(
:export
))
;; TODO: export stuff
(
:export
;; TODO: export stuff
;; failure
#:with-failure-context
#:success
#:failure
#:success-if
#:failure-if
#:fail!
#:without-stopping
#:call-without-stopping
#:run-command
))
;; Just so we can use the name in our test scripts...
(
defpackage
:asdf-test
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment