87 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| [](https://travis-ci.org/HaxeFoundation/haxelib)
 | |
| [](https://ci.appveyor.com/project/HaxeFoundation/haxelib)
 | |
| 
 | |
| # Haxelib: library manager for Haxe
 | |
| 
 | |
| Haxelib is a library management tool shipped with the [Haxe Toolkit](http://haxe.org/).
 | |
| 
 | |
| It allows searching, installing, upgrading and removing libraries from the [haxelib repository](http://lib.haxe.org/) as well as submitting libraries to it.
 | |
| 
 | |
| For more documentation, please refer to http://lib.haxe.org/documentation/
 | |
| 
 | |
| ## Development info
 | |
| 
 | |
| ### Running the haxelib server for development
 | |
| 
 | |
| The server has to be compiled with Haxe 3.2.1+. It can be run in Apache using mod_neko / mod_tora.
 | |
| 
 | |
| Currently using [Docker](https://www.docker.com/) is the simpliest way to build and run the server. It doesn't require setting up Apache or MySQL since everything is included in the container.
 | |
| 
 | |
| To start, run:
 | |
| 
 | |
| ```
 | |
| docker-compose -f test/docker-compose.yml up
 | |
| ```
 | |
| 
 | |
| The command above will copy the server source code and website resources into a container, compile it, and then start Apache to serve it.  To view the website, visit `http://$(docker-machine ip):2000/` (Windows and Mac) or `http://localhost:2000/` (Linux).
 | |
| 
 | |
| To stop the server, run:
 | |
| ```
 | |
| docker-compose -f test/docker-compose.yml down
 | |
| ```
 | |
| 
 | |
| If we modify any of the server source code or website resources, we need to stop the server and then rebuild the image by running the command as follows:
 | |
| ```
 | |
| docker-compose -f test/docker-compose.yml build
 | |
| ```
 | |
| 
 | |
| To run haxelib client with this local server, prepend the arguments, `-R $SERVER_URL`, to each of the haxelib commands, e.g.:
 | |
| ```
 | |
| neko bin/haxelib.n -R http://$(docker-machine ip):2000/ search foo
 | |
| ```
 | |
| 
 | |
| To run integration tests with the local development server:
 | |
| ```
 | |
| # prepare the test files
 | |
| haxe prepare_tests.hxml
 | |
| 
 | |
| # set `HAXELIB_SERVER` and `HAXELIB_SERVER_PORT`
 | |
| # note that `HAXELIB_SERVER` is also used for the tests to connect to the MySQL server for resetting database
 | |
| export HAXELIB_SERVER=$(docker-machine ip)
 | |
| export HAXELIB_SERVER_PORT=2000
 | |
| 
 | |
| # run the tests
 | |
| haxe integration_tests.hxml
 | |
| ```
 | |
| Note that the integration tests will reset the server database before and after each test.
 | |
| 
 | |
| ### About this repo
 | |
| 
 | |
| Build files:
 | |
| 
 | |
| * client.hxml: Build the current haxelib client.
 | |
| * client_tests.hxml: Build and run the client tests.
 | |
| * client_legacy.hxml: Build the haxelib client that works with Haxe 2.x.
 | |
| * server.hxml: Build the new website, and the Haxe remoting API.
 | |
| * server_tests.hxml: Build and run the new website tests.
 | |
| * server_each.hxml: Libraries and configs used by server.hxml and server_tests.hxml.
 | |
| * server_legacy.hxml: Build the legacy website.
 | |
| * integration_tests.hxml: Build and run tests that test haxelib client and server together.
 | |
| * package.hxml: Package the client as package.zip for submitting to the lib.haxe.org as [haxelib](http://lib.haxe.org/p/haxelib/).
 | |
| * prepare_tests.hxml: Package the test libs.
 | |
| * ci.hxml: Used by our CIs, TravisCI and AppVeyor.
 | |
| 
 | |
| Folders:
 | |
| 
 | |
| * /src/: Source code for the haxelib tool and the website, including legacy versions.
 | |
| * /bin/: The compile target for building the haxelib client, legacy client, and others.
 | |
| * /www/: The compile target (and supporting files) for the haxelib website (including legacy server)
 | |
| * /test/: Source code and files for testings.
 | |
| 
 | |
| Other files:
 | |
| 
 | |
| * schema.json: JSON schema of haxelib.json.
 | |
| * deploy.json: Deploy configuration used by `haxelib run ufront deploy` for pushing the haxelib website to lib.haxe.org.
 | |
| * deploy_key.enc: Encrypted ssh private key for logging in to lib.haxe.org. Used by TravisCI.
 | |
| * Dockerfile: Docker build file for building an image that runs the haxelib server.
 |