First commit

This commit is contained in:
2021-03-07 05:58:59 +01:00
committed by Andreas Schaafsma
commit 5d4c4a054e
18475 changed files with 3309357 additions and 0 deletions

View File

@@ -0,0 +1,23 @@
# Set index.n to come before index.php
DirectoryIndex index.n index.php index.html
RewriteEngine On
# Rewrite rules to send Haxe remoting calls on "/" to "haxelib1/". If it matches, that's [L], the last rule - go their immediately.
RewriteBase /
RewriteCond %{HTTP:X-Haxe-Remoting}: 1
RewriteRule ^index.n$ legacy/index.n [L]
# Enable rewrite for the new site's pages, only if the file or dir doesn't exist
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.n/$1 [L]
# Get our stuff gzipped
SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript

View File

@@ -0,0 +1,2 @@
# No need to ignore index.n since the .gitignore in project root ignored *.n
# This file, however, still should present such that git will track this folder.

View File

@@ -0,0 +1,23 @@
{
"name": "haxelib-server",
"homepage": "https://github.com/HaxeFoundation/haxelib",
"description": "Haxelib server",
"keywords": [
"haxe",
"haxelib"
],
"license": "MIT",
"private": true,
"ignore": [
"**/.*",
"node_modules",
"bower_components",
"test",
"tests"
],
"dependencies": {
"jquery": "^1.12.2",
"bootstrap": "^3.3.6",
"font-awesome": "^4.5.0"
}
}

View File

@@ -0,0 +1,164 @@
html, body{
height:100%;
}
body {
padding: 0;
margin:0;
min-height:100%;
font-size:16px;
font-family:"Open Sans", sans-serif;
color: #1e1e1e;
line-height: 1.5;
}
h1, h2, h3, h4, h5, h6 {
font-family: "Source Sans Pro", sans-serif;
font-weight: 600;
word-wrap: break-word;
}
h1 {
font-size: 36px;
color: #171717;
}
h1 small {
font-size: 14px;
color: #999;
font-weight: normal;
}
h2 {
font-size: 30px;
}
h3 {
font-size: 24px;
}
h4 {
font-size: 20px;
}
h5, h5 code {
font-size: 18px;
}
h6 {
font-size: 16px;
}
html pre, html pre code {
font-family: "Source Code Pro", "Courier New";
font-size: 14px;
line-height: 20px;
white-space: pre;
overflow-x: auto;
}
pre, div.pre {
color: #333;
background-color: #f3f3f3;
border: 1px solid #bbb;
margin: 15px;
padding: 5px;
padding-left: 20px;
}
code {
font-family: Monaco,Menlo,Consolas,"Courier New",monospace;
font-weight: normal;
color: #666;
background-color: #f7f7f9;
border: 1px solid #e1e1e8;
white-space: nowrap;
border-radius: 3px;
padding: 2px 4px;
font-size: 13px;
}
code .identifier, code.type {
font-weight: bold;
}
code a { text-decoration:none; }
code a:hover { text-decoration:underline; }
.navbar { margin:0 0 20px 0; padding:0; color:#fff; }
.navbar .tagline { position:relative; top:11px; }
.navbar .brand { padding: 7px 20px 7px;}
.navbar .pull-right { position:relative; top:8px; }
.navbar .pull-right a {color: #F48821;}
.dark {
background: rgb(20,20,25);
color: white;
}
.dark a {
color: white;
}
.dark a:hover {
color: rgb(200,200,200);
}
.dark blockquote {
border-left: 3px solid rgb(126,126,129);
}
.dark blockquote small {
color: white;
font-weight: bold;
}
.dark blockquote small:before {
display: none;
}
footer{
margin-top:40px;
font-size:12px;
padding: 10px;
}
.copyright {
padding: 6px;
overflow: hidden;
text-align:center;
margin: 40px 0;
}
.dark .copyright .hf-link { color:#F48821; }
.legacy-notice {
border : 1px solid #AAA;
padding: 10px;
margin: 10px;
}
li {line-height:1.5}
.clear {
clear : both;
}
.list-unstyled {
list-style:none;
margin-left:0;
}
.menu ul i.fa {
color: rgb(200,200,200);
font-weight: normal;
font-size: 16px;
}
.menu .badge {
border:1px solid rgb(180,180,180);
background:transparent;
color: rgb(180,180,180);
font-weight: normal;
}
.input-append .add-on, .input-prepend .add-on {background: #F48821;}
.well h1 {margin-top:0}
.well table, .well p.lead { margin-bottom: 0; }
.avatar {
margin-right:40px;
}
.navbar .nav>li:nth-child(2){
margin-left:40px;
}
.navbar .nav>li>a {
color: #F48821;
text-shadow:none;
}
.navbar .nav>li>a:hover {
color: #F48821;
text-decoration:underline;
text-shadow:none;
}

View File

@@ -0,0 +1,741 @@
/**
Sticky Footer
**/
* {
margin: 0;
}
html, body {
height: 100%;
}
.page-wrap {
min-height: 100%;
margin-bottom: -36px; /* equal to footer height */
}
.page-wrap:after {
content: "";
display: block;
}
.site-footer, .page-wrap:after {
/* .push must be the same height as footer */
min-height: 36px;
}
.site-footer .hf-link {
color: rgb(234,130,32) !important;
}
/**
Responsive fixes
**/
@media (min-width: 1200px) {
.hidden-desktop-large {
display: none !important;
}
}
@media (max-width: 1199px) {
.visible-desktop-large {
display: none !important;
}
}
@media (max-width: 767px) {
body {
padding-left: 0px !important;
padding-right: 0px !important;
}
.container {
padding-left: 20px;
padding-right: 20px;
width: auto;
margin: 0;
}
.section .row.component .title {
text-align: left !important;
}
.section .row.component .links {
margin-top: 20px;
}
.navbar-fixed-top, .navbar-fixed-bottom, .navbar-static-top {
margin: 0 0 20px 0 !important;
}
ul.logos {
margin-top: 20px;
}
}
/**
Main styles
**/
body {
font-family: "Open Sans", sans-serif;
font-weight: 400;
font-size: 16px;
color: #1e1e1e;
}
b, strong {
font-weight: 700;
}
a {
color: #3369bc;
}
a[href="#"] {
/** Non-existent link **/
color: red;
cursor: default;
text-decoration: none;
}
body, body p, body td, body li {
line-height: 1.5;
}
body p, body li p, body td p {
margin-bottom: 12px;
}
body li {
margin-bottom: 2px;
padding-left: 10px;
}
body li ul {
margin-top: 2px;
}
body li p {
margin-bottom: 10px;
}
h1, h2, h3, h4, h5, h6 {
font-family: "Source Sans Pro", sans-serif;
font-weight: 600;
}
h3, h4, h5 {
margin-top: 25px;
}
h1 a, h2 a, h3 a, h4 a, h5 a, h6 a {
color: inherit;
text-decoration: underline;
}
h1 {
font-size: 36px;
color: #171717;
}
h1 small {
display: block;
font-size: 50px;
color: #a1a1a1;
font-weight: 200;
}
h2 {
font-size: 30px;
}
h3 {
font-size: 24px;
}
h4 {
font-size: 20px;
}
h5, h5 code {
font-size: 18px;
}
h6 {
font-size: 16px;
}
a.anch {
position: relative;
top: -30px;
}
.section .container {
position: relative;
padding-top: 30px;
padding-bottom: 40px;
}
.section .container > :first-child {
margin-top: 0px;
}
.section .container > :last-child {
margin-bottom: 0px;
}
.section blockquote {
margin: 20px 20px 20px 20px;
padding: 0 20px;
}
.homepage .section blockquote {
padding: 10px 20px;
}
@media (min-width: 979px) {
.homepage .section blockquote {
margin: 100px 20px 100px 20px;
}
}
.section .row.component {
margin-bottom: 20px;
}
.section .row.component .title {
text-align: right;
font-weight: 400;
}
.section.head .btn-haxe {
font-size: 26.5px;
border-radius: 9px;
position: relative;
bottom: 3px;
background: none;
box-shadow: none;
border: 2px solid rgb(234, 130, 32);
color: rgb(234, 130, 32);
width: 204px;
height: 54px;
line-height: 54px;
text-shadow: none;
padding-right: 33px; /* 12px default + some space for our caret */
}
.section.head .btn-haxe:hover, .section.head .btn-haxe:active {
color: rgb(208, 116, 28);
border-color: rgb(208, 116, 28);
background: rgba(0,0,0,0.1);
}
.section.head .btn-haxe .fa {
position: absolute;
right: 15px;
top: 23px;
font-size: 16px;
}
.copyright {
text-align: center;
}
.site-footer, .site-footer .container {
font-size: 12px;
padding: 0;
}
.section.nav {
margin-bottom: 0;
}
.section.nav .container {
padding: 0;
}
.page-wrap .section:first-child .container {
padding-top: 80px;
}
/**
Billboard / head on homepage
**/
@media (max-width: 979px) {
.head .head-logo {
margin: 0 auto;
}
.head {
text-align: center;
}
.head .btn-toolbar .btn {
display: block;
margin: 10px auto 10px;
}
.head .btn-toolbar .logo {
display: block;
margin: 10px auto 30px;
}
}
@media (min-width: 768px) {
}
@media (min-width: 980px) {
.head .head-content .btn-toolbar .btn {
vertical-align: baseline;
}
.head .head-logo {
}
.head .head-content {
width: 50%;
margin: 0 auto 30px;
text-align:center;
}
.head .btn-toolbar {
width: 754px; /* 230px logo + 232px buttons*2 + 20px padding between each */
position: relative;
margin: 0 auto;
}
.head .btn-toolbar .btn {
position: absolute;
top: 85px;
}
.head .btn-toolbar .download {
left: 0;
}
.head .btn-toolbar .learn-more {
right: 0;
}
.head .btn-toolbar .logo {
display: block;
margin: 0 auto;
}
}
@media (min-width: 1200px) {
.head .head-content {
position: relative;
}
}
.section.dark.head {
/* fallback */
background-color: rgb(168,75,56);
background-repeat: no-repeat;
/* Safari 4-5, Chrome 1-9 */
background: -webkit-gradient(radial, 50% 80%, 0, center center, 100, from(rgb(183,77,49)), to(rgb(100,33,38)));
/* Safari 5.1+, Chrome 10+ */
background: -webkit-radial-gradient(50% 80%, circle, rgb(183,77,49), rgb(100,33,38));
/* Firefox 3.6+ */
background: -moz-radial-gradient(50% 80%, circle, rgb(183,77,49), rgb(100,33,38));
/* IE 10 */
background: -ms-radial-gradient(50% 80%, circle, rgb(183,77,49), rgb(100,33,38));
}
.head .head-logo {
display: block;
width: 230px;
max-width: 100%;
}
.head .head-content h1 {
font-weight: bold;
text-shadow: 0px 1px 0px rgb(88,27,32);
color: white;
}
.head .head-content .lead {
}
.sub-head .container {
padding-bottom: 30px;
}
@media (min-width: 979px) {
.homepage .section.sub-head blockquote {
margin: 120px 20px 60px 20px;
}
}
.target-logos {
width: 450px;
margin: 10px auto;
display: block;
}
.section p.tag-line {
margin-top: 20px;
font-weight: 200;
font-size: 18px;
}
/**
Prev / Next links
**/
.prev-next-links {
clear: both;
text-align: center;
}
.prev-next-links.top {
border-bottom: #DDD solid 1px;
padding-bottom: 10px;
margin-bottom: 20px;
}
@media (min-width: 980px) {
.prev-next-links.top {
margin-top: -30px !important;
}
}
.prev-next-links.bottom {
border-top: #DDD solid 1px;
padding-top: 10px;
margin-top: 20px;
}
.prev-link {
float: left;
}
.prev-link:before {
content: "« ";
}
.next-link {
float: right;
}
.next-link:after {
content: " »";
}
/**
Code Highlighting
**/
html pre, html pre code {
font-family: "Source Code Pro", "Courier New";
font-size: 14px;
line-height: 20px;
white-space: pre;
overflow-x: auto;
}
pre, div.pre {
color: #333;
background-color: #f3f3f3;
border: 1px solid #bbb;
margin: 15px;
padding: 5px;
padding-left: 20px;
}
pre .kwd, div.pre .kwd {
color: #008;
}
pre .val, div.pre .val {
color: #448;
}
pre .str, div.pre .str {
color: #800;
}
pre .cmt, div.pre .cmt {
color: #080;
}
/* Make sure keywords inside comments are not highlighted*/
pre .cmt .kwd, pre .cmt .str, pre .cmt .val {
color: #080;
}
/**
Icon headers
**/
.header .fa {
font-size: 48px;
text-align: center;
display: block;
margin: 10px 0 30px;
color: rgb(200,200,200);
cursor: default;
}
.header a.fa {
text-decoration: none;
cursor: pointer;
}
.header a.fa:hover {
color: #3369BC;
text-decoration: none;
}
/**
Manual / API nav
**/
.tree-nav h5 {
color: rgb(130,130,130);
font-weight: 200;
}
.tree-nav ul {
list-style: none;
margin-left: 0;
}
.tree-nav li {
height: 24px;
overflow: hidden;
}
.tree-nav li i.fa {
height: 16px;
width: 16px;
margin-right:5px;
margin-bottom: 5px;
color: rgb(200,200,200);
}
.tree-nav li i.fa:hover {
color: rgb(150,150,150);
}
.tree-nav li > i.fa:before {
content: "\f016"; /* fa-file-o */
cursor: pointer;
}
.tree-nav li.parent > i.fa:before {
content: "\f18e"; /* fa-arrow-circle-o-right */
cursor: pointer;
}
.tree-nav li.parent.active {
height: auto;
overflow: auto;
}
.tree-nav li.parent.active > i.fa:before {
content: "\f01a"; /* fa-arrow-circle-o-down */
cursor: pointer;
}
.tree-nav a.active {
font-weight: bold;
}
.tree-nav li ul {
margin-left: 10px;
display: none;
}
.tree-nav li.active > ul {
margin-left: 10px;
display: block;
}
.tree-nav li {
text-overflow: ellipsis;
white-space: nowrap;
}
/**
Misc
**/
html code {
color: rgb(75,75,75)
}
.download-source {
margin-top: 16px;
}
.prev-next-links+p {
margin-top: 20px;
}
.nav-stacked > li {
overflow: hidden;
}
.nav-stacked li a i.fa {
color: rgb(200,200,200);
margin-right: 7px;
}
table.table.table-bordered.features, table.table.table-bordered.features td, table.table.table-bordered.features th {
/*border-color: rgb(40,40,40);*/
/*background: rgb(30,30,30);*/
}
.site-content ul ul, .site-content ul ol, .site-content ol ol, .site-content ol ul {
margin-bottom: 10px;
}
.tree-nav ul ul, .tree-nav ul ol, .tree-nav ol ol, .tree-nav ol ul {
margin-bottom: 0px;
}
/**
Pull-out blockquotes
**/
.site-content blockquote {
position: relative;
padding-left: 45px;
border-left: 0;
}
.site-content blockquote:before {
display: block;
font-family: FontAwesome;
font-style: normal;
font-weight: normal;
line-height: 1;
font-size: 30px;
width: 35px;
height: 100%;
position: absolute;
left: 0px;
top: 0;
bottom: 0;
}
blockquote.define:before {
border-right: 3px solid rgb(247, 148, 30);
content: "\f05a"; /*fa-info.circle*/
color: rgb(247, 148, 30);
}
blockquote.trivia:before {
border-right: 3px solid rgb(190, 190, 190);
content: "\f02d"; /*fa-book*/
color: rgb(190, 190, 190);
}
/**
Search
**/
.navbar-form .form-control {
height: auto;
}
.gsc-search-box input.gsc-search-button {
color: white;
}
.gsc-search-box input.gsc-search-button:hover {
background: rgb(244, 136, 33);
}
.gsc-search-box input.gsc-search-button {
border: 1px solid rgb(244, 136, 33);
background: rgb(244, 136, 33);
border-radius: 5px;
display: inline-block;
color: white;
padding: 6px 18px;
margin-top: 0px !important;
text-decoration: none;
text-shadow: none;
font-size: 8pt;
}
html td.gsc-search-button {
width: 50px;
}
html input.gsc-input, html input.gsc-input:focus {
font-size: inherit;
box-shadow: none;
transition: none;
position: relative;
top: -3px;
}
.gsc-input-box .gsib_b .gsst_b {
position: relative;
top: 2px;
}
html .gsc-search-box-tools .gsc-search-box .gsc-input {
padding-right: 0px;
}
html .gsc-search-box-tools .gsc-search-box .gsc-input .gsc-input-box {
border-top-left-radius: 5px;
border-bottom-left-radius: 5px;
border: 1px solid rgb(244, 136, 33);
border-right: none;
}
html .gsc-search-box-tools .gsc-search-box td.gsc-search-button input.gsc-search-button,
html .gsc-search-box-tools .gsc-search-box td.gsc-search-button input.gsc-search-button:hover {
border-radius: 0px 5px 5px 0px;
border-left: none;
margin-left: 0;
}
html .cse input.gsc-search-button:hover, html input.gsc-search-button:hover {
border-color: rgb(244, 136, 33);
}
html .gsc-search-box .gsc-input > input:focus, html .gsc-input-box-focus {
box-shadow: none;
}
.navbar-inner .gsc-input-box {
width: 175px;
}
@media (max-width: 979px) {
html .nav-collapse .navbar-search {
float: left;
}
}
.dark {
background: rgb(20,20,25);
color: white;
}
.dark a {
color: white;
}
.dark a:hover {
color: rgb(200,200,200);
}
.dark blockquote {
border-left: 3px solid rgb(126,126,129);
}
.dark blockquote small {
color: white;
font-weight: bold;
}
.dark blockquote small:before {
display: none;
}
/** Footer sitemap **/
.copyright {
height: 26px;
padding: 6px;
overflow: hidden;
}
.navbar .navbar-inner {
background: rgb(20,20,25);
border: none;
}
.navbar .navbar-inner .nav > li > a {
text-shadow: none;
color: white;
}
.navbar .navbar-inner .nav > li.dropdown.active > a,
.navbar .navbar-inner .nav > li.dropdown.open.active > a,
.navbar .navbar-inner .nav > li.dropdown.open > a,
.navbar .navbar-inner .nav > li.active > a {
color: rgb(244, 136, 33);
background-color: transparent;
}
.navbar-inner .dropdown-menu {
background-color: rgb(20,20,25);
margin-top: 5px;
}
.navbar .navbar-inner .nav > li > .dropdown-menu:after {
border-bottom-color: rgb(20,20,25);
}
.navbar-inner .dropdown-menu li a {
color: white;
}
.navbar-inner .dropdown-menu li.active a {
color: rgb(244, 136, 33);
background: transparent;
}
.navbar-inner .dropdown-menu li a:hover {
background: rgb(60,60,60);
}
.navbar .navbar-inner .nav li.dropdown > .dropdown-toggle .caret {
border-top-color: white;
border-bottom-color: white;
}
.navbar .navbar-inner .nav li.dropdown.active > .dropdown-toggle .caret,
.navbar .navbar-inner .nav li.dropdown.open > .dropdown-toggle .caret {
border-top-color: rgb(244, 136, 33);
border-bottom-color: rgb(244, 136, 33);
}
.navbar .brand {
font-weight: bold;
line-height: 16px;
padding-top: 9px;
}
.navbar .nav li {
margin-bottom: 0;
padding-left: 0;
}
@media (min-width: 1200px) {
.navbar .search-link-menu { display: none; }
.navbar .search { display: block; }
}
@media (max-width: 1199px) {
.navbar .search-link-menu { display: block; }
.navbar .search { display: none; }
}
.user-profile img.avatar
{
margin:0 30px 0 20px;
}
i.fa {
color: #777;
}
h1 i.fa {
color: #f68712;
}
h2 i.fa, h3 i.fa, h4 i.fa, h5 i.fa {
color: #333;
}
.well .table {
margin-bottom: 0;
}
.btn-primary i.fa {
color: white;
}
/** File browser **/
.panel-heading .breadcrumb {
margin: 0;
padding-left: 0;
}
.breadcrumb > li:first-child {
padding-left: 0;
}
pre.panel-body {
margin: 0;
border: none;
background: white;
}
/** Project lists. **/
.project-list small {
font-weight: normal;
}
/** Homepage Banner **/
.section.homepage-banner {
background: url('/img/homepage_banner.jpg');
background-size: cover;
color: white;
}
.section.homepage-banner .jumbotron {
background: rgba(0,0,0,0.3);
}
.section.homepage-banner .jumbotron pre {
background: rgba(0,0,0,0.6);
margin: 0 0 20px 0;
padding: 10px;
}
.section.homepage-banner .jumbotron pre code {
color: white;
}

View File

@@ -0,0 +1,6 @@
{
"user" : "dbUser",
"pass" : "dbPass",
"host" : "dbHost",
"database" : "haxelib"
}

View File

@@ -0,0 +1,5 @@
# Accessing Haxelib info through the Remoting API
# Accessing Haxelib info through the JSON API
More information to go here...

View File

@@ -0,0 +1,91 @@
# Creating a haxelib package
Each haxelib package is essentially a zip folder containing source code, supporting files, and a `haxelib.json` file.
### haxelib.json
Each Haxe library requires a `haxelib.json` file in which the following attributes are defined:
* name: The name of the library. It must contain at least 3 characters among the following: `[A-Za-z0-9_-.]`. In particular, no spaces are allowed.
* url: The URL of the library, i.e. where more information can be found.
* license: The license under which the library is released. Can be `GPL`, `LGPL`, `BSD`, `Public` (for Public Domain) or `MIT`.
* tags: An array of tag-strings which are used on the repository website to sort libraries.
* description: The description of what the library is doing.
* version: The version string of the library. This is detailed in [Versioning](#versioning).
* classPath: The path string to the source files.
* releasenote: The release notes of the current version.
* contributors: An array of user names which identify contributors to the library.
* dependencies: An object describing the dependencies of the library. This is detailed in [Dependencies](haxelib-json-dependencies.md).
The following JSON is a simple example of a haxelib.json:
```haxe
{
"name": "useless_lib",
"url" : "https://github.com/jasononeil/useless/",
"license": "MIT",
"tags": ["cross", "useless"],
"description": "This library is useless in the same way on every platform.",
"version": "1.0.0",
"classPath": "src/",
"releasenote": "Initial release, everything is working correctly.",
"contributors": ["Juraj","Jason","Nicolas"],
"dependencies": {
"tink_macro": "",
"nme": "3.5.5"
}
}
```
<a name="versioning"></a>
### Versioning
Haxelib uses a simplified version of [SemVer](http://semver.org/). The basic format is this:
```
major.minor.patch
```
These are the basic rules:
* Major versions are incremented when you break backwards compatibility - so old code will not work with the new version of the library.
* Minor versions are incremented when new features are added.
* Patch versions are for small fixes that do not change the public API, so no existing code should break.
* When a minor version increments, the patch number is reset to 0. When a major version increments, both the minor and patch are reset to 0.
Examples:
* "0.0.1": A first release. Anything with a "0" for the major version is subject to change in the next release - no promises about API stability!
* "0.1.0": Added a new feature! Increment the minor version, reset the patch version
* "0.1.1": Realised the new feature was broken. Fixed it now, so increment the patch version
* "1.0.0": New major version, so increment the major version, reset the minor and patch versions. You promise your users not to break this API until you bump to 2.0.0
* "1.0.1": A minor fix
* "1.1.0": A new feature
* "1.2.0": Another new feature
* "2.0.0": A new version, which might break compatibility with 1.0. Users are to upgrade cautiously.
If this release is a preview (Alpha, Beta or Release Candidate), you can also include that, with an optional release number:
```
major.minor.patch-(alpha/beta/rc).release
```
Examples:
* "1.0.0-alpha": The alpha of 1.0.0 - use with care, things are changing!
* "1.0.0-alpha.2": The 2nd alpha
* "1.0.0-beta": Beta - things are settling down, but still subject to change.
* "1.0.0-rc.1": The 1st release candidate for 1.0.0 - you shouldn't be adding any more features now
* "1.0.0-rc.2": The 2nd release candidate for 1.0.0
* "1.0.0": The final release!
### extraParams.hxml
If you add a file named `extraParams.hxml` to your library root (at the same level as `haxelib.json`), these parameters will be automatically added to the compilation parameters when someone use your library with `-lib`.
### Submission process
* During development: Use `haxelib dev my_test_haxelib /path/to/my_test_haxelib/` to test the library.
* Ready to test: Zip the current directory, and use `haxelib install my_test_haxelib.zip` to try the final version.
- Submit: You can run `haxelib submit my_test_haxelib.zip` to submit the zip file to haxelib. Alternatively you can run `haxelib submit` without a zip file to have haxelib zip and submit the current directory.

View File

@@ -0,0 +1,3 @@
# FAQ
More information to go here...

View File

@@ -0,0 +1,24 @@
# Getting Started With Haxelib
Haxelib is the library manager that comes with any Haxe distribution. Connected to a central repository, it allows submitting and retrieving libraries and has multiple features beyond that. Available libraries can be found at <http://lib.haxe.org>.
A basic Haxe library is a collection of `.hx` files. That is, libraries are distributed by source code by default, making it easy to inspect and modify their behavior. Each library is identified by a unique name, which is utilized when telling the Haxe Compiler which libraries to use for a given compilation.
### Using with Haxe
Any installed Haxe library can be made available to the compiler through the `-lib <library-name>` argument. This is very similiar to the `-cp <path>` argument, but expects a library name instead of a directory path. These commands are explained thoroughly in [Compiler Usage](http://haxe.org/manual/compiler-usage.html).
For our exemplary usage we chose a very simple Haxe library called "random". It provides a set of static convenience methods to achieve various random effects, such as picking a random element from an array.
```haxe
class Main {
static public function main() {
var elt = Random.fromArray([1, 2, 3]);
trace(elt);
}
}
```
Compiling this without any `-lib` argument causes an error message along the lines of `Unknown identifier : Random`. This shows that installed Haxe libraries are not available to the compiler by default unless they are explicitly added. A working command line for above program is `haxe -lib random -main Main --interp`.
If the compiler emits an error `Error: Library random is not installed : run 'haxelib install random'` the library has to be installed via the `haxelib` command first. As the error message suggests, this is achieved through `haxelib install random`. We will learn more about the `haxelib` command in [Using Haxelib](/documentation/using-haxelib/).

View File

@@ -0,0 +1,4 @@
# Installing and Upgrading Haxelib
More information to go here...

View File

@@ -0,0 +1,45 @@
TODO: this needs editing and adding to the website
## Per-project setup
Currently haxelib has two ways to have project local setups.
1. Using `haxelib newrepo`
2. Using `haxelib install all`
### Using haxelib newrepo
When using `haxelib newrepo` you can have a project-local haxelib repository. This feature is quite new and a little rough around the edges.
Caveats:
- libraries get downloaded for each project
- if you mistakenly run a haxelib command in a subdirectory of your project, it will be executed on the global repo ([to be fixed](https://github.com/HaxeFoundation/haxelib/issues/292))
### Using haxelib install all
Haxe allows you to define specific versions of the libraries you want to use with `-lib <libname>:<version>`. If you make sure to use this in all your hxmls, then `haxelib install all --always` (the `--always` avoiding you being prompted for confirmation) will be able to ensure the libraries your project needs are available in the necessary versions. If in fact you run this in a checkout hook, your get to track your dependencies in your git repo (some other VCSs should allow for a similar setup), allowing you to have a well defined and replicable setup for any state (commit/branch/etc.).
Disadvantages:
- the approach requires you to define all dependencies with specific versions and then running `haxelib install all` to grab them
- with this approach, any other project that does not have specific versions defined may be affected, as under some circumstances `haxelib install all` may set the global "current" version of the libraries (to be fixed)
Advantages:
- as pointed out above, this approach allows defining a *versionable* and *replicable* state.
- you don't have to download libraries for each project, which does make a difference for heavy weights like openfl and hxcpp
#### Sidestepping haxelib git issues
Because you cannot specify git versions with `-lib` paremeters, we suggest using git submodules instead, as again they provide an adequate way of definining a *versionable* and *replicable* state.
### Combining both approaches
You can of course combine both approaches, giving you the isolation provided by the first one, and the replicability provided by the second one.
### Future solutions
A solution that combines the strengths of both approaches is in the making. Stay tuned.

View File

@@ -0,0 +1,3 @@
# Tips and Tricks when using Haxelib
More information to go here...

View File

@@ -0,0 +1,618 @@
# Using Haxelib
If the `haxelib` command is executed without any arguments, it prints an exhaustive list of all available arguments. Access the <http://lib.haxe.org> website to view all the libraries available.
The following commands are available:
<div class="row">
<div class="col-md-4">
<h4><a href="#basic">Basic</a></h4>
<ul>
<li><a href="#install">install</a></li>
<li><a href="#update">update</a></li>
<li><a href="#remove">remove</a></li>
<li><a href="#list">list</a></li>
<li><a href="#set">set</a></li>
</ul>
</div>
<div class="col-md-4">
<h4><a href="#information">Information</a></h4>
<ul>
<li><a href="#search">search</a></li>
<li><a href="#info">info</a></li>
<li><a href="#user">user</a></li>
<li><a href="#config">config</a></li>
<li><a href="#path">path</a></li>
<li><a href="#version">version</a></li>
<li><a href="#help">help</a></li>
</ul>
</div>
<div class="col-md-4">
<h4><a href="#development">Development</a></h4>
<ul>
<li><a href="#submit">submit</a></li>
<li><a href="#register">register</a></li>
<li><a href="#dev">dev</a></li>
<li><a href="#git">git</a></li>
<li><a href="#hg">hg</a></li>
</ul>
</div>
</div>
<div class="row">
<div class="col-md-4">
<h4><a href="#miscellaneous">Miscellaneous</a></h4>
<ul>
<li><a href="#setup">setup</a></li>
<li><a href="#newrepo">newrepo</a></li>
<li><a href="#deleterepo">deleterepo</a></li>
<li><a href="#convertxml">convertxml</a></li>
<li><a href="#run">run</a></li>
<li><a href="#proxy">proxy</a></li>
</ul>
</div>
<div class="col-md-4">
<h4><a href="#flags">Flags</a></h4>
<ul>
<li><a href="#flat">--flat</a></li>
<li><a href="#always">--always</a></li>
<li><a href="#system">--system</a></li>
<li><a href="#debug">--debug</a></li>
<li><a href="#quiet">--quiet</a></li>
<li><a href="#never">--never</a></li>
<li><a href="#global">--global</a></li>
</ul>
</div>
<div class="col-md-4">
<h4><a href="#parameters">Parameters</a></h4>
<ul>
<li><a href="#cwd">-cwd</a></li>
<li><a href="#notimeout">-no-timeout</a></li>
<li><a href="#R">-R</a></li>
</ul>
</div>
</div>
<a name="basic" class="anch"></a>
## Basic
<a name="install" class="anch"></a>
#### `haxelib install`
```
haxelib install [project-name] [version]
haxelib install actuate # Install latest version
haxelib install actuate 1.8.2 # Install specific version
```
> Install the given project. You can optionally specify a specific version to be installed. By default, latest released version will be installed.
```
haxelib install [library-file]
haxelib install actuate.zip # Install from zip file
```
> Install the project contained in the zip file.
```
haxelib install [hxml-file]
haxelib install build.hxml # Install all dependencies listed in hxml file
```
> Install all the dependencies from a hxml file.
```
haxelib install all # Install all dependencies in all hxml files
```
> Install all the dependencies from all hxml files in the current directory.
<a name="update" class="anch"></a>
#### `haxelib update`
```
haxelib update [project-name]
haxelib update minject
```
> Update a single library to the latest version.
```
haxelib update
```
> Update all the installed projects to their latest version. This command prompts a confirmation for each updating project.
<a name="remove" class="anch"></a>
#### `haxelib remove`
```
haxelib remove [project-name] [version]
haxelib remove format # Remove all versions
haxelib remove format 3.1.2 # Remove the specified version
```
> Remove a complete project or only a specified version if specified.
<a name="list" class="anch"></a>
#### `haxelib list`
```
haxelib list [search]
haxelib list # List all installed projects
haxelib list ufront # List all projects with "ufront" in their name
```
> List all the installed projects and their versions. For each project, the version surrounded by brackets is the current one.
<a name="set" class="anch"></a>
#### `haxelib set`
```
haxelib set [project-name] [version]
haxelib set tink_core 1.0.0-rc.8
```
> Change the current version for a given project. The version must be already installed.
<a name="information" class="anch"></a>
## Information
<a name="search" class="anch"></a>
#### `haxelib search`
```
haxelib search [word]
haxelib search tween
```
> Get a list of all haxelib projects with the specified word in the name or description.
<a name="info" class="anch"></a>
#### `haxelib info`
```
haxelib info [project-name]
haxelib info openfl
```
> Show information about this project, including the owner, license, description, website, tags, current version, and release notes for all versions.
<a name="user" class="anch"></a>
#### `haxelib user`
```
haxelib user [user-name]
haxelib user jason
```
> Show information on a given Haxelib user and their projects.
<a name="config" class="anch"></a>
#### `haxelib config`
```
haxelib config
```
> Print the Haxelib repository path. This is where each library will be installed to. You can modify the path using <code>haxelib [setup](#setup)</code>.
>
> If you are in a local repository and want to print the global Haxelib repository path do <code>haxelib [--global](#global) config</code>.
<a name="path" class="anch"></a>
#### `haxelib path`
```
haxelib path [project-name[:version]...]
haxelib path hscript
haxelib path hscript:2.0.0
haxelib path hscript erazor buddy
haxelib path hscript erazor buddy:1.0.0
```
> Prints the path to one or more libraries, as well as any dependencies and compiler definitions required by those libraries.
>
> You can specify a version by appending `:version` to the library name. If no version is specified the set version is used.
>
> If a [development](#dev) version is set it'll be used even if a version is specified.
>
> This command is used by Haxe compiler to get required paths and flags for libraries.
<a name="version" class="anch"></a>
#### `haxelib version`
```
haxelib version
```
> Prints the version of Haxelib you are using.
>
> You can change the version of haxelib you are using with <code>haxelib --global [set](#set) haxelib version</code>
<a name="help" class="anch"></a>
#### `haxelib help`
```
haxelib help
```
> Print the list of available arguments.
<a name="development" class="anch"></a>
## Development
<a name="submit" class="anch"></a>
#### `haxelib submit`
```
haxelib submit [project.zip]
haxelib submit detox.zip
haxelib sumbit
```
> Submits a zip package to Haxelib so other users can install it.
>
> Alternatively you can run `haxelib submit` without argument to have Haxelib zip and submit the current directory (excluding names starting with a dot).
>
> If the user name is unknown, you'll be first asked to register an account.
> If more the project has more than one developer, it will ask you which user you wish to submit as.
> If the user already exists, you will be prompted for your password.
>
> If you want to modify the project url or description, simply modify your `haxelib.json` (keeping version information unchanged) and submit it again.
<a name="register" class="anch"></a>
#### `haxelib register`
```
haxelib register [username] [email] [fullname] [password] [passwordconfirmation]
```
> Register a new developer account to be used when [submitting](#submit).
>
> Missing parameters will be asked interactively.
<a name="dev" class="anch"></a>
#### `haxelib dev`
```
haxelib dev [project-name] [directory]
haxelib dev starling ../starling/ # Relative path to starling source.
haxelib dev starling /opt/starling/ # Absolute path to starling source.
haxelib dev starling # Cancel dev, use installed version.
```
> Set a development directory for the given project.
> This directory should either contain a `haxelib.json` or the source `*.hx` files.
> This command is useful when developing a library and testing changes on a project.
>
> If the directory is omitted the development version of the library will be deactivated.
<a name="git" class="anch"></a>
#### `haxelib git`
```
haxelib git [project-name] [git-clone-path] [branch]
haxelib git minject https://github.com/massiveinteractive/minject.git # Use HTTP git path.
haxelib git minject git@github.com:massiveinteractive/minject.git # Use SSH git path.
haxelib git minject git@github.com:massiveinteractive/minject.git v2 # Checkout branch or tag `v2`.
```
> Use a git repository as library.
>
> This is useful for using a more up-to-date development version, a fork of the original project, or for having a private library that you do not wish to post to Haxelib.
>
> When you use `haxelib update` any libraries that are installed using GIT will automatically pull the latest version.
<a name="hg" class="anch"></a>
#### `haxelib hg`
```
haxelib hg [project-name] [mercurial-clone-path] [branch]
```
> Use a mercurial repository as library.
>
> Usage is identical to <code>haxelib [git](#git)</code>.
<a name="miscellaneous" class="anch"></a>
## Miscellaneous
<a name="setup" class="anch"></a>
#### `haxelib setup`
```
haxelib setup [path]
```
> Set the Haxelib repository path. To print current path use <code>haxelib [config](#config)</code>.
>
> Missing parameter will be asked interactively.
<a name="newrepo" class="anch"></a>
#### `haxelib newrepo`
```
haxelib newrepo
```
> Create a local repository in the current directory, to remove it use <code>haxelib [deleterepo](#deleterepo)</code>.
>
> [Basic](#basic) commands will only use the libraries stored in the local repository when you are located in this directory.
>
> To access the global repository add the <code>[--global](#global)</code> flag.
<a name="deleterepo" class="anch"></a>
#### `haxelib deleterepo`
```
haxelib deleterepo
```
> Remove a local repository created with <code>haxelib [newrepo](#newrepo)</code> from the current directory.
>
> This will remove all libraries contained in it.
<a name="convertxml" class="anch"></a>
#### `haxelib convertxml`
```
haxelib convertxml
```
> Convert the file `haxelib.xml` from the current directory in the Haxelib 2 xml specification into a file named `haxelib.json` which can be used by the current Haxelib.
<a name="run" class="anch"></a>
#### `haxelib run`
```
haxelib run [project-name[:version]] [parameters]
haxelib run openfl
haxelib run openfl:2.6.0
haxelib run openfl setup
haxelib run openfl create DisplayingABitmap
```
> Libraries with either a `run.n` helper or a main class defined in `haxelib.json`, can be executed using `haxelib run`.
>
> You can specify the version to run by appending `:version`, if the library has a [development](#dev) version set the version will be ignored.
>
> The library will receive the `HAXELIB_RUN` environment variable with value `"1"` and `HAXELIB_RUN_NAME` with the name of the library as value.
<a name="proxy" class="anch"></a>
#### `haxelib proxy`
```
haxelib proxy [host port [username password]]
```
> Configure Haxelib to use a HTTP proxy.
>
> Missing parameters will be asked interactively.
>
> Rerun with an empty host to deactivate the current proxy.
<a name="flags" class="anch"></a>
## Flags
**Warning**: when using the [run](#run) command you need to specify the flags before `run`,
otherwise they'll be passed as arguments to the library.
<a name="flat" class="anch"></a>
#### `haxelib --flat`
```
haxelib --flat
```
> Used by <code>haxelib [git](#git)</code>, do not add the `--recursive` flag when cloning a git repository.
<a name="always" class="anch"></a>
#### `haxelib --always`
```
haxelib --always
```
> Answer all questions with yes, cannot be used at the same time as [--never](#never).
<a name="system" class="anch"></a>
#### `haxelib --system`
```
haxelib --system
```
> Use the version of Haxelib installed with Haxe in the system instead of the one currently [set](#set).
>
> Useful if your Haxelib update was broken.
<a name="debug" class="anch"></a>
#### `haxelib --debug`
```
haxelib --debug
```
> Display debug information during the execution, cannot be used at the same time as [--quiet](#quiet).
<a name="quiet" class="anch"></a>
#### `haxelib --quiet`
```
haxelib --quiet
```
> Display less messages during the execution, cannot be used at the same time as [--debug](#debug).
<a name="never" class="anch"></a>
#### `haxelib --never`
```
haxelib --never
```
> Answer all questions with no, cannot be used at the same time as [--always](#always).
<a name="global" class="anch"></a>
#### `haxelib --global`
```
haxelib --global
```
> Force the usage of the global repository even if inside a local repository created with <code>haxelib [newrepo](#newrepo)</code>.
<a name="parameters" class="anch"></a>
## Parameters
**Warning**: when using the [run](#run) command you need to specify the parameters before `run`,
otherwise they'll be passed as arguments to the library.
<a name="cwd" class="anch"></a>
#### `haxelib -cwd`
```
haxelib -cwd [dir]
```
> Act like the Haxelib command was run from another repository. Affect all commands that use the "current directory".
<a name="notimeout" class="anch"></a>
#### `haxelib -no-timeout`
```
haxelib -no-timeout
```
> Remove timeout when connecting to the Haxelib server, downloading or [submitting](#submit) a library.
<a name="R" class="anch"></a>
#### `haxelib -R`
```
haxelib -R [host:port[/dir]]
```
> Allow the usage of a custom Haxelib server instead of `lib.haxe.org`.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1,2 @@
*
!.gitignore

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -0,0 +1,154 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="107"
height="21"
id="svg3238"
version="1.1"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="haxe-logo-horizontal-on-dark.svg">
<defs
id="defs3240" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="5.6"
inkscape:cx="84.88024"
inkscape:cy="-8.7364518"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1680"
inkscape:window-height="1026"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1" />
<metadata
id="metadata3243">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-1031.3622)">
<g
id="g3332"
transform="matrix(0.24008588,0,0,0.24008588,-2.2890548,790.44159)">
<path
d="m 53.269398,1014.4105 -32.801678,32.8011 32.801678,32.8002 32.800001,-32.8002 -32.800001,-32.8011"
style="fill:#f68712;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path14"
inkscape:connector-curvature="0" />
<path
d="M 9.5343166,1003.4768 53.269398,1014.4105 20.46772,1047.2116 9.5343166,1003.4768"
style="fill:#fab20b;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path16"
inkscape:connector-curvature="0" />
<path
d="m 97.00448,1003.4768 -10.935081,43.7348 -32.800001,-32.8011 43.735082,-10.9337"
style="fill:#f47216;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path18"
inkscape:connector-curvature="0" />
<path
d="m 97.00448,1090.9455 -43.735082,-10.9337 32.800001,-32.8002 10.935081,43.7339"
style="fill:#f25c19;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path20"
inkscape:connector-curvature="0" />
<path
d="m 9.5343166,1090.9455 10.9334034,-43.7339 32.801678,32.8002 -43.7350814,10.9337"
style="fill:#f89c0e;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path22"
inkscape:connector-curvature="0" />
<path
d="m 53.269398,1014.4105 -43.7350814,-10.9337 21.8668074,0 21.868274,10.9337"
style="fill:#fbc707;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path24"
inkscape:connector-curvature="0" />
<path
d="m 53.269398,1014.4105 43.735082,-10.9337 -21.868275,0 -21.866807,10.9337"
style="fill:#fbc707;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path26"
inkscape:connector-curvature="0" />
<path
d="m 53.269398,1080.0118 43.735082,10.9337 -21.868275,0 -21.866807,-10.9337"
style="fill:#f68712;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path28"
inkscape:connector-curvature="0" />
<path
d="m 53.269398,1080.0118 -43.7350814,10.9337 21.8668074,0 21.868274,-10.9337"
style="fill:#f25c19;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path30"
inkscape:connector-curvature="0" />
<path
d="m 20.46772,1047.2116 -10.9334034,43.7339 0,-21.8668 10.9334034,-21.8671"
style="fill:#fff200;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path32"
inkscape:connector-curvature="0" />
<path
d="m 20.46772,1047.2116 -10.9334034,-43.7348 0,21.8667 10.9334034,21.8681"
style="fill:#fff200;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path34"
inkscape:connector-curvature="0" />
<path
d="m 86.069399,1047.2116 10.935081,-43.7348 0,21.8667 -10.935081,21.8681"
style="fill:#f1471d;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path36"
inkscape:connector-curvature="0" />
<path
d="m 86.069399,1047.2116 10.935081,43.7339 0,-21.8668 -10.935081,-21.8671"
style="fill:#f1471d;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path38"
inkscape:connector-curvature="0" />
</g>
<g
id="g3347"
transform="matrix(0.63314038,0,0,0.63314038,21.66293,338.04867)"
style="fill:#ffffff">
<path
d="m 9.5343166,1100.5672 6.8142754,0 0,7.6782 6.378705,0 0,-7.6782 6.81431,0 0,22.112 -6.81431,0 0,-8.7639 -6.378705,0 0,8.7639 -6.8142754,0 0,-22.112"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path40"
inkscape:connector-curvature="0" />
<path
d="m 44.535454,1114.7787 -1.985133,-6.8094 -0.06145,0 -2.135357,6.8094 4.181936,0 z m -5.356114,-14.2115 6.654511,0 8.053988,22.112 -7.061352,0 -0.928464,-3.1577 -7.031363,0 -0.989841,3.1577 -6.847025,0 8.149546,-22.112"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path42"
inkscape:connector-curvature="0" />
<path
d="m 61.261871,1110.9107 -7.279801,-10.3435 7.991144,0 3.343648,6.0067 3.284928,-6.0067 7.555643,0 -7.090012,10.4058 7.894187,11.7062 -8.20547,0 -3.777821,-6.5969 -3.902111,6.5969 -7.805479,0 7.991144,-11.7685"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path44"
inkscape:connector-curvature="0" />
<path
d="m 78.35836,1100.5672 18.303591,0 0,5.6644 -11.48942,0 0,2.7576 10.436666,0 0,5.268 -10.436666,0 0,2.7549 11.831949,0 0,5.6671 -18.64612,0 0,-22.112"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path46"
inkscape:connector-curvature="0" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.3 KiB

View File

@@ -0,0 +1,153 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="107"
height="21"
id="svg3238"
version="1.1"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="New document 9">
<defs
id="defs3240" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="5.6"
inkscape:cx="106.13024"
inkscape:cy="-8.7364518"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1680"
inkscape:window-height="1026"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1" />
<metadata
id="metadata3243">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-1031.3622)">
<g
id="g3332"
transform="matrix(0.24008588,0,0,0.24008588,-2.2890548,790.44159)">
<path
d="m 53.269398,1014.4105 -32.801678,32.8011 32.801678,32.8002 32.800001,-32.8002 -32.800001,-32.8011"
style="fill:#f68712;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path14"
inkscape:connector-curvature="0" />
<path
d="M 9.5343166,1003.4768 53.269398,1014.4105 20.46772,1047.2116 9.5343166,1003.4768"
style="fill:#fab20b;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path16"
inkscape:connector-curvature="0" />
<path
d="m 97.00448,1003.4768 -10.935081,43.7348 -32.800001,-32.8011 43.735082,-10.9337"
style="fill:#f47216;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path18"
inkscape:connector-curvature="0" />
<path
d="m 97.00448,1090.9455 -43.735082,-10.9337 32.800001,-32.8002 10.935081,43.7339"
style="fill:#f25c19;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path20"
inkscape:connector-curvature="0" />
<path
d="m 9.5343166,1090.9455 10.9334034,-43.7339 32.801678,32.8002 -43.7350814,10.9337"
style="fill:#f89c0e;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path22"
inkscape:connector-curvature="0" />
<path
d="m 53.269398,1014.4105 -43.7350814,-10.9337 21.8668074,0 21.868274,10.9337"
style="fill:#fbc707;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path24"
inkscape:connector-curvature="0" />
<path
d="m 53.269398,1014.4105 43.735082,-10.9337 -21.868275,0 -21.866807,10.9337"
style="fill:#fbc707;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path26"
inkscape:connector-curvature="0" />
<path
d="m 53.269398,1080.0118 43.735082,10.9337 -21.868275,0 -21.866807,-10.9337"
style="fill:#f68712;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path28"
inkscape:connector-curvature="0" />
<path
d="m 53.269398,1080.0118 -43.7350814,10.9337 21.8668074,0 21.868274,-10.9337"
style="fill:#f25c19;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path30"
inkscape:connector-curvature="0" />
<path
d="m 20.46772,1047.2116 -10.9334034,43.7339 0,-21.8668 10.9334034,-21.8671"
style="fill:#fff200;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path32"
inkscape:connector-curvature="0" />
<path
d="m 20.46772,1047.2116 -10.9334034,-43.7348 0,21.8667 10.9334034,21.8681"
style="fill:#fff200;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path34"
inkscape:connector-curvature="0" />
<path
d="m 86.069399,1047.2116 10.935081,-43.7348 0,21.8667 -10.935081,21.8681"
style="fill:#f1471d;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path36"
inkscape:connector-curvature="0" />
<path
d="m 86.069399,1047.2116 10.935081,43.7339 0,-21.8668 -10.935081,-21.8671"
style="fill:#f1471d;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path38"
inkscape:connector-curvature="0" />
</g>
<g
id="g3347"
transform="matrix(0.94971056,0,0,0.94971056,14.894649,-13.858092)">
<path
d="m 9.5343166,1100.5672 6.8142754,0 0,7.6782 6.378705,0 0,-7.6782 6.81431,0 0,22.112 -6.81431,0 0,-8.7639 -6.378705,0 0,8.7639 -6.8142754,0 0,-22.112"
style="fill:#4f4c4c;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path40"
inkscape:connector-curvature="0" />
<path
d="m 44.535454,1114.7787 -1.985133,-6.8094 -0.06145,0 -2.135357,6.8094 4.181936,0 z m -5.356114,-14.2115 6.654511,0 8.053988,22.112 -7.061352,0 -0.928464,-3.1577 -7.031363,0 -0.989841,3.1577 -6.847025,0 8.149546,-22.112"
style="fill:#4f4c4c;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path42"
inkscape:connector-curvature="0" />
<path
d="m 61.261871,1110.9107 -7.279801,-10.3435 7.991144,0 3.343648,6.0067 3.284928,-6.0067 7.555643,0 -7.090012,10.4058 7.894187,11.7062 -8.20547,0 -3.777821,-6.5969 -3.902111,6.5969 -7.805479,0 7.991144,-11.7685"
style="fill:#4f4c4c;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path44"
inkscape:connector-curvature="0" />
<path
d="m 78.35836,1100.5672 18.303591,0 0,5.6644 -11.48942,0 0,2.7576 10.436666,0 0,5.268 -10.436666,0 0,2.7549 11.831949,0 0,5.6671 -18.64612,0 0,-22.112"
style="fill:#4f4c4c;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path46"
inkscape:connector-curvature="0" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.3 KiB

View File

@@ -0,0 +1,119 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg2"
version="1.1"
inkscape:version="0.48.3.1 r9886"
width="230"
height="314"
xml:space="preserve"
sodipodi:docname="haxe-logo-vertical.svg"><metadata
id="metadata8"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
id="defs6" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1317"
inkscape:window-height="744"
id="namedview4"
showgrid="false"
inkscape:zoom="1.5658194"
inkscape:cx="203.86004"
inkscape:cy="57.713244"
inkscape:window-x="207"
inkscape:window-y="1074"
inkscape:window-maximized="1"
inkscape:current-layer="g10"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0" /><g
id="g10"
inkscape:groupmode="layer"
inkscape:label="ink_ext_XXXXXX"
transform="matrix(1.25,0,0,-1.25,0,313.99999)"><g
id="g12"
transform="scale(0.14704825,0.14704825)"><path
d="M 625.645,1548.82 156.406,1079.59 625.645,610.371 1094.86,1079.59 625.645,1548.82"
style="fill:#f68712;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path14"
inkscape:connector-curvature="0" /><path
d="M 0,1705.23 625.645,1548.82 156.406,1079.59 0,1705.23"
style="fill:#fab20b;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path16"
inkscape:connector-curvature="0" /><path
d="m 1251.29,1705.23 -156.43,-625.64 -469.215,469.23 625.645,156.41"
style="fill:#f47216;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path18"
inkscape:connector-curvature="0" /><path
d="M 1251.29,453.961 625.645,610.371 1094.86,1079.59 1251.29,453.961"
style="fill:#f25c19;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path20"
inkscape:connector-curvature="0" /><path
d="M 0,453.961 156.406,1079.59 625.645,610.371 0,453.961"
style="fill:#f89c0e;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path22"
inkscape:connector-curvature="0" /><path
d="M 625.645,1548.82 0,1705.23 l 312.812,0 312.833,-156.41"
style="fill:#fbc707;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path24"
inkscape:connector-curvature="0" /><path
d="m 625.645,1548.82 625.645,156.41 -312.833,0 -312.812,-156.41"
style="fill:#fbc707;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path26"
inkscape:connector-curvature="0" /><path
d="m 625.645,610.371 625.645,-156.41 -312.833,0 -312.812,156.41"
style="fill:#f68712;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path28"
inkscape:connector-curvature="0" /><path
d="M 625.645,610.371 0,453.961 l 312.812,0 312.833,156.41"
style="fill:#f25c19;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path30"
inkscape:connector-curvature="0" /><path
d="M 156.406,1079.59 0,453.961 0,766.773 156.406,1079.59"
style="fill:#fff200;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path32"
inkscape:connector-curvature="0" /><path
d="M 156.406,1079.59 0,1705.23 0,1392.42 156.406,1079.59"
style="fill:#fff200;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path34"
inkscape:connector-curvature="0" /><path
d="m 1094.86,1079.59 156.43,625.64 0,-312.81 -156.43,-312.83"
style="fill:#f1471d;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path36"
inkscape:connector-curvature="0" /><path
d="m 1094.86,1079.59 156.43,-625.629 0,312.812 -156.43,312.817"
style="fill:#f1471d;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path38"
inkscape:connector-curvature="0" /><path
d="m 0,316.32 97.4805,0 0,-109.84 91.2495,0 0,109.84 97.481,0 0,-316.32 -97.481,0 0,125.371 -91.2495,0 L 97.4805,0 0,0 0,316.32"
style="fill:#4f4c4c;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path40"
inkscape:connector-curvature="0" /><path
d="m 500.703,113.02 -28.398,97.41 -0.879,0 -30.547,-97.41 59.824,0 z m -76.621,203.3 95.195,0 L 634.492,0 533.477,0 l -13.282,45.1719 -100.586,0 L 405.449,0 307.5,0 424.082,316.32"
style="fill:#4f4c4c;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path42"
inkscape:connector-curvature="0" /><path
d="m 739.98,168.352 -104.14,147.968 114.316,0 47.832,-85.929 46.992,85.929 108.086,0 L 851.641,167.461 964.57,0 847.188,0 793.145,94.3711 737.324,0 625.664,0 739.98,168.352"
style="fill:#4f4c4c;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path44"
inkscape:connector-curvature="0" /><path
d="m 984.551,316.32 261.839,0 0,-81.031 -164.36,0 0,-39.449 149.3,0 0,-75.36 -149.3,0 0,-39.4097 169.26,0 0,-81.0703 -266.739,0 0,316.32"
style="fill:#4f4c4c;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path46"
inkscape:connector-curvature="0" /></g></g></svg>

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

@@ -0,0 +1,103 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg2"
version="1.1"
inkscape:version="0.48.3.1 r9886"
width="230"
height="230"
xml:space="preserve"
sodipodi:docname="haxe-logo-vertical.svg"><metadata
id="metadata8"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs6" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1317"
inkscape:window-height="744"
id="namedview4"
showgrid="false"
inkscape:zoom="1.5658194"
inkscape:cx="203.86004"
inkscape:cy="57.713244"
inkscape:window-x="207"
inkscape:window-y="1074"
inkscape:window-maximized="1"
inkscape:current-layer="g10"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0" /><g
id="g10"
inkscape:groupmode="layer"
inkscape:label="ink_ext_XXXXXX"
transform="matrix(1.25,0,0,-1.25,0,229.99999)"><g
id="g12"
transform="matrix(0.14704825,0,0,0.14704825,0,-66.754179)"><path
d="M 625.645,1548.82 156.406,1079.59 625.645,610.371 1094.86,1079.59 625.645,1548.82"
style="fill:#f68712;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path14"
inkscape:connector-curvature="0" /><path
d="M 0,1705.23 625.645,1548.82 156.406,1079.59 0,1705.23"
style="fill:#fab20b;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path16"
inkscape:connector-curvature="0" /><path
d="m 1251.29,1705.23 -156.43,-625.64 -469.215,469.23 625.645,156.41"
style="fill:#f47216;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path18"
inkscape:connector-curvature="0" /><path
d="M 1251.29,453.961 625.645,610.371 1094.86,1079.59 1251.29,453.961"
style="fill:#f25c19;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path20"
inkscape:connector-curvature="0" /><path
d="M 0,453.961 156.406,1079.59 625.645,610.371 0,453.961"
style="fill:#f89c0e;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path22"
inkscape:connector-curvature="0" /><path
d="M 625.645,1548.82 0,1705.23 l 312.812,0 312.833,-156.41"
style="fill:#fbc707;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path24"
inkscape:connector-curvature="0" /><path
d="m 625.645,1548.82 625.645,156.41 -312.833,0 -312.812,-156.41"
style="fill:#fbc707;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path26"
inkscape:connector-curvature="0" /><path
d="m 625.645,610.371 625.645,-156.41 -312.833,0 -312.812,156.41"
style="fill:#f68712;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path28"
inkscape:connector-curvature="0" /><path
d="M 625.645,610.371 0,453.961 l 312.812,0 312.833,156.41"
style="fill:#f25c19;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path30"
inkscape:connector-curvature="0" /><path
d="M 156.406,1079.59 0,453.961 0,766.773 156.406,1079.59"
style="fill:#fff200;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path32"
inkscape:connector-curvature="0" /><path
d="M 156.406,1079.59 0,1705.23 0,1392.42 156.406,1079.59"
style="fill:#fff200;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path34"
inkscape:connector-curvature="0" /><path
d="m 1094.86,1079.59 156.43,625.64 0,-312.81 -156.43,-312.83"
style="fill:#f1471d;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path36"
inkscape:connector-curvature="0" /><path
d="m 1094.86,1079.59 156.43,-625.629 0,312.812 -156.43,312.817"
style="fill:#f1471d;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path38"
inkscape:connector-curvature="0" /></g></g></svg>

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 665 B

View File

@@ -0,0 +1,2 @@
*
!.gitignore

View File

@@ -0,0 +1,13 @@
<div class="row">
<div class="col-md-3">
<h5>Menu</h5>
<ul class="nav nav-pills nav-stacked">
@for (url in documentationPages.keys()) {
<li @if(url==pageUrl){ class="active" }><a href="@url">@documentationPages.get(url)</a></li>
}
</ul>
</div>
<div class="col-md-9">
@content
</div>
</div>

View File

@@ -0,0 +1,58 @@
<div class="section homepage-banner">
<div class="jumbotron">
<div class="container">
<h1>
<img src="/img/haxe-logo.svg" class="logo" onerror="this.src='/img/haxe-logo.png'" width="80" height="80" />
Haxelib
</h1>
<p class="lead">
Haxelib is the easiest way to find libraries and code for your Haxe project - and the best place you can share your code with others in the Haxe ecosystem.
Haxelib is the package manager for the Haxe Toolkit.
</p>
<pre><code>@exampleCode</code></pre>
<div class="btn-toolbar">
<a class="btn btn-primary" href="/documentation/using-haxelib/">Using Haxelib</a>
<a class="btn btn-default" href="/t/"><i class="fa fa-tags"></i> Browse By Tag</a>
<a class="btn btn-default" href="/u/"><i class="fa fa-user"></i> Browse By User</a>
<a class="btn btn-default" href="/all/"><i class="fa fa-star"></i> View All Haxelibs</a>
<a class="btn btn-default" href="/documentation/creating-a-haxelib-package/">Creating a Haxelib Package</a>
</div>
</div>
</div>
</div>
<div class="section">
<div class="container">
<div class="row">
<div class="col-md-3">
<h4><i class="fa fa-tags"></i> Popular Tags</h4>
<ul class="list-unstyled">
@for( t in tags ) {
<li><i class="fa fa-tag"></i> <a href="/t/@t.tag/"><strong>@t.tag</strong> <span class="badge">@t.count</span></a></li>
}
</ul>
</div>
<!-- <div class="col-md-5">
<h4><i class="fa fa-star"></i> Featured Project</h4>
<h5><a href="/p/munit/">munit</a></h5>
<p class="lead">MassiveUnit, or munit, is a full featured unit testing framework by Massive Interactive.</p>
<p>With support for AS3, JS, Neko and CPP, automatic test importers, support for ignoring tests, asynchronous tests and more, it's a great library.</p>
<pre><code>haxelib install munit</code></pre>
<div class="btn-toolbar">
<a class="btn btn-primary" href="/p/munit/">View project page</a>
<a class="btn btn-default" href="#">View older featured projects</a>
</div>
</div> -->
<div class="col-md-9">
<h4><i class="fa fa-paperclip"></i> Recently Updated</h4>
<div>
@for( update in latestProjects ) {
<p>
<strong><a href="/p/@update.p.name/@update.v.name/">@update.p.name</a>:</strong> @update.p.description
<br /><strong>@update.v.name:</strong> @update.v.comments
</p>
}
</div>
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,26 @@
<h1><i class="fa @icon"></i> @title</h1>
<p class="lead">@description</p>
<table class="table table-compact table-hover project-list">
<thead>
<tr>
<th>Project</th>
<th>Description</th>
<th>Version</th>
<th>Downloads</th>
</tr>
</thead>
<tbody>
@for (p in projects) {
<tr>
<th>
<a href="/p/@p.name/">@p.name</a>
<br/><small><a href="/u/@p.author/">@@@p.author</a></small>
</th>
<td>@p.description</td>
<td>@p.version</td>
<td>@p.downloads</td>
</tr>
}
</tbody>
</table>

View File

@@ -0,0 +1,48 @@
<h1><i class="fa fa-search"></i> @title</h1>
<p class="lead">@description</p>
<form action="/search/" method="GET">
<div class="input-group">
<input type="search" name="v" class="form-control" placeholder="Search Haxelib for..." @if(searchTerm!=null){ value="@searchTerm" } />
<span class="input-group-btn">
<input type="submit" class="btn btn-primary" value="Search" />
</span>
</div>
</form>
@if (projects!=null && projects.length>0) {
<table class="table table-compact table-hover">
<thead>
<tr>
<th>Project</th>
<th>Description</th>
<th>Version</th>
<th>Downloads</th>
</tr>
</thead>
<tbody>
@for (p in projects) {
<tr>
<th>
<a href="/p/@p.name/">@p.name</a>
<br/><small>(By <a href="/u/@p.author/">@@@p.author</a>)</small>
</th>
<td>@p.description</td>
<td>@p.version</td>
<td>@p.downloads</td>
</tr>
}
</tbody>
</table>
}
else if (projects!=null && projects.length==0) {
<p>No search results found.</p>
}
<p class="alert alert-info">
<a href="https://www.google.com/search?q=site:lib.haxe.org @searchTerm">
<strong>Not found what you are looking for?</strong>
Search Haxelib for "@searchTerm" using Google instead.
</a>
</p>

View File

@@ -0,0 +1,30 @@
<h1><i class="fa fa-tags"></i> @title</h1>
<p class="lead">@description</p>
<div class="row">
<div class="col-lg-4">
<table class="table table-compact table-hover">
<thead>
<tr>
<th>Tag</th>
<th>Projects</th>
</tr>
</thead>
<tbody>
@for (t in tags) {
<tr>
<th><i class="fa fa-tag"></i> <a href="/t/@t.tag/">@t.tag</a></th>
<td>@t.count</td>
</tr>
}
</tbody>
</table>
</div>
<div class="col-lg-8">
<div class="tag-cloud text-center">
@for (t in tagCloud) {
<a href="/t/@t.tag/" style="font-size: @(t.size)px">@t.tag</a>
}
</div>
</div>
</div>

View File

@@ -0,0 +1,167 @@
<!doctype html>
<html id="page">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<meta name="viewport" content="width=device-width" />
<title>@title</title>
<link href="/bower_components/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">
<link href="/bower_components/font-awesome/css/font-awesome.min.css" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="/css/style.css"/><!-- TODO: revert style.css to be same as haxe.org? -->
<!--<link rel="stylesheet" type="text/css" href="/css/haxelib.css"/>-->
<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
<link href='http://fonts.googleapis.com/css?family=Source+Sans+Pro:200,600,600italic,400' rel='stylesheet' type='text/css'>
<link href='http://fonts.googleapis.com/css?family=Open+Sans:400,700,700italic,400italic' rel='stylesheet' type='text/css'>
<link href='http://fonts.googleapis.com/css?family=Source+Code+Pro' rel='stylesheet' type='text/css'>
<!-- Google -->
<link rel="author" href="https://plus.google.com/113704686911055424796/posts"/>
<link rel="publisher" href="https://plus.google.com/113704686911055424796/"/>
<meta name="description" content="@description" />
<!-- Twitter card -->
<meta name="twitter:card" content="summary" />
<meta name="twitter:creator" content="@@haxelang" />
<meta name="twitter:site" content="@@haxelang" />
<meta name="twitter:title" content="@title" />
<meta name="twitter:description" value="@description">
<!-- OpenGraph -->
<meta property="og:title" content="@title" />
<meta property="og:type" content="article" />
<meta property="og:url" content="@pageUrl" />
<meta property="og:image" content="http://haxe.org/img/haxe-logo.png" />
<meta property="og:description" content="@description" />
<meta property="og:site_name" content="Haxe - The Cross-platform Toolkit" />
<!-- Facebook -->
</head>
<body>
<div class="section nav">
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="http://haxe.org/"><img src="http://haxe.org/img/haxe-logo-horizontal-on-dark.svg" width="107" height="21" alt="Haxe Logo" title="Go to Haxe.org Website" onerror="this.src='/img/haxe-logo-horizontal-on-dark.png'" /></a>
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="navbar-collapse">
<ul class="nav navbar-nav">
<li class="active"><a href="/">Haxelib <span class="sr-only">(current)</span></a></li>
<li class="dropdown">
<a href="/all" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Browse Projects <span class="caret"></span></a>
<ul class="dropdown-menu" role="menu">
<li><a href="/t/"><i class="fa fa-tags"></i> Browse by Tag</a></li>
<li><a href="/all/"><i class="fa fa-star"></i> Browse by Popularity</a></li>
<li><a href="/u/"><i class="fa fa-user"></i> Browse by Author</a></li>
<!--<li><a href="/recent/">Recently Updated</a></li>-->
<!--<li class="divider"></li>-->
</ul>
</li>
<li class="dropdown">
<a href="/documentation" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Documentation <span class="caret"></span></a>
<ul class="dropdown-menu" role="menu">
@for (url in documentationPages.keys()) {
<li @if(url==currentPage){ class="active" }><a href="@url">@documentationPages.get(url)</a></li>
}
<li class="divider"></li>
<li><a href="/rss/"><i class="fa fa-rss"></i> Recent Updates RSS Feed</a></li>
<li><a href="http://lib.haxe.org/legacy/"><i class="fa fa-folder-open-o"></i> Haxe 2 Haxelib repository</a></li>
</ul>
</li>
</ul>
<form action="/search/" method="GET" class="navbar-form navbar-right visible-lg" role="search">
<div class="form-group search">
<div class="input-group">
<input type="text" name="v" class="form-control" placeholder="Search Haxelib for..." @if(searchTerm!=null){ value="@searchTerm" } />
<span class="input-group-btn">
<button type="submit" class="btn btn-default"><i class="fa fa-search"></i></button>
</span>
</div>
<!--<div id="cse-search-form" style="width: 100%;"></div>-->
<!--<script src="http://www.google.com/jsapi" type="text/javascript"></script>-->
<!--<script type="text/javascript">-->
<!--google.load('search', '1', {language : 'en', style : google.loader.themes.V2_DEFAULT});-->
<!--google.setOnLoadCallback(function() {-->
<!--var customSearchOptions = {}; var customSearchControl = new google.search.CustomSearchControl(-->
<!--'008143996983163686627:ohovhuovssi', customSearchOptions);-->
<!--customSearchControl.setResultSetSize(google.search.Search.FILTERED_CSE_RESULTSET);-->
<!--var options = new google.search.DrawOptions();-->
<!--options.setAutoComplete(true);-->
<!--customSearchControl.setAutoCompletionId('008143996983163686627:ohovhuovssi+qptype:1');-->
<!--options.enableSearchboxOnly("/search", "s");-->
<!--customSearchControl.draw('cse-search-form', options);-->
<!--}, true);-->
<!--</script>-->
</div>
<!--<div class="form-group">-->
<!--<input type="text" class="form-control" placeholder="Search">-->
<!--</div>-->
<!--<button type="submit" class="btn btn-default">Submit</button>-->
</form>
<ul class="nav navbar-nav navbar-right">
<li class="hidden-lg"><a href="/search"><i class="fa fa-search"></i> Search</a></li>
<!-- TODO: some login / logout type links. -->
<!--<li class="dropdown">-->
<!--<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Dropdown <span class="caret"></span></a>-->
<!--<ul class="dropdown-menu" role="menu">-->
<!--<li><a href="#">Action</a></li>-->
<!--<li><a href="#">Another action</a></li>-->
<!--<li><a href="#">Something else here</a></li>-->
<!--<li class="divider"></li>-->
<!--<li><a href="#">Separated link</a></li>-->
<!--</ul>-->
<!--</li>-->
</ul>
</div><!-- /.navbar-collapse -->
</div><!-- /.container-fluid -->
</nav>
</div>
<div class="page-wrap">
@if( useWrapper ) {
<div class="section">
<div class="container">
@viewContent
</div>
</div>
}
else {
@viewContent
}
</div>
<footer class="section dark site-footer">
<div class="container">
<div class="copyright">
<p>&copy;@todaysDate.getFullYear()
<a href="http://haxe.org/foundation/" title="Haxe Foundation Website" class="hf-link">Haxe Foundation</a>
</div>
</div>
</footer>
<script src="/bower_components/jquery/dist/jquery.min.js"></script>
<script src="/bower_components/bootstrap/dist/js/bootstrap.min.js"></script>
<script src="//haxe.org/js/client.js"></script>
<!-- Google Tag Manager -->
<noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-N6H4RQ"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-NXV3XR');</script>
<!-- End Google Tag Manager -->
</body>

View File

@@ -0,0 +1,2 @@
<h1>Api Docs coming soon.</h1>
<p>Hopefully using the <a href="http://api.haxe.org/v/dev/haxe/crypto/Base64.html">New Dox Template</a>.</p>

View File

@@ -0,0 +1,73 @@
<h1>@project <small>@version</small></h1>
<p class="lead">@info.desc</p>
<div class="panel panel-default">
<div class="panel-heading">
<div class="btn-toolbar pull-right">
@if( type=="text" && extension=="hx" ) { <a href="#" class="btn btn-default"><i class="fa fa-cogs"></i> View API Docs</a> }
@if( type!="directory" ) { <a href="@downloadLink" class="btn btn-default"><i class="fa fa-download"></i> Download</a> }
<div class="btn-group">
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
@version <span class="caret"></span>
</button>
<ul class="dropdown-menu" role="menu">
@for ( v in info.versions ) {
<li @if(v.name==version){ class="active" }><a href="@baseUri@project/@v.name/files/@filePath">@v.name</a></li>
}
</ul>
</div>
<a href="@baseUri@project/@version" class="btn btn-default"><i class="fa fa-star"></i> View Project</a>
</div>
<ol class="breadcrumb">
@{
var i = 0;
var breadcrumbBase = baseUri+project+"/"+version+"/files";
}
<li>
@if ( type=="directory" ) { <i class="fa fa-folder"></i> }
else if ( type=="text" ) { <i class="fa fa-file"></i> }
</li>
<li><a href="@breadcrumbBase">@project : @version</a></li>
@while(i < fileParts.length) {
@if (i+1<fileParts.length){
<li><a href="@breadcrumbBase/@fileParts.slice(0,i+1).join('/')">@fileParts[i]</a></li>
}
else {
<li class="active">@fileParts[i]</li>
}
@{ i++; }
}
</ol>
</div>
@if ( type=="directory" ) {
<!-- Show the directory list -->
<div class="list-group">
@for (dir in dirListing) { <a href="@currentDir/@dir/" class="list-group-item"><i class="fa fa-folder"></i> @dir/</a> }
@for (file in fileListing) { <a href="@currentDir/@file" class="list-group-item" @if(extensionAllowed(file)==false) { rel="nofollow"}><i class="fa fa-file"></i> @file</a> }
</div>
}
else if ( type=="text" ) {
<!-- Show the content -->
<pre class="panel-body"><code class="prettyprint haxe">@fileContent</code></pre>
<!--<div class="panel-body">-->
<!--</div>-->
}
else if ( type=="markdown" ) {
<div class="panel-body">
@fileContent
</div>
}
else if ( type=="img" ) {
<!-- Display an image -->
<div class="panel-body text-center">
<img src="@downloadLink" alt="Viewing image @filename... sorry we don't have a better description"/>
</div>
}
else {
<!-- Show a link to download the file -->
<div class="panel-body text-center">
<a href="@downloadLink" class="btn btn-primary btn-large"><i class="fa fa-download"></i> Download @filename (@size)</a>
</div>
}
</div>

View File

@@ -0,0 +1,96 @@
<div class="row">
<div class="col-lg-8">
<!-- Title and description -->
<h1>@project <small>@version</small></h1>
<p class="lead">@info.desc</p>
<p><small>Released @versionDate.</small></p>
<!-- Installation Instruction -->
<p></p>
<div class="well">
<p>To install, run:</p>
<pre><code>haxelib install @project @version</code></pre>
<p>See <a href="/documentation/using-haxelib/">using Haxelib</a> in Haxelib documentation for more information.</p>
</div>
<!-- Links and buttons -->
<div class="btn-toolbar">
<a class="btn btn-primary" href="@downloadUrl"><i class="fa fa-download"></i> <strong>Download @project:@version</strong></a>
<a class="btn btn-default" href="/p/@project/versions/">Other Versions</a>
<a class="btn btn-default" href="/p/@project/@version/files/">Files</a>
<!-- <a class="btn btn-default" href="/p/@project/@version/doc/">API Docs</a> -->
<a class="btn btn-default" href="@info.website">Project Website</a>
</div>
<!-- Warning if they're looking at an old version -->
<p></p>
@if( version!=info.curversion ) {
<p class="alert alert-warning">This is not the latest stable version of @project. See version <a href="/p/@project/@info.curversion/">@info.curversion</a> for the latest version.</p>
}
</div>
<div class="col-lg-4">
<!-- Project details -->
<div class="table-responsive">
<table class="table table-condensed">
<tr class="owner"><th>Maintainer</th><td><a href="/u/@info.owner">@info.owner</a></td></tr>
<tr class="url"><th>Website</th><td><a href="@info.website">@info.website</a></td></tr>
<tr class="social">
<th>Social</th>
<td>
<div class="hidden" id="github-buttons">
<iframe id="github-button-star" src="" frameborder="0" scrolling="0" width="100" height="20"></iframe>
<iframe id="github-button-fork" src="" frameborder="0" scrolling="0" width="100" height="20"></iframe>
</div>
</td>
</tr>
<tr class="version"><th>Current version</th><td>@info.curversion</td></tr>
<tr class="owner"><th>Statistics</th><td>Installed <strong>@info.downloads</strong> times</td></tr>
<tr class="license"><th>License</th><td>@info.license</td></tr>
<tr class="tags">
<th>Tags</th>
<td>
@{var i = 0;}
@for( t in info.tags ) {
@{i++;}
<a href="/t/@t">@t</a>@if( i<info.tags.length ){, }
}
</td>
</tr>
</table>
</div>
</div>
</div>
<hr/>
@if (readme!="") {
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title"><i class="fa fa-book"></i> README.md</h3>
</div>
<article class="panel-body readme site-content">
@readme
</article>
</div>
}
<script>
var website = "@info.website";
if (website.indexOf("github.com") > -1)
{
var githubInfo = website.split("github.com/").pop().split("/");
var githubUser = githubInfo[0];
var githubRepo = githubInfo[1];
document.getElementById("github-button-star").src = "https://ghbtns.com/github-btn.html?user="+githubUser+"&repo="+githubRepo+"&type=star&count=true";
document.getElementById("github-button-fork").src = "https://ghbtns.com/github-btn.html?user="+githubUser+"&repo="+githubRepo+"&type=fork&count=true";
document.getElementById("github-buttons").className = "show";
}
</script>

View File

@@ -0,0 +1,41 @@
<div>
<h1>@project <small>All Versions</small></h1>
<p class="lead">@info.desc</p>
<div class="btn-toolbar">
<a class="btn btn-primary" href="/p/@project/@info.curversion/">Current Version</a>
<a class="btn btn-default" href="@info.website">Project Website</a>
</div>
<p></p>
<p><a href="@info.website">@info.website</a></p>
</div>
<table class="table table-hover table-condensed">
<thead>
<tr>
<th>Version</th>
<th>Release Notes</th>
<th>Install</th>
<th>Downloads</th>
</tr>
</thead>
<tbody>
@for (v in allVersions) {
<tr>
<td>
<a href="/p/@project/@v.name/" class="text-nowrap">@v.name</a>
<br /><small>@v.date.substr(0,10)</small>
</td>
<td>@v.comments</td>
<td><code class="text-nowrap">haxelib install @project @v.name</code></td>
<td>@v.downloads</td>
<!--<td>-->
<!--<div class="btn-toolbar btn-group">-->
<!--<a class="btn btn-small btn-default" href="/p/@project/@v.name/">View Version</a>-->
<!--<a class="btn btn-small btn-default" href="/p/@project/@v.name/files/">Files</a>-->
<!--<a class="btn btn-small btn-default" href="/p/@project/@v.name/api/">API Docs</a>-->
<!--</div>-->
<!--</td>-->
</tr>
}
</tbody>
</table>

View File

@@ -0,0 +1,28 @@
<h1><i class="fa fa-user"></i> @title</h1>
<table class="table table-condensed">
<thead>
<tr>
<th colspan="3">User</th>
<th>Projects</th>
</tr>
</thead>
<tbody>
@for (u in list) {
<tr>
<td><img src="//www.gravatar.com/avatar/@(u.emailHash).jpg?s=150" class="img-circle" width="48" height="48" alt="Avatar of @u.user.name" /></td>
<th><a href="/u/@u.user.name/">@u.user.name</a></th>
<td>@u.user.fullname</td>
<td>
<p>
@{i = 0;}
@for (p in u.projects) {
@{i++;}
<strong><a href="/p/@p.name">@p.name</a></strong>@if(i<u.projects.length){,}
}
</p>
</td>
</tr>
}
</tbody>
</table>

View File

@@ -0,0 +1,33 @@
<div class="user-profile well">
<div class="pull-left">
<img src="//www.gravatar.com/avatar/@(emailHash).jpg?s=150" class="img-circle avatar" width="150" height="150" alt="Avatar of @user" />
</div>
<h1 class="title"><i class="fa fa-user"></i> @user.name <small>haxelib member</small></h1>
<div class="clearfix"></div><br/>
<table class="table">
<tr><th width="190"><strong>Full name</strong></th><td>@user.fullname</td></tr>
<tr><th><strong>Statistics</strong></th><td>Contributes to <strong>@projects.length</strong> project@if(projects.length!=1){s}</td></tr>
</table>
</div>
<h2>Projects</h2>
<div class="projects">
<div class="table-responsive">
<table class="table">
<thead>
<tr>
<th colspan="2">Project</th>
<th>Downloads</th>
</tr>
</thead>
@for( p in projects ) {
<tr>
<th><a href="/p/@p.name" class="text-nowrap">@p.name</a></th>
<td>@p.description</td>
<td>@p.downloads</td>
</tr>
}
</table>
</div>
</div>