mfoemmel / fig Goto Github PK
View Code? Open in Web Editor NEWFig is a utility for configuring environments and managing dependencies across a team of developers.
License: Other
Fig is a utility for configuring environments and managing dependencies across a team of developers.
License: Other
So I can't retrieve SCRIPTS->release-scripts
Using fig 0.1.14, and given this package.fig...
resource drw.jetlang.core.jar config default include drw.jetlang.core-linux-pub/1.0.0 end config dist append CLASSPATH=@/drw.jetlang.core.jar end
...a "fig --publish drw.jetlang.core-linux-pub/1.0.0 -c dist" simply publishes the entire package.fig. When a "fig -u" is run, fig crashes because drw.jetlang.core-linux-pub's config is "default" rather than "dist", and it includes itself ad infinitum.
$ fig -- somecommand --foo
/usr/lib/ruby/1.8/optparse.rb:1450:in complete': invalid option: --foo (OptionParser::InvalidOption) from /usr/lib/ruby/1.8/optparse.rb:1448:in
catch'
from /usr/lib/ruby/1.8/optparse.rb:1448:in complete' from /usr/lib/ruby/1.8/optparse.rb:1261:in
parse_in_order'
from /usr/lib/ruby/1.8/optparse.rb:1254:in catch' from /usr/lib/ruby/1.8/optparse.rb:1254:in
parse_in_order'
from /usr/lib/ruby/1.8/optparse.rb:1248:in order!' from /usr/lib/ruby/1.8/optparse.rb:1339:in
permute!'
from /usr/lib/ruby/1.8/optparse.rb:1360:in parse!' from /home/joe/.gem/ruby/1.8/gems/fig-0.1.6/lib/fig/options.rb:79:in
parse_options'
from /home/joe/.gem/ruby/1.8/gems/fig-0.1.6/bin/fig:33
from /home/joe/.gem/ruby/1.8/bin/fig:19:in `load'
from /home/joe/.gem/ruby/1.8/bin/fig:19
--foo is something processed by somecommand... fig should just pass it through.
Specifically Ubuntu 9.10. Here's the error output, tried on a couple of machines.
$ gem install fig -v 0.1.13
Building native extensions. This could take a while...
ERROR: Error installing fig:
ERROR: Failed to build gem native extension.
/usr/bin/ruby1.8 extconf.rb
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for special C compiler options needed for large files... no
checking for _FILE_OFFSET_BITS value needed for large files... no
checking for a BSD-compatible install... /usr/bin/install -c
configure: creating ./config.status
config.status: creating config.h
config.status: config.h is unchanged
checking for config.h... yes
checking for archive.h... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.
$ cat package.fig
resource "dist/foo.jar"
config default
append CLASSPATH=@/dist/foo.jar
end
$ fig -- echo \$CLASSPATH
@/dist/foo.jar
Expected result:
dist/foo.jar
Having this feature would make it really convenient to use fig for dependency management, without having to publish to a repository.
When .fighome has resources like 'include/log4cplus/... stuff', trying to retrieve using
'retrieve INCLUDEPATH->include', we get the stack trace below. Changing the local package.fig to 'retrieve INCLUDEPATH->inc' makes fig happy.
[08:57][badams@wud-badams03 ~/dev/harvest]$ rm -rf include/ lib/ && fig --update-if-missing
retrieving lib/liblog4cplus.so
retrieving include/include/log4cplus/helpers/threads.h
/usr/lib/ruby/1.8/fileutils.rb:243:in `mkdir': File exists - include (Errno::EEXIST)
from /usr/lib/ruby/1.8/fileutils.rb:243:in `fu_mkdir'
from /usr/lib/ruby/1.8/fileutils.rb:217:in `mkdir_p'
from /usr/lib/ruby/1.8/fileutils.rb:215:in `reverse_each'
from /usr/lib/ruby/1.8/fileutils.rb:215:in `mkdir_p'
from /usr/lib/ruby/1.8/fileutils.rb:201:in `each'
from /usr/lib/ruby/1.8/fileutils.rb:201:in `mkdir_p'
from /home/badams/.gem/ruby/1.8/gems/fig-0.1.21/lib/fig/os.rb:183:in `copy'
from /home/badams/.gem/ruby/1.8/gems/fig-0.1.21/lib/fig/environment.rb:144:in `expand_value'
from /home/badams/.gem/ruby/1.8/gems/fig-0.1.21/lib/fig/environment.rb:90:in `append_variable'
from /home/badams/.gem/ruby/1.8/gems/fig-0.1.21/lib/fig/environment.rb:60:in `apply_config_statement'
from /home/badams/.gem/ruby/1.8/gems/fig-0.1.21/lib/fig/environment.rb:35:in `apply_config'
from /home/badams/.gem/ruby/1.8/gems/fig-0.1.21/lib/fig/environment.rb:35:in `each'
from /home/badams/.gem/ruby/1.8/gems/fig-0.1.21/lib/fig/environment.rb:35:in `apply_config'
from /home/badams/.gem/ruby/1.8/gems/fig-0.1.21/lib/fig/environment.rb:74:in `include_config'
from /home/badams/.gem/ruby/1.8/gems/fig-0.1.21/lib/fig/environment.rb:64:in `apply_config_statement'
from /home/badams/.gem/ruby/1.8/gems/fig-0.1.21/lib/fig/environment.rb:35:in `apply_config'
from /home/badams/.gem/ruby/1.8/gems/fig-0.1.21/lib/fig/environment.rb:35:in `each'
from /home/badams/.gem/ruby/1.8/gems/fig-0.1.21/lib/fig/environment.rb:35:in `apply_config'
from /home/badams/.gem/ruby/1.8/gems/fig-0.1.21/bin/fig:134
from /home/badams/.gem/ruby/1.8/bin/fig:19:in `load'
from /home/badams/.gem/ruby/1.8/bin/fig:19
When trying to download items from an SSH repository, you get the following exception if the package isn't found:
/opt/local/lib/ruby/gems/1.8/gems/fig-0.1.14/lib/fig/os.rb:263:in ssh_download': undefined local variable or method
uri' for #Fig::OS:0x11ca588 (NameError)
Should use the local variable, "path," instead of "uri".
...including private configs. Configs can include other (private) configs which would be available within the package.fig, but not outside.
If there is a carriage return in the .fig or the package.fig file, fig will fail with the error:
downloading ftp://devnas/builds/Fig/repos/foo/1.0.0/.fig
install failed, cleaning up
ruby/1.8/gems/fig-0.1.14/lib/fig/parser.rb:16:in parse_package': /home/user/.fighome/repos/foo/1.0.0: Expected one of resource, retrieve, config at line 1, column 2 (byte 2) after (RuntimeError) from ruby/1.8/gems/fig-0.1.14/lib/fig/repository.rb:145:in
read_package_from_file'
from ruby/1.8/gems/fig-0.1.14/lib/fig/repository.rb:135:in read_package_from_directory' from ruby/1.8/gems/fig-0.1.14/lib/fig/repository.rb:118:in
read_local_package'
from ruby/1.8/gems/fig-0.1.14/lib/fig/repository.rb:163:in install_package' from ruby/1.8/gems/fig-0.1.14/lib/fig/repository.rb:108:in
update_package'
from ruby/1.8/gems/fig-0.1.14/lib/fig/repository.rb:98:in load_package' from ruby/1.8/gems/fig-0.1.14/lib/fig/environment.rb:121:in
lookup_package'
from ruby/1.8/gems/fig-0.1.14/lib/fig/environment.rb:73:in include_config' from ruby/1.8/gems/fig-0.1.14/lib/fig/environment.rb:64:in
apply_config_statement'
from ruby/1.8/gems/fig-0.1.14/lib/fig/environment.rb:35:in apply_config' from ruby/1.8/gems/fig-0.1.14/lib/fig/environment.rb:35:in
each'
from ruby/1.8/gems/fig-0.1.14/lib/fig/environment.rb:35:in apply_config' from ruby/1.8/gems/fig-0.1.14/bin/fig:134 from ruby/1.8/bin/fig:19:in
load'
from ruby/1.8/bin/fig:19
Maybe something like apt-cache search
Here's the problem:
--update is slow. I don't want to run it on every command, or even once per build. But if I skip it, things might break.
Having an --update-if-missing would be a nice middle ground - it would only contact the network if the dep wasn't already in the local filesystem. So long as you're always using immutable dependencies, this should be fine.
$ fig -u jruby/1.3.1:jirb
/home/joe/.gem/ruby/1.8/gems/fig-0.1.6/bin/fig:138: private method include_config' called for #<Fig::Environment:0x7fd252a38578> (NoMethodError) from /home/joe/.gem/ruby/1.8/bin/fig:19:in
load'
from /home/joe/.gem/ruby/1.8/bin/fig:19
.fig in the repo contains a command:
config jirb
command "do something"
end
fig [options] command [package...]
fig commands are things like update, list[-remote], publish, clean
fig options are things like --include, --append
So you have:
or
Currently I get:
$ fig -u -i log4j/1.3
downloading ftp://myhost/path/to/repos/log4j/1.3/.fig
/usr/lib/ruby/1.8/net/ftp.rb:243:in `getresp': 550 path/to/repos/log4j/1.3/.fig: The system cannot find the path specified. (Net::FTPPermError)
followed by a stack trace.
When using fig --publish, I'd like fig to fail (by default) if I try to push a version that already exists. I keep accidentally breaking old builds.
If I really really want to republish an existing version, I could specify --force
Fig leaves droppings!
$ fig --list-remote cheese
I need to do this:
config foo
add LD_LIBRARY_PATH=blah
end
In Go, the path information is part of your import statement. Therefore it would be helpful to preserve the path information available to "retrieve" statements.
Given a library:
"foo/bar.a" where "foo" is a namespace, and "bar.a" is the name of the actual library.
When I publish using the following statement:
fig --publish bar/1.0 --resource=pkg/foo/bar.a --append="GOPATH=@/pkg//foo/bar.a"
And when I have a package.fig in my project that both includes the package bar/1.0 and has a retrieve statement:
retrieve GOPATH->pkg
config default
include bar/1.0
end
Then I should see the following directory structure in my project directory that contained the package.fig above. Note that the directory structure for 'foo/bar.a' was preserved.
$ tree .
.
├── package.fig
└── pkg
└── foo
└── bar.a
And double-slashes should be stripped when printing and using environment variables.
$ fig -g GOPATH
/home/username/.fighome/repos/bar/1.0/foo/bar.a
I used the following invocation on a mac:
fig --publish google.guava/r04-weird --resource guava-r04.jar --append CLASSPATH=@/guava-r04.jar
Which worked fine - but when I un tar/gzip'd the resultant tarball on windows using 7zip, I saw an extra folder called PaxHeader along side the jarfile. Inside the folder was an empty file with the name of the jar file.
When I un tar/gzip'd the resultant tarball on a mac, this extra file didn't exist.
Running the same command from linux (ubuntu) I didn't see this extra folder created when untar'ing on windows.
Is this horribly broken? Probably not. Is it a tad ugly? I think so.
List all the configs
I'd like to do this:
config build
retrieve CLASSPATH->lib
include some/stuff
end
config runtime
retrieve CLASSPATH->dist/lib
include other/stuff
end
'nuff said.
config a.b
My package.fig:
config default include foo/1.2 end
publishes with a blank .fig file, which was a surprise.
The "resource" statement used when publishing should support some wildcards. These wildcards would act like ant-style file globs.
Given the following wildcards and their descriptions:
* Match zero or more characters for files in the directory.
** Match zero or more directories.
? Match one character
And the following jar files in my project:
output/
├── bar.jar
└── baz.jar
When I have a wildcard of foo/.jar in my resource statement
fig --publish foo/1.0 --resource="output/.jar" --append="CLASSPATH=@/output/bar.jar"
Then both "bar.jar" and "baz.jar" will be published to the fig repository, and downloaded when a user includes the foo/1.0 package in their project.
$ fig --list
jruby/1.3.1
scala/2.8.0-betaRC8
/home/joe/.gem/ruby/1.8/gems/fig-0.1.6/lib/fig/repository.rb:116:in join': can't convert nil into String (TypeError) from /home/joe/.gem/ruby/1.8/gems/fig-0.1.6/lib/fig/repository.rb:116:in
local_dir_for_package'
from /home/joe/.gem/ruby/1.8/gems/fig-0.1.6/lib/fig/repository.rb:91:in read_local_package' from /home/joe/.gem/ruby/1.8/gems/fig-0.1.6/lib/fig/repository.rb:79:in
load_package'
from /home/joe/.gem/ruby/1.8/gems/fig-0.1.6/lib/fig/environment.rb:107:in lookup_package' from /home/joe/.gem/ruby/1.8/gems/fig-0.1.6/lib/fig/environment.rb:45:in
execute_config'
from /home/joe/.gem/ruby/1.8/gems/fig-0.1.6/bin/fig:141
from /home/joe/.gem/ruby/1.8/bin/fig:19:in `load'
from /home/joe/.gem/ruby/1.8/bin/fig:19
With fig 0.1.13, using a package file like:
resource "one.jar"
resource "two.jar"
Causes:
$ fig --publish mylib/0.0.1
/home/mroberts/.gem/ruby/1.8/gems/fig-0.1.13/lib/fig/os.rb:184:in copy_stat': Copy stat failed: (Archive::Error) from /home/mroberts/.gem/ruby/1.8/gems/fig-0.1.13/lib/fig/os.rb:184:in
create_archive'
from /home/mroberts/.gem/ruby/1.8/gems/fig-0.1.13/lib/fig/os.rb:183:in new_entry' from /home/mroberts/.gem/ruby/1.8/gems/fig-0.1.13/lib/fig/os.rb:183:in
create_archive'
from /home/mroberts/.gem/ruby/1.8/gems/fig-0.1.13/lib/fig/os.rb:182:in each' from /home/mroberts/.gem/ruby/1.8/gems/fig-0.1.13/lib/fig/os.rb:182:in
create_archive'
from /home/mroberts/.gem/ruby/1.8/gems/fig-0.1.13/lib/fig/os.rb:181:in write_open_filename' from /home/mroberts/.gem/ruby/1.8/gems/fig-0.1.13/lib/fig/os.rb:181:in
create_archive'
from /home/mroberts/.gem/ruby/1.8/gems/fig-0.1.13/lib/fig/repository.rb:89:in bundle_resources' from /home/mroberts/.gem/ruby/1.8/gems/fig-0.1.13/lib/fig/repository.rb:49:in
publish_package'
from /home/mroberts/.gem/ruby/1.8/gems/fig-0.1.13/bin/fig:157
from /home/mroberts/.gem/ruby/1.8/bin/fig:19:in `load'
from /home/mroberts/.gem/ruby/1.8/bin/fig:19
$ fig -h
Usage: fig [--debug] [--update] [--config ] [-echo | --list | | - ]
Note the '-echo' version. I think this should be '--get'.
Using Fig 0.1.6.
Typically local.fig would be ignored by e.g. version control and fig publishing - it's just for development.
It would contain:
local cheese/1.2.3 /path/to/my/cheese # just override version 1.2.3 of cheese
local goats /path/to/my/goats # override any reference to goats
local pie/>=1.2 /path/to/my/pie # override any reference to pie/1.2 or greater
possibly within config blocks.
Actually, just the first one will cover most cases, until we get >= elsewhere.
Invoking fig like this from NAnt script:
<exec program="fig.bat" workingdir="${Build.BuildRootDirectory}"
failonerror="true" verbose="true"
commandline="-u -- cp -r @anthillpro-agent/agent --target-directory=${pkg_path} --exclude=docs" />
...causes this error:
[exec] Starting 'fig.bat (-u -- cp -r @anthillpro-agent/agent --target-directory=AntHillProAgent-Win32 --exclude=docs)' in 'C:\ src\git\anthillpro_agent_installer_win' [exec] ruby.exe: No such file or directory -- C:/src/git/anthillpro_agent_installer_win/fig (LoadError) BUILD FAILED - 0 non-fatal error(s), 1 warning(s) C:\src\git\anthillpro_agent_installer_win\Build\DrwLabeledBuild.win.nant(21,4): External Program Failed: fig.bat (return code was 1) Total time: 0.2 seconds. C:\src\git\anthillpro_agent_installer_win>
If I remove this line in fig.bat and re-run, everything is OK:
IF NOT "%~f0" == "~f0" GOTO :WinNT
To reproduce:
rm -rf ~/.fighome
fig --list
/home/joe/.gem/ruby/1.8/gems/fig-0.1.8/lib/fig/os.rb:9:in open': No such file or directory - /home/joe/.fighome/repos (Errno::ENOENT) from /home/joe/.gem/ruby/1.8/gems/fig-0.1.8/lib/fig/os.rb:9:in
entries'
from /home/joe/.gem/ruby/1.8/gems/fig-0.1.8/lib/fig/os.rb:9:in list' from /home/joe/.gem/ruby/1.8/gems/fig-0.1.8/lib/fig/repository.rb:23:in
list_packages'
from /home/joe/.gem/ruby/1.8/gems/fig-0.1.8/bin/fig:111
from ./.gem/ruby/1.8/bin/fig:19:in `load'
from ./.gem/ruby/1.8/bin/fig:19
README.txt refers to a --publish-local command (which sounds really handy), but it doesn't seem to exist.
'fig scala:scalac -d output *.scala' causes fig to try and parse the '-d'
This is true for both Windows and Linux.
C:\src\git\anthillpro_agent_installer_win>cat package.fig config default include java-zipped/1.6.0.13 include ruby-zipped-win/1.8.6.287 include anthillpro-agent/3.7.1.53990 end C:\src\git\anthillpro_agent_installer_win>fig C:/Progra~1/AntHillPro3/ruby/lib/ruby/gems/1.8/gems/fig-0.1.13/lib/fig/repository.rb:133:in `read_package_from_directory': File not found: C:/Documents and Settings/cwalquist/.fighome/repos/java-zipped/1.6.0.13/package.fig (RuntimeError) from C:/Progra~1/AntHillPro3/ruby/lib/ruby/gems/1.8/gems/fig-0.1.13/lib/fig/repository.rb:118:in `read_local_package' from C:/Progra~1/AntHillPro3/ruby/lib/ruby/gems/1.8/gems/fig-0.1.13/lib/fig/repository.rb:100:in `load_package' from C:/Progra~1/AntHillPro3/ruby/lib/ruby/gems/1.8/gems/fig-0.1.13/lib/fig/environment.rb:121:in `lookup_package' from C:/Progra~1/AntHillPro3/ruby/lib/ruby/gems/1.8/gems/fig-0.1.13/lib/fig/environment.rb:73:in `include_config' from C:/Progra~1/AntHillPro3/ruby/lib/ruby/gems/1.8/gems/fig-0.1.13/lib/fig/environment.rb:64:in `apply_config_statement' from C:/Progra~1/AntHillPro3/ruby/lib/ruby/gems/1.8/gems/fig-0.1.13/lib/fig/environment.rb:35:in `apply_config' from C:/Progra~1/AntHillPro3/ruby/lib/ruby/gems/1.8/gems/fig-0.1.13/lib/fig/environment.rb:35:in `each' from C:/Progra~1/AntHillPro3/ruby/lib/ruby/gems/1.8/gems/fig-0.1.13/lib/fig/environment.rb:35:in `apply_config' from C:/Progra~1/AntHillPro3/ruby/lib/ruby/gems/1.8/gems/fig-0.1.13/bin/fig:134 from C:/PROGRA~1/AntHillPro3/ruby/bin/fig:19:in `load' from C:/PROGRA~1/AntHillPro3/ruby/bin/fig:19 C:\src\git\anthillpro_agent_installer_win>fig -u downloading ftp://devnas/builds/Fig/repos/java-zipped/1.6.0.13/.fig downloading ftp://devnas/builds/Fig/repos/java-zipped/1.6.0.13/resources.tar.gz downloading ftp://devnas/builds/Fig/repos/ruby-zipped-win/1.8.6.287/.fig downloading ftp://devnas/builds/Fig/repos/ruby-zipped-win/1.8.6.287/resources.tar.gz downloading ftp://devnas/builds/Fig/repos/anthillpro-agent/3.7.1.53990/.fig downloading ftp://devnas/builds/Fig/repos/anthillpro-agent/3.7.1.53990/resources.tar.gz C:\src\git\anthillpro_agent_installer_win>fig C:\src\git\anthillpro_agent_installer_win>
[buildadmin@sud-chibld01 ahp_installer_linux]$ rm -rf ~/.fighome/repos/java-tgzipped/ [buildadmin@sud-chibld01 ahp_installer_linux]$ fig /site/apps/ruby-1.8.6/lib/ruby/gems/1.8/gems/fig-0.1.13/lib/fig/repository.rb:133:in `read_package_from_directory': File not found: /home/buildadmin/.fighome/repos/java-tgzipped/1.6.0.11/package.fig (RuntimeError) from /site/apps/ruby-1.8.6/lib/ruby/gems/1.8/gems/fig-0.1.13/lib/fig/repository.rb:118:in `read_local_package' from /site/apps/ruby-1.8.6/lib/ruby/gems/1.8/gems/fig-0.1.13/lib/fig/repository.rb:100:in `load_package' from /site/apps/ruby-1.8.6/lib/ruby/gems/1.8/gems/fig-0.1.13/lib/fig/environment.rb:121:in `lookup_package' from /site/apps/ruby-1.8.6/lib/ruby/gems/1.8/gems/fig-0.1.13/lib/fig/environment.rb:73:in `include_config' from /site/apps/ruby-1.8.6/lib/ruby/gems/1.8/gems/fig-0.1.13/lib/fig/environment.rb:64:in `apply_config_statement' from /site/apps/ruby-1.8.6/lib/ruby/gems/1.8/gems/fig-0.1.13/lib/fig/environment.rb:35:in `apply_config' from /site/apps/ruby-1.8.6/lib/ruby/gems/1.8/gems/fig-0.1.13/lib/fig/environment.rb:35:in `each' from /site/apps/ruby-1.8.6/lib/ruby/gems/1.8/gems/fig-0.1.13/lib/fig/environment.rb:35:in `apply_config' from /site/apps/ruby-1.8.6/lib/ruby/gems/1.8/gems/fig-0.1.13/bin/fig:134 from /site/apps/ruby/bin/fig:19:in `load' from /site/apps/ruby/bin/fig:19 [buildadmin@sud-chibld01 ahp_installer_linux]$ fig -u downloading ftp://devnas/Builds/Fig/repos/java-tgzipped/1.6.0.11/.fig downloading ftp://devnas/Builds/Fig/repos/java-tgzipped/1.6.0.11/resources.tar.gz [buildadmin@sud-chibld01 ahp_installer_linux]$ fig [buildadmin@sud-chibld01 ahp_installer_linux]$
From Windows, published java\jre1.6.0_13.zip. All good until I tried to run the installer, and then 7zip barfed.
Investigation revealed a binary diff between the published version and the original:
$ tar xzf //devnas/builds/Fig/repos/java-zipped/1.6.0.13/resources.tar.gz $ ls java/ jre1.6.0_13.zip $ svn co http://svpsvn/drw/libs/thirdparty/JVMs/jre1.6.0_13-win A jre1.6.0_13-win\jre1.6.0_13.zip A jre1.6.0_13-win\README.txt Checked out revision 226837. $ ls -l jre1.6.0_13-win/jre1.6.0_13.zip -rw-r--r-- 1 cwalquis Administ 31576912 Mar 5 14:01 jre1.6.0_13-win/jre1.6.0_13.zip $ cmp jre1.6.0_13-win/jre1.6.0_13.zip java/jre1.6.0_13.zip jre1.6.0_13-win/jre1.6.0_13.zip java/jre1.6.0_13.zip differ: char 669, line 4 $
The workaround is to do the publish operation from Linux, and then everything is fine.
fig --tag foo/1.2.3 current
fig --tag foo/1.2.4 beta
fig -i foo/current # 1.2.3
fig -i foo/beta # 1.2.4
fig -i foo # implicit current (1.2.3)
Something like:
default dist config dist include :build end config build include cheese/1.2 end
Changing the configuration from "include mylib/1.1" to "include mylib/1.2" should remove lib/mylib-1.1.jar and replace it with lib/mylib-1.2.jar. Currently the old dependency will hang around after the update.
Let's say I'm working on two closely related libraries A and B.
B depends on A.
My workflow at the moment is...
edit A
release new version of A
deploy A to repo
update B's deps to depend on new version of A
edit B
goto 10
This is painful if iterating frequently. I'd like a way to be able to temporarily depend on a local version.
I'm running into an issue, where I'm appending something to the path that already exists.
For example, I already have 'scala' in my default PATH in my .bashrc, but when I use a Fig dependency that defines 'append PATH=my-scala/bin', it appears too late in the PATH to be useful.
I considered using 'set' instead, but this wouldn't play well with other things that add to the path.
I can't tell which version of a package I'm working on. Also with this I can easily just do fig --publish.
package cheese/1.2
or
package cheese
version 1.2
Currently fig's 'retrieve' syntax only supports copying individual files that have an 'append' statement for them.
Sometimes you want to copy all the files contained in a package into your project's working directory.
A syntax example:
retrieve @package_name->some_dir
fig something/1.2:somecommand BLAH BLAH
The BLAH BLAH bit should be passed to the command executed by fig.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.