Reputation: 89093
I'm trying to get started playing with factor.
So far, I've:
$INSTALL/factor
$INSTALL/factor/factor
Which seems to be running great.
Following the instructions for writing your first factor program, I noticed that scaffold-vocab
generated files in my $INSTALL/factor/work
directory. Which I can use for now, but in general, I like to keep a separate $INSTALL
directory-tree and $CODE
directory-tree.
So I'm trying to follow the instructions from the "Working with code outside of the Factor directory tree" documentation to add other directories to the path used to load code into the factor
executable, but I'm not having much luck.
First, I tried to set a FACTOR_ROOTS
environment variable:
% export FACTOR_ROOTS=.:$CODE/Factor:$INSTALL/factor
% $INSTALL/factor/factor
( scratchpad ) "work" resource-path .
"/usr/local/src/factor/work"
( scratchpad ) ^D
Then, I tried to create a ~/.factor-roots
file
% echo . > ~/.factor-roots
% echo $CODE/Factor >> ~/.factor-roots
% echo $INSTALL/factor >> ~/.factor-roots
% $INSTALL/factor/factor
( scratchpad ) "work" resource-path .
"/usr/local/src/factor/work"
( scratchpad ) ^D
Then I checked to see if it should be ./.factor-roots
instead:
% mv ~/.factor-roots .
% $INSTALL/factor/factor
( scratchpad ) "work" resource-path .
"/usr/local/src/factor/work"
( scratchpad ) ^D
Lastly, I tried adding it manually:
% $INSTALL/factor/factor
( scratchpad ) "." add-vocab-root
( scratchpad ) "$CODE/Factor" add-vocab-root ! no, I didn't actually use an environment variable here :)
( scratchpad ) "work" resource-path .
"/usr/local/src/factor/work"
( scratchpad ) ^D
It seems I'm missing something fundamental here.
How do I write code outside of the $INSTALL/factor
directory-tree and use it in factor? How can I tell scaffold-vocab
to build scaffolding in my $CODE/Factor
directory?
Upvotes: 4
Views: 356
Reputation: 89093
Ok, I was able to work out what I was doing wrong thanks to the earnest help of slava and erg on #concatenative.
Simply put, resource-path
is not a way to test your factor roots. Like the docs say it "resolve[s] a path relative to the Factor source code location."
A more effective test is simply vocab-roots get
, which will fetch the current list of vocab roots.
"/path/to/wherever" add-vocab-root
will add /path/to/wherever
to your list of vocab-roots, and allow you to do "/path/to/wherever" "project" scaffold-vocab
so you can build scaffolding in the desired location.
As erg said:
i usually make another word, like
: scaffold-games ( vocab -- ) [ "/home/erg/games" ] dip scaffold-vocab ;
"minesweeper" scaffold-games
Upvotes: 5