##// END OF EJS Templates
release: Merge default into stable for release preparation
marcink -
r3002:f5da0c46 merge stable
parent child Browse files
Show More

The requested changes are too big and content was truncated. Show full diff

@@ -0,0 +1,3 b''
1 [pip2nix]
2 requirements = -r ./requirements_docs.txt
3 output = ./python-packages-generated.nix
@@ -0,0 +1,221 b''
1 # Generated by pip2nix 0.8.0.dev1
2 # See https://github.com/johbo/pip2nix
3
4 { pkgs, fetchurl, fetchgit, fetchhg }:
5
6 self: super: {
7 "alabaster" = super.buildPythonPackage {
8 name = "alabaster-0.7.11";
9 doCheck = false;
10 src = fetchurl {
11 url = "https://files.pythonhosted.org/packages/3f/46/9346ea429931d80244ab7f11c4fce83671df0b7ae5a60247a2b588592c46/alabaster-0.7.11.tar.gz";
12 sha256 = "1mvm69xsn5xf1jc45kdq1mn0yq0pfn54mv2jcww4s1vwqx6iyfxn";
13 };
14 };
15 "babel" = super.buildPythonPackage {
16 name = "babel-2.6.0";
17 doCheck = false;
18 propagatedBuildInputs = [
19 self."pytz"
20 ];
21 src = fetchurl {
22 url = "https://files.pythonhosted.org/packages/be/cc/9c981b249a455fa0c76338966325fc70b7265521bad641bf2932f77712f4/Babel-2.6.0.tar.gz";
23 sha256 = "08rxmbx2s4irp0w0gmn498vns5xy0fagm0fg33xa772jiks51flc";
24 };
25 };
26 "certifi" = super.buildPythonPackage {
27 name = "certifi-2018.8.24";
28 doCheck = false;
29 src = fetchurl {
30 url = "https://files.pythonhosted.org/packages/e1/0f/f8d5e939184547b3bdc6128551b831a62832713aa98c2ccdf8c47ecc7f17/certifi-2018.8.24.tar.gz";
31 sha256 = "0f0nhrj9mlrf79iway4578wrsgmjh0fmacl9zv8zjckdy7b90rip";
32 };
33 };
34 "chardet" = super.buildPythonPackage {
35 name = "chardet-3.0.4";
36 doCheck = false;
37 src = fetchurl {
38 url = "https://files.pythonhosted.org/packages/fc/bb/a5768c230f9ddb03acc9ef3f0d4a3cf93462473795d18e9535498c8f929d/chardet-3.0.4.tar.gz";
39 sha256 = "1bpalpia6r5x1kknbk11p1fzph56fmmnp405ds8icksd3knr5aw4";
40 };
41 };
42 "docutils" = super.buildPythonPackage {
43 name = "docutils-0.14";
44 doCheck = false;
45 src = fetchurl {
46 url = "https://files.pythonhosted.org/packages/84/f4/5771e41fdf52aabebbadecc9381d11dea0fa34e4759b4071244fa094804c/docutils-0.14.tar.gz";
47 sha256 = "0x22fs3pdmr42kvz6c654756wja305qv6cx1zbhwlagvxgr4xrji";
48 };
49 };
50 "idna" = super.buildPythonPackage {
51 name = "idna-2.7";
52 doCheck = false;
53 src = fetchurl {
54 url = "https://files.pythonhosted.org/packages/65/c4/80f97e9c9628f3cac9b98bfca0402ede54e0563b56482e3e6e45c43c4935/idna-2.7.tar.gz";
55 sha256 = "05jam7d31767dr12x0rbvvs8lxnpb1mhdb2zdlfxgh83z6k3hjk8";
56 };
57 };
58 "imagesize" = super.buildPythonPackage {
59 name = "imagesize-1.1.0";
60 doCheck = false;
61 src = fetchurl {
62 url = "https://files.pythonhosted.org/packages/41/f5/3cf63735d54aa9974e544aa25858d8f9670ac5b4da51020bbfc6aaade741/imagesize-1.1.0.tar.gz";
63 sha256 = "1dg3wn7qpwmhgqc0r9na2ding1wif9q5spz3j9zn2riwphc2k0zk";
64 };
65 };
66 "jinja2" = super.buildPythonPackage {
67 name = "jinja2-2.9.6";
68 doCheck = false;
69 propagatedBuildInputs = [
70 self."markupsafe"
71 ];
72 src = fetchurl {
73 url = "https://files.pythonhosted.org/packages/90/61/f820ff0076a2599dd39406dcb858ecb239438c02ce706c8e91131ab9c7f1/Jinja2-2.9.6.tar.gz";
74 sha256 = "1zzrkywhziqffrzks14kzixz7nd4yh2vc0fb04a68vfd2ai03anx";
75 };
76 };
77 "markupsafe" = super.buildPythonPackage {
78 name = "markupsafe-1.0";
79 doCheck = false;
80 src = fetchurl {
81 url = "https://files.pythonhosted.org/packages/4d/de/32d741db316d8fdb7680822dd37001ef7a448255de9699ab4bfcbdf4172b/MarkupSafe-1.0.tar.gz";
82 sha256 = "0rdn1s8x9ni7ss8rfiacj7x1085lx8mh2zdwqslnw8xc3l4nkgm6";
83 };
84 };
85 "packaging" = super.buildPythonPackage {
86 name = "packaging-17.1";
87 doCheck = false;
88 propagatedBuildInputs = [
89 self."pyparsing"
90 self."six"
91 ];
92 src = fetchurl {
93 url = "https://files.pythonhosted.org/packages/77/32/439f47be99809c12ef2da8b60a2c47987786d2c6c9205549dd6ef95df8bd/packaging-17.1.tar.gz";
94 sha256 = "0nrpayk8kij1zm9sjnk38ldz3a6705ggvw8ljylqbrb4vmqbf6gh";
95 };
96 };
97 "pygments" = super.buildPythonPackage {
98 name = "pygments-2.2.0";
99 doCheck = false;
100 src = fetchurl {
101 url = "https://files.pythonhosted.org/packages/71/2a/2e4e77803a8bd6408a2903340ac498cb0a2181811af7c9ec92cb70b0308a/Pygments-2.2.0.tar.gz";
102 sha256 = "1k78qdvir1yb1c634nkv6rbga8wv4289xarghmsbbvzhvr311bnv";
103 };
104 };
105 "pyparsing" = super.buildPythonPackage {
106 name = "pyparsing-2.2.0";
107 doCheck = false;
108 src = fetchurl {
109 url = "https://files.pythonhosted.org/packages/3c/ec/a94f8cf7274ea60b5413df054f82a8980523efd712ec55a59e7c3357cf7c/pyparsing-2.2.0.tar.gz";
110 sha256 = "016b9gh606aa44sq92jslm89bg874ia0yyiyb643fa6dgbsbqch8";
111 };
112 };
113 "pytz" = super.buildPythonPackage {
114 name = "pytz-2018.4";
115 doCheck = false;
116 src = fetchurl {
117 url = "https://files.pythonhosted.org/packages/10/76/52efda4ef98e7544321fd8d5d512e11739c1df18b0649551aeccfb1c8376/pytz-2018.4.tar.gz";
118 sha256 = "0jgpqx3kk2rhv81j1izjxvmx8d0x7hzs1857pgqnixic5wq2ar60";
119 };
120 };
121 "requests" = super.buildPythonPackage {
122 name = "requests-2.19.1";
123 doCheck = false;
124 propagatedBuildInputs = [
125 self."chardet"
126 self."idna"
127 self."urllib3"
128 self."certifi"
129 ];
130 src = fetchurl {
131 url = "https://files.pythonhosted.org/packages/54/1f/782a5734931ddf2e1494e4cd615a51ff98e1879cbe9eecbdfeaf09aa75e9/requests-2.19.1.tar.gz";
132 sha256 = "0snf8xxdzsgh1x2zv3vilvbrv9jbpmnfagzzb1rjmmvflckdh8pc";
133 };
134 };
135 "setuptools" = super.buildPythonPackage {
136 name = "setuptools-40.2.0";
137 doCheck = false;
138 src = fetchurl {
139 url = "https://files.pythonhosted.org/packages/ef/1d/201c13e353956a1c840f5d0fbf0461bd45bbd678ea4843ebf25924e8984c/setuptools-40.2.0.zip";
140 sha256 = "19ng5m7kigllg3x96c91y3a2k28g6kwnbb1v4warrnp4xma1v227";
141 };
142 };
143 "six" = super.buildPythonPackage {
144 name = "six-1.11.0";
145 doCheck = false;
146 src = fetchurl {
147 url = "https://files.pythonhosted.org/packages/16/d8/bc6316cf98419719bd59c91742194c111b6f2e85abac88e496adefaf7afe/six-1.11.0.tar.gz";
148 sha256 = "1scqzwc51c875z23phj48gircqjgnn3af8zy2izjwmnlxrxsgs3h";
149 };
150 };
151 "snowballstemmer" = super.buildPythonPackage {
152 name = "snowballstemmer-1.2.1";
153 doCheck = false;
154 src = fetchurl {
155 url = "https://files.pythonhosted.org/packages/20/6b/d2a7cb176d4d664d94a6debf52cd8dbae1f7203c8e42426daa077051d59c/snowballstemmer-1.2.1.tar.gz";
156 sha256 = "0a0idq4y5frv7qsg2x62jd7rd272749xk4x99misf5rcifk2d7wi";
157 };
158 };
159 "sphinx" = super.buildPythonPackage {
160 name = "sphinx-1.7.8";
161 doCheck = false;
162 propagatedBuildInputs = [
163 self."six"
164 self."jinja2"
165 self."pygments"
166 self."docutils"
167 self."snowballstemmer"
168 self."babel"
169 self."alabaster"
170 self."imagesize"
171 self."requests"
172 self."setuptools"
173 self."packaging"
174 self."sphinxcontrib-websupport"
175 self."typing"
176 ];
177 src = fetchurl {
178 url = "https://files.pythonhosted.org/packages/ac/54/4ef326d0c654da1ed91341a7a1f43efc18a8c770ddd2b8e45df97cb79d82/Sphinx-1.7.8.tar.gz";
179 sha256 = "1ryz0w4c31930f1br2sjwrxwx9cmsy7cqdb0d81g98n9bj250w50";
180 };
181 };
182 "sphinx-rtd-theme" = super.buildPythonPackage {
183 name = "sphinx-rtd-theme-0.4.1";
184 doCheck = false;
185 propagatedBuildInputs = [
186 self."sphinx"
187 ];
188 src = fetchurl {
189 url = "https://files.pythonhosted.org/packages/f2/b0/a1933d792b806118ddbca6699f2e2c844d9b1b16e84a89d7effd5cd2a800/sphinx_rtd_theme-0.4.1.tar.gz";
190 sha256 = "1xkyqam8dzbjaymdyvkiif85m4y3jf8crdiwlgcfp8gqcj57aj9v";
191 };
192 };
193 "sphinxcontrib-websupport" = super.buildPythonPackage {
194 name = "sphinxcontrib-websupport-1.1.0";
195 doCheck = false;
196 src = fetchurl {
197 url = "https://files.pythonhosted.org/packages/07/7a/e74b06dce85555ffee33e1d6b7381314169ebf7e31b62c18fcb2815626b7/sphinxcontrib-websupport-1.1.0.tar.gz";
198 sha256 = "1ff3ix76xi1y6m99qxhaq5161ix9swwzydilvdya07mgbcvpzr4x";
199 };
200 };
201 "typing" = super.buildPythonPackage {
202 name = "typing-3.6.6";
203 doCheck = false;
204 src = fetchurl {
205 url = "https://files.pythonhosted.org/packages/bf/9b/2bf84e841575b633d8d91ad923e198a415e3901f228715524689495b4317/typing-3.6.6.tar.gz";
206 sha256 = "0ba9acs4awx15bf9v3nrs781msbd2nx826906nj6fqks2bvca9s0";
207 };
208 };
209 "urllib3" = super.buildPythonPackage {
210 name = "urllib3-1.23";
211 doCheck = false;
212 src = fetchurl {
213 url = "https://files.pythonhosted.org/packages/3c/d2/dc5471622bd200db1cd9319e02e71bc655e9ea27b8e0ce65fc69de0dac15/urllib3-1.23.tar.gz";
214 sha256 = "1bvbd35q3zdcd7gsv38fwpizy7p06dr0154g5gfybrvnbvhwb2m6";
215 };
216 };
217
218 ### Test requirements
219
220
221 }
@@ -0,0 +1,133 b''
1 |RCE| 4.13.0 |RNS|
2 ------------------
3
4 Release Date
5 ^^^^^^^^^^^^
6
7 - 2018-09-05
8
9
10 New Features
11 ^^^^^^^^^^^^
12
13 - Branch permissions: new set of permissions were added to control branch modification.
14 There are 4 basic permissions that can be set for branch names/branch patterns:
15 * no-access (any modification for given branch is forbidden)
16 * web-merge (modify branch by web based PR merge)
17 * push (only non-forced modification on branch are allowed)
18 * forced push (all modification to branch are allowed)
19 Available in EE edition only.
20 - Unified search and repo-switcher: a new persistent search box is now present allowing
21 to search for repositories, repository groups, commits (using full text search),
22 users, user-groups. Replaces redundant quick-filters/repo switcher.
23 - Default Reviewers: added possibility to match against regex based pattern as
24 alternative syntax to glob which didn't handle all the cases.
25 - Built-in Error tracker: added new exception tracking capability. All errors are now
26 tracked and stored. This allows instance admins to see potential problems without
27 access to the machine and logs.
28 - User Groups: each user group which users have access to expose public profile link.
29 It's possible to view the members of a group before attaching it to any resource.
30 - New caching framework: existing Beaker cache was completely replaced by dogpile.cache
31 library. This new cache framework in addition to solving multiple
32 performance/reliability problems of Beaker is used to cache permissions tree.
33 This gives huge performance boosts for very large and complex permission trees.
34 - Pull Requests: description field is now allowed to use a RST/Markdown syntax.
35 - SVN: added support for SVN 1.10 release line.
36
37
38 General
39 ^^^^^^^
40
41 - Google: updated google auth plugin with latest API changes.
42 - Frontend: Switched to Polymer 2.0.
43 - Events: added a default timeout for operation calling the endpoint url, so
44 they won't block forever.
45 - SQLAlchemy: allow DB connection ping/refresh using dedicated flag from .ini file.
46 `sqlalchemy.db1.ping_connection = true`
47 - Pull Requests: added option to force-refresh merge workspace in case of problems.
48 Adding GET param `?force_refresh=1` into PR page triggers the refresh.
49 - Pull Requests: show more info about version of comment vs latest version.
50 - Diffs: skip line numbers during copy from a diff view.
51 - License: use simple cache to read license info.
52 Due to the complex and expensive encryption, this reduces requests time by ~10ms.
53 - Debug: add new custom logging to track unique requests across systems.
54 Allows tracking single requests in very busy system by unique ID added into logging system.
55 - Configuration: .ini files now can replace a special placeholders e.g "{ENV_NAME}"
56 into a value from the ENVIRONMENT. Allows easier setup in Docker and similar.
57 - Backend: don't support vcsserver.scm_app anymore, now it uses http even if scm_app
58 is specified.
59 - Repositories: re-order creation/fork forms for better UX and consistency.
60 - UI: Add the number of inactive users in _admin/users and _admin/user_groups
61 - UX: updated registration form to better indicate what is the process of binding a
62 RhodeCode account with external one like Google.
63 - API: pull-requests allow automatic title generation via API
64 - VCSServer: errors: use a better interface to track exceptions and tracebacks.
65 - VCSServer: caches: replaced beaker with dogpile cache.
66 - GIT: use GIT_DISCOVERY_ACROSS_FILESYSTEM for better compatibility on NFS servers.
67 - Dependencies: bumped mercurial to 4.6.2
68 - Dependencies: bumped evolve to 8.0.1
69 - Dependencies: bumped hgsubversion to 1.9.2
70 - Dependencies: bumped git version to 2.16.4
71 - Dependencies: bumped SVN to 1.10.2
72 - Dependencies: added alternative pymysql drivers for mysql
73 - NIX: updated to 18.03 nix packages, now shipped with python 2.7.15
74 release and multiple other new libraries.
75
76
77 Security
78 ^^^^^^^^
79
80 - Mercurial: general protocol security updates.
81 * Fixes Mercurial's CVE for lack of permissions checking on mercurial batch commands.
82 * Introduced more strict checks for permissions, now they default to push instead of pull.
83 * Decypher batch commands and pick top-most permission to be required.
84 * This follows changes in Mercurial CORE after 4.6.1 release.
85 - Fixed bug in bleach sanitizer allowing certain custom payload to bypass it. Now
86 we always fails if sanitizing fails. This could lead to stored XSS
87 - Fixed stored XSS in binary file rendering.
88 - Fixed stored XSS in repo forks datagrid.
89
90
91 Performance
92 ^^^^^^^^^^^
93
94 - Permissions: Permission trees for users and now cached, after calculation.
95 This reduces response time for some pages dramatically.
96 In case of any permission changes caches are invalidated.
97 - Core: new dogpile.cache based cache framework was introduced, which is faster than
98 previously used Beaker.
99
100
101 Fixes
102 ^^^^^
103
104 - Audit Logs: store properly IP for certain events.
105 - External Auth: pass along came_from into the url so we get properly
106 redirected back after logging using external auth provider.
107 - Pull Requests: lock submit on pull request to prevent double submission on a fast click.
108 - Pull Requests: fixed a case of unresolved comments attached to removed file in pull request.
109 That prevented from closing it.
110 - Pull Requests: use numeric repo id for creation of shadow repos. Fixes a problem
111 when repository is renamed during PR lifetime.
112 - API: fixed creation of a pull request with default reviewer rules.
113 - Default Reviewers: fixed voting rule calculation on user group.
114 - Pull Requests: in GIT use force fetch and update for target ref.
115 This solves a case when in PR a target repository is force updated (by push force)
116 and is out of sync.
117 - VCSServer: detect early potential locale problem, and fallback to LC_ALL=C,
118 instead of crashing vcsserver.
119 - Pull Requests: use a safer way of destroying shadow repositories.
120 Fixes some problems in NFS storage and big repositories
121
122
123 Upgrade notes
124 ^^^^^^^^^^^^^
125
126 - The direct backend `vcsserver.scm_app` is not supported anymore. This backed was
127 already deprecated some time ago. Now it will use `http` mode even if scm_app is
128 specified. Please contact us in case you still use it, and not sure how to upgrade.
129 - New dogpile cache settings are not ported to converted .ini. If users want to do
130 adjustments please copy the settings over dogpile cache section from a newly
131 generated rhodecode.template.ini file. This file is stored next to rhodecode.ini
132 - SVN 1.10.2 was introduced in this release. Please make sure to update your
133 mod_dav to the same version for best compatibility.
@@ -0,0 +1,52 b''
1
2 ==============================
3 Generate the Nix expressions
4 ==============================
5
6 Details can be found in the repository of `RhodeCode Enterprise CE`_ inside of
7 the file `docs/contributing/dependencies.rst`.
8
9 Start the environment as follows:
10
11 .. code:: shell
12
13 nix-shell pkgs/shell-generate.nix
14
15
16
17 Python dependencies
18 ===================
19
20 .. code:: shell
21
22 pip2nix generate --licenses
23 # or
24 nix-shell pkgs/shell-generate.nix --command "pip2nix generate --licenses"
25
26
27 NodeJS dependencies
28 ===================
29
30 .. code:: shell
31
32 rm -rf node_modules
33 nix-shell pkgs/shell-generate.nix --command "
34 node2nix --input package.json \
35 -o pkgs/node-packages.nix \
36 -e pkgs/node-env.nix \
37 -c pkgs/node-default.nix \
38 -d --flatten --nodejs-6 "
39
40
41
42 Bower dependencies
43 ==================
44
45 .. code:: shell
46
47 nix-shell pkgs/shell-generate.nix --command "bower2nix bower.json pkgs/bower-packages.nix"
48
49
50 .. Links
51
52 .. _RhodeCode Enterprise CE: https://code.rhodecode.com/rhodecode-enterprise-ce
@@ -0,0 +1,17 b''
1 { pkgs
2 , pythonPackages
3 }:
4
5 rec {
6 pip2nix-src = pkgs.fetchzip {
7 url = https://github.com/johbo/pip2nix/archive/51e6fdae34d0e8ded9efeef7a8601730249687a6.tar.gz;
8 sha256 = "02a4jjgi7lsvf8mhrxsd56s9a3yg20081rl9bgc2m84w60v2gbz2";
9 };
10
11 pip2nix = import pip2nix-src {
12 inherit
13 pkgs
14 pythonPackages;
15 };
16
17 }
@@ -0,0 +1,13 b''
1 diff -rup Beaker-1.9.1-orig/beaker/ext/database.py Beaker-1.9.1/beaker/ext/database.py
2 --- Beaker-1.9.1-orig/beaker/ext/database.py 2018-05-22 18:22:34.802619619 +0200
3 +++ Beaker-1.9.1/beaker/ext/database.py 2018-05-22 17:07:14.048335196 +0200
4 @@ -91,7 +91,8 @@ class DatabaseNamespaceManager(OpenResou
5 sa.Column('created', types.DateTime, nullable=False),
6 sa.Column('data', types.PickleType, nullable=False),
7 sa.UniqueConstraint('namespace'),
8 - schema=schema_name if schema_name else meta.schema
9 + schema=schema_name if schema_name else meta.schema,
10 + extend_existing=True
11 )
12 cache.create(checkfirst=True)
13 return cache
1 NO CONTENT: new file 100755
NO CONTENT: new file 100755
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644, binary diff hidden
NO CONTENT: new file 100644, binary diff hidden
1 NO CONTENT: new file 100644, binary diff hidden
NO CONTENT: new file 100644, binary diff hidden
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
@@ -1,6 +1,6 b''
1 [bumpversion]
1 [bumpversion]
2 current_version = 4.12.4
2 current_version = 4.13.0
3 message = release: Bump version {current_version} to {new_version}
3 message = release: Bump version {current_version} to {new_version}
4
4
5 [bumpversion:file:rhodecode/VERSION]
5 [bumpversion:file:rhodecode/VERSION]
6
6
@@ -1,33 +1,28 b''
1 [DEFAULT]
1 [DEFAULT]
2 done = false
2 done = false
3
3
4 [task:bump_version]
4 [task:bump_version]
5 done = true
5 done = true
6
6
7 [task:rc_tools_pinned]
7 [task:rc_tools_pinned]
8 done = true
9
8
10 [task:fixes_on_stable]
9 [task:fixes_on_stable]
11 done = true
12
10
13 [task:pip2nix_generated]
11 [task:pip2nix_generated]
14 done = true
15
12
16 [task:changelog_updated]
13 [task:changelog_updated]
17 done = true
18
14
19 [task:generate_api_docs]
15 [task:generate_api_docs]
20 done = true
16
17 [task:updated_translation]
21
18
22 [release]
19 [release]
23 state = prepared
20 state = in_progress
24 version = 4.12.4
21 version = 4.13.0
25
26 [task:updated_translation]
27
22
28 [task:generate_js_routes]
23 [task:generate_js_routes]
29
24
30 [task:updated_trial_license]
25 [task:updated_trial_license]
31
26
32 [task:generate_oss_licenses]
27 [task:generate_oss_licenses]
33
28
@@ -1,51 +1,53 b''
1 # top level files
1 # top level files
2
2
3 include MANIFEST.in
3 include MANIFEST.in
4 include README.rst
4 include README.rst
5 include CHANGES.rst
5 include CHANGES.rst
6 include LICENSE.txt
6 include LICENSE.txt
7
7
8 include rhodecode/VERSION
8 include rhodecode/VERSION
9
9
10 # docs
10 # docs
11 recursive-include docs *
11 recursive-include docs *
12
12
13 # all config files
13 # all config files
14 recursive-include configs *
14 recursive-include configs *
15
15
16 # translations
16 # translations
17 recursive-include rhodecode/i18n *
17 recursive-include rhodecode/i18n *
18
18
19 # non-python core stuff
19 # non-python core stuff
20 recursive-include rhodecode *.cfg
20 recursive-include rhodecode *.cfg
21 recursive-include rhodecode *.json
21 recursive-include rhodecode *.json
22 recursive-include rhodecode *.ini_tmpl
22 recursive-include rhodecode *.ini_tmpl
23 recursive-include rhodecode *.sh
23 recursive-include rhodecode *.sh
24 recursive-include rhodecode *.mako
24 recursive-include rhodecode *.mako
25
25
26 # 502 page
26 # 502 page
27 include rhodecode/public/502.html
27 include rhodecode/public/502.html
28
28
29 # robots
30 include rhodecode/public/robots.txt
29
31
30 # images, css
32 # images, css
31 include rhodecode/public/css/*.css
33 include rhodecode/public/css/*.css
32 include rhodecode/public/images/*.*
34 include rhodecode/public/images/*.*
33 include rhodecode/public/images/ee_features/*.*
35 include rhodecode/public/images/ee_features/*.*
34
36
35 # sound files
37 # sound files
36 include rhodecode/public/sounds/*.mp3
38 include rhodecode/public/sounds/*.mp3
37 include rhodecode/public/sounds/*.wav
39 include rhodecode/public/sounds/*.wav
38
40
39 # fonts
41 # fonts
40 recursive-include rhodecode/public/fonts/ProximaNova *
42 recursive-include rhodecode/public/fonts/ProximaNova *
41 recursive-include rhodecode/public/fonts/RCIcons *
43 recursive-include rhodecode/public/fonts/RCIcons *
42
44
43 # js
45 # js
44 recursive-include rhodecode/public/js *
46 recursive-include rhodecode/public/js *
45
47
46 # templates
48 # templates
47 recursive-include rhodecode/templates *
49 recursive-include rhodecode/templates *
48
50
49 # skip any tests files
51 # skip any tests files
50 recursive-exclude rhodecode/tests *
52 recursive-exclude rhodecode/tests *
51
53
@@ -1,114 +1,114 b''
1 =========
1 =========
2 RhodeCode
2 RhodeCode
3 =========
3 =========
4
4
5 About
5 About
6 -----
6 -----
7
7
8 ``RhodeCode`` is a fast and powerful management tool for Mercurial_ and GIT_
8 ``RhodeCode`` is a fast and powerful management tool for Mercurial_ and GIT_
9 and Subversion_ with a built in push/pull server, full text search,
9 and Subversion_ with a built in push/pull server, full text search,
10 pull requests and powerfull code-review system. It works on http/https and
10 pull requests and powerful code-review system. It works on http/https and
11 has a few unique features like:
11 has a few unique features like:
12
12 - plugable architecture
13 - plugable architecture
13 - advanced permission system with IP restrictions
14 - advanced permission system with IP restrictions
14 - rich set of authentication plugins including LDAP,
15 - rich set of authentication plugins including LDAP,
15 ActiveDirectory, Atlassian Crowd, Http-Headers, Pam, Token-Auth.
16 ActiveDirectory, Atlassian Crowd, Http-Headers, Pam, Token-Auth.
16 - live code-review chat
17 - live code-review chat
17 - full web based file editing
18 - full web based file editing
18 - unified multi vcs support
19 - unified multi vcs support
19 - snippets (gist) system
20 - snippets (gist) system
20 - integration with all 3rd party issue trackers
21 - integration with all 3rd party issue trackers
21
22
22 RhodeCode also provides rich API, and multiple event hooks so it's easy
23 RhodeCode also provides rich API, and multiple event hooks so it's easy
23 integrable with existing external systems.
24 integrable with existing external systems.
24
25
25 RhodeCode is similar in some respects to gitlab_, github_ or bitbucket_,
26 RhodeCode is similar in some respects to gitlab_, github_ or bitbucket_,
26 however RhodeCode can be run as standalone hosted application on your own server.
27 however RhodeCode can be run as standalone hosted application on your own server.
27 RhodeCode can be installed on \*nix or Windows systems.
28 RhodeCode can be installed on \*nix or Windows systems.
28
29
29 RhodeCode uses `PEP386 versioning <http://www.python.org/dev/peps/pep-0386/>`_
30 RhodeCode uses `PEP386 versioning <http://www.python.org/dev/peps/pep-0386/>`_
30
31
31 Installation
32 Installation
32 ------------
33 ------------
33 Please visit https://docs.rhodecode.com/RhodeCode-Control/tasks/install-cli.html
34 Please visit https://docs.rhodecode.com/RhodeCode-Control/tasks/install-cli.html
34 for more details
35 for more details
35
36
36
37
37 Source code
38 Source code
38 -----------
39 -----------
39
40
40 The latest sources can be obtained from official RhodeCode instance
41 The latest sources can be obtained from official RhodeCode instance
41 https://code.rhodecode.com
42 https://code.rhodecode.com
42
43
43
44
44 Contributions
45 Contributions
45 -------------
46 -------------
46
47
47 RhodeCode is open-source; contributions are welcome!
48 RhodeCode is open-source; contributions are welcome!
48
49
49 Please see the contribution documentation inside of the docs folder, which is
50 Please see the contribution documentation inside of the docs folder, which is
50 also available at
51 also available at
51 https://docs.rhodecode.com/RhodeCode-Enterprise/contributing/contributing.html
52 https://docs.rhodecode.com/RhodeCode-Enterprise/contributing/contributing.html
52
53
53 For additional information about collaboration tools, our issue tracker,
54 For additional information about collaboration tools, our issue tracker,
54 licensing, and contribution credit, visit https://rhodecode.com/open-source
55 licensing, and contribution credit, visit https://rhodecode.com/open-source
55
56
56
57
57 RhodeCode Features
58 RhodeCode Features
58 ------------------
59 ------------------
59
60
60 Check out all features of RhodeCode at https://rhodecode.com/features
61 Check out all features of RhodeCode at https://rhodecode.com/features
61
62
62 License
63 License
63 -------
64 -------
64
65
65 ``RhodeCode`` is dual-licensed with AGPLv3 and commercial license.
66 ``RhodeCode`` is dual-licensed with AGPLv3 and commercial license.
66 Please see LICENSE.txt file for details.
67 Please see LICENSE.txt file for details.
67
68
68
69
69 Getting help
70 Getting help
70 ------------
71 ------------
71
72
72 Listed bellow are various support resources that should help.
73 Listed bellow are various support resources that should help.
73
74
74 .. note::
75 .. note::
75
76
76 Please try to read the documentation before posting any issues, especially
77 Please try to read the documentation before posting any issues, especially
77 the **troubleshooting section**
78 the **troubleshooting section**
78
79
79 - Official issue tracker `RhodeCode Issue tracker <https://issues.rhodecode.com>`_
80 - Official issue tracker `RhodeCode Issue tracker <https://issues.rhodecode.com>`_
80
81
81 - Search our community portal `Community portal <https://community.rhodecode.com>`_
82 - Official Slack Community Channel `RhodeCode Slack <https://rhodecode.com/join>`_
82
83
83 - Join #rhodecode on FreeNode (irc.freenode.net)
84 - Search our community portal `Community portal <https://community.rhodecode.com>`_
84 or use http://webchat.freenode.net/?channels=rhodecode for web access to irc.
85
85
86 - You can also follow RhodeCode on twitter **@RhodeCode** where we often post
86 - You can also follow RhodeCode on twitter **@RhodeCode** where we often post
87 news and other interesting stuff about RhodeCode.
87 news and other interesting stuff about RhodeCode.
88
88
89
89
90 Online documentation
90 Online documentation
91 --------------------
91 --------------------
92
92
93 Online documentation for the current version of RhodeCode is available at
93 Online documentation for the current version of RhodeCode is available at
94 - http://rhodecode.com/docs
94 - http://rhodecode.com/docs
95
95
96 You may also build the documentation for yourself - go into ``docs/`` and run::
96 You may also build the documentation for yourself - go into ``docs/`` and run::
97
97
98 nix-build default.nix -o result && make clean html
98 nix-build default.nix -o result && make clean html
99
99
100 (You need to have sphinx_ installed to build the documentation. If you don't
100 (You need to have sphinx_ installed to build the documentation. If you don't
101 have sphinx_ installed you can install it via the command:
101 have sphinx_ installed you can install it via the command:
102 ``pip install sphinx``)
102 ``pip install sphinx``)
103
103
104 .. _virtualenv: http://pypi.python.org/pypi/virtualenv
104 .. _virtualenv: http://pypi.python.org/pypi/virtualenv
105 .. _python: http://www.python.org/
105 .. _python: http://www.python.org/
106 .. _sphinx: http://sphinx.pocoo.org/
106 .. _sphinx: http://sphinx.pocoo.org/
107 .. _mercurial: http://mercurial.selenic.com/
107 .. _mercurial: http://mercurial.selenic.com/
108 .. _bitbucket: http://bitbucket.org/
108 .. _bitbucket: http://bitbucket.org/
109 .. _github: http://github.com/
109 .. _github: http://github.com/
110 .. _gitlab: http://gitlab.com/
110 .. _gitlab: http://gitlab.com/
111 .. _subversion: http://subversion.tigris.org/
111 .. _subversion: http://subversion.tigris.org/
112 .. _git: http://git-scm.com/
112 .. _git: http://git-scm.com/
113 .. _celery: http://celeryproject.org/
113 .. _celery: http://celeryproject.org/
114 .. _vcs: http://pypi.python.org/pypi/vcs
114 .. _vcs: http://pypi.python.org/pypi/vcs
@@ -1,17 +1,17 b''
1 {
1 {
2 "name": "rhodecode-elements",
2 "name": "rhodecode-elements",
3 "description": "User interface for elements for rhodecode",
3 "description": "User interface for elements for rhodecode",
4 "main": "index.html",
4 "main": "index.html",
5 "dependencies": {
5 "dependencies": {
6 "webcomponentsjs": "^0.7.22",
6 "webcomponentsjs": "^1.2.3",
7 "polymer": "Polymer/polymer#^1.6.1",
7 "polymer": "Polymer/polymer#^2.6.0",
8 "paper-button": "PolymerElements/paper-button#^1.0.13",
8 "paper-button": "PolymerElements/paper-button#^2.1.2",
9 "paper-spinner": "PolymerElements/paper-spinner#^1.2.0",
9 "paper-spinner": "PolymerElements/paper-spinner#^2.1.0",
10 "paper-tooltip": "PolymerElements/paper-tooltip#^1.1.2",
10 "paper-tooltip": "PolymerElements/paper-tooltip#^2.1.1",
11 "paper-toast": "PolymerElements/paper-toast#^1.3.0",
11 "paper-toast": "PolymerElements/paper-toast#^2.1.2",
12 "paper-toggle-button": "PolymerElements/paper-toggle-button#^1.2.0",
12 "paper-toggle-button": "PolymerElements/paper-toggle-button#^2.1.1",
13 "iron-ajax": "PolymerElements/iron-ajax#^1.4.3",
13 "iron-ajax": "PolymerElements/iron-ajax#^2.1.3",
14 "iron-autogrow-textarea": "PolymerElements/iron-autogrow-textarea#^1.0.13",
14 "iron-autogrow-textarea": "PolymerElements/iron-autogrow-textarea#^2.2.0",
15 "iron-a11y-keys": "PolymerElements/iron-a11y-keys#^1.0.6"
15 "iron-a11y-keys": "PolymerElements/iron-a11y-keys#^2.1.2"
16 }
16 }
17 }
17 }
@@ -1,719 +1,732 b''
1
1
2
2
3 ################################################################################
3 ################################################################################
4 ## RHODECODE COMMUNITY EDITION CONFIGURATION ##
4 ## RHODECODE COMMUNITY EDITION CONFIGURATION ##
5 # The %(here)s variable will be replaced with the parent directory of this file#
6 ################################################################################
5 ################################################################################
7
6
8 [DEFAULT]
7 [DEFAULT]
9 debug = true
8 debug = true
10
9
11 ################################################################################
10 ################################################################################
12 ## EMAIL CONFIGURATION ##
11 ## EMAIL CONFIGURATION ##
13 ## Uncomment and replace with the email address which should receive ##
12 ## Uncomment and replace with the email address which should receive ##
14 ## any error reports after an application crash ##
13 ## any error reports after an application crash ##
15 ## Additionally these settings will be used by the RhodeCode mailing system ##
14 ## Additionally these settings will be used by the RhodeCode mailing system ##
16 ################################################################################
15 ################################################################################
17
16
18 ## prefix all emails subjects with given prefix, helps filtering out emails
17 ## prefix all emails subjects with given prefix, helps filtering out emails
19 #email_prefix = [RhodeCode]
18 #email_prefix = [RhodeCode]
20
19
21 ## email FROM address all mails will be sent
20 ## email FROM address all mails will be sent
22 #app_email_from = rhodecode-noreply@localhost
21 #app_email_from = rhodecode-noreply@localhost
23
22
24 ## Uncomment and replace with the address which should receive any error report
23 ## Uncomment and replace with the address which should receive any error report
25 ## note: using appenlight for error handling doesn't need this to be uncommented
24 ## note: using appenlight for error handling doesn't need this to be uncommented
26 #email_to = admin@localhost
25 #email_to = admin@localhost
27
26
28 ## in case of Application errors, sent an error email form
27 ## in case of Application errors, sent an error email form
29 #error_email_from = rhodecode_error@localhost
28 #error_email_from = rhodecode_error@localhost
30
29
31 ## additional error message to be send in case of server crash
30 ## additional error message to be send in case of server crash
32 #error_message =
31 #error_message =
33
32
34
33
35 #smtp_server = mail.server.com
34 #smtp_server = mail.server.com
36 #smtp_username =
35 #smtp_username =
37 #smtp_password =
36 #smtp_password =
38 #smtp_port =
37 #smtp_port =
39 #smtp_use_tls = false
38 #smtp_use_tls = false
40 #smtp_use_ssl = true
39 #smtp_use_ssl = true
41 ## Specify available auth parameters here (e.g. LOGIN PLAIN CRAM-MD5, etc.)
40 ## Specify available auth parameters here (e.g. LOGIN PLAIN CRAM-MD5, etc.)
42 #smtp_auth =
41 #smtp_auth =
43
42
44 [server:main]
43 [server:main]
45 ## COMMON ##
44 ## COMMON ##
46 host = 127.0.0.1
45 host = 127.0.0.1
47 port = 5000
46 port = 5000
48
47
49 ##################################
48 ###########################################################
50 ## WAITRESS WSGI SERVER ##
49 ## WAITRESS WSGI SERVER - Recommended for Development ####
51 ## Recommended for Development ##
50 ###########################################################
52 ##################################
53
51
54 use = egg:waitress#main
52 use = egg:waitress#main
55 ## number of worker threads
53 ## number of worker threads
56 threads = 5
54 threads = 5
57 ## MAX BODY SIZE 100GB
55 ## MAX BODY SIZE 100GB
58 max_request_body_size = 107374182400
56 max_request_body_size = 107374182400
59 ## Use poll instead of select, fixes file descriptors limits problems.
57 ## Use poll instead of select, fixes file descriptors limits problems.
60 ## May not work on old windows systems.
58 ## May not work on old windows systems.
61 asyncore_use_poll = true
59 asyncore_use_poll = true
62
60
63
61
64 ##########################
62 ##########################
65 ## GUNICORN WSGI SERVER ##
63 ## GUNICORN WSGI SERVER ##
66 ##########################
64 ##########################
67 ## run with gunicorn --log-config rhodecode.ini --paste rhodecode.ini
65 ## run with gunicorn --log-config rhodecode.ini --paste rhodecode.ini
68
66
69 #use = egg:gunicorn#main
67 #use = egg:gunicorn#main
70 ## Sets the number of process workers. You must set `instance_id = *`
68 ## Sets the number of process workers. More workers means more concurent connections
71 ## when this option is set to more than one worker, recommended
69 ## RhodeCode can handle at the same time. Each additional worker also it increases
72 ## value is (2 * NUMBER_OF_CPUS + 1), eg 2CPU = 5 workers
70 ## memory usage as each has it's own set of caches.
73 ## The `instance_id = *` must be set in the [app:main] section below
71 ## Recommended value is (2 * NUMBER_OF_CPUS + 1), eg 2CPU = 5 workers, but no more
72 ## than 8-10 unless for really big deployments .e.g 700-1000 users.
73 ## `instance_id = *` must be set in the [app:main] section below (which is the default)
74 ## when using more than 1 worker.
74 #workers = 2
75 #workers = 2
75 ## number of threads for each of the worker, must be set to 1 for gevent
76 ## process name visible in process list
76 ## generally recommended to be at 1
77 #threads = 1
78 ## process name
79 #proc_name = rhodecode
77 #proc_name = rhodecode
80 ## type of worker class, one of sync, gevent
78 ## type of worker class, one of sync, gevent
81 ## recommended for bigger setup is using of of other than sync one
79 ## recommended for bigger setup is using of of other than sync one
82 #worker_class = gevent
80 #worker_class = gevent
83 ## The maximum number of simultaneous clients. Valid only for Gevent
81 ## The maximum number of simultaneous clients. Valid only for Gevent
84 #worker_connections = 10
82 #worker_connections = 10
85 ## max number of requests that worker will handle before being gracefully
83 ## max number of requests that worker will handle before being gracefully
86 ## restarted, could prevent memory leaks
84 ## restarted, could prevent memory leaks
87 #max_requests = 1000
85 #max_requests = 1000
88 #max_requests_jitter = 30
86 #max_requests_jitter = 30
89 ## amount of time a worker can spend with handling a request before it
87 ## amount of time a worker can spend with handling a request before it
90 ## gets killed and restarted. Set to 6hrs
88 ## gets killed and restarted. Set to 6hrs
91 #timeout = 21600
89 #timeout = 21600
92
90
93
91
94 ## prefix middleware for RhodeCode.
92 ## prefix middleware for RhodeCode.
95 ## recommended when using proxy setup.
93 ## recommended when using proxy setup.
96 ## allows to set RhodeCode under a prefix in server.
94 ## allows to set RhodeCode under a prefix in server.
97 ## eg https://server.com/custom_prefix. Enable `filter-with =` option below as well.
95 ## eg https://server.com/custom_prefix. Enable `filter-with =` option below as well.
98 ## And set your prefix like: `prefix = /custom_prefix`
96 ## And set your prefix like: `prefix = /custom_prefix`
99 ## be sure to also set beaker.session.cookie_path = /custom_prefix if you need
97 ## be sure to also set beaker.session.cookie_path = /custom_prefix if you need
100 ## to make your cookies only work on prefix url
98 ## to make your cookies only work on prefix url
101 [filter:proxy-prefix]
99 [filter:proxy-prefix]
102 use = egg:PasteDeploy#prefix
100 use = egg:PasteDeploy#prefix
103 prefix = /
101 prefix = /
104
102
105 [app:main]
103 [app:main]
104 ## The %(here)s variable will be replaced with the absolute path of parent directory
105 ## of this file
106 ## In addition ENVIRONMENT variables usage is possible, e.g
107 ## sqlalchemy.db1.url = {ENV_RC_DB_URL}
108
106 use = egg:rhodecode-enterprise-ce
109 use = egg:rhodecode-enterprise-ce
107
110
108 ## enable proxy prefix middleware, defined above
111 ## enable proxy prefix middleware, defined above
109 #filter-with = proxy-prefix
112 #filter-with = proxy-prefix
110
113
111 # During development the we want to have the debug toolbar enabled
114 # During development the we want to have the debug toolbar enabled
112 pyramid.includes =
115 pyramid.includes =
113 pyramid_debugtoolbar
116 pyramid_debugtoolbar
114 rhodecode.lib.middleware.request_wrapper
117 rhodecode.lib.middleware.request_wrapper
115
118
116 pyramid.reload_templates = true
119 pyramid.reload_templates = true
117
120
118 debugtoolbar.hosts = 0.0.0.0/0
121 debugtoolbar.hosts = 0.0.0.0/0
119 debugtoolbar.exclude_prefixes =
122 debugtoolbar.exclude_prefixes =
120 /css
123 /css
121 /fonts
124 /fonts
122 /images
125 /images
123 /js
126 /js
124
127
125 ## RHODECODE PLUGINS ##
128 ## RHODECODE PLUGINS ##
126 rhodecode.includes =
129 rhodecode.includes =
127 rhodecode.api
130 rhodecode.api
128
131
129
132
130 # api prefix url
133 # api prefix url
131 rhodecode.api.url = /_admin/api
134 rhodecode.api.url = /_admin/api
132
135
133
136
134 ## END RHODECODE PLUGINS ##
137 ## END RHODECODE PLUGINS ##
135
138
136 ## encryption key used to encrypt social plugin tokens,
139 ## encryption key used to encrypt social plugin tokens,
137 ## remote_urls with credentials etc, if not set it defaults to
140 ## remote_urls with credentials etc, if not set it defaults to
138 ## `beaker.session.secret`
141 ## `beaker.session.secret`
139 #rhodecode.encrypted_values.secret =
142 #rhodecode.encrypted_values.secret =
140
143
141 ## decryption strict mode (enabled by default). It controls if decryption raises
144 ## decryption strict mode (enabled by default). It controls if decryption raises
142 ## `SignatureVerificationError` in case of wrong key, or damaged encryption data.
145 ## `SignatureVerificationError` in case of wrong key, or damaged encryption data.
143 #rhodecode.encrypted_values.strict = false
146 #rhodecode.encrypted_values.strict = false
144
147
145 ## return gzipped responses from Rhodecode (static files/application)
148 ## return gzipped responses from Rhodecode (static files/application)
146 gzip_responses = false
149 gzip_responses = false
147
150
148 ## autogenerate javascript routes file on startup
151 ## autogenerate javascript routes file on startup
149 generate_js_files = false
152 generate_js_files = false
150
153
151 ## Optional Languages
154 ## System global default language.
152 ## en(default), be, de, es, fr, it, ja, pl, pt, ru, zh
155 ## All available languages: en(default), be, de, es, fr, it, ja, pl, pt, ru, zh
153 lang = en
156 lang = en
154
157
155 ## perform a full repository scan on each server start, this should be
158 ## Perform a full repository scan and import on each server start.
156 ## set to false after first startup, to allow faster server restarts.
159 ## Settings this to true could lead to very long startup time.
157 startup.import_repos = false
160 startup.import_repos = false
158
161
159 ## Uncomment and set this path to use archive download cache.
162 ## Uncomment and set this path to use archive download cache.
160 ## Once enabled, generated archives will be cached at this location
163 ## Once enabled, generated archives will be cached at this location
161 ## and served from the cache during subsequent requests for the same archive of
164 ## and served from the cache during subsequent requests for the same archive of
162 ## the repository.
165 ## the repository.
163 #archive_cache_dir = /tmp/tarballcache
166 #archive_cache_dir = /tmp/tarballcache
164
167
165 ## URL at which the application is running. This is used for bootstraping
168 ## URL at which the application is running. This is used for bootstraping
166 ## requests in context when no web request is available. Used in ishell, or
169 ## requests in context when no web request is available. Used in ishell, or
167 ## SSH calls. Set this for events to receive proper url for SSH calls.
170 ## SSH calls. Set this for events to receive proper url for SSH calls.
168 app.base_url = http://rhodecode.local
171 app.base_url = http://rhodecode.local
169
172
170 ## change this to unique ID for security
173 ## Unique application ID. Should be a random unique string for security.
171 app_instance_uuid = rc-production
174 app_instance_uuid = rc-production
172
175
173 ## cut off limit for large diffs (size in bytes). If overall diff size on
176 ## Cut off limit for large diffs (size in bytes). If overall diff size on
174 ## commit, or pull request exceeds this limit this diff will be displayed
177 ## commit, or pull request exceeds this limit this diff will be displayed
175 ## partially. E.g 512000 == 512Kb
178 ## partially. E.g 512000 == 512Kb
176 cut_off_limit_diff = 512000
179 cut_off_limit_diff = 512000
177
180
178 ## cut off limit for large files inside diffs (size in bytes). Each individual
181 ## Cut off limit for large files inside diffs (size in bytes). Each individual
179 ## file inside diff which exceeds this limit will be displayed partially.
182 ## file inside diff which exceeds this limit will be displayed partially.
180 ## E.g 128000 == 128Kb
183 ## E.g 128000 == 128Kb
181 cut_off_limit_file = 128000
184 cut_off_limit_file = 128000
182
185
183 ## use cache version of scm repo everywhere
186 ## use cached version of vcs repositories everywhere. Recommended to be `true`
184 vcs_full_cache = true
187 vcs_full_cache = true
185
188
186 ## force https in RhodeCode, fixes https redirects, assumes it's always https
189 ## Force https in RhodeCode, fixes https redirects, assumes it's always https.
187 ## Normally this is controlled by proper http flags sent from http server
190 ## Normally this is controlled by proper http flags sent from http server
188 force_https = false
191 force_https = false
189
192
190 ## use Strict-Transport-Security headers
193 ## use Strict-Transport-Security headers
191 use_htsts = false
194 use_htsts = false
192
195
193 ## git rev filter option, --all is the default filter, if you need to
196 ## git rev filter option, --all is the default filter, if you need to
194 ## hide all refs in changelog switch this to --branches --tags
197 ## hide all refs in changelog switch this to --branches --tags
195 git_rev_filter = --branches --tags
198 git_rev_filter = --branches --tags
196
199
197 # Set to true if your repos are exposed using the dumb protocol
200 # Set to true if your repos are exposed using the dumb protocol
198 git_update_server_info = false
201 git_update_server_info = false
199
202
200 ## RSS/ATOM feed options
203 ## RSS/ATOM feed options
201 rss_cut_off_limit = 256000
204 rss_cut_off_limit = 256000
202 rss_items_per_page = 10
205 rss_items_per_page = 10
203 rss_include_diff = false
206 rss_include_diff = false
204
207
205 ## gist URL alias, used to create nicer urls for gist. This should be an
208 ## gist URL alias, used to create nicer urls for gist. This should be an
206 ## url that does rewrites to _admin/gists/{gistid}.
209 ## url that does rewrites to _admin/gists/{gistid}.
207 ## example: http://gist.rhodecode.org/{gistid}. Empty means use the internal
210 ## example: http://gist.rhodecode.org/{gistid}. Empty means use the internal
208 ## RhodeCode url, ie. http[s]://rhodecode.server/_admin/gists/{gistid}
211 ## RhodeCode url, ie. http[s]://rhodecode.server/_admin/gists/{gistid}
209 gist_alias_url =
212 gist_alias_url =
210
213
211 ## List of views (using glob pattern syntax) that AUTH TOKENS could be
214 ## List of views (using glob pattern syntax) that AUTH TOKENS could be
212 ## used for access.
215 ## used for access.
213 ## Adding ?auth_token=TOKEN_HASH to the url authenticates this request as if it
216 ## Adding ?auth_token=TOKEN_HASH to the url authenticates this request as if it
214 ## came from the the logged in user who own this authentication token.
217 ## came from the the logged in user who own this authentication token.
215 ## Additionally @TOKEN syntaxt can be used to bound the view to specific
218 ## Additionally @TOKEN syntaxt can be used to bound the view to specific
216 ## authentication token. Such view would be only accessible when used together
219 ## authentication token. Such view would be only accessible when used together
217 ## with this authentication token
220 ## with this authentication token
218 ##
221 ##
219 ## list of all views can be found under `/_admin/permissions/auth_token_access`
222 ## list of all views can be found under `/_admin/permissions/auth_token_access`
220 ## The list should be "," separated and on a single line.
223 ## The list should be "," separated and on a single line.
221 ##
224 ##
222 ## Most common views to enable:
225 ## Most common views to enable:
223 # RepoCommitsView:repo_commit_download
226 # RepoCommitsView:repo_commit_download
224 # RepoCommitsView:repo_commit_patch
227 # RepoCommitsView:repo_commit_patch
225 # RepoCommitsView:repo_commit_raw
228 # RepoCommitsView:repo_commit_raw
226 # RepoCommitsView:repo_commit_raw@TOKEN
229 # RepoCommitsView:repo_commit_raw@TOKEN
227 # RepoFilesView:repo_files_diff
230 # RepoFilesView:repo_files_diff
228 # RepoFilesView:repo_archivefile
231 # RepoFilesView:repo_archivefile
229 # RepoFilesView:repo_file_raw
232 # RepoFilesView:repo_file_raw
230 # GistView:*
233 # GistView:*
231 api_access_controllers_whitelist =
234 api_access_controllers_whitelist =
232
235
233 ## default encoding used to convert from and to unicode
236 ## Default encoding used to convert from and to unicode
234 ## can be also a comma separated list of encoding in case of mixed encodings
237 ## can be also a comma separated list of encoding in case of mixed encodings
235 default_encoding = UTF-8
238 default_encoding = UTF-8
236
239
237 ## instance-id prefix
240 ## instance-id prefix
238 ## a prefix key for this instance used for cache invalidation when running
241 ## a prefix key for this instance used for cache invalidation when running
239 ## multiple instances of rhodecode, make sure it's globally unique for
242 ## multiple instances of rhodecode, make sure it's globally unique for
240 ## all running rhodecode instances. Leave empty if you don't use it
243 ## all running rhodecode instances. Leave empty if you don't use it
241 instance_id =
244 instance_id =
242
245
243 ## Fallback authentication plugin. Set this to a plugin ID to force the usage
246 ## Fallback authentication plugin. Set this to a plugin ID to force the usage
244 ## of an authentication plugin also if it is disabled by it's settings.
247 ## of an authentication plugin also if it is disabled by it's settings.
245 ## This could be useful if you are unable to log in to the system due to broken
248 ## This could be useful if you are unable to log in to the system due to broken
246 ## authentication settings. Then you can enable e.g. the internal rhodecode auth
249 ## authentication settings. Then you can enable e.g. the internal rhodecode auth
247 ## module to log in again and fix the settings.
250 ## module to log in again and fix the settings.
248 ##
251 ##
249 ## Available builtin plugin IDs (hash is part of the ID):
252 ## Available builtin plugin IDs (hash is part of the ID):
250 ## egg:rhodecode-enterprise-ce#rhodecode
253 ## egg:rhodecode-enterprise-ce#rhodecode
251 ## egg:rhodecode-enterprise-ce#pam
254 ## egg:rhodecode-enterprise-ce#pam
252 ## egg:rhodecode-enterprise-ce#ldap
255 ## egg:rhodecode-enterprise-ce#ldap
253 ## egg:rhodecode-enterprise-ce#jasig_cas
256 ## egg:rhodecode-enterprise-ce#jasig_cas
254 ## egg:rhodecode-enterprise-ce#headers
257 ## egg:rhodecode-enterprise-ce#headers
255 ## egg:rhodecode-enterprise-ce#crowd
258 ## egg:rhodecode-enterprise-ce#crowd
256 #rhodecode.auth_plugin_fallback = egg:rhodecode-enterprise-ce#rhodecode
259 #rhodecode.auth_plugin_fallback = egg:rhodecode-enterprise-ce#rhodecode
257
260
258 ## alternative return HTTP header for failed authentication. Default HTTP
261 ## alternative return HTTP header for failed authentication. Default HTTP
259 ## response is 401 HTTPUnauthorized. Currently HG clients have troubles with
262 ## response is 401 HTTPUnauthorized. Currently HG clients have troubles with
260 ## handling that causing a series of failed authentication calls.
263 ## handling that causing a series of failed authentication calls.
261 ## Set this variable to 403 to return HTTPForbidden, or any other HTTP code
264 ## Set this variable to 403 to return HTTPForbidden, or any other HTTP code
262 ## This will be served instead of default 401 on bad authnetication
265 ## This will be served instead of default 401 on bad authnetication
263 auth_ret_code =
266 auth_ret_code =
264
267
265 ## use special detection method when serving auth_ret_code, instead of serving
268 ## use special detection method when serving auth_ret_code, instead of serving
266 ## ret_code directly, use 401 initially (Which triggers credentials prompt)
269 ## ret_code directly, use 401 initially (Which triggers credentials prompt)
267 ## and then serve auth_ret_code to clients
270 ## and then serve auth_ret_code to clients
268 auth_ret_code_detection = false
271 auth_ret_code_detection = false
269
272
270 ## locking return code. When repository is locked return this HTTP code. 2XX
273 ## locking return code. When repository is locked return this HTTP code. 2XX
271 ## codes don't break the transactions while 4XX codes do
274 ## codes don't break the transactions while 4XX codes do
272 lock_ret_code = 423
275 lock_ret_code = 423
273
276
274 ## allows to change the repository location in settings page
277 ## allows to change the repository location in settings page
275 allow_repo_location_change = true
278 allow_repo_location_change = true
276
279
277 ## allows to setup custom hooks in settings page
280 ## allows to setup custom hooks in settings page
278 allow_custom_hooks_settings = true
281 allow_custom_hooks_settings = true
279
282
280 ## generated license token, goto license page in RhodeCode settings to obtain
283 ## Generated license token required for EE edition license.
281 ## new token
284 ## New generated token value can be found in Admin > settings > license page.
282 license_token =
285 license_token =
283
286
284 ## supervisor connection uri, for managing supervisor and logs.
287 ## supervisor connection uri, for managing supervisor and logs.
285 supervisor.uri =
288 supervisor.uri =
286 ## supervisord group name/id we only want this RC instance to handle
289 ## supervisord group name/id we only want this RC instance to handle
287 supervisor.group_id = dev
290 supervisor.group_id = dev
288
291
289 ## Display extended labs settings
292 ## Display extended labs settings
290 labs_settings_active = true
293 labs_settings_active = true
291
294
292 ####################################
295 ####################################
293 ### CELERY CONFIG ####
296 ### CELERY CONFIG ####
294 ####################################
297 ####################################
295 ## run: /path/to/celery worker \
298 ## run: /path/to/celery worker \
296 ## -E --beat --app rhodecode.lib.celerylib.loader \
299 ## -E --beat --app rhodecode.lib.celerylib.loader \
297 ## --scheduler rhodecode.lib.celerylib.scheduler.RcScheduler \
300 ## --scheduler rhodecode.lib.celerylib.scheduler.RcScheduler \
298 ## --loglevel DEBUG --ini /path/to/rhodecode.ini
301 ## --loglevel DEBUG --ini /path/to/rhodecode.ini
299
302
300 use_celery = false
303 use_celery = false
301
304
302 ## connection url to the message broker (default rabbitmq)
305 ## connection url to the message broker (default rabbitmq)
303 celery.broker_url = amqp://rabbitmq:qweqwe@localhost:5672/rabbitmqhost
306 celery.broker_url = amqp://rabbitmq:qweqwe@localhost:5672/rabbitmqhost
304
307
305 ## maximum tasks to execute before worker restart
308 ## maximum tasks to execute before worker restart
306 celery.max_tasks_per_child = 100
309 celery.max_tasks_per_child = 100
307
310
308 ## tasks will never be sent to the queue, but executed locally instead.
311 ## tasks will never be sent to the queue, but executed locally instead.
309 celery.task_always_eager = false
312 celery.task_always_eager = false
310
313
311 ####################################
314 #####################################
312 ### BEAKER CACHE ####
315 ### DOGPILE CACHE ####
313 ####################################
316 #####################################
314 # default cache dir for templates. Putting this into a ramdisk
317 ## Default cache dir for caches. Putting this into a ramdisk
315 ## can boost performance, eg. %(here)s/data_ramdisk
318 ## can boost performance, eg. /tmpfs/data_ramdisk, however this directory might require
319 ## large amount of space
316 cache_dir = %(here)s/data
320 cache_dir = %(here)s/data
317
321
318 ## locking and default file storage for Beaker. Putting this into a ramdisk
322 ## `cache_perms` cache settings for permission tree, auth TTL.
319 ## can boost performance, eg. %(here)s/data_ramdisk/cache/beaker_data
323 rc_cache.cache_perms.backend = dogpile.cache.rc.file_namespace
320 beaker.cache.data_dir = %(here)s/data/cache/beaker_data
324 rc_cache.cache_perms.expiration_time = 300
321 beaker.cache.lock_dir = %(here)s/data/cache/beaker_lock
322
323 beaker.cache.regions = super_short_term, short_term, long_term, sql_cache_short, auth_plugins, repo_cache_long
324
325
325 beaker.cache.super_short_term.type = memory
326 ## alternative `cache_perms` redis backend with distributed lock
326 beaker.cache.super_short_term.expire = 10
327 #rc_cache.cache_perms.backend = dogpile.cache.rc.redis
327 beaker.cache.super_short_term.key_length = 256
328 #rc_cache.cache_perms.expiration_time = 300
329 ## redis_expiration_time needs to be greater then expiration_time
330 #rc_cache.cache_perms.arguments.redis_expiration_time = 7200
331 #rc_cache.cache_perms.arguments.socket_timeout = 30
332 #rc_cache.cache_perms.arguments.host = localhost
333 #rc_cache.cache_perms.arguments.port = 6379
334 #rc_cache.cache_perms.arguments.db = 0
335 #rc_cache.cache_perms.arguments.distributed_lock = true
328
336
329 beaker.cache.short_term.type = memory
337 ## `cache_repo` cache settings for FileTree, Readme, RSS FEEDS
330 beaker.cache.short_term.expire = 60
338 rc_cache.cache_repo.backend = dogpile.cache.rc.file_namespace
331 beaker.cache.short_term.key_length = 256
339 rc_cache.cache_repo.expiration_time = 2592000
332
333 beaker.cache.long_term.type = memory
334 beaker.cache.long_term.expire = 36000
335 beaker.cache.long_term.key_length = 256
336
340
337 beaker.cache.sql_cache_short.type = memory
341 ## alternative `cache_repo` redis backend with distributed lock
338 beaker.cache.sql_cache_short.expire = 10
342 #rc_cache.cache_repo.backend = dogpile.cache.rc.redis
339 beaker.cache.sql_cache_short.key_length = 256
343 #rc_cache.cache_repo.expiration_time = 2592000
344 ## redis_expiration_time needs to be greater then expiration_time
345 #rc_cache.cache_repo.arguments.redis_expiration_time = 2678400
346 #rc_cache.cache_repo.arguments.socket_timeout = 30
347 #rc_cache.cache_repo.arguments.host = localhost
348 #rc_cache.cache_repo.arguments.port = 6379
349 #rc_cache.cache_repo.arguments.db = 1
350 #rc_cache.cache_repo.arguments.distributed_lock = true
340
351
341 ## default is memory cache, configure only if required
352 ## cache settings for SQL queries, this needs to use memory type backend
342 ## using multi-node or multi-worker setup
353 rc_cache.sql_cache_short.backend = dogpile.cache.rc.memory_lru
343 #beaker.cache.auth_plugins.type = ext:database
354 rc_cache.sql_cache_short.expiration_time = 30
344 #beaker.cache.auth_plugins.lock_dir = %(here)s/data/cache/auth_plugin_lock
345 #beaker.cache.auth_plugins.url = postgresql://postgres:secret@localhost/rhodecode
346 #beaker.cache.auth_plugins.url = mysql://root:secret@127.0.0.1/rhodecode
347 #beaker.cache.auth_plugins.sa.pool_recycle = 3600
348 #beaker.cache.auth_plugins.sa.pool_size = 10
349 #beaker.cache.auth_plugins.sa.max_overflow = 0
350
355
351 beaker.cache.repo_cache_long.type = memorylru_base
356 ## `cache_repo_longterm` cache for repo object instances, this needs to use memory
352 beaker.cache.repo_cache_long.max_items = 4096
357 ## type backend as the objects kept are not pickle serializable
353 beaker.cache.repo_cache_long.expire = 2592000
358 rc_cache.cache_repo_longterm.backend = dogpile.cache.rc.memory_lru
359 ## by default we use 96H, this is using invalidation on push anyway
360 rc_cache.cache_repo_longterm.expiration_time = 345600
361 ## max items in LRU cache, reduce this number to save memory, and expire last used
362 ## cached objects
363 rc_cache.cache_repo_longterm.max_size = 10000
354
364
355 ## default is memorylru_base cache, configure only if required
356 ## using multi-node or multi-worker setup
357 #beaker.cache.repo_cache_long.type = ext:memcached
358 #beaker.cache.repo_cache_long.url = localhost:11211
359 #beaker.cache.repo_cache_long.expire = 1209600
360 #beaker.cache.repo_cache_long.key_length = 256
361
365
362 ####################################
366 ####################################
363 ### BEAKER SESSION ####
367 ### BEAKER SESSION ####
364 ####################################
368 ####################################
365
369
366 ## .session.type is type of storage options for the session, current allowed
370 ## .session.type is type of storage options for the session, current allowed
367 ## types are file, ext:memcached, ext:database, and memory (default).
371 ## types are file, ext:memcached, ext:redis, ext:database, and memory (default).
368 beaker.session.type = file
372 beaker.session.type = file
369 beaker.session.data_dir = %(here)s/data/sessions/data
373 beaker.session.data_dir = %(here)s/data/sessions
370
374
371 ## db based session, fast, and allows easy management over logged in users
375 ## db based session, fast, and allows easy management over logged in users
372 #beaker.session.type = ext:database
376 #beaker.session.type = ext:database
373 #beaker.session.table_name = db_session
377 #beaker.session.table_name = db_session
374 #beaker.session.sa.url = postgresql://postgres:secret@localhost/rhodecode
378 #beaker.session.sa.url = postgresql://postgres:secret@localhost/rhodecode
375 #beaker.session.sa.url = mysql://root:secret@127.0.0.1/rhodecode
379 #beaker.session.sa.url = mysql://root:secret@127.0.0.1/rhodecode
376 #beaker.session.sa.pool_recycle = 3600
380 #beaker.session.sa.pool_recycle = 3600
377 #beaker.session.sa.echo = false
381 #beaker.session.sa.echo = false
378
382
379 beaker.session.key = rhodecode
383 beaker.session.key = rhodecode
380 beaker.session.secret = develop-rc-uytcxaz
384 beaker.session.secret = develop-rc-uytcxaz
381 beaker.session.lock_dir = %(here)s/data/sessions/lock
385 beaker.session.lock_dir = %(here)s/data/sessions/lock
382
386
383 ## Secure encrypted cookie. Requires AES and AES python libraries
387 ## Secure encrypted cookie. Requires AES and AES python libraries
384 ## you must disable beaker.session.secret to use this
388 ## you must disable beaker.session.secret to use this
385 #beaker.session.encrypt_key = key_for_encryption
389 #beaker.session.encrypt_key = key_for_encryption
386 #beaker.session.validate_key = validation_key
390 #beaker.session.validate_key = validation_key
387
391
388 ## sets session as invalid(also logging out user) if it haven not been
392 ## sets session as invalid(also logging out user) if it haven not been
389 ## accessed for given amount of time in seconds
393 ## accessed for given amount of time in seconds
390 beaker.session.timeout = 2592000
394 beaker.session.timeout = 2592000
391 beaker.session.httponly = true
395 beaker.session.httponly = true
392 ## Path to use for the cookie. Set to prefix if you use prefix middleware
396 ## Path to use for the cookie. Set to prefix if you use prefix middleware
393 #beaker.session.cookie_path = /custom_prefix
397 #beaker.session.cookie_path = /custom_prefix
394
398
395 ## uncomment for https secure cookie
399 ## uncomment for https secure cookie
396 beaker.session.secure = false
400 beaker.session.secure = false
397
401
398 ## auto save the session to not to use .save()
402 ## auto save the session to not to use .save()
399 beaker.session.auto = false
403 beaker.session.auto = false
400
404
401 ## default cookie expiration time in seconds, set to `true` to set expire
405 ## default cookie expiration time in seconds, set to `true` to set expire
402 ## at browser close
406 ## at browser close
403 #beaker.session.cookie_expires = 3600
407 #beaker.session.cookie_expires = 3600
404
408
405 ###################################
409 ###################################
406 ## SEARCH INDEXING CONFIGURATION ##
410 ## SEARCH INDEXING CONFIGURATION ##
407 ###################################
411 ###################################
408 ## Full text search indexer is available in rhodecode-tools under
412 ## Full text search indexer is available in rhodecode-tools under
409 ## `rhodecode-tools index` command
413 ## `rhodecode-tools index` command
410
414
411 ## WHOOSH Backend, doesn't require additional services to run
415 ## WHOOSH Backend, doesn't require additional services to run
412 ## it works good with few dozen repos
416 ## it works good with few dozen repos
413 search.module = rhodecode.lib.index.whoosh
417 search.module = rhodecode.lib.index.whoosh
414 search.location = %(here)s/data/index
418 search.location = %(here)s/data/index
415
419
416 ########################################
420 ########################################
417 ### CHANNELSTREAM CONFIG ####
421 ### CHANNELSTREAM CONFIG ####
418 ########################################
422 ########################################
419 ## channelstream enables persistent connections and live notification
423 ## channelstream enables persistent connections and live notification
420 ## in the system. It's also used by the chat system
424 ## in the system. It's also used by the chat system
421 channelstream.enabled = false
425 channelstream.enabled = false
422
426
423 ## server address for channelstream server on the backend
427 ## server address for channelstream server on the backend
424 channelstream.server = 127.0.0.1:9800
428 channelstream.server = 127.0.0.1:9800
425
429
426 ## location of the channelstream server from outside world
430 ## location of the channelstream server from outside world
427 ## use ws:// for http or wss:// for https. This address needs to be handled
431 ## use ws:// for http or wss:// for https. This address needs to be handled
428 ## by external HTTP server such as Nginx or Apache
432 ## by external HTTP server such as Nginx or Apache
429 ## see nginx/apache configuration examples in our docs
433 ## see nginx/apache configuration examples in our docs
430 channelstream.ws_url = ws://rhodecode.yourserver.com/_channelstream
434 channelstream.ws_url = ws://rhodecode.yourserver.com/_channelstream
431 channelstream.secret = secret
435 channelstream.secret = secret
432 channelstream.history.location = %(here)s/channelstream_history
436 channelstream.history.location = %(here)s/channelstream_history
433
437
434 ## Internal application path that Javascript uses to connect into.
438 ## Internal application path that Javascript uses to connect into.
435 ## If you use proxy-prefix the prefix should be added before /_channelstream
439 ## If you use proxy-prefix the prefix should be added before /_channelstream
436 channelstream.proxy_path = /_channelstream
440 channelstream.proxy_path = /_channelstream
437
441
438
442
439 ###################################
443 ###################################
440 ## APPENLIGHT CONFIG ##
444 ## APPENLIGHT CONFIG ##
441 ###################################
445 ###################################
442
446
443 ## Appenlight is tailored to work with RhodeCode, see
447 ## Appenlight is tailored to work with RhodeCode, see
444 ## http://appenlight.com for details how to obtain an account
448 ## http://appenlight.com for details how to obtain an account
445
449
446 ## appenlight integration enabled
450 ## appenlight integration enabled
447 appenlight = false
451 appenlight = false
448
452
449 appenlight.server_url = https://api.appenlight.com
453 appenlight.server_url = https://api.appenlight.com
450 appenlight.api_key = YOUR_API_KEY
454 appenlight.api_key = YOUR_API_KEY
451 #appenlight.transport_config = https://api.appenlight.com?threaded=1&timeout=5
455 #appenlight.transport_config = https://api.appenlight.com?threaded=1&timeout=5
452
456
453 # used for JS client
457 # used for JS client
454 appenlight.api_public_key = YOUR_API_PUBLIC_KEY
458 appenlight.api_public_key = YOUR_API_PUBLIC_KEY
455
459
456 ## TWEAK AMOUNT OF INFO SENT HERE
460 ## TWEAK AMOUNT OF INFO SENT HERE
457
461
458 ## enables 404 error logging (default False)
462 ## enables 404 error logging (default False)
459 appenlight.report_404 = false
463 appenlight.report_404 = false
460
464
461 ## time in seconds after request is considered being slow (default 1)
465 ## time in seconds after request is considered being slow (default 1)
462 appenlight.slow_request_time = 1
466 appenlight.slow_request_time = 1
463
467
464 ## record slow requests in application
468 ## record slow requests in application
465 ## (needs to be enabled for slow datastore recording and time tracking)
469 ## (needs to be enabled for slow datastore recording and time tracking)
466 appenlight.slow_requests = true
470 appenlight.slow_requests = true
467
471
468 ## enable hooking to application loggers
472 ## enable hooking to application loggers
469 appenlight.logging = true
473 appenlight.logging = true
470
474
471 ## minimum log level for log capture
475 ## minimum log level for log capture
472 appenlight.logging.level = WARNING
476 appenlight.logging.level = WARNING
473
477
474 ## send logs only from erroneous/slow requests
478 ## send logs only from erroneous/slow requests
475 ## (saves API quota for intensive logging)
479 ## (saves API quota for intensive logging)
476 appenlight.logging_on_error = false
480 appenlight.logging_on_error = false
477
481
478 ## list of additonal keywords that should be grabbed from environ object
482 ## list of additonal keywords that should be grabbed from environ object
479 ## can be string with comma separated list of words in lowercase
483 ## can be string with comma separated list of words in lowercase
480 ## (by default client will always send following info:
484 ## (by default client will always send following info:
481 ## 'REMOTE_USER', 'REMOTE_ADDR', 'SERVER_NAME', 'CONTENT_TYPE' + all keys that
485 ## 'REMOTE_USER', 'REMOTE_ADDR', 'SERVER_NAME', 'CONTENT_TYPE' + all keys that
482 ## start with HTTP* this list be extended with additional keywords here
486 ## start with HTTP* this list be extended with additional keywords here
483 appenlight.environ_keys_whitelist =
487 appenlight.environ_keys_whitelist =
484
488
485 ## list of keywords that should be blanked from request object
489 ## list of keywords that should be blanked from request object
486 ## can be string with comma separated list of words in lowercase
490 ## can be string with comma separated list of words in lowercase
487 ## (by default client will always blank keys that contain following words
491 ## (by default client will always blank keys that contain following words
488 ## 'password', 'passwd', 'pwd', 'auth_tkt', 'secret', 'csrf'
492 ## 'password', 'passwd', 'pwd', 'auth_tkt', 'secret', 'csrf'
489 ## this list be extended with additional keywords set here
493 ## this list be extended with additional keywords set here
490 appenlight.request_keys_blacklist =
494 appenlight.request_keys_blacklist =
491
495
492 ## list of namespaces that should be ignores when gathering log entries
496 ## list of namespaces that should be ignores when gathering log entries
493 ## can be string with comma separated list of namespaces
497 ## can be string with comma separated list of namespaces
494 ## (by default the client ignores own entries: appenlight_client.client)
498 ## (by default the client ignores own entries: appenlight_client.client)
495 appenlight.log_namespace_blacklist =
499 appenlight.log_namespace_blacklist =
496
500
497
501
498 ################################################################################
502 ################################################################################
499 ## WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION ENVIRONMENT* ##
503 ## WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION ENVIRONMENT* ##
500 ## Debug mode will enable the interactive debugging tool, allowing ANYONE to ##
504 ## Debug mode will enable the interactive debugging tool, allowing ANYONE to ##
501 ## execute malicious code after an exception is raised. ##
505 ## execute malicious code after an exception is raised. ##
502 ################################################################################
506 ################################################################################
503 #set debug = false
507 #set debug = false
504
508
505
509 # enable debug style page
506 ##############
507 ## STYLING ##
508 ##############
509 debug_style = true
510 debug_style = true
510
511
511 ###########################################
512 ###########################################
512 ### MAIN RHODECODE DATABASE CONFIG ###
513 ### MAIN RHODECODE DATABASE CONFIG ###
513 ###########################################
514 ###########################################
514 #sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db?timeout=30
515 #sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db?timeout=30
515 #sqlalchemy.db1.url = postgresql://postgres:qweqwe@localhost/rhodecode
516 #sqlalchemy.db1.url = postgresql://postgres:qweqwe@localhost/rhodecode
516 #sqlalchemy.db1.url = mysql://root:qweqwe@localhost/rhodecode
517 #sqlalchemy.db1.url = mysql://root:qweqwe@localhost/rhodecode
518 # pymysql is an alternative driver for MySQL, use in case of problems with default one
519 #sqlalchemy.db1.url = mysql+pymysql://root:qweqwe@localhost/rhodecode
520
517 sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db?timeout=30
521 sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db?timeout=30
518
522
519 # see sqlalchemy docs for other advanced settings
523 # see sqlalchemy docs for other advanced settings
520
524
521 ## print the sql statements to output
525 ## print the sql statements to output
522 sqlalchemy.db1.echo = false
526 sqlalchemy.db1.echo = false
523 ## recycle the connections after this amount of seconds
527 ## recycle the connections after this amount of seconds
524 sqlalchemy.db1.pool_recycle = 3600
528 sqlalchemy.db1.pool_recycle = 3600
525 sqlalchemy.db1.convert_unicode = true
529 sqlalchemy.db1.convert_unicode = true
526
530
527 ## the number of connections to keep open inside the connection pool.
531 ## the number of connections to keep open inside the connection pool.
528 ## 0 indicates no limit
532 ## 0 indicates no limit
529 #sqlalchemy.db1.pool_size = 5
533 #sqlalchemy.db1.pool_size = 5
530
534
531 ## the number of connections to allow in connection pool "overflow", that is
535 ## the number of connections to allow in connection pool "overflow", that is
532 ## connections that can be opened above and beyond the pool_size setting,
536 ## connections that can be opened above and beyond the pool_size setting,
533 ## which defaults to five.
537 ## which defaults to five.
534 #sqlalchemy.db1.max_overflow = 10
538 #sqlalchemy.db1.max_overflow = 10
535
539
540 ## Connection check ping, used to detect broken database connections
541 ## could be enabled to better handle cases if MySQL has gone away errors
542 #sqlalchemy.db1.ping_connection = true
536
543
537 ##################
544 ##################
538 ### VCS CONFIG ###
545 ### VCS CONFIG ###
539 ##################
546 ##################
540 vcs.server.enable = true
547 vcs.server.enable = true
541 vcs.server = localhost:9900
548 vcs.server = localhost:9900
542
549
543 ## Web server connectivity protocol, responsible for web based VCS operatations
550 ## Web server connectivity protocol, responsible for web based VCS operatations
544 ## Available protocols are:
551 ## Available protocols are:
545 ## `http` - use http-rpc backend (default)
552 ## `http` - use http-rpc backend (default)
546 vcs.server.protocol = http
553 vcs.server.protocol = http
547
554
548 ## Push/Pull operations protocol, available options are:
555 ## Push/Pull operations protocol, available options are:
549 ## `http` - use http-rpc backend (default)
556 ## `http` - use http-rpc backend (default)
550 ##
551 vcs.scm_app_implementation = http
557 vcs.scm_app_implementation = http
552
558
553 ## Push/Pull operations hooks protocol, available options are:
559 ## Push/Pull operations hooks protocol, available options are:
554 ## `http` - use http-rpc backend (default)
560 ## `http` - use http-rpc backend (default)
555 vcs.hooks.protocol = http
561 vcs.hooks.protocol = http
556
562
563 ## Host on which this instance is listening for hooks. If vcsserver is in other location
564 ## this should be adjusted.
565 vcs.hooks.host = 127.0.0.1
566
557 vcs.server.log_level = debug
567 vcs.server.log_level = debug
558 ## Start VCSServer with this instance as a subprocess, usefull for development
568 ## Start VCSServer with this instance as a subprocess, useful for development
559 vcs.start_server = false
569 vcs.start_server = false
560
570
561 ## List of enabled VCS backends, available options are:
571 ## List of enabled VCS backends, available options are:
562 ## `hg` - mercurial
572 ## `hg` - mercurial
563 ## `git` - git
573 ## `git` - git
564 ## `svn` - subversion
574 ## `svn` - subversion
565 vcs.backends = hg, git, svn
575 vcs.backends = hg, git, svn
566
576
567 vcs.connection_timeout = 3600
577 vcs.connection_timeout = 3600
568 ## Compatibility version when creating SVN repositories. Defaults to newest version when commented out.
578 ## Compatibility version when creating SVN repositories. Defaults to newest version when commented out.
569 ## Available options are: pre-1.4-compatible, pre-1.5-compatible, pre-1.6-compatible, pre-1.8-compatible, pre-1.9-compatible
579 ## Available options are: pre-1.4-compatible, pre-1.5-compatible, pre-1.6-compatible, pre-1.8-compatible, pre-1.9-compatible
570 #vcs.svn.compatible_version = pre-1.8-compatible
580 #vcs.svn.compatible_version = pre-1.8-compatible
571
581
572
582
573 ############################################################
583 ############################################################
574 ### Subversion proxy support (mod_dav_svn) ###
584 ### Subversion proxy support (mod_dav_svn) ###
575 ### Maps RhodeCode repo groups into SVN paths for Apache ###
585 ### Maps RhodeCode repo groups into SVN paths for Apache ###
576 ############################################################
586 ############################################################
577 ## Enable or disable the config file generation.
587 ## Enable or disable the config file generation.
578 svn.proxy.generate_config = false
588 svn.proxy.generate_config = false
579 ## Generate config file with `SVNListParentPath` set to `On`.
589 ## Generate config file with `SVNListParentPath` set to `On`.
580 svn.proxy.list_parent_path = true
590 svn.proxy.list_parent_path = true
581 ## Set location and file name of generated config file.
591 ## Set location and file name of generated config file.
582 svn.proxy.config_file_path = %(here)s/mod_dav_svn.conf
592 svn.proxy.config_file_path = %(here)s/mod_dav_svn.conf
583 ## alternative mod_dav config template. This needs to be a mako template
593 ## alternative mod_dav config template. This needs to be a mako template
584 #svn.proxy.config_template = ~/.rccontrol/enterprise-1/custom_svn_conf.mako
594 #svn.proxy.config_template = ~/.rccontrol/enterprise-1/custom_svn_conf.mako
585 ## Used as a prefix to the `Location` block in the generated config file.
595 ## Used as a prefix to the `Location` block in the generated config file.
586 ## In most cases it should be set to `/`.
596 ## In most cases it should be set to `/`.
587 svn.proxy.location_root = /
597 svn.proxy.location_root = /
588 ## Command to reload the mod dav svn configuration on change.
598 ## Command to reload the mod dav svn configuration on change.
589 ## Example: `/etc/init.d/apache2 reload`
599 ## Example: `/etc/init.d/apache2 reload`
590 #svn.proxy.reload_cmd = /etc/init.d/apache2 reload
600 #svn.proxy.reload_cmd = /etc/init.d/apache2 reload
591 ## If the timeout expires before the reload command finishes, the command will
601 ## If the timeout expires before the reload command finishes, the command will
592 ## be killed. Setting it to zero means no timeout. Defaults to 10 seconds.
602 ## be killed. Setting it to zero means no timeout. Defaults to 10 seconds.
593 #svn.proxy.reload_timeout = 10
603 #svn.proxy.reload_timeout = 10
594
604
595 ############################################################
605 ############################################################
596 ### SSH Support Settings ###
606 ### SSH Support Settings ###
597 ############################################################
607 ############################################################
598
608
599 ## Defines if a custom authorized_keys file should be created and written on
609 ## Defines if a custom authorized_keys file should be created and written on
600 ## any change user ssh keys. Setting this to false also disables posibility
610 ## any change user ssh keys. Setting this to false also disables posibility
601 ## of adding SSH keys by users from web interface. Super admins can still
611 ## of adding SSH keys by users from web interface. Super admins can still
602 ## manage SSH Keys.
612 ## manage SSH Keys.
603 ssh.generate_authorized_keyfile = false
613 ssh.generate_authorized_keyfile = false
604
614
605 ## Options for ssh, default is `no-pty,no-port-forwarding,no-X11-forwarding,no-agent-forwarding`
615 ## Options for ssh, default is `no-pty,no-port-forwarding,no-X11-forwarding,no-agent-forwarding`
606 # ssh.authorized_keys_ssh_opts =
616 # ssh.authorized_keys_ssh_opts =
607
617
608 ## Path to the authrozied_keys file where the generate entries are placed.
618 ## Path to the authrozied_keys file where the generate entries are placed.
609 ## It is possible to have multiple key files specified in `sshd_config` e.g.
619 ## It is possible to have multiple key files specified in `sshd_config` e.g.
610 ## AuthorizedKeysFile %h/.ssh/authorized_keys %h/.ssh/authorized_keys_rhodecode
620 ## AuthorizedKeysFile %h/.ssh/authorized_keys %h/.ssh/authorized_keys_rhodecode
611 ssh.authorized_keys_file_path = ~/.ssh/authorized_keys_rhodecode
621 ssh.authorized_keys_file_path = ~/.ssh/authorized_keys_rhodecode
612
622
613 ## Command to execute the SSH wrapper. The binary is available in the
623 ## Command to execute the SSH wrapper. The binary is available in the
614 ## rhodecode installation directory.
624 ## rhodecode installation directory.
615 ## e.g ~/.rccontrol/community-1/profile/bin/rc-ssh-wrapper
625 ## e.g ~/.rccontrol/community-1/profile/bin/rc-ssh-wrapper
616 ssh.wrapper_cmd = ~/.rccontrol/community-1/rc-ssh-wrapper
626 ssh.wrapper_cmd = ~/.rccontrol/community-1/rc-ssh-wrapper
617
627
618 ## Allow shell when executing the ssh-wrapper command
628 ## Allow shell when executing the ssh-wrapper command
619 ssh.wrapper_cmd_allow_shell = false
629 ssh.wrapper_cmd_allow_shell = false
620
630
621 ## Enables logging, and detailed output send back to the client during SSH
631 ## Enables logging, and detailed output send back to the client during SSH
622 ## operations. Usefull for debugging, shouldn't be used in production.
632 ## operations. Usefull for debugging, shouldn't be used in production.
623 ssh.enable_debug_logging = true
633 ssh.enable_debug_logging = true
624
634
625 ## Paths to binary executable, by default they are the names, but we can
635 ## Paths to binary executable, by default they are the names, but we can
626 ## override them if we want to use a custom one
636 ## override them if we want to use a custom one
627 ssh.executable.hg = ~/.rccontrol/vcsserver-1/profile/bin/hg
637 ssh.executable.hg = ~/.rccontrol/vcsserver-1/profile/bin/hg
628 ssh.executable.git = ~/.rccontrol/vcsserver-1/profile/bin/git
638 ssh.executable.git = ~/.rccontrol/vcsserver-1/profile/bin/git
629 ssh.executable.svn = ~/.rccontrol/vcsserver-1/profile/bin/svnserve
639 ssh.executable.svn = ~/.rccontrol/vcsserver-1/profile/bin/svnserve
630
640
631
641
632 ## Dummy marker to add new entries after.
642 ## Dummy marker to add new entries after.
633 ## Add any custom entries below. Please don't remove.
643 ## Add any custom entries below. Please don't remove.
634 custom.conf = 1
644 custom.conf = 1
635
645
636
646
637 ################################
647 ################################
638 ### LOGGING CONFIGURATION ####
648 ### LOGGING CONFIGURATION ####
639 ################################
649 ################################
640 [loggers]
650 [loggers]
641 keys = root, sqlalchemy, beaker, rhodecode, ssh_wrapper, celery
651 keys = root, sqlalchemy, beaker, celery, rhodecode, ssh_wrapper
642
652
643 [handlers]
653 [handlers]
644 keys = console, console_sql
654 keys = console, console_sql
645
655
646 [formatters]
656 [formatters]
647 keys = generic, color_formatter, color_formatter_sql
657 keys = generic, color_formatter, color_formatter_sql
648
658
649 #############
659 #############
650 ## LOGGERS ##
660 ## LOGGERS ##
651 #############
661 #############
652 [logger_root]
662 [logger_root]
653 level = NOTSET
663 level = NOTSET
654 handlers = console
664 handlers = console
655
665
656 [logger_sqlalchemy]
666 [logger_sqlalchemy]
657 level = INFO
667 level = INFO
658 handlers = console_sql
668 handlers = console_sql
659 qualname = sqlalchemy.engine
669 qualname = sqlalchemy.engine
660 propagate = 0
670 propagate = 0
661
671
662 [logger_beaker]
672 [logger_beaker]
663 level = DEBUG
673 level = DEBUG
664 handlers =
674 handlers =
665 qualname = beaker.container
675 qualname = beaker.container
666 propagate = 1
676 propagate = 1
667
677
668 [logger_rhodecode]
678 [logger_rhodecode]
669 level = DEBUG
679 level = DEBUG
670 handlers =
680 handlers =
671 qualname = rhodecode
681 qualname = rhodecode
672 propagate = 1
682 propagate = 1
673
683
674 [logger_ssh_wrapper]
684 [logger_ssh_wrapper]
675 level = DEBUG
685 level = DEBUG
676 handlers =
686 handlers =
677 qualname = ssh_wrapper
687 qualname = ssh_wrapper
678 propagate = 1
688 propagate = 1
679
689
680 [logger_celery]
690 [logger_celery]
681 level = DEBUG
691 level = DEBUG
682 handlers =
692 handlers =
683 qualname = celery
693 qualname = celery
684
694
685
695
686 ##############
696 ##############
687 ## HANDLERS ##
697 ## HANDLERS ##
688 ##############
698 ##############
689
699
690 [handler_console]
700 [handler_console]
691 class = StreamHandler
701 class = StreamHandler
692 args = (sys.stderr, )
702 args = (sys.stderr, )
693 level = DEBUG
703 level = DEBUG
694 formatter = color_formatter
704 formatter = color_formatter
695
705
696 [handler_console_sql]
706 [handler_console_sql]
707 # "level = DEBUG" logs SQL queries and results.
708 # "level = INFO" logs SQL queries.
709 # "level = WARN" logs neither. (Recommended for production systems.)
697 class = StreamHandler
710 class = StreamHandler
698 args = (sys.stderr, )
711 args = (sys.stderr, )
699 level = DEBUG
712 level = WARN
700 formatter = color_formatter_sql
713 formatter = color_formatter_sql
701
714
702 ################
715 ################
703 ## FORMATTERS ##
716 ## FORMATTERS ##
704 ################
717 ################
705
718
706 [formatter_generic]
719 [formatter_generic]
707 class = rhodecode.lib.logging_formatter.ExceptionAwareFormatter
720 class = rhodecode.lib.logging_formatter.ExceptionAwareFormatter
708 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
721 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
709 datefmt = %Y-%m-%d %H:%M:%S
722 datefmt = %Y-%m-%d %H:%M:%S
710
723
711 [formatter_color_formatter]
724 [formatter_color_formatter]
712 class = rhodecode.lib.logging_formatter.ColorFormatter
725 class = rhodecode.lib.logging_formatter.ColorFormatter
713 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
726 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
714 datefmt = %Y-%m-%d %H:%M:%S
727 datefmt = %Y-%m-%d %H:%M:%S
715
728
716 [formatter_color_formatter_sql]
729 [formatter_color_formatter_sql]
717 class = rhodecode.lib.logging_formatter.ColorFormatterSql
730 class = rhodecode.lib.logging_formatter.ColorFormatterSql
718 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
731 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
719 datefmt = %Y-%m-%d %H:%M:%S
732 datefmt = %Y-%m-%d %H:%M:%S
@@ -1,689 +1,704 b''
1
1
2
2
3 ################################################################################
3 ################################################################################
4 ## RHODECODE COMMUNITY EDITION CONFIGURATION ##
4 ## RHODECODE COMMUNITY EDITION CONFIGURATION ##
5 # The %(here)s variable will be replaced with the parent directory of this file#
6 ################################################################################
5 ################################################################################
7
6
8 [DEFAULT]
7 [DEFAULT]
9 debug = true
8 debug = true
10
9
11 ################################################################################
10 ################################################################################
12 ## EMAIL CONFIGURATION ##
11 ## EMAIL CONFIGURATION ##
13 ## Uncomment and replace with the email address which should receive ##
12 ## Uncomment and replace with the email address which should receive ##
14 ## any error reports after an application crash ##
13 ## any error reports after an application crash ##
15 ## Additionally these settings will be used by the RhodeCode mailing system ##
14 ## Additionally these settings will be used by the RhodeCode mailing system ##
16 ################################################################################
15 ################################################################################
17
16
18 ## prefix all emails subjects with given prefix, helps filtering out emails
17 ## prefix all emails subjects with given prefix, helps filtering out emails
19 #email_prefix = [RhodeCode]
18 #email_prefix = [RhodeCode]
20
19
21 ## email FROM address all mails will be sent
20 ## email FROM address all mails will be sent
22 #app_email_from = rhodecode-noreply@localhost
21 #app_email_from = rhodecode-noreply@localhost
23
22
24 ## Uncomment and replace with the address which should receive any error report
23 ## Uncomment and replace with the address which should receive any error report
25 ## note: using appenlight for error handling doesn't need this to be uncommented
24 ## note: using appenlight for error handling doesn't need this to be uncommented
26 #email_to = admin@localhost
25 #email_to = admin@localhost
27
26
28 ## in case of Application errors, sent an error email form
27 ## in case of Application errors, sent an error email form
29 #error_email_from = rhodecode_error@localhost
28 #error_email_from = rhodecode_error@localhost
30
29
31 ## additional error message to be send in case of server crash
30 ## additional error message to be send in case of server crash
32 #error_message =
31 #error_message =
33
32
34
33
35 #smtp_server = mail.server.com
34 #smtp_server = mail.server.com
36 #smtp_username =
35 #smtp_username =
37 #smtp_password =
36 #smtp_password =
38 #smtp_port =
37 #smtp_port =
39 #smtp_use_tls = false
38 #smtp_use_tls = false
40 #smtp_use_ssl = true
39 #smtp_use_ssl = true
41 ## Specify available auth parameters here (e.g. LOGIN PLAIN CRAM-MD5, etc.)
40 ## Specify available auth parameters here (e.g. LOGIN PLAIN CRAM-MD5, etc.)
42 #smtp_auth =
41 #smtp_auth =
43
42
44 [server:main]
43 [server:main]
45 ## COMMON ##
44 ## COMMON ##
46 host = 127.0.0.1
45 host = 127.0.0.1
47 port = 5000
46 port = 5000
48
47
49 ##################################
48 ###########################################################
50 ## WAITRESS WSGI SERVER ##
49 ## WAITRESS WSGI SERVER - Recommended for Development ####
51 ## Recommended for Development ##
50 ###########################################################
52 ##################################
53
51
54 #use = egg:waitress#main
52 #use = egg:waitress#main
55 ## number of worker threads
53 ## number of worker threads
56 #threads = 5
54 #threads = 5
57 ## MAX BODY SIZE 100GB
55 ## MAX BODY SIZE 100GB
58 #max_request_body_size = 107374182400
56 #max_request_body_size = 107374182400
59 ## Use poll instead of select, fixes file descriptors limits problems.
57 ## Use poll instead of select, fixes file descriptors limits problems.
60 ## May not work on old windows systems.
58 ## May not work on old windows systems.
61 #asyncore_use_poll = true
59 #asyncore_use_poll = true
62
60
63
61
64 ##########################
62 ##########################
65 ## GUNICORN WSGI SERVER ##
63 ## GUNICORN WSGI SERVER ##
66 ##########################
64 ##########################
67 ## run with gunicorn --log-config rhodecode.ini --paste rhodecode.ini
65 ## run with gunicorn --log-config rhodecode.ini --paste rhodecode.ini
68
66
69 use = egg:gunicorn#main
67 use = egg:gunicorn#main
70 ## Sets the number of process workers. You must set `instance_id = *`
68 ## Sets the number of process workers. More workers means more concurent connections
71 ## when this option is set to more than one worker, recommended
69 ## RhodeCode can handle at the same time. Each additional worker also it increases
72 ## value is (2 * NUMBER_OF_CPUS + 1), eg 2CPU = 5 workers
70 ## memory usage as each has it's own set of caches.
73 ## The `instance_id = *` must be set in the [app:main] section below
71 ## Recommended value is (2 * NUMBER_OF_CPUS + 1), eg 2CPU = 5 workers, but no more
72 ## than 8-10 unless for really big deployments .e.g 700-1000 users.
73 ## `instance_id = *` must be set in the [app:main] section below (which is the default)
74 ## when using more than 1 worker.
74 workers = 2
75 workers = 2
75 ## number of threads for each of the worker, must be set to 1 for gevent
76 ## process name visible in process list
76 ## generally recommended to be at 1
77 #threads = 1
78 ## process name
79 proc_name = rhodecode
77 proc_name = rhodecode
80 ## type of worker class, one of sync, gevent
78 ## type of worker class, one of sync, gevent
81 ## recommended for bigger setup is using of of other than sync one
79 ## recommended for bigger setup is using of of other than sync one
82 worker_class = gevent
80 worker_class = gevent
83 ## The maximum number of simultaneous clients. Valid only for Gevent
81 ## The maximum number of simultaneous clients. Valid only for Gevent
84 #worker_connections = 10
82 worker_connections = 10
85 ## max number of requests that worker will handle before being gracefully
83 ## max number of requests that worker will handle before being gracefully
86 ## restarted, could prevent memory leaks
84 ## restarted, could prevent memory leaks
87 max_requests = 1000
85 max_requests = 1000
88 max_requests_jitter = 30
86 max_requests_jitter = 30
89 ## amount of time a worker can spend with handling a request before it
87 ## amount of time a worker can spend with handling a request before it
90 ## gets killed and restarted. Set to 6hrs
88 ## gets killed and restarted. Set to 6hrs
91 timeout = 21600
89 timeout = 21600
92
90
93
91
94 ## prefix middleware for RhodeCode.
92 ## prefix middleware for RhodeCode.
95 ## recommended when using proxy setup.
93 ## recommended when using proxy setup.
96 ## allows to set RhodeCode under a prefix in server.
94 ## allows to set RhodeCode under a prefix in server.
97 ## eg https://server.com/custom_prefix. Enable `filter-with =` option below as well.
95 ## eg https://server.com/custom_prefix. Enable `filter-with =` option below as well.
98 ## And set your prefix like: `prefix = /custom_prefix`
96 ## And set your prefix like: `prefix = /custom_prefix`
99 ## be sure to also set beaker.session.cookie_path = /custom_prefix if you need
97 ## be sure to also set beaker.session.cookie_path = /custom_prefix if you need
100 ## to make your cookies only work on prefix url
98 ## to make your cookies only work on prefix url
101 [filter:proxy-prefix]
99 [filter:proxy-prefix]
102 use = egg:PasteDeploy#prefix
100 use = egg:PasteDeploy#prefix
103 prefix = /
101 prefix = /
104
102
105 [app:main]
103 [app:main]
104 ## The %(here)s variable will be replaced with the absolute path of parent directory
105 ## of this file
106 ## In addition ENVIRONMENT variables usage is possible, e.g
107 ## sqlalchemy.db1.url = {ENV_RC_DB_URL}
108
106 use = egg:rhodecode-enterprise-ce
109 use = egg:rhodecode-enterprise-ce
107
110
108 ## enable proxy prefix middleware, defined above
111 ## enable proxy prefix middleware, defined above
109 #filter-with = proxy-prefix
112 #filter-with = proxy-prefix
110
113
111 ## encryption key used to encrypt social plugin tokens,
114 ## encryption key used to encrypt social plugin tokens,
112 ## remote_urls with credentials etc, if not set it defaults to
115 ## remote_urls with credentials etc, if not set it defaults to
113 ## `beaker.session.secret`
116 ## `beaker.session.secret`
114 #rhodecode.encrypted_values.secret =
117 #rhodecode.encrypted_values.secret =
115
118
116 ## decryption strict mode (enabled by default). It controls if decryption raises
119 ## decryption strict mode (enabled by default). It controls if decryption raises
117 ## `SignatureVerificationError` in case of wrong key, or damaged encryption data.
120 ## `SignatureVerificationError` in case of wrong key, or damaged encryption data.
118 #rhodecode.encrypted_values.strict = false
121 #rhodecode.encrypted_values.strict = false
119
122
120 ## return gzipped responses from Rhodecode (static files/application)
123 ## return gzipped responses from Rhodecode (static files/application)
121 gzip_responses = false
124 gzip_responses = false
122
125
123 ## autogenerate javascript routes file on startup
126 ## autogenerate javascript routes file on startup
124 generate_js_files = false
127 generate_js_files = false
125
128
126 ## Optional Languages
129 ## System global default language.
127 ## en(default), be, de, es, fr, it, ja, pl, pt, ru, zh
130 ## All available languages: en(default), be, de, es, fr, it, ja, pl, pt, ru, zh
128 lang = en
131 lang = en
129
132
130 ## perform a full repository scan on each server start, this should be
133 ## Perform a full repository scan and import on each server start.
131 ## set to false after first startup, to allow faster server restarts.
134 ## Settings this to true could lead to very long startup time.
132 startup.import_repos = false
135 startup.import_repos = false
133
136
134 ## Uncomment and set this path to use archive download cache.
137 ## Uncomment and set this path to use archive download cache.
135 ## Once enabled, generated archives will be cached at this location
138 ## Once enabled, generated archives will be cached at this location
136 ## and served from the cache during subsequent requests for the same archive of
139 ## and served from the cache during subsequent requests for the same archive of
137 ## the repository.
140 ## the repository.
138 #archive_cache_dir = /tmp/tarballcache
141 #archive_cache_dir = /tmp/tarballcache
139
142
140 ## URL at which the application is running. This is used for bootstraping
143 ## URL at which the application is running. This is used for bootstraping
141 ## requests in context when no web request is available. Used in ishell, or
144 ## requests in context when no web request is available. Used in ishell, or
142 ## SSH calls. Set this for events to receive proper url for SSH calls.
145 ## SSH calls. Set this for events to receive proper url for SSH calls.
143 app.base_url = http://rhodecode.local
146 app.base_url = http://rhodecode.local
144
147
145 ## change this to unique ID for security
148 ## Unique application ID. Should be a random unique string for security.
146 app_instance_uuid = rc-production
149 app_instance_uuid = rc-production
147
150
148 ## cut off limit for large diffs (size in bytes). If overall diff size on
151 ## Cut off limit for large diffs (size in bytes). If overall diff size on
149 ## commit, or pull request exceeds this limit this diff will be displayed
152 ## commit, or pull request exceeds this limit this diff will be displayed
150 ## partially. E.g 512000 == 512Kb
153 ## partially. E.g 512000 == 512Kb
151 cut_off_limit_diff = 512000
154 cut_off_limit_diff = 512000
152
155
153 ## cut off limit for large files inside diffs (size in bytes). Each individual
156 ## Cut off limit for large files inside diffs (size in bytes). Each individual
154 ## file inside diff which exceeds this limit will be displayed partially.
157 ## file inside diff which exceeds this limit will be displayed partially.
155 ## E.g 128000 == 128Kb
158 ## E.g 128000 == 128Kb
156 cut_off_limit_file = 128000
159 cut_off_limit_file = 128000
157
160
158 ## use cache version of scm repo everywhere
161 ## use cached version of vcs repositories everywhere. Recommended to be `true`
159 vcs_full_cache = true
162 vcs_full_cache = true
160
163
161 ## force https in RhodeCode, fixes https redirects, assumes it's always https
164 ## Force https in RhodeCode, fixes https redirects, assumes it's always https.
162 ## Normally this is controlled by proper http flags sent from http server
165 ## Normally this is controlled by proper http flags sent from http server
163 force_https = false
166 force_https = false
164
167
165 ## use Strict-Transport-Security headers
168 ## use Strict-Transport-Security headers
166 use_htsts = false
169 use_htsts = false
167
170
168 ## git rev filter option, --all is the default filter, if you need to
171 ## git rev filter option, --all is the default filter, if you need to
169 ## hide all refs in changelog switch this to --branches --tags
172 ## hide all refs in changelog switch this to --branches --tags
170 git_rev_filter = --branches --tags
173 git_rev_filter = --branches --tags
171
174
172 # Set to true if your repos are exposed using the dumb protocol
175 # Set to true if your repos are exposed using the dumb protocol
173 git_update_server_info = false
176 git_update_server_info = false
174
177
175 ## RSS/ATOM feed options
178 ## RSS/ATOM feed options
176 rss_cut_off_limit = 256000
179 rss_cut_off_limit = 256000
177 rss_items_per_page = 10
180 rss_items_per_page = 10
178 rss_include_diff = false
181 rss_include_diff = false
179
182
180 ## gist URL alias, used to create nicer urls for gist. This should be an
183 ## gist URL alias, used to create nicer urls for gist. This should be an
181 ## url that does rewrites to _admin/gists/{gistid}.
184 ## url that does rewrites to _admin/gists/{gistid}.
182 ## example: http://gist.rhodecode.org/{gistid}. Empty means use the internal
185 ## example: http://gist.rhodecode.org/{gistid}. Empty means use the internal
183 ## RhodeCode url, ie. http[s]://rhodecode.server/_admin/gists/{gistid}
186 ## RhodeCode url, ie. http[s]://rhodecode.server/_admin/gists/{gistid}
184 gist_alias_url =
187 gist_alias_url =
185
188
186 ## List of views (using glob pattern syntax) that AUTH TOKENS could be
189 ## List of views (using glob pattern syntax) that AUTH TOKENS could be
187 ## used for access.
190 ## used for access.
188 ## Adding ?auth_token=TOKEN_HASH to the url authenticates this request as if it
191 ## Adding ?auth_token=TOKEN_HASH to the url authenticates this request as if it
189 ## came from the the logged in user who own this authentication token.
192 ## came from the the logged in user who own this authentication token.
190 ## Additionally @TOKEN syntaxt can be used to bound the view to specific
193 ## Additionally @TOKEN syntaxt can be used to bound the view to specific
191 ## authentication token. Such view would be only accessible when used together
194 ## authentication token. Such view would be only accessible when used together
192 ## with this authentication token
195 ## with this authentication token
193 ##
196 ##
194 ## list of all views can be found under `/_admin/permissions/auth_token_access`
197 ## list of all views can be found under `/_admin/permissions/auth_token_access`
195 ## The list should be "," separated and on a single line.
198 ## The list should be "," separated and on a single line.
196 ##
199 ##
197 ## Most common views to enable:
200 ## Most common views to enable:
198 # RepoCommitsView:repo_commit_download
201 # RepoCommitsView:repo_commit_download
199 # RepoCommitsView:repo_commit_patch
202 # RepoCommitsView:repo_commit_patch
200 # RepoCommitsView:repo_commit_raw
203 # RepoCommitsView:repo_commit_raw
201 # RepoCommitsView:repo_commit_raw@TOKEN
204 # RepoCommitsView:repo_commit_raw@TOKEN
202 # RepoFilesView:repo_files_diff
205 # RepoFilesView:repo_files_diff
203 # RepoFilesView:repo_archivefile
206 # RepoFilesView:repo_archivefile
204 # RepoFilesView:repo_file_raw
207 # RepoFilesView:repo_file_raw
205 # GistView:*
208 # GistView:*
206 api_access_controllers_whitelist =
209 api_access_controllers_whitelist =
207
210
208 ## default encoding used to convert from and to unicode
211 ## Default encoding used to convert from and to unicode
209 ## can be also a comma separated list of encoding in case of mixed encodings
212 ## can be also a comma separated list of encoding in case of mixed encodings
210 default_encoding = UTF-8
213 default_encoding = UTF-8
211
214
212 ## instance-id prefix
215 ## instance-id prefix
213 ## a prefix key for this instance used for cache invalidation when running
216 ## a prefix key for this instance used for cache invalidation when running
214 ## multiple instances of rhodecode, make sure it's globally unique for
217 ## multiple instances of rhodecode, make sure it's globally unique for
215 ## all running rhodecode instances. Leave empty if you don't use it
218 ## all running rhodecode instances. Leave empty if you don't use it
216 instance_id =
219 instance_id =
217
220
218 ## Fallback authentication plugin. Set this to a plugin ID to force the usage
221 ## Fallback authentication plugin. Set this to a plugin ID to force the usage
219 ## of an authentication plugin also if it is disabled by it's settings.
222 ## of an authentication plugin also if it is disabled by it's settings.
220 ## This could be useful if you are unable to log in to the system due to broken
223 ## This could be useful if you are unable to log in to the system due to broken
221 ## authentication settings. Then you can enable e.g. the internal rhodecode auth
224 ## authentication settings. Then you can enable e.g. the internal rhodecode auth
222 ## module to log in again and fix the settings.
225 ## module to log in again and fix the settings.
223 ##
226 ##
224 ## Available builtin plugin IDs (hash is part of the ID):
227 ## Available builtin plugin IDs (hash is part of the ID):
225 ## egg:rhodecode-enterprise-ce#rhodecode
228 ## egg:rhodecode-enterprise-ce#rhodecode
226 ## egg:rhodecode-enterprise-ce#pam
229 ## egg:rhodecode-enterprise-ce#pam
227 ## egg:rhodecode-enterprise-ce#ldap
230 ## egg:rhodecode-enterprise-ce#ldap
228 ## egg:rhodecode-enterprise-ce#jasig_cas
231 ## egg:rhodecode-enterprise-ce#jasig_cas
229 ## egg:rhodecode-enterprise-ce#headers
232 ## egg:rhodecode-enterprise-ce#headers
230 ## egg:rhodecode-enterprise-ce#crowd
233 ## egg:rhodecode-enterprise-ce#crowd
231 #rhodecode.auth_plugin_fallback = egg:rhodecode-enterprise-ce#rhodecode
234 #rhodecode.auth_plugin_fallback = egg:rhodecode-enterprise-ce#rhodecode
232
235
233 ## alternative return HTTP header for failed authentication. Default HTTP
236 ## alternative return HTTP header for failed authentication. Default HTTP
234 ## response is 401 HTTPUnauthorized. Currently HG clients have troubles with
237 ## response is 401 HTTPUnauthorized. Currently HG clients have troubles with
235 ## handling that causing a series of failed authentication calls.
238 ## handling that causing a series of failed authentication calls.
236 ## Set this variable to 403 to return HTTPForbidden, or any other HTTP code
239 ## Set this variable to 403 to return HTTPForbidden, or any other HTTP code
237 ## This will be served instead of default 401 on bad authnetication
240 ## This will be served instead of default 401 on bad authnetication
238 auth_ret_code =
241 auth_ret_code =
239
242
240 ## use special detection method when serving auth_ret_code, instead of serving
243 ## use special detection method when serving auth_ret_code, instead of serving
241 ## ret_code directly, use 401 initially (Which triggers credentials prompt)
244 ## ret_code directly, use 401 initially (Which triggers credentials prompt)
242 ## and then serve auth_ret_code to clients
245 ## and then serve auth_ret_code to clients
243 auth_ret_code_detection = false
246 auth_ret_code_detection = false
244
247
245 ## locking return code. When repository is locked return this HTTP code. 2XX
248 ## locking return code. When repository is locked return this HTTP code. 2XX
246 ## codes don't break the transactions while 4XX codes do
249 ## codes don't break the transactions while 4XX codes do
247 lock_ret_code = 423
250 lock_ret_code = 423
248
251
249 ## allows to change the repository location in settings page
252 ## allows to change the repository location in settings page
250 allow_repo_location_change = true
253 allow_repo_location_change = true
251
254
252 ## allows to setup custom hooks in settings page
255 ## allows to setup custom hooks in settings page
253 allow_custom_hooks_settings = true
256 allow_custom_hooks_settings = true
254
257
255 ## generated license token, goto license page in RhodeCode settings to obtain
258 ## Generated license token required for EE edition license.
256 ## new token
259 ## New generated token value can be found in Admin > settings > license page.
257 license_token =
260 license_token =
258
261
259 ## supervisor connection uri, for managing supervisor and logs.
262 ## supervisor connection uri, for managing supervisor and logs.
260 supervisor.uri =
263 supervisor.uri =
261 ## supervisord group name/id we only want this RC instance to handle
264 ## supervisord group name/id we only want this RC instance to handle
262 supervisor.group_id = prod
265 supervisor.group_id = prod
263
266
264 ## Display extended labs settings
267 ## Display extended labs settings
265 labs_settings_active = true
268 labs_settings_active = true
266
269
267 ####################################
270 ####################################
268 ### CELERY CONFIG ####
271 ### CELERY CONFIG ####
269 ####################################
272 ####################################
270 ## run: /path/to/celery worker \
273 ## run: /path/to/celery worker \
271 ## -E --beat --app rhodecode.lib.celerylib.loader \
274 ## -E --beat --app rhodecode.lib.celerylib.loader \
272 ## --scheduler rhodecode.lib.celerylib.scheduler.RcScheduler \
275 ## --scheduler rhodecode.lib.celerylib.scheduler.RcScheduler \
273 ## --loglevel DEBUG --ini /path/to/rhodecode.ini
276 ## --loglevel DEBUG --ini /path/to/rhodecode.ini
274
277
275 use_celery = false
278 use_celery = false
276
279
277 ## connection url to the message broker (default rabbitmq)
280 ## connection url to the message broker (default rabbitmq)
278 celery.broker_url = amqp://rabbitmq:qweqwe@localhost:5672/rabbitmqhost
281 celery.broker_url = amqp://rabbitmq:qweqwe@localhost:5672/rabbitmqhost
279
282
280 ## maximum tasks to execute before worker restart
283 ## maximum tasks to execute before worker restart
281 celery.max_tasks_per_child = 100
284 celery.max_tasks_per_child = 100
282
285
283 ## tasks will never be sent to the queue, but executed locally instead.
286 ## tasks will never be sent to the queue, but executed locally instead.
284 celery.task_always_eager = false
287 celery.task_always_eager = false
285
288
286 ####################################
289 #####################################
287 ### BEAKER CACHE ####
290 ### DOGPILE CACHE ####
288 ####################################
291 #####################################
289 # default cache dir for templates. Putting this into a ramdisk
292 ## Default cache dir for caches. Putting this into a ramdisk
290 ## can boost performance, eg. %(here)s/data_ramdisk
293 ## can boost performance, eg. /tmpfs/data_ramdisk, however this directory might require
294 ## large amount of space
291 cache_dir = %(here)s/data
295 cache_dir = %(here)s/data
292
296
293 ## locking and default file storage for Beaker. Putting this into a ramdisk
297 ## `cache_perms` cache settings for permission tree, auth TTL.
294 ## can boost performance, eg. %(here)s/data_ramdisk/cache/beaker_data
298 rc_cache.cache_perms.backend = dogpile.cache.rc.file_namespace
295 beaker.cache.data_dir = %(here)s/data/cache/beaker_data
299 rc_cache.cache_perms.expiration_time = 300
296 beaker.cache.lock_dir = %(here)s/data/cache/beaker_lock
297
298 beaker.cache.regions = super_short_term, short_term, long_term, sql_cache_short, auth_plugins, repo_cache_long
299
300
300 beaker.cache.super_short_term.type = memory
301 ## alternative `cache_perms` redis backend with distributed lock
301 beaker.cache.super_short_term.expire = 10
302 #rc_cache.cache_perms.backend = dogpile.cache.rc.redis
302 beaker.cache.super_short_term.key_length = 256
303 #rc_cache.cache_perms.expiration_time = 300
304 ## redis_expiration_time needs to be greater then expiration_time
305 #rc_cache.cache_perms.arguments.redis_expiration_time = 7200
306 #rc_cache.cache_perms.arguments.socket_timeout = 30
307 #rc_cache.cache_perms.arguments.host = localhost
308 #rc_cache.cache_perms.arguments.port = 6379
309 #rc_cache.cache_perms.arguments.db = 0
310 #rc_cache.cache_perms.arguments.distributed_lock = true
303
311
304 beaker.cache.short_term.type = memory
312 ## `cache_repo` cache settings for FileTree, Readme, RSS FEEDS
305 beaker.cache.short_term.expire = 60
313 rc_cache.cache_repo.backend = dogpile.cache.rc.file_namespace
306 beaker.cache.short_term.key_length = 256
314 rc_cache.cache_repo.expiration_time = 2592000
307
308 beaker.cache.long_term.type = memory
309 beaker.cache.long_term.expire = 36000
310 beaker.cache.long_term.key_length = 256
311
315
312 beaker.cache.sql_cache_short.type = memory
316 ## alternative `cache_repo` redis backend with distributed lock
313 beaker.cache.sql_cache_short.expire = 10
317 #rc_cache.cache_repo.backend = dogpile.cache.rc.redis
314 beaker.cache.sql_cache_short.key_length = 256
318 #rc_cache.cache_repo.expiration_time = 2592000
319 ## redis_expiration_time needs to be greater then expiration_time
320 #rc_cache.cache_repo.arguments.redis_expiration_time = 2678400
321 #rc_cache.cache_repo.arguments.socket_timeout = 30
322 #rc_cache.cache_repo.arguments.host = localhost
323 #rc_cache.cache_repo.arguments.port = 6379
324 #rc_cache.cache_repo.arguments.db = 1
325 #rc_cache.cache_repo.arguments.distributed_lock = true
315
326
316 ## default is memory cache, configure only if required
327 ## cache settings for SQL queries, this needs to use memory type backend
317 ## using multi-node or multi-worker setup
328 rc_cache.sql_cache_short.backend = dogpile.cache.rc.memory_lru
318 #beaker.cache.auth_plugins.type = ext:database
329 rc_cache.sql_cache_short.expiration_time = 30
319 #beaker.cache.auth_plugins.lock_dir = %(here)s/data/cache/auth_plugin_lock
320 #beaker.cache.auth_plugins.url = postgresql://postgres:secret@localhost/rhodecode
321 #beaker.cache.auth_plugins.url = mysql://root:secret@127.0.0.1/rhodecode
322 #beaker.cache.auth_plugins.sa.pool_recycle = 3600
323 #beaker.cache.auth_plugins.sa.pool_size = 10
324 #beaker.cache.auth_plugins.sa.max_overflow = 0
325
330
326 beaker.cache.repo_cache_long.type = memorylru_base
331 ## `cache_repo_longterm` cache for repo object instances, this needs to use memory
327 beaker.cache.repo_cache_long.max_items = 4096
332 ## type backend as the objects kept are not pickle serializable
328 beaker.cache.repo_cache_long.expire = 2592000
333 rc_cache.cache_repo_longterm.backend = dogpile.cache.rc.memory_lru
334 ## by default we use 96H, this is using invalidation on push anyway
335 rc_cache.cache_repo_longterm.expiration_time = 345600
336 ## max items in LRU cache, reduce this number to save memory, and expire last used
337 ## cached objects
338 rc_cache.cache_repo_longterm.max_size = 10000
329
339
330 ## default is memorylru_base cache, configure only if required
331 ## using multi-node or multi-worker setup
332 #beaker.cache.repo_cache_long.type = ext:memcached
333 #beaker.cache.repo_cache_long.url = localhost:11211
334 #beaker.cache.repo_cache_long.expire = 1209600
335 #beaker.cache.repo_cache_long.key_length = 256
336
340
337 ####################################
341 ####################################
338 ### BEAKER SESSION ####
342 ### BEAKER SESSION ####
339 ####################################
343 ####################################
340
344
341 ## .session.type is type of storage options for the session, current allowed
345 ## .session.type is type of storage options for the session, current allowed
342 ## types are file, ext:memcached, ext:database, and memory (default).
346 ## types are file, ext:memcached, ext:redis, ext:database, and memory (default).
343 beaker.session.type = file
347 beaker.session.type = file
344 beaker.session.data_dir = %(here)s/data/sessions/data
348 beaker.session.data_dir = %(here)s/data/sessions
345
349
346 ## db based session, fast, and allows easy management over logged in users
350 ## db based session, fast, and allows easy management over logged in users
347 #beaker.session.type = ext:database
351 #beaker.session.type = ext:database
348 #beaker.session.table_name = db_session
352 #beaker.session.table_name = db_session
349 #beaker.session.sa.url = postgresql://postgres:secret@localhost/rhodecode
353 #beaker.session.sa.url = postgresql://postgres:secret@localhost/rhodecode
350 #beaker.session.sa.url = mysql://root:secret@127.0.0.1/rhodecode
354 #beaker.session.sa.url = mysql://root:secret@127.0.0.1/rhodecode
351 #beaker.session.sa.pool_recycle = 3600
355 #beaker.session.sa.pool_recycle = 3600
352 #beaker.session.sa.echo = false
356 #beaker.session.sa.echo = false
353
357
354 beaker.session.key = rhodecode
358 beaker.session.key = rhodecode
355 beaker.session.secret = production-rc-uytcxaz
359 beaker.session.secret = production-rc-uytcxaz
356 beaker.session.lock_dir = %(here)s/data/sessions/lock
360 beaker.session.lock_dir = %(here)s/data/sessions/lock
357
361
358 ## Secure encrypted cookie. Requires AES and AES python libraries
362 ## Secure encrypted cookie. Requires AES and AES python libraries
359 ## you must disable beaker.session.secret to use this
363 ## you must disable beaker.session.secret to use this
360 #beaker.session.encrypt_key = key_for_encryption
364 #beaker.session.encrypt_key = key_for_encryption
361 #beaker.session.validate_key = validation_key
365 #beaker.session.validate_key = validation_key
362
366
363 ## sets session as invalid(also logging out user) if it haven not been
367 ## sets session as invalid(also logging out user) if it haven not been
364 ## accessed for given amount of time in seconds
368 ## accessed for given amount of time in seconds
365 beaker.session.timeout = 2592000
369 beaker.session.timeout = 2592000
366 beaker.session.httponly = true
370 beaker.session.httponly = true
367 ## Path to use for the cookie. Set to prefix if you use prefix middleware
371 ## Path to use for the cookie. Set to prefix if you use prefix middleware
368 #beaker.session.cookie_path = /custom_prefix
372 #beaker.session.cookie_path = /custom_prefix
369
373
370 ## uncomment for https secure cookie
374 ## uncomment for https secure cookie
371 beaker.session.secure = false
375 beaker.session.secure = false
372
376
373 ## auto save the session to not to use .save()
377 ## auto save the session to not to use .save()
374 beaker.session.auto = false
378 beaker.session.auto = false
375
379
376 ## default cookie expiration time in seconds, set to `true` to set expire
380 ## default cookie expiration time in seconds, set to `true` to set expire
377 ## at browser close
381 ## at browser close
378 #beaker.session.cookie_expires = 3600
382 #beaker.session.cookie_expires = 3600
379
383
380 ###################################
384 ###################################
381 ## SEARCH INDEXING CONFIGURATION ##
385 ## SEARCH INDEXING CONFIGURATION ##
382 ###################################
386 ###################################
383 ## Full text search indexer is available in rhodecode-tools under
387 ## Full text search indexer is available in rhodecode-tools under
384 ## `rhodecode-tools index` command
388 ## `rhodecode-tools index` command
385
389
386 ## WHOOSH Backend, doesn't require additional services to run
390 ## WHOOSH Backend, doesn't require additional services to run
387 ## it works good with few dozen repos
391 ## it works good with few dozen repos
388 search.module = rhodecode.lib.index.whoosh
392 search.module = rhodecode.lib.index.whoosh
389 search.location = %(here)s/data/index
393 search.location = %(here)s/data/index
390
394
391 ########################################
395 ########################################
392 ### CHANNELSTREAM CONFIG ####
396 ### CHANNELSTREAM CONFIG ####
393 ########################################
397 ########################################
394 ## channelstream enables persistent connections and live notification
398 ## channelstream enables persistent connections and live notification
395 ## in the system. It's also used by the chat system
399 ## in the system. It's also used by the chat system
396 channelstream.enabled = false
400 channelstream.enabled = false
397
401
398 ## server address for channelstream server on the backend
402 ## server address for channelstream server on the backend
399 channelstream.server = 127.0.0.1:9800
403 channelstream.server = 127.0.0.1:9800
400
404
401 ## location of the channelstream server from outside world
405 ## location of the channelstream server from outside world
402 ## use ws:// for http or wss:// for https. This address needs to be handled
406 ## use ws:// for http or wss:// for https. This address needs to be handled
403 ## by external HTTP server such as Nginx or Apache
407 ## by external HTTP server such as Nginx or Apache
404 ## see nginx/apache configuration examples in our docs
408 ## see nginx/apache configuration examples in our docs
405 channelstream.ws_url = ws://rhodecode.yourserver.com/_channelstream
409 channelstream.ws_url = ws://rhodecode.yourserver.com/_channelstream
406 channelstream.secret = secret
410 channelstream.secret = secret
407 channelstream.history.location = %(here)s/channelstream_history
411 channelstream.history.location = %(here)s/channelstream_history
408
412
409 ## Internal application path that Javascript uses to connect into.
413 ## Internal application path that Javascript uses to connect into.
410 ## If you use proxy-prefix the prefix should be added before /_channelstream
414 ## If you use proxy-prefix the prefix should be added before /_channelstream
411 channelstream.proxy_path = /_channelstream
415 channelstream.proxy_path = /_channelstream
412
416
413
417
414 ###################################
418 ###################################
415 ## APPENLIGHT CONFIG ##
419 ## APPENLIGHT CONFIG ##
416 ###################################
420 ###################################
417
421
418 ## Appenlight is tailored to work with RhodeCode, see
422 ## Appenlight is tailored to work with RhodeCode, see
419 ## http://appenlight.com for details how to obtain an account
423 ## http://appenlight.com for details how to obtain an account
420
424
421 ## appenlight integration enabled
425 ## appenlight integration enabled
422 appenlight = false
426 appenlight = false
423
427
424 appenlight.server_url = https://api.appenlight.com
428 appenlight.server_url = https://api.appenlight.com
425 appenlight.api_key = YOUR_API_KEY
429 appenlight.api_key = YOUR_API_KEY
426 #appenlight.transport_config = https://api.appenlight.com?threaded=1&timeout=5
430 #appenlight.transport_config = https://api.appenlight.com?threaded=1&timeout=5
427
431
428 # used for JS client
432 # used for JS client
429 appenlight.api_public_key = YOUR_API_PUBLIC_KEY
433 appenlight.api_public_key = YOUR_API_PUBLIC_KEY
430
434
431 ## TWEAK AMOUNT OF INFO SENT HERE
435 ## TWEAK AMOUNT OF INFO SENT HERE
432
436
433 ## enables 404 error logging (default False)
437 ## enables 404 error logging (default False)
434 appenlight.report_404 = false
438 appenlight.report_404 = false
435
439
436 ## time in seconds after request is considered being slow (default 1)
440 ## time in seconds after request is considered being slow (default 1)
437 appenlight.slow_request_time = 1
441 appenlight.slow_request_time = 1
438
442
439 ## record slow requests in application
443 ## record slow requests in application
440 ## (needs to be enabled for slow datastore recording and time tracking)
444 ## (needs to be enabled for slow datastore recording and time tracking)
441 appenlight.slow_requests = true
445 appenlight.slow_requests = true
442
446
443 ## enable hooking to application loggers
447 ## enable hooking to application loggers
444 appenlight.logging = true
448 appenlight.logging = true
445
449
446 ## minimum log level for log capture
450 ## minimum log level for log capture
447 appenlight.logging.level = WARNING
451 appenlight.logging.level = WARNING
448
452
449 ## send logs only from erroneous/slow requests
453 ## send logs only from erroneous/slow requests
450 ## (saves API quota for intensive logging)
454 ## (saves API quota for intensive logging)
451 appenlight.logging_on_error = false
455 appenlight.logging_on_error = false
452
456
453 ## list of additonal keywords that should be grabbed from environ object
457 ## list of additonal keywords that should be grabbed from environ object
454 ## can be string with comma separated list of words in lowercase
458 ## can be string with comma separated list of words in lowercase
455 ## (by default client will always send following info:
459 ## (by default client will always send following info:
456 ## 'REMOTE_USER', 'REMOTE_ADDR', 'SERVER_NAME', 'CONTENT_TYPE' + all keys that
460 ## 'REMOTE_USER', 'REMOTE_ADDR', 'SERVER_NAME', 'CONTENT_TYPE' + all keys that
457 ## start with HTTP* this list be extended with additional keywords here
461 ## start with HTTP* this list be extended with additional keywords here
458 appenlight.environ_keys_whitelist =
462 appenlight.environ_keys_whitelist =
459
463
460 ## list of keywords that should be blanked from request object
464 ## list of keywords that should be blanked from request object
461 ## can be string with comma separated list of words in lowercase
465 ## can be string with comma separated list of words in lowercase
462 ## (by default client will always blank keys that contain following words
466 ## (by default client will always blank keys that contain following words
463 ## 'password', 'passwd', 'pwd', 'auth_tkt', 'secret', 'csrf'
467 ## 'password', 'passwd', 'pwd', 'auth_tkt', 'secret', 'csrf'
464 ## this list be extended with additional keywords set here
468 ## this list be extended with additional keywords set here
465 appenlight.request_keys_blacklist =
469 appenlight.request_keys_blacklist =
466
470
467 ## list of namespaces that should be ignores when gathering log entries
471 ## list of namespaces that should be ignores when gathering log entries
468 ## can be string with comma separated list of namespaces
472 ## can be string with comma separated list of namespaces
469 ## (by default the client ignores own entries: appenlight_client.client)
473 ## (by default the client ignores own entries: appenlight_client.client)
470 appenlight.log_namespace_blacklist =
474 appenlight.log_namespace_blacklist =
471
475
472
476
473 ################################################################################
477 ################################################################################
474 ## WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION ENVIRONMENT* ##
478 ## WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION ENVIRONMENT* ##
475 ## Debug mode will enable the interactive debugging tool, allowing ANYONE to ##
479 ## Debug mode will enable the interactive debugging tool, allowing ANYONE to ##
476 ## execute malicious code after an exception is raised. ##
480 ## execute malicious code after an exception is raised. ##
477 ################################################################################
481 ################################################################################
478 set debug = false
482 set debug = false
479
483
480
484
481 ###########################################
485 ###########################################
482 ### MAIN RHODECODE DATABASE CONFIG ###
486 ### MAIN RHODECODE DATABASE CONFIG ###
483 ###########################################
487 ###########################################
484 #sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db?timeout=30
488 #sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db?timeout=30
485 #sqlalchemy.db1.url = postgresql://postgres:qweqwe@localhost/rhodecode
489 #sqlalchemy.db1.url = postgresql://postgres:qweqwe@localhost/rhodecode
486 #sqlalchemy.db1.url = mysql://root:qweqwe@localhost/rhodecode
490 #sqlalchemy.db1.url = mysql://root:qweqwe@localhost/rhodecode
491 # pymysql is an alternative driver for MySQL, use in case of problems with default one
492 #sqlalchemy.db1.url = mysql+pymysql://root:qweqwe@localhost/rhodecode
493
487 sqlalchemy.db1.url = postgresql://postgres:qweqwe@localhost/rhodecode
494 sqlalchemy.db1.url = postgresql://postgres:qweqwe@localhost/rhodecode
488
495
489 # see sqlalchemy docs for other advanced settings
496 # see sqlalchemy docs for other advanced settings
490
497
491 ## print the sql statements to output
498 ## print the sql statements to output
492 sqlalchemy.db1.echo = false
499 sqlalchemy.db1.echo = false
493 ## recycle the connections after this amount of seconds
500 ## recycle the connections after this amount of seconds
494 sqlalchemy.db1.pool_recycle = 3600
501 sqlalchemy.db1.pool_recycle = 3600
495 sqlalchemy.db1.convert_unicode = true
502 sqlalchemy.db1.convert_unicode = true
496
503
497 ## the number of connections to keep open inside the connection pool.
504 ## the number of connections to keep open inside the connection pool.
498 ## 0 indicates no limit
505 ## 0 indicates no limit
499 #sqlalchemy.db1.pool_size = 5
506 #sqlalchemy.db1.pool_size = 5
500
507
501 ## the number of connections to allow in connection pool "overflow", that is
508 ## the number of connections to allow in connection pool "overflow", that is
502 ## connections that can be opened above and beyond the pool_size setting,
509 ## connections that can be opened above and beyond the pool_size setting,
503 ## which defaults to five.
510 ## which defaults to five.
504 #sqlalchemy.db1.max_overflow = 10
511 #sqlalchemy.db1.max_overflow = 10
505
512
513 ## Connection check ping, used to detect broken database connections
514 ## could be enabled to better handle cases if MySQL has gone away errors
515 #sqlalchemy.db1.ping_connection = true
506
516
507 ##################
517 ##################
508 ### VCS CONFIG ###
518 ### VCS CONFIG ###
509 ##################
519 ##################
510 vcs.server.enable = true
520 vcs.server.enable = true
511 vcs.server = localhost:9900
521 vcs.server = localhost:9900
512
522
513 ## Web server connectivity protocol, responsible for web based VCS operatations
523 ## Web server connectivity protocol, responsible for web based VCS operatations
514 ## Available protocols are:
524 ## Available protocols are:
515 ## `http` - use http-rpc backend (default)
525 ## `http` - use http-rpc backend (default)
516 vcs.server.protocol = http
526 vcs.server.protocol = http
517
527
518 ## Push/Pull operations protocol, available options are:
528 ## Push/Pull operations protocol, available options are:
519 ## `http` - use http-rpc backend (default)
529 ## `http` - use http-rpc backend (default)
520 ##
521 vcs.scm_app_implementation = http
530 vcs.scm_app_implementation = http
522
531
523 ## Push/Pull operations hooks protocol, available options are:
532 ## Push/Pull operations hooks protocol, available options are:
524 ## `http` - use http-rpc backend (default)
533 ## `http` - use http-rpc backend (default)
525 vcs.hooks.protocol = http
534 vcs.hooks.protocol = http
535 ## Host on which this instance is listening for hooks. If vcsserver is in other location
536 ## this should be adjusted.
537 vcs.hooks.host = 127.0.0.1
526
538
527 vcs.server.log_level = info
539 vcs.server.log_level = info
528 ## Start VCSServer with this instance as a subprocess, usefull for development
540 ## Start VCSServer with this instance as a subprocess, useful for development
529 vcs.start_server = false
541 vcs.start_server = false
530
542
531 ## List of enabled VCS backends, available options are:
543 ## List of enabled VCS backends, available options are:
532 ## `hg` - mercurial
544 ## `hg` - mercurial
533 ## `git` - git
545 ## `git` - git
534 ## `svn` - subversion
546 ## `svn` - subversion
535 vcs.backends = hg, git, svn
547 vcs.backends = hg, git, svn
536
548
537 vcs.connection_timeout = 3600
549 vcs.connection_timeout = 3600
538 ## Compatibility version when creating SVN repositories. Defaults to newest version when commented out.
550 ## Compatibility version when creating SVN repositories. Defaults to newest version when commented out.
539 ## Available options are: pre-1.4-compatible, pre-1.5-compatible, pre-1.6-compatible, pre-1.8-compatible, pre-1.9-compatible
551 ## Available options are: pre-1.4-compatible, pre-1.5-compatible, pre-1.6-compatible, pre-1.8-compatible, pre-1.9-compatible
540 #vcs.svn.compatible_version = pre-1.8-compatible
552 #vcs.svn.compatible_version = pre-1.8-compatible
541
553
542
554
543 ############################################################
555 ############################################################
544 ### Subversion proxy support (mod_dav_svn) ###
556 ### Subversion proxy support (mod_dav_svn) ###
545 ### Maps RhodeCode repo groups into SVN paths for Apache ###
557 ### Maps RhodeCode repo groups into SVN paths for Apache ###
546 ############################################################
558 ############################################################
547 ## Enable or disable the config file generation.
559 ## Enable or disable the config file generation.
548 svn.proxy.generate_config = false
560 svn.proxy.generate_config = false
549 ## Generate config file with `SVNListParentPath` set to `On`.
561 ## Generate config file with `SVNListParentPath` set to `On`.
550 svn.proxy.list_parent_path = true
562 svn.proxy.list_parent_path = true
551 ## Set location and file name of generated config file.
563 ## Set location and file name of generated config file.
552 svn.proxy.config_file_path = %(here)s/mod_dav_svn.conf
564 svn.proxy.config_file_path = %(here)s/mod_dav_svn.conf
553 ## alternative mod_dav config template. This needs to be a mako template
565 ## alternative mod_dav config template. This needs to be a mako template
554 #svn.proxy.config_template = ~/.rccontrol/enterprise-1/custom_svn_conf.mako
566 #svn.proxy.config_template = ~/.rccontrol/enterprise-1/custom_svn_conf.mako
555 ## Used as a prefix to the `Location` block in the generated config file.
567 ## Used as a prefix to the `Location` block in the generated config file.
556 ## In most cases it should be set to `/`.
568 ## In most cases it should be set to `/`.
557 svn.proxy.location_root = /
569 svn.proxy.location_root = /
558 ## Command to reload the mod dav svn configuration on change.
570 ## Command to reload the mod dav svn configuration on change.
559 ## Example: `/etc/init.d/apache2 reload`
571 ## Example: `/etc/init.d/apache2 reload`
560 #svn.proxy.reload_cmd = /etc/init.d/apache2 reload
572 #svn.proxy.reload_cmd = /etc/init.d/apache2 reload
561 ## If the timeout expires before the reload command finishes, the command will
573 ## If the timeout expires before the reload command finishes, the command will
562 ## be killed. Setting it to zero means no timeout. Defaults to 10 seconds.
574 ## be killed. Setting it to zero means no timeout. Defaults to 10 seconds.
563 #svn.proxy.reload_timeout = 10
575 #svn.proxy.reload_timeout = 10
564
576
565 ############################################################
577 ############################################################
566 ### SSH Support Settings ###
578 ### SSH Support Settings ###
567 ############################################################
579 ############################################################
568
580
569 ## Defines if a custom authorized_keys file should be created and written on
581 ## Defines if a custom authorized_keys file should be created and written on
570 ## any change user ssh keys. Setting this to false also disables posibility
582 ## any change user ssh keys. Setting this to false also disables posibility
571 ## of adding SSH keys by users from web interface. Super admins can still
583 ## of adding SSH keys by users from web interface. Super admins can still
572 ## manage SSH Keys.
584 ## manage SSH Keys.
573 ssh.generate_authorized_keyfile = false
585 ssh.generate_authorized_keyfile = false
574
586
575 ## Options for ssh, default is `no-pty,no-port-forwarding,no-X11-forwarding,no-agent-forwarding`
587 ## Options for ssh, default is `no-pty,no-port-forwarding,no-X11-forwarding,no-agent-forwarding`
576 # ssh.authorized_keys_ssh_opts =
588 # ssh.authorized_keys_ssh_opts =
577
589
578 ## Path to the authrozied_keys file where the generate entries are placed.
590 ## Path to the authrozied_keys file where the generate entries are placed.
579 ## It is possible to have multiple key files specified in `sshd_config` e.g.
591 ## It is possible to have multiple key files specified in `sshd_config` e.g.
580 ## AuthorizedKeysFile %h/.ssh/authorized_keys %h/.ssh/authorized_keys_rhodecode
592 ## AuthorizedKeysFile %h/.ssh/authorized_keys %h/.ssh/authorized_keys_rhodecode
581 ssh.authorized_keys_file_path = ~/.ssh/authorized_keys_rhodecode
593 ssh.authorized_keys_file_path = ~/.ssh/authorized_keys_rhodecode
582
594
583 ## Command to execute the SSH wrapper. The binary is available in the
595 ## Command to execute the SSH wrapper. The binary is available in the
584 ## rhodecode installation directory.
596 ## rhodecode installation directory.
585 ## e.g ~/.rccontrol/community-1/profile/bin/rc-ssh-wrapper
597 ## e.g ~/.rccontrol/community-1/profile/bin/rc-ssh-wrapper
586 ssh.wrapper_cmd = ~/.rccontrol/community-1/rc-ssh-wrapper
598 ssh.wrapper_cmd = ~/.rccontrol/community-1/rc-ssh-wrapper
587
599
588 ## Allow shell when executing the ssh-wrapper command
600 ## Allow shell when executing the ssh-wrapper command
589 ssh.wrapper_cmd_allow_shell = false
601 ssh.wrapper_cmd_allow_shell = false
590
602
591 ## Enables logging, and detailed output send back to the client during SSH
603 ## Enables logging, and detailed output send back to the client during SSH
592 ## operations. Usefull for debugging, shouldn't be used in production.
604 ## operations. Usefull for debugging, shouldn't be used in production.
593 ssh.enable_debug_logging = false
605 ssh.enable_debug_logging = false
594
606
595 ## Paths to binary executable, by default they are the names, but we can
607 ## Paths to binary executable, by default they are the names, but we can
596 ## override them if we want to use a custom one
608 ## override them if we want to use a custom one
597 ssh.executable.hg = ~/.rccontrol/vcsserver-1/profile/bin/hg
609 ssh.executable.hg = ~/.rccontrol/vcsserver-1/profile/bin/hg
598 ssh.executable.git = ~/.rccontrol/vcsserver-1/profile/bin/git
610 ssh.executable.git = ~/.rccontrol/vcsserver-1/profile/bin/git
599 ssh.executable.svn = ~/.rccontrol/vcsserver-1/profile/bin/svnserve
611 ssh.executable.svn = ~/.rccontrol/vcsserver-1/profile/bin/svnserve
600
612
601
613
602 ## Dummy marker to add new entries after.
614 ## Dummy marker to add new entries after.
603 ## Add any custom entries below. Please don't remove.
615 ## Add any custom entries below. Please don't remove.
604 custom.conf = 1
616 custom.conf = 1
605
617
606
618
607 ################################
619 ################################
608 ### LOGGING CONFIGURATION ####
620 ### LOGGING CONFIGURATION ####
609 ################################
621 ################################
610 [loggers]
622 [loggers]
611 keys = root, sqlalchemy, beaker, rhodecode, ssh_wrapper, celery
623 keys = root, sqlalchemy, beaker, celery, rhodecode, ssh_wrapper
612
624
613 [handlers]
625 [handlers]
614 keys = console, console_sql
626 keys = console, console_sql
615
627
616 [formatters]
628 [formatters]
617 keys = generic, color_formatter, color_formatter_sql
629 keys = generic, color_formatter, color_formatter_sql
618
630
619 #############
631 #############
620 ## LOGGERS ##
632 ## LOGGERS ##
621 #############
633 #############
622 [logger_root]
634 [logger_root]
623 level = NOTSET
635 level = NOTSET
624 handlers = console
636 handlers = console
625
637
626 [logger_sqlalchemy]
638 [logger_sqlalchemy]
627 level = INFO
639 level = INFO
628 handlers = console_sql
640 handlers = console_sql
629 qualname = sqlalchemy.engine
641 qualname = sqlalchemy.engine
630 propagate = 0
642 propagate = 0
631
643
632 [logger_beaker]
644 [logger_beaker]
633 level = DEBUG
645 level = DEBUG
634 handlers =
646 handlers =
635 qualname = beaker.container
647 qualname = beaker.container
636 propagate = 1
648 propagate = 1
637
649
638 [logger_rhodecode]
650 [logger_rhodecode]
639 level = DEBUG
651 level = DEBUG
640 handlers =
652 handlers =
641 qualname = rhodecode
653 qualname = rhodecode
642 propagate = 1
654 propagate = 1
643
655
644 [logger_ssh_wrapper]
656 [logger_ssh_wrapper]
645 level = DEBUG
657 level = DEBUG
646 handlers =
658 handlers =
647 qualname = ssh_wrapper
659 qualname = ssh_wrapper
648 propagate = 1
660 propagate = 1
649
661
650 [logger_celery]
662 [logger_celery]
651 level = DEBUG
663 level = DEBUG
652 handlers =
664 handlers =
653 qualname = celery
665 qualname = celery
654
666
655
667
656 ##############
668 ##############
657 ## HANDLERS ##
669 ## HANDLERS ##
658 ##############
670 ##############
659
671
660 [handler_console]
672 [handler_console]
661 class = StreamHandler
673 class = StreamHandler
662 args = (sys.stderr, )
674 args = (sys.stderr, )
663 level = INFO
675 level = INFO
664 formatter = generic
676 formatter = generic
665
677
666 [handler_console_sql]
678 [handler_console_sql]
679 # "level = DEBUG" logs SQL queries and results.
680 # "level = INFO" logs SQL queries.
681 # "level = WARN" logs neither. (Recommended for production systems.)
667 class = StreamHandler
682 class = StreamHandler
668 args = (sys.stderr, )
683 args = (sys.stderr, )
669 level = WARN
684 level = WARN
670 formatter = generic
685 formatter = generic
671
686
672 ################
687 ################
673 ## FORMATTERS ##
688 ## FORMATTERS ##
674 ################
689 ################
675
690
676 [formatter_generic]
691 [formatter_generic]
677 class = rhodecode.lib.logging_formatter.ExceptionAwareFormatter
692 class = rhodecode.lib.logging_formatter.ExceptionAwareFormatter
678 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
693 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
679 datefmt = %Y-%m-%d %H:%M:%S
694 datefmt = %Y-%m-%d %H:%M:%S
680
695
681 [formatter_color_formatter]
696 [formatter_color_formatter]
682 class = rhodecode.lib.logging_formatter.ColorFormatter
697 class = rhodecode.lib.logging_formatter.ColorFormatter
683 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
698 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
684 datefmt = %Y-%m-%d %H:%M:%S
699 datefmt = %Y-%m-%d %H:%M:%S
685
700
686 [formatter_color_formatter_sql]
701 [formatter_color_formatter_sql]
687 class = rhodecode.lib.logging_formatter.ColorFormatterSql
702 class = rhodecode.lib.logging_formatter.ColorFormatterSql
688 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
703 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
689 datefmt = %Y-%m-%d %H:%M:%S
704 datefmt = %Y-%m-%d %H:%M:%S
@@ -1,243 +1,258 b''
1 # Nix environment for the community edition
1 # Nix environment for the community edition
2 #
2 #
3 # This shall be as lean as possible, just producing the Enterprise
3 # This shall be as lean as possible, just producing the enterprise-ce
4 # derivation. For advanced tweaks to pimp up the development environment we use
4 # derivation. For advanced tweaks to pimp up the development environment we use
5 # "shell.nix" so that it does not have to clutter this file.
5 # "shell.nix" so that it does not have to clutter this file.
6 #
7 # Configuration, set values in "~/.nixpkgs/config.nix".
8 # example
9 # {
10 # # Thoughts on how to configure the dev environment
11 # rc = {
12 # codeInternalUrl = "https://usr:token@internal-code.rhodecode.com";
13 # sources = {
14 # rhodecode-vcsserver = "/home/user/work/rhodecode-vcsserver";
15 # rhodecode-enterprise-ce = "/home/user/work/rhodecode-enterprise-ce";
16 # rhodecode-enterprise-ee = "/home/user/work/rhodecode-enterprise-ee";
17 # };
18 # };
19 # }
6
20
7 args@
21 args@
8 { pythonPackages ? "python27Packages"
22 { pythonPackages ? "python27Packages"
9 , pythonExternalOverrides ? self: super: {}
23 , pythonExternalOverrides ? self: super: {}
10 , doCheck ? true
24 , doCheck ? false
11 , ...
25 , ...
12 }:
26 }:
13
27
14 let
28 let
15
16 # Use nixpkgs from args or import them. We use this indirect approach
29 # Use nixpkgs from args or import them. We use this indirect approach
17 # through args to be able to use the name `pkgs` for our customized packages.
30 # through args to be able to use the name `pkgs` for our customized packages.
18 # Otherwise we will end up with an infinite recursion.
31 # Otherwise we will end up with an infinite recursion.
19 nixpkgs = args.pkgs or (import <nixpkgs> { });
32 pkgs = args.pkgs or (import <nixpkgs> { });
20
33
21 # johbo: Interim bridge which allows us to build with the upcoming
34 # Works with the new python-packages, still can fallback to the old
22 # nixos.16.09 branch (unstable at the moment of writing this note) and the
35 # variant.
23 # current stable nixos-16.03.
36 basePythonPackagesUnfix = basePythonPackages.__unfix__ or (
24 backwardsCompatibleFetchgit = { ... }@args:
37 self: basePythonPackages.override (a: { inherit self; }));
25 let
26 origSources = nixpkgs.fetchgit args;
27 in
28 nixpkgs.lib.overrideDerivation origSources (oldAttrs: {
29 NIX_PREFETCH_GIT_CHECKOUT_HOOK = ''
30 find $out -name '.git*' -print0 | xargs -0 rm -rf
31 '';
32 });
33
34 # Create a customized version of nixpkgs which should be used throughout the
35 # rest of this file.
36 pkgs = nixpkgs.overridePackages (self: super: {
37 fetchgit = backwardsCompatibleFetchgit;
38 });
39
38
40 # Evaluates to the last segment of a file system path.
39 # Evaluates to the last segment of a file system path.
41 basename = path: with pkgs.lib; last (splitString "/" path);
40 basename = path: with pkgs.lib; last (splitString "/" path);
42
41
43 # source code filter used as arugment to builtins.filterSource.
42 # source code filter used as arugment to builtins.filterSource.
44 src-filter = path: type: with pkgs.lib;
43 src-filter = path: type: with pkgs.lib;
45 let
44 let
46 ext = last (splitString "." path);
45 ext = last (splitString "." path);
47 in
46 in
48 !builtins.elem (basename path) [
47 !builtins.elem (basename path) [
49 ".git" ".hg" "__pycache__" ".eggs"
48 ".git" ".hg" "__pycache__" ".eggs" ".idea" ".dev"
50 "bower_components" "node_modules"
49 "bower_components" "node_modules"
51 "build" "data" "result" "tmp"] &&
50 "build" "data" "result" "tmp"] &&
52 !builtins.elem ext ["egg-info" "pyc"] &&
51 !builtins.elem ext ["egg-info" "pyc"] &&
53 # TODO: johbo: This check is wrong, since "path" contains an absolute path,
52 # TODO: johbo: This check is wrong, since "path" contains an absolute path,
54 # it would still be good to restore it since we want to ignore "result-*".
53 # it would still be good to restore it since we want to ignore "result-*".
55 !hasPrefix "result" path;
54 !hasPrefix "result" path;
56
55
57 basePythonPackages = with builtins; if isAttrs pythonPackages
56 sources =
58 then pythonPackages
57 let
59 else getAttr pythonPackages pkgs;
58 inherit (pkgs.lib) all isString attrValues;
59 sourcesConfig = pkgs.config.rc.sources or {};
60 in
61 # Ensure that sources are configured as strings. Using a path
62 # would result in a copy into the nix store.
63 assert all isString (attrValues sourcesConfig);
64 sourcesConfig;
60
65
61 buildBowerComponents =
66 version = builtins.readFile "${rhodecode-enterprise-ce-src}/rhodecode/VERSION";
62 pkgs.buildBowerComponents or
63 (import ./pkgs/backport-16.03-build-bower-components.nix { inherit pkgs; });
64
65 sources = pkgs.config.rc.sources or {};
66 version = builtins.readFile ./rhodecode/VERSION;
67 rhodecode-enterprise-ce-src = builtins.filterSource src-filter ./.;
67 rhodecode-enterprise-ce-src = builtins.filterSource src-filter ./.;
68
68
69 buildBowerComponents = pkgs.buildBowerComponents;
69 nodeEnv = import ./pkgs/node-default.nix {
70 nodeEnv = import ./pkgs/node-default.nix {
70 inherit pkgs;
71 inherit pkgs;
71 };
72 };
72 nodeDependencies = nodeEnv.shell.nodeDependencies;
73 nodeDependencies = nodeEnv.shell.nodeDependencies;
73
74
74 bowerComponents = buildBowerComponents {
75 bowerComponents = buildBowerComponents {
75 name = "enterprise-ce-${version}";
76 name = "enterprise-ce-${version}";
76 generated = ./pkgs/bower-packages.nix;
77 generated = ./pkgs/bower-packages.nix;
77 src = rhodecode-enterprise-ce-src;
78 src = rhodecode-enterprise-ce-src;
78 };
79 };
79
80
80 pythonGeneratedPackages = self: basePythonPackages.override (a: {
81 rhodecode-testdata-src = sources.rhodecode-testdata or (
81 inherit self;
82 pkgs.fetchhg {
82 })
83 url = "https://code.rhodecode.com/upstream/rc_testdata";
83 // (scopedImport {
84 rev = "v0.10.0";
84 self = self;
85 sha256 = "0zn9swwvx4vgw4qn8q3ri26vvzgrxn15x6xnjrysi1bwmz01qjl0";
85 super = basePythonPackages;
86 });
86 inherit pkgs;
87 inherit (pkgs) fetchurl fetchgit;
88 } ./pkgs/python-packages.nix);
89
87
90 pythonOverrides = import ./pkgs/python-packages-overrides.nix {
88 rhodecode-testdata = import "${rhodecode-testdata-src}/default.nix" {
91 inherit
89 inherit
92 basePythonPackages
90 doCheck
93 pkgs;
91 pkgs
92 pythonPackages;
94 };
93 };
95
94
96 pythonLocalOverrides = self: super: {
95 pythonLocalOverrides = self: super: {
97 rhodecode-enterprise-ce =
96 rhodecode-enterprise-ce =
98 let
97 let
99 linkNodeAndBowerPackages = ''
98 linkNodeAndBowerPackages = ''
100 echo "Export RhodeCode CE path"
101 export RHODECODE_CE_PATH=${rhodecode-enterprise-ce-src}
99 export RHODECODE_CE_PATH=${rhodecode-enterprise-ce-src}
102 echo "Link node packages"
100
101 echo "[BEGIN]: Link node packages"
103 rm -fr node_modules
102 rm -fr node_modules
104 mkdir node_modules
103 mkdir node_modules
105 # johbo: Linking individual packages allows us to run "npm install"
104 # johbo: Linking individual packages allows us to run "npm install"
106 # inside of a shell to try things out. Re-entering the shell will
105 # inside of a shell to try things out. Re-entering the shell will
107 # restore a clean environment.
106 # restore a clean environment.
108 ln -s ${nodeDependencies}/lib/node_modules/* node_modules/
107 ln -s ${nodeDependencies}/lib/node_modules/* node_modules/
108 echo "[DONE]: Link node packages"
109
109
110 echo "DONE: Link node packages"
110 echo "[BEGIN]: Link bower packages"
111
112 echo "Link bower packages"
113 rm -fr bower_components
111 rm -fr bower_components
114 mkdir bower_components
112 mkdir bower_components
113 ln -s ${bowerComponents}/bower_components/* bower_components/
114 echo "[DONE]: Link bower packages"
115 '';
115
116
116 ln -s ${bowerComponents}/bower_components/* bower_components/
117 releaseName = "RhodeCodeEnterpriseCE-${version}";
117 echo "DONE: Link bower packages"
118 '';
119 in super.rhodecode-enterprise-ce.override (attrs: {
118 in super.rhodecode-enterprise-ce.override (attrs: {
120
121 inherit
119 inherit
122 doCheck
120 doCheck
123 version;
121 version;
122
124 name = "rhodecode-enterprise-ce-${version}";
123 name = "rhodecode-enterprise-ce-${version}";
125 releaseName = "RhodeCodeEnterpriseCE-${version}";
124 releaseName = releaseName;
126 src = rhodecode-enterprise-ce-src;
125 src = rhodecode-enterprise-ce-src;
127 dontStrip = true; # prevent strip, we don't need it.
126 dontStrip = true; # prevent strip, we don't need it.
128
127
129 buildInputs =
128 # expose following attributed outside
130 attrs.buildInputs ++
131 (with self; [
132 pkgs.nodePackages.bower
133 pkgs.nodePackages.grunt-cli
134 pkgs.subversion
135 pytest-catchlog
136 rhodecode-testdata
137 ]);
138
139 #TODO: either move this into overrides, OR use the new machanics from
140 # pip2nix and requiremtn.txt file
141 propagatedBuildInputs = attrs.propagatedBuildInputs ++ (with self; [
142 rhodecode-tools
143 ]);
144
145 # TODO: johbo: Make a nicer way to expose the parts. Maybe
146 # pkgs/default.nix?
147 passthru = {
129 passthru = {
148 inherit
130 inherit
131 rhodecode-testdata
149 bowerComponents
132 bowerComponents
150 linkNodeAndBowerPackages
133 linkNodeAndBowerPackages
151 myPythonPackagesUnfix
134 myPythonPackagesUnfix
152 pythonLocalOverrides;
135 pythonLocalOverrides
136 pythonCommunityOverrides;
137
153 pythonPackages = self;
138 pythonPackages = self;
154 };
139 };
155
140
141 buildInputs =
142 attrs.buildInputs or [] ++ [
143 rhodecode-testdata
144 pkgs.nodePackages.bower
145 pkgs.nodePackages.grunt-cli
146 ];
147
148 #NOTE: option to inject additional propagatedBuildInputs
149 propagatedBuildInputs =
150 attrs.propagatedBuildInputs or [] ++ [
151
152 ];
153
156 LC_ALL = "en_US.UTF-8";
154 LC_ALL = "en_US.UTF-8";
157 LOCALE_ARCHIVE =
155 LOCALE_ARCHIVE =
158 if pkgs.stdenv ? glibc
156 if pkgs.stdenv.isLinux
159 then "${pkgs.glibcLocales}/lib/locale/locale-archive"
157 then "${pkgs.glibcLocales}/lib/locale/locale-archive"
160 else "";
158 else "";
161
159
160 # Add bin directory to path so that tests can find 'rhodecode'.
162 preCheck = ''
161 preCheck = ''
163 export PATH="$out/bin:$PATH"
162 export PATH="$out/bin:$PATH"
164 '';
163 '';
165
164
165 # custom check phase for testing
166 checkPhase = ''
167 runHook preCheck
168 PYTHONHASHSEED=random py.test -vv -p no:sugar -r xw --cov-config=.coveragerc --cov=rhodecode --cov-report=term-missing rhodecode
169 runHook postCheck
170 '';
171
166 postCheck = ''
172 postCheck = ''
167 rm -rf $out/lib/${self.python.libPrefix}/site-packages/pytest_pylons
173 echo "Cleanup of rhodecode/tests"
168 rm -rf $out/lib/${self.python.libPrefix}/site-packages/rhodecode/tests
174 rm -rf $out/lib/${self.python.libPrefix}/site-packages/rhodecode/tests
169 '';
175 '';
170
176
171 preBuild = linkNodeAndBowerPackages + ''
177 preBuild = ''
178
179 echo "Building frontend assets"
180 ${linkNodeAndBowerPackages}
172 grunt
181 grunt
173 rm -fr node_modules
182 rm -fr node_modules
174 '';
183 '';
175
184
176 postInstall = ''
185 postInstall = ''
177 echo "Writing meta information for rccontrol to nix-support/rccontrol"
186 echo "Writing enterprise-ce meta information for rccontrol to nix-support/rccontrol"
178 mkdir -p $out/nix-support/rccontrol
187 mkdir -p $out/nix-support/rccontrol
179 cp -v rhodecode/VERSION $out/nix-support/rccontrol/version
188 cp -v rhodecode/VERSION $out/nix-support/rccontrol/version
180 echo "DONE: Meta information for rccontrol written"
189 echo "[DONE]: enterprise-ce meta information for rccontrol written"
190
191 mkdir -p $out/etc
192 cp configs/production.ini $out/etc
193 echo "[DONE]: saved enterprise-ce production.ini into $out/etc"
181
194
182 # python based programs need to be wrapped
195 # python based programs need to be wrapped
196 mkdir -p $out/bin
197 # rhodecode-tools
198 ln -s ${self.rhodecode-tools}/bin/rhodecode-* $out/bin/
199
200 # required binaries from dependencies
201 #ln -s ${self.python}/bin/python $out/bin
183 ln -s ${self.pyramid}/bin/* $out/bin/
202 ln -s ${self.pyramid}/bin/* $out/bin/
184 ln -s ${self.gunicorn}/bin/gunicorn $out/bin/
203 ln -s ${self.gunicorn}/bin/gunicorn $out/bin/
185 ln -s ${self.supervisor}/bin/supervisor* $out/bin/
204 ln -s ${self.supervisor}/bin/supervisor* $out/bin/
186 ln -s ${self.PasteScript}/bin/paster $out/bin/
205 ln -s ${self.pastescript}/bin/paster $out/bin/
187 ln -s ${self.channelstream}/bin/channelstream $out/bin/
206 ln -s ${self.channelstream}/bin/channelstream $out/bin/
188 ln -s ${self.celery}/bin/celery $out/bin/
207 ln -s ${self.celery}/bin/celery $out/bin/
208 echo "[DONE]: created symlinks into $out/bin"
189
209
190 # rhodecode-tools
191 ln -s ${self.rhodecode-tools}/bin/rhodecode-* $out/bin/
192
193 # note that condition should be restricted when adding further tools
194 for file in $out/bin/*;
210 for file in $out/bin/*;
195 do
211 do
196 wrapProgram $file \
212 wrapProgram $file \
197 --prefix PATH : $PATH \
213 --prefix PATH : $PATH \
198 --prefix PYTHONPATH : $PYTHONPATH \
214 --prefix PYTHONPATH : $PYTHONPATH \
199 --set PYTHONHASHSEED random
215 --set PYTHONHASHSEED random
200 done
216 done
201
217
202 mkdir $out/etc
218 echo "[DONE]: enterprise-ce binary wrapping"
203 cp configs/production.ini $out/etc
204
219
205
206 # TODO: johbo: Make part of ac-tests
207 if [ ! -f rhodecode/public/js/scripts.js ]; then
220 if [ ! -f rhodecode/public/js/scripts.js ]; then
208 echo "Missing scripts.js"
221 echo "Missing scripts.js"
209 exit 1
222 exit 1
210 fi
223 fi
211 if [ ! -f rhodecode/public/css/style.css ]; then
224 if [ ! -f rhodecode/public/css/style.css ]; then
212 echo "Missing style.css"
225 echo "Missing style.css"
213 exit 1
226 exit 1
214 fi
227 fi
215 '';
228 '';
216
217 });
229 });
218
230
219 rhodecode-testdata = import "${rhodecode-testdata-src}/default.nix" {
220 inherit
221 doCheck
222 pkgs
223 pythonPackages;
224 };
225
226 };
231 };
227
232
228 rhodecode-testdata-src = sources.rhodecode-testdata or (
233 basePythonPackages = with builtins;
229 pkgs.fetchhg {
234 if isAttrs pythonPackages then
230 url = "https://code.rhodecode.com/upstream/rc_testdata";
235 pythonPackages
231 rev = "v0.10.0";
236 else
232 sha256 = "0zn9swwvx4vgw4qn8q3ri26vvzgrxn15x6xnjrysi1bwmz01qjl0";
237 getAttr pythonPackages pkgs;
233 });
238
239 pythonGeneratedPackages = import ./pkgs/python-packages.nix {
240 inherit pkgs;
241 inherit (pkgs) fetchurl fetchgit fetchhg;
242 };
243
244 pythonCommunityOverrides = import ./pkgs/python-packages-overrides.nix {
245 inherit pkgs basePythonPackages;
246 };
234
247
235 # Apply all overrides and fix the final package set
248 # Apply all overrides and fix the final package set
236 myPythonPackagesUnfix = with pkgs.lib;
249 myPythonPackagesUnfix = with pkgs.lib;
237 (extends pythonExternalOverrides
250 (extends pythonExternalOverrides
238 (extends pythonLocalOverrides
251 (extends pythonLocalOverrides
239 (extends pythonOverrides
252 (extends pythonCommunityOverrides
240 pythonGeneratedPackages)));
253 (extends pythonGeneratedPackages
254 basePythonPackagesUnfix))));
255
241 myPythonPackages = (pkgs.lib.fix myPythonPackagesUnfix);
256 myPythonPackages = (pkgs.lib.fix myPythonPackagesUnfix);
242
257
243 in myPythonPackages.rhodecode-enterprise-ce
258 in myPythonPackages.rhodecode-enterprise-ce
@@ -1,4 +1,9 b''
1 # generating packages
2 nix-shell pkgs/shell-generate.nix
3 cd docs
4 pip2nix generate
5
1 # building the docs
6 # building the docs
2 cd docs
7 cd docs
3 nix-build default.nix -o result
8 nix-build default.nix -o result
4 make clean html No newline at end of file
9 make clean html
@@ -1,272 +1,276 b''
1 .. _indexing-ref:
1 .. _indexing-ref:
2
2
3 Full-text Search
3 Full-text Search
4 ----------------
4 ----------------
5
5
6 By default |RC| is configured to use `Whoosh`_ to index |repos| and
6 By default |RC| is configured to use `Whoosh`_ to index |repos| and
7 provide full-text search.
7 provide full-text search.
8
8
9 |RCE| also provides support for `Elasticsearch`_ as a backend for scalable
9 |RCE| also provides support for `Elasticsearch`_ as a backend for scalable
10 search. See :ref:`enable-elasticsearch` for details.
10 search. See :ref:`enable-elasticsearch` for details.
11
11
12 Indexing
12 Indexing
13 ^^^^^^^^
13 ^^^^^^^^
14
14
15 To run the indexer you need to use an |authtoken| with admin rights to all
15 To run the indexer you need to use an |authtoken| with admin rights to all
16 |repos|.
16 |repos|.
17
17
18 To index new content added, you have the option to set the indexer up in a
18 To index new content added, you have the option to set the indexer up in a
19 number of ways, for example:
19 number of ways, for example:
20
20
21 * Call the indexer via a cron job. We recommend running this nightly,
21 * Call the indexer via a cron job. We recommend running this nightly,
22 unless you need everything indexed immediately.
22 unless you need everything indexed immediately.
23 * Set the indexer to infinitely loop and reindex as soon as it has run its
23 * Set the indexer to infinitely loop and reindex as soon as it has run its
24 cycle.
24 cycle.
25 * Hook the indexer up with your CI server to reindex after each push.
25 * Hook the indexer up with your CI server to reindex after each push.
26
26
27 The indexer works by indexing new commits added since the last run. If you
27 The indexer works by indexing new commits added since the last run. If you
28 wish to build a brand new index from scratch each time,
28 wish to build a brand new index from scratch each time,
29 use the ``force`` option in the configuration file.
29 use the ``force`` option in the configuration file.
30
30
31 .. important::
31 .. important::
32
32
33 You need to have |RCT| installed, see :ref:`install-tools`. Since |RCE|
33 You need to have |RCT| installed, see :ref:`install-tools`. Since |RCE|
34 3.5.0 they are installed by default.
34 3.5.0 they are installed by default.
35
35
36 To set up indexing, use the following steps:
36 To set up indexing, use the following steps:
37
37
38 1. :ref:`config-rhoderc`, if running tools remotely.
38 1. :ref:`config-rhoderc`, if running tools remotely.
39 2. :ref:`run-index`
39 2. :ref:`run-index`
40 3. :ref:`set-index`
40 3. :ref:`set-index`
41 4. :ref:`advanced-indexing`
41 4. :ref:`advanced-indexing`
42
42
43 .. _config-rhoderc:
43 .. _config-rhoderc:
44
44
45 Configure the ``.rhoderc`` File
45 Configure the ``.rhoderc`` File
46 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
46 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
47
47
48 |RCT| uses the :file:`/home/{user}/.rhoderc` file for connection details
48 |RCT| uses the :file:`/home/{user}/.rhoderc` file for connection details
49 to |RCM| instances. If this file is not automatically created,
49 to |RCM| instances. If this file is not automatically created,
50 you can configure it using the following example. You need to configure the
50 you can configure it using the following example. You need to configure the
51 details for each instance you want to index.
51 details for each instance you want to index.
52
52
53 .. code-block:: bash
53 .. code-block:: bash
54
54
55 # Check the instance details
55 # Check the instance details
56 # of the instance you want to index
56 # of the instance you want to index
57 $ rccontrol status
57 $ rccontrol status
58
58
59 - NAME: enterprise-1
59 - NAME: enterprise-1
60 - STATUS: RUNNING
60 - STATUS: RUNNING
61 - TYPE: Momentum
61 - TYPE: Momentum
62 - VERSION: 1.5.0
62 - VERSION: 1.5.0
63 - URL: http://127.0.0.1:10000
63 - URL: http://127.0.0.1:10000
64
64
65 To get your API Token, on the |RCM| interface go to
65 To get your API Token, on the |RCM| interface go to
66 :menuselection:`username --> My Account --> Auth tokens`
66 :menuselection:`username --> My Account --> Auth tokens`
67
67
68 .. code-block:: ini
68 .. code-block:: ini
69
69
70 # Configure .rhoderc with matching details
70 # Configure .rhoderc with matching details
71 # This allows the indexer to connect to the instance
71 # This allows the indexer to connect to the instance
72 [instance:enterprise-1]
72 [instance:enterprise-1]
73 api_host = http://127.0.0.1:10000
73 api_host = http://127.0.0.1:10000
74 api_key = <auth token goes here>
74 api_key = <auth token goes here>
75 repo_dir = /home/<username>/repos
75 repo_dir = /home/<username>/repos
76
76
77 .. _run-index:
77 .. _run-index:
78
78
79 Run the Indexer
79 Run the Indexer
80 ^^^^^^^^^^^^^^^
80 ^^^^^^^^^^^^^^^
81
81
82 Run the indexer using the following command, and specify the instance you
82 Run the indexer using the following command, and specify the instance you
83 want to index:
83 want to index:
84
84
85 .. code-block:: bash
85 .. code-block:: bash
86
86
87 # From inside a virtualevv
87 # From inside a virtualevv
88 (venv)$ rhodecode-index --instance-name=enterprise-1
88 (venv)$ rhodecode-index --instance-name=enterprise-1
89
89
90 # Using default installation
90 # Using default installation
91 $ /home/user/.rccontrol/enterprise-4/profile/bin/rhodecode-index \
91 $ /home/user/.rccontrol/enterprise-1/profile/bin/rhodecode-index \
92 --instance-name=enterprise-4
92 --instance-name=enterprise-1
93
93
94 # Using a custom mapping file
94 # Using a custom mapping file
95 $ /home/user/.rccontrol/enterprise-4/profile/bin/rhodecode-index \
95 $ /home/user/.rccontrol/enterprise-1/profile/bin/rhodecode-index \
96 --instance-name=enterprise-4 \
96 --instance-name=enterprise-1 \
97 --mapping=/home/user/.rccontrol/enterprise-4/mapping.ini
97 --mapping=/home/user/.rccontrol/enterprise-1/mapping.ini
98
98
99 .. note::
99 .. note::
100
100
101 |RCT| require |PY| 2.7 to run.
101 In case of often indexing the index may become fragmented. Most often a result of that
102 is error about `too many open files`. To fix this indexer needs to be executed with
103 --optimize flag. E.g `rhodecode-index --instance-name=enterprise-1 --optimize`
104 This should be executed regularly, once a week is recommended.
105
102
106
103 .. _set-index:
107 .. _set-index:
104
108
105 Schedule the Indexer
109 Schedule the Indexer
106 ^^^^^^^^^^^^^^^^^^^^
110 ^^^^^^^^^^^^^^^^^^^^
107
111
108 To schedule the indexer, configure the crontab file to run the indexer inside
112 To schedule the indexer, configure the crontab file to run the indexer inside
109 your |RCT| virtualenv using the following steps.
113 your |RCT| virtualenv using the following steps.
110
114
111 1. Open the crontab file, using ``crontab -e``.
115 1. Open the crontab file, using ``crontab -e``.
112 2. Add the indexer to the crontab, and schedule it to run as regularly as you
116 2. Add the indexer to the crontab, and schedule it to run as regularly as you
113 wish.
117 wish.
114 3. Save the file.
118 3. Save the file.
115
119
116 .. code-block:: bash
120 .. code-block:: bash
117
121
118 $ crontab -e
122 $ crontab -e
119
123
120 # The virtualenv can be called using its full path, so for example you can
124 # The virtualenv can be called using its full path, so for example you can
121 # put this example into the crontab
125 # put this example into the crontab
122
126
123 # Run the indexer daily at 4am using the default mapping settings
127 # Run the indexer daily at 4am using the default mapping settings
124 * 4 * * * /home/ubuntu/.virtualenv/rhodecode-venv/bin/rhodecode-index \
128 * 4 * * * /home/ubuntu/.virtualenv/rhodecode-venv/bin/rhodecode-index \
125 --instance-name=enterprise-1
129 --instance-name=enterprise-1
126
130
127 # Run the indexer every Sunday at 3am using default mapping
131 # Run the indexer every Sunday at 3am using default mapping
128 * 3 * * 0 /home/ubuntu/.virtualenv/rhodecode-venv/bin/rhodecode-index \
132 * 3 * * 0 /home/ubuntu/.virtualenv/rhodecode-venv/bin/rhodecode-index \
129 --instance-name=enterprise-1
133 --instance-name=enterprise-1
130
134
131 # Run the indexer every 15 minutes
135 # Run the indexer every 15 minutes
132 # using a specially configured mapping file
136 # using a specially configured mapping file
133 */15 * * * * ~/.rccontrol/enterprise-4/profile/bin/rhodecode-index \
137 */15 * * * * ~/.rccontrol/enterprise-4/profile/bin/rhodecode-index \
134 --instance-name=enterprise-4 \
138 --instance-name=enterprise-4 \
135 --mapping=/home/user/.rccontrol/enterprise-4/mapping.ini
139 --mapping=/home/user/.rccontrol/enterprise-4/mapping.ini
136
140
137 .. _advanced-indexing:
141 .. _advanced-indexing:
138
142
139 Advanced Indexing
143 Advanced Indexing
140 ^^^^^^^^^^^^^^^^^
144 ^^^^^^^^^^^^^^^^^
141
145
142 |RCT| indexes based on the :file:`mapping.ini` file. To configure your index,
146 |RCT| indexes based on the :file:`mapping.ini` file. To configure your index,
143 you can specify different options in this file. The default location is:
147 you can specify different options in this file. The default location is:
144
148
145 * :file:`/home/{user}/.rccontrol/{instance-id}/mapping.ini`, using default
149 * :file:`/home/{user}/.rccontrol/{instance-id}/mapping.ini`, using default
146 |RCT|.
150 |RCT|.
147 * :file:`~/venv/lib/python2.7/site-packages/rhodecode_tools/templates/mapping.ini`,
151 * :file:`~/venv/lib/python2.7/site-packages/rhodecode_tools/templates/mapping.ini`,
148 when using ``virtualenv``.
152 when using ``virtualenv``.
149
153
150 .. note::
154 .. note::
151
155
152 If you need to create the :file:`mapping.ini` file, use the |RCT|
156 If you need to create the :file:`mapping.ini` file, use the |RCT|
153 ``rhodecode-index --create-mapping path/to/file`` API call. For details,
157 ``rhodecode-index --create-mapping path/to/file`` API call. For details,
154 see the :ref:`tools-cli` section.
158 see the :ref:`tools-cli` section.
155
159
156 The indexer runs in a random order to prevent a failing |repo| from stopping
160 The indexer runs in a random order to prevent a failing |repo| from stopping
157 a build. To configure different indexing scenarios, set the following options
161 a build. To configure different indexing scenarios, set the following options
158 inside the :file:`mapping.ini` and specify the altered file using the
162 inside the :file:`mapping.ini` and specify the altered file using the
159 ``--mapping`` option.
163 ``--mapping`` option.
160
164
161 * ``index_files`` : Index the specified file types.
165 * ``index_files`` : Index the specified file types.
162 * ``skip_files`` : Do not index the specified file types.
166 * ``skip_files`` : Do not index the specified file types.
163 * ``index_files_content`` : Index the content of the specified file types.
167 * ``index_files_content`` : Index the content of the specified file types.
164 * ``skip_files_content`` : Do not index the content of the specified files.
168 * ``skip_files_content`` : Do not index the content of the specified files.
165 * ``force`` : Create a fresh index on each run.
169 * ``force`` : Create a fresh index on each run.
166 * ``max_filesize`` : Files larger than the set size will not be indexed.
170 * ``max_filesize`` : Files larger than the set size will not be indexed.
167 * ``commit_parse_limit`` : Set the batch size when indexing commit messages.
171 * ``commit_parse_limit`` : Set the batch size when indexing commit messages.
168 Set to a lower number to lessen memory load.
172 Set to a lower number to lessen memory load.
169 * ``repo_limit`` : Set the maximum number or |repos| indexed per run.
173 * ``repo_limit`` : Set the maximum number or |repos| indexed per run.
170 * ``[INCLUDE]`` : Set |repos| you want indexed. This takes precedent over
174 * ``[INCLUDE]`` : Set |repos| you want indexed. This takes precedent over
171 ``[EXCLUDE]``.
175 ``[EXCLUDE]``.
172 * ``[EXCLUDE]`` : Set |repos| you do not want indexed. Exclude can be used to
176 * ``[EXCLUDE]`` : Set |repos| you do not want indexed. Exclude can be used to
173 not index branches, forks, or log |repos|.
177 not index branches, forks, or log |repos|.
174
178
175 At the end of the file you can specify conditions for specific |repos| that
179 At the end of the file you can specify conditions for specific |repos| that
176 will override the default values. To configure your indexer,
180 will override the default values. To configure your indexer,
177 use the following example :file:`mapping.ini` file.
181 use the following example :file:`mapping.ini` file.
178
182
179 .. code-block:: ini
183 .. code-block:: ini
180
184
181 [__DEFAULT__]
185 [__DEFAULT__]
182 # default patterns for indexing files and content of files.
186 # default patterns for indexing files and content of files.
183 # Binary files are skipped by default.
187 # Binary files are skipped by default.
184
188
185 # Index python and markdown files
189 # Index python and markdown files
186 index_files = *.py, *.md
190 index_files = *.py, *.md
187
191
188 # Do not index these file types
192 # Do not index these file types
189 skip_files = *.svg, *.log, *.dump, *.txt
193 skip_files = *.svg, *.log, *.dump, *.txt
190
194
191 # Index both file types and their content
195 # Index both file types and their content
192 index_files_content = *.cpp, *.ini, *.py
196 index_files_content = *.cpp, *.ini, *.py
193
197
194 # Index file names, but not file content
198 # Index file names, but not file content
195 skip_files_content = *.svg,
199 skip_files_content = *.svg,
196
200
197 # Force rebuilding an index from scratch. Each repository will be rebuild
201 # Force rebuilding an index from scratch. Each repository will be rebuild
198 # from scratch with a global flag. Use local flag to rebuild single repos
202 # from scratch with a global flag. Use local flag to rebuild single repos
199 force = false
203 force = false
200
204
201 # Do not index files larger than 385KB
205 # Do not index files larger than 385KB
202 max_filesize = 385KB
206 max_filesize = 385KB
203
207
204 # Limit commit indexing to 500 per batch
208 # Limit commit indexing to 500 per batch
205 commit_parse_limit = 500
209 commit_parse_limit = 500
206
210
207 # Limit each index run to 25 repos
211 # Limit each index run to 25 repos
208 repo_limit = 25
212 repo_limit = 25
209
213
210 # __INCLUDE__ is more important that __EXCLUDE__.
214 # __INCLUDE__ is more important that __EXCLUDE__.
211
215
212 [__INCLUDE__]
216 [__INCLUDE__]
213 # Include all repos with these names
217 # Include all repos with these names
214
218
215 docs/* = 1
219 docs/* = 1
216 lib/* = 1
220 lib/* = 1
217
221
218 [__EXCLUDE__]
222 [__EXCLUDE__]
219 # Do not include the following repo in index
223 # Do not include the following repo in index
220
224
221 dev-docs/* = 1
225 dev-docs/* = 1
222 legacy-repos/* = 1
226 legacy-repos/* = 1
223 *-dev/* = 1
227 *-dev/* = 1
224
228
225 # Each repo that needs special indexing is a separate section below.
229 # Each repo that needs special indexing is a separate section below.
226 # In each section set the options to override the global configuration
230 # In each section set the options to override the global configuration
227 # parameters above.
231 # parameters above.
228 # If special settings are not configured, the global configuration values
232 # If special settings are not configured, the global configuration values
229 # above are inherited. If no special repositories are
233 # above are inherited. If no special repositories are
230 # defined here RhodeCode will use the API to ask for all repositories
234 # defined here RhodeCode will use the API to ask for all repositories
231
235
232 # For this repo use different settings
236 # For this repo use different settings
233 [special-repo]
237 [special-repo]
234 commit_parse_limit = 20,
238 commit_parse_limit = 20,
235 skip_files = *.idea, *.xml,
239 skip_files = *.idea, *.xml,
236
240
237 # For another repo use different settings
241 # For another repo use different settings
238 [another-special-repo]
242 [another-special-repo]
239 index_files = *,
243 index_files = *,
240 max_filesize = 800MB
244 max_filesize = 800MB
241 commit_parse_limit = 20000
245 commit_parse_limit = 20000
242
246
243 .. _enable-elasticsearch:
247 .. _enable-elasticsearch:
244
248
245 Enabling Elasticsearch
249 Enabling Elasticsearch
246 ^^^^^^^^^^^^^^^^^^^^^^
250 ^^^^^^^^^^^^^^^^^^^^^^
247
251
248 1. Open the :file:`rhodecode.ini` file for the instance you wish to edit. The
252 1. Open the :file:`rhodecode.ini` file for the instance you wish to edit. The
249 default location is
253 default location is
250 :file:`home/{user}/.rccontrol/{instance-id}/rhodecode.ini`
254 :file:`home/{user}/.rccontrol/{instance-id}/rhodecode.ini`
251 2. Find the search configuration section:
255 2. Find the search configuration section:
252
256
253 .. code-block:: ini
257 .. code-block:: ini
254
258
255 ###################################
259 ###################################
256 ## SEARCH INDEXING CONFIGURATION ##
260 ## SEARCH INDEXING CONFIGURATION ##
257 ###################################
261 ###################################
258
262
259 search.module = rhodecode.lib.index.whoosh
263 search.module = rhodecode.lib.index.whoosh
260 search.location = %(here)s/data/index
264 search.location = %(here)s/data/index
261
265
262 and change it to:
266 and change it to:
263
267
264 .. code-block:: ini
268 .. code-block:: ini
265
269
266 search.module = rc_elasticsearch
270 search.module = rc_elasticsearch
267 search.location = http://localhost:9200/
271 search.location = http://localhost:9200/
268
272
269 where ``search.location`` points to the elasticsearch server.
273 where ``search.location`` points to the elasticsearch server.
270
274
271 .. _Whoosh: https://pypi.python.org/pypi/Whoosh/
275 .. _Whoosh: https://pypi.python.org/pypi/Whoosh/
272 .. _Elasticsearch: https://www.elastic.co/ No newline at end of file
276 .. _Elasticsearch: https://www.elastic.co/
@@ -1,60 +1,66 b''
1 .. _user-session-ref:
1 .. _user-session-ref:
2
2
3 Increase User Session Performance
3 Increase User Session Performance
4 ---------------------------------
4 ---------------------------------
5
5
6 The default file-based sessions are only suitable for smaller setups, or
6 The default file-based sessions are only suitable for smaller setups, or
7 instances that doesn't have a lot of users or traffic.
7 instances that doesn't have a lot of users or traffic.
8 They are set as default option because it's setup-free solution.
8 They are set as default option because it's setup-free solution.
9
9
10 The most common issue of file based sessions are file limit errors which occur
10 The most common issue of file based sessions are file limit errors which occur
11 if there are lots of session files.
11 if there are lots of session files.
12
12
13 Therefore, in a large scale deployment, to give better performance,
13 Therefore, in a large scale deployment, to give better performance,
14 scalability, and maintainability we recommend switching from file-based
14 scalability, and maintainability we recommend switching from file-based
15 sessions to database-based user sessions or memcached sessions.
15 sessions to database-based user sessions or Redis based sessions.
16
16
17 To switch to database-based user sessions uncomment the following section in
17 To switch to database-based user sessions uncomment the following section in
18 your :file:`/home/{user}/.rccontrol/{instance-id}/rhodecode.ini` file.
18 your :file:`/home/{user}/.rccontrol/{instance-id}/rhodecode.ini` file.
19
19
20
20
21 .. code-block:: ini
21 .. code-block:: ini
22
22
23 ## db based session, fast, and allows easy management over logged in users
23 ## db based session, fast, and allows easy management over logged in users
24 beaker.session.type = ext:database
24 beaker.session.type = ext:database
25 beaker.session.table_name = db_session
25 beaker.session.table_name = db_session
26
26
27 # use just one of the following accoring to the type of database
27 # use just one of the following accoring to the type of database
28 beaker.session.sa.url = postgresql://postgres:secret@localhost/rhodecode
28 beaker.session.sa.url = postgresql://postgres:secret@localhost/rhodecode
29 beaker.session.sa.url = mysql://root:secret@127.0.0.1/rhodecode
29 beaker.session.sa.url = mysql://root:secret@127.0.0.1/rhodecode
30
30
31 beaker.session.sa.pool_recycle = 3600
31 beaker.session.sa.pool_recycle = 3600
32 beaker.session.sa.echo = false
32 beaker.session.sa.echo = false
33
33
34
34
35 and make sure you comment out the file based sessions.
35 and make sure you comment out the file based sessions.
36
36
37 .. code-block:: ini
37 .. code-block:: ini
38
38
39 ## types are file, ext:memcached, ext:database, and memory (default).
39 ## types are file, ext:memcached, ext:database, and memory (default).
40 #beaker.session.type = file
40 #beaker.session.type = file
41 #beaker.session.data_dir = %(here)s/data/sessions/data
41 #beaker.session.data_dir = %(here)s/data/sessions/data
42
42
43
43
44 To switch to memcached-based user sessions uncomment the following section in
44 The `table_name` will be automatically created on specified database if it isn't yet existing.
45 Database specified in the `beaker.session.sa.url` can be the same that RhodeCode
46 uses, or if required it can be a different one. We recommend to use the same database.
47
48
49
50 To switch to reds-based user sessions uncomment the following section in
45 your :file:`/home/{user}/.rccontrol/{instance-id}/rhodecode.ini` file.
51 your :file:`/home/{user}/.rccontrol/{instance-id}/rhodecode.ini` file.
46
52
47 .. code-block:: ini
53 .. code-block:: ini
48
54
49 ## memcached sessions
55 ## redis sessions
50 beaker.session.type = ext:memcached
56 beaker.session.type = ext:redis
51 beaker.session.url = localhost:11211
57 beaker.session.url = localhost:6379
52
58
53
59
54 and make sure you comment out the file based sessions.
60 and make sure you comment out the file based sessions.
55
61
56 .. code-block:: ini
62 .. code-block:: ini
57
63
58 ## types are file, ext:memcached, ext:database, and memory (default).
64 ## types are file, ext:memcached, ext:database, and memory (default).
59 #beaker.session.type = file
65 #beaker.session.type = file
60 #beaker.session.data_dir = %(here)s/data/sessions/data No newline at end of file
66 #beaker.session.data_dir = %(here)s/data/sessions/data
@@ -1,421 +1,428 b''
1 .. _pull-request-methods-ref:
1 .. _pull-request-methods-ref:
2
2
3 pull_request methods
3 pull_request methods
4 ====================
4 ====================
5
5
6 close_pull_request
6 close_pull_request
7 ------------------
7 ------------------
8
8
9 .. py:function:: close_pull_request(apiuser, pullrequestid, repoid=<Optional:None>, userid=<Optional:<OptionalAttr:apiuser>>, message=<Optional:''>)
9 .. py:function:: close_pull_request(apiuser, pullrequestid, repoid=<Optional:None>, userid=<Optional:<OptionalAttr:apiuser>>, message=<Optional:''>)
10
10
11 Close the pull request specified by `pullrequestid`.
11 Close the pull request specified by `pullrequestid`.
12
12
13 :param apiuser: This is filled automatically from the |authtoken|.
13 :param apiuser: This is filled automatically from the |authtoken|.
14 :type apiuser: AuthUser
14 :type apiuser: AuthUser
15 :param repoid: Repository name or repository ID to which the pull
15 :param repoid: Repository name or repository ID to which the pull
16 request belongs.
16 request belongs.
17 :type repoid: str or int
17 :type repoid: str or int
18 :param pullrequestid: ID of the pull request to be closed.
18 :param pullrequestid: ID of the pull request to be closed.
19 :type pullrequestid: int
19 :type pullrequestid: int
20 :param userid: Close the pull request as this user.
20 :param userid: Close the pull request as this user.
21 :type userid: Optional(str or int)
21 :type userid: Optional(str or int)
22 :param message: Optional message to close the Pull Request with. If not
22 :param message: Optional message to close the Pull Request with. If not
23 specified it will be generated automatically.
23 specified it will be generated automatically.
24 :type message: Optional(str)
24 :type message: Optional(str)
25
25
26 Example output:
26 Example output:
27
27
28 .. code-block:: bash
28 .. code-block:: bash
29
29
30 "id": <id_given_in_input>,
30 "id": <id_given_in_input>,
31 "result": {
31 "result": {
32 "pull_request_id": "<int>",
32 "pull_request_id": "<int>",
33 "close_status": "<str:status_lbl>,
33 "close_status": "<str:status_lbl>,
34 "closed": "<bool>"
34 "closed": "<bool>"
35 },
35 },
36 "error": null
36 "error": null
37
37
38
38
39 comment_pull_request
39 comment_pull_request
40 --------------------
40 --------------------
41
41
42 .. py:function:: comment_pull_request(apiuser, pullrequestid, repoid=<Optional:None>, message=<Optional:None>, commit_id=<Optional:None>, status=<Optional:None>, comment_type=<Optional:u'note'>, resolves_comment_id=<Optional:None>, userid=<Optional:<OptionalAttr:apiuser>>)
42 .. py:function:: comment_pull_request(apiuser, pullrequestid, repoid=<Optional:None>, message=<Optional:None>, commit_id=<Optional:None>, status=<Optional:None>, comment_type=<Optional:u'note'>, resolves_comment_id=<Optional:None>, userid=<Optional:<OptionalAttr:apiuser>>)
43
43
44 Comment on the pull request specified with the `pullrequestid`,
44 Comment on the pull request specified with the `pullrequestid`,
45 in the |repo| specified by the `repoid`, and optionally change the
45 in the |repo| specified by the `repoid`, and optionally change the
46 review status.
46 review status.
47
47
48 :param apiuser: This is filled automatically from the |authtoken|.
48 :param apiuser: This is filled automatically from the |authtoken|.
49 :type apiuser: AuthUser
49 :type apiuser: AuthUser
50 :param repoid: Optional repository name or repository ID.
50 :param repoid: Optional repository name or repository ID.
51 :type repoid: str or int
51 :type repoid: str or int
52 :param pullrequestid: The pull request ID.
52 :param pullrequestid: The pull request ID.
53 :type pullrequestid: int
53 :type pullrequestid: int
54 :param commit_id: Specify the commit_id for which to set a comment. If
54 :param commit_id: Specify the commit_id for which to set a comment. If
55 given commit_id is different than latest in the PR status
55 given commit_id is different than latest in the PR status
56 change won't be performed.
56 change won't be performed.
57 :type commit_id: str
57 :type commit_id: str
58 :param message: The text content of the comment.
58 :param message: The text content of the comment.
59 :type message: str
59 :type message: str
60 :param status: (**Optional**) Set the approval status of the pull
60 :param status: (**Optional**) Set the approval status of the pull
61 request. One of: 'not_reviewed', 'approved', 'rejected',
61 request. One of: 'not_reviewed', 'approved', 'rejected',
62 'under_review'
62 'under_review'
63 :type status: str
63 :type status: str
64 :param comment_type: Comment type, one of: 'note', 'todo'
64 :param comment_type: Comment type, one of: 'note', 'todo'
65 :type comment_type: Optional(str), default: 'note'
65 :type comment_type: Optional(str), default: 'note'
66 :param userid: Comment on the pull request as this user
66 :param userid: Comment on the pull request as this user
67 :type userid: Optional(str or int)
67 :type userid: Optional(str or int)
68
68
69 Example output:
69 Example output:
70
70
71 .. code-block:: bash
71 .. code-block:: bash
72
72
73 id : <id_given_in_input>
73 id : <id_given_in_input>
74 result : {
74 result : {
75 "pull_request_id": "<Integer>",
75 "pull_request_id": "<Integer>",
76 "comment_id": "<Integer>",
76 "comment_id": "<Integer>",
77 "status": {"given": <given_status>,
77 "status": {"given": <given_status>,
78 "was_changed": <bool status_was_actually_changed> },
78 "was_changed": <bool status_was_actually_changed> },
79 },
79 },
80 error : null
80 error : null
81
81
82
82
83 create_pull_request
83 create_pull_request
84 -------------------
84 -------------------
85
85
86 .. py:function:: create_pull_request(apiuser, source_repo, target_repo, source_ref, target_ref, title, description=<Optional:''>, reviewers=<Optional:None>)
86 .. py:function:: create_pull_request(apiuser, source_repo, target_repo, source_ref, target_ref, title=<Optional:''>, description=<Optional:''>, description_renderer=<Optional:''>, reviewers=<Optional:None>)
87
87
88 Creates a new pull request.
88 Creates a new pull request.
89
89
90 Accepts refs in the following formats:
90 Accepts refs in the following formats:
91
91
92 * branch:<branch_name>:<sha>
92 * branch:<branch_name>:<sha>
93 * branch:<branch_name>
93 * branch:<branch_name>
94 * bookmark:<bookmark_name>:<sha> (Mercurial only)
94 * bookmark:<bookmark_name>:<sha> (Mercurial only)
95 * bookmark:<bookmark_name> (Mercurial only)
95 * bookmark:<bookmark_name> (Mercurial only)
96
96
97 :param apiuser: This is filled automatically from the |authtoken|.
97 :param apiuser: This is filled automatically from the |authtoken|.
98 :type apiuser: AuthUser
98 :type apiuser: AuthUser
99 :param source_repo: Set the source repository name.
99 :param source_repo: Set the source repository name.
100 :type source_repo: str
100 :type source_repo: str
101 :param target_repo: Set the target repository name.
101 :param target_repo: Set the target repository name.
102 :type target_repo: str
102 :type target_repo: str
103 :param source_ref: Set the source ref name.
103 :param source_ref: Set the source ref name.
104 :type source_ref: str
104 :type source_ref: str
105 :param target_ref: Set the target ref name.
105 :param target_ref: Set the target ref name.
106 :type target_ref: str
106 :type target_ref: str
107 :param title: Set the pull request title.
107 :param title: Optionally Set the pull request title, it's generated otherwise
108 :type title: str
108 :type title: str
109 :param description: Set the pull request description.
109 :param description: Set the pull request description.
110 :type description: Optional(str)
110 :type description: Optional(str)
111 :type description_renderer: Optional(str)
112 :param description_renderer: Set pull request renderer for the description.
113 It should be 'rst', 'markdown' or 'plain'. If not give default
114 system renderer will be used
111 :param reviewers: Set the new pull request reviewers list.
115 :param reviewers: Set the new pull request reviewers list.
112 Reviewer defined by review rules will be added automatically to the
116 Reviewer defined by review rules will be added automatically to the
113 defined list.
117 defined list.
114 :type reviewers: Optional(list)
118 :type reviewers: Optional(list)
115 Accepts username strings or objects of the format:
119 Accepts username strings or objects of the format:
116
120
117 [{'username': 'nick', 'reasons': ['original author'], 'mandatory': <bool>}]
121 [{'username': 'nick', 'reasons': ['original author'], 'mandatory': <bool>}]
118
122
119
123
120 get_pull_request
124 get_pull_request
121 ----------------
125 ----------------
122
126
123 .. py:function:: get_pull_request(apiuser, pullrequestid, repoid=<Optional:None>)
127 .. py:function:: get_pull_request(apiuser, pullrequestid, repoid=<Optional:None>)
124
128
125 Get a pull request based on the given ID.
129 Get a pull request based on the given ID.
126
130
127 :param apiuser: This is filled automatically from the |authtoken|.
131 :param apiuser: This is filled automatically from the |authtoken|.
128 :type apiuser: AuthUser
132 :type apiuser: AuthUser
129 :param repoid: Optional, repository name or repository ID from where
133 :param repoid: Optional, repository name or repository ID from where
130 the pull request was opened.
134 the pull request was opened.
131 :type repoid: str or int
135 :type repoid: str or int
132 :param pullrequestid: ID of the requested pull request.
136 :param pullrequestid: ID of the requested pull request.
133 :type pullrequestid: int
137 :type pullrequestid: int
134
138
135 Example output:
139 Example output:
136
140
137 .. code-block:: bash
141 .. code-block:: bash
138
142
139 "id": <id_given_in_input>,
143 "id": <id_given_in_input>,
140 "result":
144 "result":
141 {
145 {
142 "pull_request_id": "<pull_request_id>",
146 "pull_request_id": "<pull_request_id>",
143 "url": "<url>",
147 "url": "<url>",
144 "title": "<title>",
148 "title": "<title>",
145 "description": "<description>",
149 "description": "<description>",
146 "status" : "<status>",
150 "status" : "<status>",
147 "created_on": "<date_time_created>",
151 "created_on": "<date_time_created>",
148 "updated_on": "<date_time_updated>",
152 "updated_on": "<date_time_updated>",
149 "commit_ids": [
153 "commit_ids": [
150 ...
154 ...
151 "<commit_id>",
155 "<commit_id>",
152 "<commit_id>",
156 "<commit_id>",
153 ...
157 ...
154 ],
158 ],
155 "review_status": "<review_status>",
159 "review_status": "<review_status>",
156 "mergeable": {
160 "mergeable": {
157 "status": "<bool>",
161 "status": "<bool>",
158 "message": "<message>",
162 "message": "<message>",
159 },
163 },
160 "source": {
164 "source": {
161 "clone_url": "<clone_url>",
165 "clone_url": "<clone_url>",
162 "repository": "<repository_name>",
166 "repository": "<repository_name>",
163 "reference":
167 "reference":
164 {
168 {
165 "name": "<name>",
169 "name": "<name>",
166 "type": "<type>",
170 "type": "<type>",
167 "commit_id": "<commit_id>",
171 "commit_id": "<commit_id>",
168 }
172 }
169 },
173 },
170 "target": {
174 "target": {
171 "clone_url": "<clone_url>",
175 "clone_url": "<clone_url>",
172 "repository": "<repository_name>",
176 "repository": "<repository_name>",
173 "reference":
177 "reference":
174 {
178 {
175 "name": "<name>",
179 "name": "<name>",
176 "type": "<type>",
180 "type": "<type>",
177 "commit_id": "<commit_id>",
181 "commit_id": "<commit_id>",
178 }
182 }
179 },
183 },
180 "merge": {
184 "merge": {
181 "clone_url": "<clone_url>",
185 "clone_url": "<clone_url>",
182 "reference":
186 "reference":
183 {
187 {
184 "name": "<name>",
188 "name": "<name>",
185 "type": "<type>",
189 "type": "<type>",
186 "commit_id": "<commit_id>",
190 "commit_id": "<commit_id>",
187 }
191 }
188 },
192 },
189 "author": <user_obj>,
193 "author": <user_obj>,
190 "reviewers": [
194 "reviewers": [
191 ...
195 ...
192 {
196 {
193 "user": "<user_obj>",
197 "user": "<user_obj>",
194 "review_status": "<review_status>",
198 "review_status": "<review_status>",
195 }
199 }
196 ...
200 ...
197 ]
201 ]
198 },
202 },
199 "error": null
203 "error": null
200
204
201
205
202 get_pull_request_comments
206 get_pull_request_comments
203 -------------------------
207 -------------------------
204
208
205 .. py:function:: get_pull_request_comments(apiuser, pullrequestid, repoid=<Optional:None>)
209 .. py:function:: get_pull_request_comments(apiuser, pullrequestid, repoid=<Optional:None>)
206
210
207 Get all comments of pull request specified with the `pullrequestid`
211 Get all comments of pull request specified with the `pullrequestid`
208
212
209 :param apiuser: This is filled automatically from the |authtoken|.
213 :param apiuser: This is filled automatically from the |authtoken|.
210 :type apiuser: AuthUser
214 :type apiuser: AuthUser
211 :param repoid: Optional repository name or repository ID.
215 :param repoid: Optional repository name or repository ID.
212 :type repoid: str or int
216 :type repoid: str or int
213 :param pullrequestid: The pull request ID.
217 :param pullrequestid: The pull request ID.
214 :type pullrequestid: int
218 :type pullrequestid: int
215
219
216 Example output:
220 Example output:
217
221
218 .. code-block:: bash
222 .. code-block:: bash
219
223
220 id : <id_given_in_input>
224 id : <id_given_in_input>
221 result : [
225 result : [
222 {
226 {
223 "comment_author": {
227 "comment_author": {
224 "active": true,
228 "active": true,
225 "full_name_or_username": "Tom Gore",
229 "full_name_or_username": "Tom Gore",
226 "username": "admin"
230 "username": "admin"
227 },
231 },
228 "comment_created_on": "2017-01-02T18:43:45.533",
232 "comment_created_on": "2017-01-02T18:43:45.533",
229 "comment_f_path": null,
233 "comment_f_path": null,
230 "comment_id": 25,
234 "comment_id": 25,
231 "comment_lineno": null,
235 "comment_lineno": null,
232 "comment_status": {
236 "comment_status": {
233 "status": "under_review",
237 "status": "under_review",
234 "status_lbl": "Under Review"
238 "status_lbl": "Under Review"
235 },
239 },
236 "comment_text": "Example text",
240 "comment_text": "Example text",
237 "comment_type": null,
241 "comment_type": null,
238 "pull_request_version": null
242 "pull_request_version": null
239 }
243 }
240 ],
244 ],
241 error : null
245 error : null
242
246
243
247
244 get_pull_requests
248 get_pull_requests
245 -----------------
249 -----------------
246
250
247 .. py:function:: get_pull_requests(apiuser, repoid, status=<Optional:'new'>)
251 .. py:function:: get_pull_requests(apiuser, repoid, status=<Optional:'new'>)
248
252
249 Get all pull requests from the repository specified in `repoid`.
253 Get all pull requests from the repository specified in `repoid`.
250
254
251 :param apiuser: This is filled automatically from the |authtoken|.
255 :param apiuser: This is filled automatically from the |authtoken|.
252 :type apiuser: AuthUser
256 :type apiuser: AuthUser
253 :param repoid: Optional repository name or repository ID.
257 :param repoid: Optional repository name or repository ID.
254 :type repoid: str or int
258 :type repoid: str or int
255 :param status: Only return pull requests with the specified status.
259 :param status: Only return pull requests with the specified status.
256 Valid options are.
260 Valid options are.
257 * ``new`` (default)
261 * ``new`` (default)
258 * ``open``
262 * ``open``
259 * ``closed``
263 * ``closed``
260 :type status: str
264 :type status: str
261
265
262 Example output:
266 Example output:
263
267
264 .. code-block:: bash
268 .. code-block:: bash
265
269
266 "id": <id_given_in_input>,
270 "id": <id_given_in_input>,
267 "result":
271 "result":
268 [
272 [
269 ...
273 ...
270 {
274 {
271 "pull_request_id": "<pull_request_id>",
275 "pull_request_id": "<pull_request_id>",
272 "url": "<url>",
276 "url": "<url>",
273 "title" : "<title>",
277 "title" : "<title>",
274 "description": "<description>",
278 "description": "<description>",
275 "status": "<status>",
279 "status": "<status>",
276 "created_on": "<date_time_created>",
280 "created_on": "<date_time_created>",
277 "updated_on": "<date_time_updated>",
281 "updated_on": "<date_time_updated>",
278 "commit_ids": [
282 "commit_ids": [
279 ...
283 ...
280 "<commit_id>",
284 "<commit_id>",
281 "<commit_id>",
285 "<commit_id>",
282 ...
286 ...
283 ],
287 ],
284 "review_status": "<review_status>",
288 "review_status": "<review_status>",
285 "mergeable": {
289 "mergeable": {
286 "status": "<bool>",
290 "status": "<bool>",
287 "message: "<message>",
291 "message: "<message>",
288 },
292 },
289 "source": {
293 "source": {
290 "clone_url": "<clone_url>",
294 "clone_url": "<clone_url>",
291 "reference":
295 "reference":
292 {
296 {
293 "name": "<name>",
297 "name": "<name>",
294 "type": "<type>",
298 "type": "<type>",
295 "commit_id": "<commit_id>",
299 "commit_id": "<commit_id>",
296 }
300 }
297 },
301 },
298 "target": {
302 "target": {
299 "clone_url": "<clone_url>",
303 "clone_url": "<clone_url>",
300 "reference":
304 "reference":
301 {
305 {
302 "name": "<name>",
306 "name": "<name>",
303 "type": "<type>",
307 "type": "<type>",
304 "commit_id": "<commit_id>",
308 "commit_id": "<commit_id>",
305 }
309 }
306 },
310 },
307 "merge": {
311 "merge": {
308 "clone_url": "<clone_url>",
312 "clone_url": "<clone_url>",
309 "reference":
313 "reference":
310 {
314 {
311 "name": "<name>",
315 "name": "<name>",
312 "type": "<type>",
316 "type": "<type>",
313 "commit_id": "<commit_id>",
317 "commit_id": "<commit_id>",
314 }
318 }
315 },
319 },
316 "author": <user_obj>,
320 "author": <user_obj>,
317 "reviewers": [
321 "reviewers": [
318 ...
322 ...
319 {
323 {
320 "user": "<user_obj>",
324 "user": "<user_obj>",
321 "review_status": "<review_status>",
325 "review_status": "<review_status>",
322 }
326 }
323 ...
327 ...
324 ]
328 ]
325 }
329 }
326 ...
330 ...
327 ],
331 ],
328 "error": null
332 "error": null
329
333
330
334
331 merge_pull_request
335 merge_pull_request
332 ------------------
336 ------------------
333
337
334 .. py:function:: merge_pull_request(apiuser, pullrequestid, repoid=<Optional:None>, userid=<Optional:<OptionalAttr:apiuser>>)
338 .. py:function:: merge_pull_request(apiuser, pullrequestid, repoid=<Optional:None>, userid=<Optional:<OptionalAttr:apiuser>>)
335
339
336 Merge the pull request specified by `pullrequestid` into its target
340 Merge the pull request specified by `pullrequestid` into its target
337 repository.
341 repository.
338
342
339 :param apiuser: This is filled automatically from the |authtoken|.
343 :param apiuser: This is filled automatically from the |authtoken|.
340 :type apiuser: AuthUser
344 :type apiuser: AuthUser
341 :param repoid: Optional, repository name or repository ID of the
345 :param repoid: Optional, repository name or repository ID of the
342 target repository to which the |pr| is to be merged.
346 target repository to which the |pr| is to be merged.
343 :type repoid: str or int
347 :type repoid: str or int
344 :param pullrequestid: ID of the pull request which shall be merged.
348 :param pullrequestid: ID of the pull request which shall be merged.
345 :type pullrequestid: int
349 :type pullrequestid: int
346 :param userid: Merge the pull request as this user.
350 :param userid: Merge the pull request as this user.
347 :type userid: Optional(str or int)
351 :type userid: Optional(str or int)
348
352
349 Example output:
353 Example output:
350
354
351 .. code-block:: bash
355 .. code-block:: bash
352
356
353 "id": <id_given_in_input>,
357 "id": <id_given_in_input>,
354 "result": {
358 "result": {
355 "executed": "<bool>",
359 "executed": "<bool>",
356 "failure_reason": "<int>",
360 "failure_reason": "<int>",
357 "merge_commit_id": "<merge_commit_id>",
361 "merge_commit_id": "<merge_commit_id>",
358 "possible": "<bool>",
362 "possible": "<bool>",
359 "merge_ref": {
363 "merge_ref": {
360 "commit_id": "<commit_id>",
364 "commit_id": "<commit_id>",
361 "type": "<type>",
365 "type": "<type>",
362 "name": "<name>"
366 "name": "<name>"
363 }
367 }
364 },
368 },
365 "error": null
369 "error": null
366
370
367
371
368 update_pull_request
372 update_pull_request
369 -------------------
373 -------------------
370
374
371 .. py:function:: update_pull_request(apiuser, pullrequestid, repoid=<Optional:None>, title=<Optional:''>, description=<Optional:''>, reviewers=<Optional:None>, update_commits=<Optional:None>)
375 .. py:function:: update_pull_request(apiuser, pullrequestid, repoid=<Optional:None>, title=<Optional:''>, description=<Optional:''>, description_renderer=<Optional:''>, reviewers=<Optional:None>, update_commits=<Optional:None>)
372
376
373 Updates a pull request.
377 Updates a pull request.
374
378
375 :param apiuser: This is filled automatically from the |authtoken|.
379 :param apiuser: This is filled automatically from the |authtoken|.
376 :type apiuser: AuthUser
380 :type apiuser: AuthUser
377 :param repoid: Optional repository name or repository ID.
381 :param repoid: Optional repository name or repository ID.
378 :type repoid: str or int
382 :type repoid: str or int
379 :param pullrequestid: The pull request ID.
383 :param pullrequestid: The pull request ID.
380 :type pullrequestid: int
384 :type pullrequestid: int
381 :param title: Set the pull request title.
385 :param title: Set the pull request title.
382 :type title: str
386 :type title: str
383 :param description: Update pull request description.
387 :param description: Update pull request description.
384 :type description: Optional(str)
388 :type description: Optional(str)
389 :type description_renderer: Optional(str)
390 :param description_renderer: Update pull request renderer for the description.
391 It should be 'rst', 'markdown' or 'plain'
385 :param reviewers: Update pull request reviewers list with new value.
392 :param reviewers: Update pull request reviewers list with new value.
386 :type reviewers: Optional(list)
393 :type reviewers: Optional(list)
387 Accepts username strings or objects of the format:
394 Accepts username strings or objects of the format:
388
395
389 [{'username': 'nick', 'reasons': ['original author'], 'mandatory': <bool>}]
396 [{'username': 'nick', 'reasons': ['original author'], 'mandatory': <bool>}]
390
397
391 :param update_commits: Trigger update of commits for this pull request
398 :param update_commits: Trigger update of commits for this pull request
392 :type: update_commits: Optional(bool)
399 :type: update_commits: Optional(bool)
393
400
394 Example output:
401 Example output:
395
402
396 .. code-block:: bash
403 .. code-block:: bash
397
404
398 id : <id_given_in_input>
405 id : <id_given_in_input>
399 result : {
406 result : {
400 "msg": "Updated pull request `63`",
407 "msg": "Updated pull request `63`",
401 "pull_request": <pull_request_object>,
408 "pull_request": <pull_request_object>,
402 "updated_reviewers": {
409 "updated_reviewers": {
403 "added": [
410 "added": [
404 "username"
411 "username"
405 ],
412 ],
406 "removed": []
413 "removed": []
407 },
414 },
408 "updated_commits": {
415 "updated_commits": {
409 "added": [
416 "added": [
410 "<sha1_hash>"
417 "<sha1_hash>"
411 ],
418 ],
412 "common": [
419 "common": [
413 "<sha1_hash>",
420 "<sha1_hash>",
414 "<sha1_hash>",
421 "<sha1_hash>",
415 ],
422 ],
416 "removed": []
423 "removed": []
417 }
424 }
418 }
425 }
419 error : null
426 error : null
420
427
421
428
@@ -1,316 +1,311 b''
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2 #
2 #
3 # RhodeCode Enterprise documentation build configuration file, created by
3 # RhodeCode Enterprise documentation build configuration file, created by
4 # sphinx-quickstart on Tue Nov 4 11:48:37 2014.
4 # sphinx-quickstart on Tue Nov 4 11:48:37 2014.
5 #
5 #
6 # This file is execfile()d with the current directory set to its
6 # This file is execfile()d with the current directory set to its
7 # containing dir.
7 # containing dir.
8 #
8 #
9 # Note that not all possible configuration values are present in this
9 # Note that not all possible configuration values are present in this
10 # autogenerated file.
10 # autogenerated file.
11 #
11 #
12 # All configuration values have a default; values that are commented out
12 # All configuration values have a default; values that are commented out
13 # serve to show the default.
13 # serve to show the default.
14
14
15 import sys
15 import sys
16 import os
16 import os
17 import datetime
17 import datetime
18 import sphinx_rtd_theme
18 import sphinx_rtd_theme
19
19
20 # If extensions (or modules to document with autodoc) are in another directory,
20 # If extensions (or modules to document with autodoc) are in another directory,
21 # add these directories to sys.path here. If the directory is relative to the
21 # add these directories to sys.path here. If the directory is relative to the
22 # documentation root, use os.path.abspath to make it absolute, like shown here.
22 # documentation root, use os.path.abspath to make it absolute, like shown here.
23 sys.path.insert(0, os.path.abspath('.'))
23 sys.path.insert(0, os.path.abspath('.'))
24 import common
24 import common
25
25
26 # -- General configuration ------------------------------------------------
26 # -- General configuration ------------------------------------------------
27
27
28 # If your documentation needs a minimal Sphinx version, state it here.
28 # If your documentation needs a minimal Sphinx version, state it here.
29 #needs_sphinx = '1.0'
29 #needs_sphinx = '1.0'
30
30
31 # Add any Sphinx extension module names here, as strings. They can be
31 # Add any Sphinx extension module names here, as strings. They can be
32 # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
32 # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
33 # ones.
33 # ones.
34 extensions = [
34 extensions = [
35 'sphinx.ext.autodoc',
35 'sphinx.ext.intersphinx',
36 'sphinx.ext.intersphinx',
36 'sphinx.ext.todo',
37 'sphinx.ext.todo',
37 'sphinx.ext.imgmath'
38 'sphinx.ext.imgmath'
38 ]
39 ]
39
40
40 intersphinx_mapping = {
41 intersphinx_mapping = {
41 'enterprise': ('https://docs.rhodecode.com/RhodeCode-Enterprise/', None),
42 'enterprise': ('https://docs.rhodecode.com/RhodeCode-Enterprise/', None),
42 'control': ('https://docs.rhodecode.com/RhodeCode-Control/', None),
43 'control': ('https://docs.rhodecode.com/RhodeCode-Control/', None),
43 }
44 }
44
45
45 if tags.has('dev'):
46 intersphinx_mapping.update({
47 'enterprise': ('https://ci.rhodecode.com/documentation/Momentum/', None),
48 'control': ('https://ci.rhodecode.com/documentation/Control/', None),
49 })
50
51
52 # Add any paths that contain templates here, relative to this directory.
46 # Add any paths that contain templates here, relative to this directory.
53 templates_path = ['_templates']
47 templates_path = ['_templates']
54
48
55 # The suffix of source filenames.
49 # The suffix of source filenames.
56 source_suffix = '.rst'
50 source_suffix = '.rst'
57
51
58 # The encoding of source files.
52 # The encoding of source files.
59 #source_encoding = 'utf-8-sig'
53 #source_encoding = 'utf-8-sig'
60
54
61 # The master toctree document.
55 # The master toctree document.
62 master_doc = 'index'
56 master_doc = 'index'
63
57
64 # The version info for the project you're documenting, acts as replacement for
58 # The version info for the project you're documenting, acts as replacement for
65 # |version| and |release|, also used in various other places throughout the
59 # |version| and |release|, also used in various other places throughout the
66 # built documents.
60 # built documents.
67
61
68 # TODO: johbo: Move into common package for documentation utilities
62
69 def _get_version():
63 def _get_version():
70 with open('../rhodecode/VERSION') as f:
64 with open('../rhodecode/VERSION') as f:
71 return f.read().strip()
65 return f.read().strip()
72
66
67
73 # The full version, including alpha/beta/rc tags.
68 # The full version, including alpha/beta/rc tags.
74 release = _get_version()
69 release = _get_version()
75 # The short X.Y version.
70 # The short X.Y version.
76 version = '.'.join(release.split('.', 2)[:2]) # First two parts of release
71 version = '.'.join(release.split('.', 2)[:2]) # First two parts of release
77
72
78 # General information about the project.
73 # General information about the project.
79 project = u'RhodeCode Enterprise %s ' % _get_version()
74 project = u'RhodeCode Enterprise %s ' % _get_version()
80 copyright = u'2010-{now.year}, RhodeCode GmbH'.format(
75 copyright = u'2010-{now.year}, RhodeCode GmbH'.format(
81 now=datetime.datetime.today())
76 now=datetime.datetime.today())
82
77
83
78
84 # The language for content autogenerated by Sphinx. Refer to documentation
79 # The language for content autogenerated by Sphinx. Refer to documentation
85 # for a list of supported languages.
80 # for a list of supported languages.
86 #language = None
81 #language = None
87
82
88 rst_epilog = common.rst_epilog + """
83 rst_epilog = common.rst_epilog + """
89 .. |async| replace:: asynchronous
84 .. |async| replace:: asynchronous
90 """
85 """
91
86
92 # There are two options for replacing |today|: either, you set today to some
87 # There are two options for replacing |today|: either, you set today to some
93 # non-false value, then it is used:
88 # non-false value, then it is used:
94 #today = ''
89 #today = ''
95 # Else, today_fmt is used as the format for a strftime call.
90 # Else, today_fmt is used as the format for a strftime call.
96 #today_fmt = '%B %d, %Y'
91 #today_fmt = '%B %d, %Y'
97
92
98 # List of patterns, relative to source directory, that match files and
93 # List of patterns, relative to source directory, that match files and
99 # directories to ignore when looking for source files.
94 # directories to ignore when looking for source files.
100 exclude_patterns = [
95 exclude_patterns = [
101 # Special directories
96 # Special directories
102 '_build',
97 '_build',
103 'result',
98 'result',
104
99
105 # Other RST files
100 # Other RST files
106 'admin/rhodecode-backup.rst',
101 'admin/rhodecode-backup.rst',
107 'issue-trackers/redmine.rst',
102 'issue-trackers/redmine.rst',
108 'known-issues/error-msg-guide.rst',
103 'known-issues/error-msg-guide.rst',
109 'tutorials/docs-build.rst',
104 'tutorials/docs-build.rst',
110 'integrations/example-ext.py',
105 'integrations/example-ext.py',
111 'collaboration/supported-workflows.rst',
106 'collaboration/supported-workflows.rst',
112 ]
107 ]
113
108
114
109
115 # The reST default role (used for this markup: `text`) to use for all
110 # The reST default role (used for this markup: `text`) to use for all
116 # documents.
111 # documents.
117 #default_role = None
112 #default_role = None
118
113
119 # If true, '()' will be appended to :func: etc. cross-reference text.
114 # If true, '()' will be appended to :func: etc. cross-reference text.
120 #add_function_parentheses = True
115 #add_function_parentheses = True
121
116
122 # If true, the current module name will be prepended to all description
117 # If true, the current module name will be prepended to all description
123 # unit titles (such as .. function::).
118 # unit titles (such as .. function::).
124 #add_module_names = True
119 #add_module_names = True
125
120
126 # If true, sectionauthor and moduleauthor directives will be shown in the
121 # If true, sectionauthor and moduleauthor directives will be shown in the
127 # output. They are ignored by default.
122 # output. They are ignored by default.
128 #show_authors = False
123 #show_authors = False
129
124
130 # The name of the Pygments (syntax highlighting) style to use.
125 # The name of the Pygments (syntax highlighting) style to use.
131 pygments_style = 'sphinx'
126 pygments_style = 'sphinx'
132
127
133 # A list of ignored prefixes for module index sorting.
128 # A list of ignored prefixes for module index sorting.
134 #modindex_common_prefix = []
129 #modindex_common_prefix = []
135
130
136 # If true, keep warnings as "system message" paragraphs in the built documents.
131 # If true, keep warnings as "system message" paragraphs in the built documents.
137 keep_warnings = tags.has("dev")
132 keep_warnings = tags.has("dev")
138
133
139
134
140 # -- Options for HTML output ----------------------------------------------
135 # -- Options for HTML output ----------------------------------------------
141
136
142 # The theme to use for HTML and HTML Help pages. See the documentation for
137 # The theme to use for HTML and HTML Help pages. See the documentation for
143 # a list of builtin themes.
138 # a list of builtin themes.
144 #html_theme = 'rctheme'
139 #html_theme = 'rctheme'
145 html_theme = 'sphinx_rtd_theme'
140 html_theme = 'sphinx_rtd_theme'
146
141
147 # Theme options are theme-specific and customize the look and feel of a theme
142 # Theme options are theme-specific and customize the look and feel of a theme
148 # further. For a list of options available for each theme, see the
143 # further. For a list of options available for each theme, see the
149 # documentation.
144 # documentation.
150 #html_theme_options = {}
145 #html_theme_options = {}
151 html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
146 html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
152
147
153 # Add any paths that contain custom themes here, relative to this directory.
148 # Add any paths that contain custom themes here, relative to this directory.
154 #html_theme_path = []
149 #html_theme_path = []
155
150
156 # The name for this set of Sphinx documents. If None, it defaults to
151 # The name for this set of Sphinx documents. If None, it defaults to
157 # "<project> v<release> documentation".
152 # "<project> v<release> documentation".
158 #html_title = None
153 #html_title = None
159
154
160 # A shorter title for the navigation bar. Default is the same as html_title.
155 # A shorter title for the navigation bar. Default is the same as html_title.
161 #html_short_title = None
156 #html_short_title = None
162
157
163 # The name of an image file (relative to this directory) to place at the top
158 # The name of an image file (relative to this directory) to place at the top
164 # of the sidebar.
159 # of the sidebar.
165 #html_logo = None
160 #html_logo = None
166 html_sidebars = {
161 html_sidebars = {
167 '**': ['globaltoc.html'],
162 '**': ['globaltoc.html'],
168 }
163 }
169
164
170 # The name of an image file (within the static path) to use as favicon of the
165 # The name of an image file (within the static path) to use as favicon of the
171 # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
166 # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
172 # pixels large.
167 # pixels large.
173 html_favicon = 'images/favicon.ico'
168 html_favicon = 'images/favicon.ico'
174
169
175 # Add any paths that contain custom static files (such as style sheets) here,
170 # Add any paths that contain custom static files (such as style sheets) here,
176 # relative to this directory. They are copied after the builtin static files,
171 # relative to this directory. They are copied after the builtin static files,
177 # so a file named "default.css" will overwrite the builtin "default.css".
172 # so a file named "default.css" will overwrite the builtin "default.css".
178 html_static_path = ['static/css/add.css']
173 html_static_path = ['static/css/add.css']
179
174
180 # Add any extra paths that contain custom files (such as robots.txt or
175 # Add any extra paths that contain custom files (such as robots.txt or
181 # .htaccess) here, relative to this directory. These files are copied
176 # .htaccess) here, relative to this directory. These files are copied
182 # directly to the root of the documentation.
177 # directly to the root of the documentation.
183 #html_extra_path = []
178 #html_extra_path = []
184
179
185 # If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
180 # If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
186 # using the given strftime format.
181 # using the given strftime format.
187 #html_last_updated_fmt = '%b %d, %Y'
182 #html_last_updated_fmt = '%b %d, %Y'
188
183
189 # If true, SmartyPants will be used to convert quotes and dashes to
184 # If true, SmartyPants will be used to convert quotes and dashes to
190 # typographically correct entities.
185 # typographically correct entities.
191 #html_use_smartypants = True
186 #html_use_smartypants = True
192
187
193 # Custom sidebar templates, maps document names to template names.
188 # Custom sidebar templates, maps document names to template names.
194 #html_sidebars = {}
189 #html_sidebars = {}
195
190
196 # Additional templates that should be rendered to pages, maps page names to
191 # Additional templates that should be rendered to pages, maps page names to
197 # template names.
192 # template names.
198 #html_additional_pages = {}
193 #html_additional_pages = {}
199
194
200 # If false, no module index is generated.
195 # If false, no module index is generated.
201 #html_domain_indices = True
196 #html_domain_indices = True
202
197
203 # If false, no index is generated.
198 # If false, no index is generated.
204 #html_use_index = True
199 #html_use_index = True
205
200
206 # If true, the index is split into individual pages for each letter.
201 # If true, the index is split into individual pages for each letter.
207 #html_split_index = False
202 #html_split_index = False
208
203
209 # If true, links to the reST sources are added to the pages.
204 # If true, links to the reST sources are added to the pages.
210 #html_show_sourcelink = True
205 #html_show_sourcelink = True
211
206
212 # If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
207 # If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
213 #html_show_sphinx = True
208 #html_show_sphinx = True
214
209
215 # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
210 # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
216 #html_show_copyright = True
211 #html_show_copyright = True
217
212
218 # If true, an OpenSearch description file will be output, and all pages will
213 # If true, an OpenSearch description file will be output, and all pages will
219 # contain a <link> tag referring to it. The value of this option must be the
214 # contain a <link> tag referring to it. The value of this option must be the
220 # base URL from which the finished HTML is served.
215 # base URL from which the finished HTML is served.
221 #html_use_opensearch = ''
216 #html_use_opensearch = ''
222
217
223 # This is the file name suffix for HTML files (e.g. ".xhtml").
218 # This is the file name suffix for HTML files (e.g. ".xhtml").
224 #html_file_suffix = None
219 #html_file_suffix = None
225
220
226 # Output file base name for HTML help builder.
221 # Output file base name for HTML help builder.
227 htmlhelp_basename = 'rhodecode-enterprise'
222 htmlhelp_basename = 'rhodecode-enterprise'
228
223
229
224
230 # -- Options for LaTeX output ---------------------------------------------
225 # -- Options for LaTeX output ---------------------------------------------
231
226
232 latex_elements = {
227 latex_elements = {
233 'classoptions': ',oneside',
228 'classoptions': ',oneside',
234 'babel': '\\usepackage[english]{babel}',
229 'babel': '\\usepackage[english]{babel}',
235
230
236 # The paper size ('letterpaper' or 'a4paper').
231 # The paper size ('letterpaper' or 'a4paper').
237 #'papersize': 'letterpaper',
232 #'papersize': 'letterpaper',
238
233
239 # The font size ('10pt', '11pt' or '12pt').
234 # The font size ('10pt', '11pt' or '12pt').
240 #'pointsize': '10pt',
235 #'pointsize': '10pt',
241
236
242 # Additional stuff for the LaTeX preamble.
237 # Additional stuff for the LaTeX preamble.
243 #'preamble': '',
238 #'preamble': '',
244 }
239 }
245
240
246 # Grouping the document tree into LaTeX files. List of tuples
241 # Grouping the document tree into LaTeX files. List of tuples
247 # (source start file, target name, title,
242 # (source start file, target name, title,
248 # author, documentclass [howto, manual, or own class]).
243 # author, documentclass [howto, manual, or own class]).
249 latex_documents = [
244 latex_documents = [
250 ('index', 'RhodeCodeEnterprise.tex', u'RhodeCode Enterprise',
245 ('index', 'RhodeCodeEnterprise.tex', u'RhodeCode Enterprise',
251 u'RhodeCode GmbH', 'manual'),
246 u'RhodeCode GmbH', 'manual'),
252 ]
247 ]
253
248
254 # The name of an image file (relative to this directory) to place at the top of
249 # The name of an image file (relative to this directory) to place at the top of
255 # the title page.
250 # the title page.
256 #latex_logo = None
251 #latex_logo = None
257
252
258 # For "manual" documents, if this is true, then toplevel headings are parts,
253 # For "manual" documents, if this is true, then toplevel headings are parts,
259 # not chapters.
254 # not chapters.
260 #latex_use_parts = False
255 #latex_use_parts = False
261
256
262 # If true, show page references after internal links.
257 # If true, show page references after internal links.
263 latex_show_pagerefs = True
258 latex_show_pagerefs = True
264
259
265 # If true, show URL addresses after external links.
260 # If true, show URL addresses after external links.
266 latex_show_urls = 'footnote'
261 latex_show_urls = 'footnote'
267
262
268 # Documents to append as an appendix to all manuals.
263 # Documents to append as an appendix to all manuals.
269 #latex_appendices = []
264 #latex_appendices = []
270
265
271 # If false, no module index is generated.
266 # If false, no module index is generated.
272 #latex_domain_indices = True
267 #latex_domain_indices = True
273
268
274 # Mode for literal blocks wider than the frame. Can be
269 # Mode for literal blocks wider than the frame. Can be
275 # overflow, shrink or truncate
270 # overflow, shrink or truncate
276 pdf_fit_mode = "truncate"
271 pdf_fit_mode = "truncate"
277
272
278
273
279 # -- Options for manual page output ---------------------------------------
274 # -- Options for manual page output ---------------------------------------
280
275
281 # One entry per manual page. List of tuples
276 # One entry per manual page. List of tuples
282 # (source start file, name, description, authors, manual section).
277 # (source start file, name, description, authors, manual section).
283 man_pages = [
278 man_pages = [
284 ('index', 'rhodecodeenterprise', u'RhodeCode Enterprise',
279 ('index', 'rhodecodeenterprise', u'RhodeCode Enterprise',
285 [u'RhodeCode GmbH'], 1)
280 [u'RhodeCode GmbH'], 1)
286 ]
281 ]
287
282
288 # If true, show URL addresses after external links.
283 # If true, show URL addresses after external links.
289 #man_show_urls = False
284 #man_show_urls = False
290
285
291
286
292 # -- Options for Texinfo output -------------------------------------------
287 # -- Options for Texinfo output -------------------------------------------
293
288
294 # Grouping the document tree into Texinfo files. List of tuples
289 # Grouping the document tree into Texinfo files. List of tuples
295 # (source start file, target name, title, author,
290 # (source start file, target name, title, author,
296 # dir menu entry, description, category)
291 # dir menu entry, description, category)
297 texinfo_documents = [
292 texinfo_documents = [
298 ('index', 'RhodeCodeEnterprise', u'RhodeCode Enterprise',
293 ('index', 'RhodeCodeEnterprise', u'RhodeCode Enterprise',
299 u'RhodeCode Docs Team', 'RhodeCodeEnterprise', 'RhodeCode Docs Project',
294 u'RhodeCode Docs Team', 'RhodeCodeEnterprise', 'RhodeCode Docs Project',
300 'Miscellaneous'),
295 'Miscellaneous'),
301 ]
296 ]
302
297
303 # Documents to append as an appendix to all manuals.
298 # Documents to append as an appendix to all manuals.
304 #texinfo_appendices = []
299 #texinfo_appendices = []
305
300
306 # If false, no module index is generated.
301 # If false, no module index is generated.
307 #texinfo_domain_indices = True
302 #texinfo_domain_indices = True
308
303
309 # How to display URL addresses: 'footnote', 'no', or 'inline'.
304 # How to display URL addresses: 'footnote', 'no', or 'inline'.
310 #texinfo_show_urls = 'footnote'
305 #texinfo_show_urls = 'footnote'
311
306
312 # If true, do not generate a @detailmenu in the "Top" node's menu.
307 # If true, do not generate a @detailmenu in the "Top" node's menu.
313 #texinfo_no_detailmenu = False
308 #texinfo_no_detailmenu = False
314
309
315 # We want to see todo notes in case of a pre-release build of the documentation
310 # We want to see todo notes in case of a pre-release build of the documentation
316 todo_include_todos = tags.has("dev")
311 todo_include_todos = tags.has("dev")
@@ -1,226 +1,226 b''
1 .. _dev-setup:
1 .. _dev-setup:
2
2
3 ===================
3 ===================
4 Development setup
4 Development setup
5 ===================
5 ===================
6
6
7
7
8 RhodeCode Enterprise runs inside a Nix managed environment. This ensures build
8 RhodeCode Enterprise runs inside a Nix managed environment. This ensures build
9 environment dependencies are correctly declared and installed during setup.
9 environment dependencies are correctly declared and installed during setup.
10 It also enables atomic upgrades, rollbacks, and multiple instances of RhodeCode
10 It also enables atomic upgrades, rollbacks, and multiple instances of RhodeCode
11 Enterprise running with isolation.
11 Enterprise running with isolation.
12
12
13 To set up RhodeCode Enterprise inside the Nix environment, use the following steps:
13 To set up RhodeCode Enterprise inside the Nix environment, use the following steps:
14
14
15
15
16
16
17 Setup Nix Package Manager
17 Setup Nix Package Manager
18 -------------------------
18 -------------------------
19
19
20 To install the Nix Package Manager, please run::
20 To install the Nix Package Manager, please run::
21
21
22 $ curl https://nixos.org/nix/install | sh
22 $ curl https://nixos.org/nix/install | sh
23
23
24 or go to https://nixos.org/nix/ and follow the installation instructions.
24 or go to https://nixos.org/nix/ and follow the installation instructions.
25 Once this is correctly set up on your system, you should be able to use the
25 Once this is correctly set up on your system, you should be able to use the
26 following commands:
26 following commands:
27
27
28 * `nix-env`
28 * `nix-env`
29
29
30 * `nix-shell`
30 * `nix-shell`
31
31
32
32
33 .. tip::
33 .. tip::
34
34
35 Update your channels frequently by running ``nix-channel --update``.
35 Update your channels frequently by running ``nix-channel --update``.
36
36
37 .. note::
37 .. note::
38
38
39 To uninstall nix run the following:
39 To uninstall nix run the following:
40
40
41 remove the . "$HOME/.nix-profile/etc/profile.d/nix.sh" line in your ~/.profile or ~/.bash_profile
41 remove the . "$HOME/.nix-profile/etc/profile.d/nix.sh" line in your ~/.profile or ~/.bash_profile
42 rm -rf $HOME/{.nix-channels,.nix-defexpr,.nix-profile,.config/nixpkgs}
42 rm -rf $HOME/{.nix-channels,.nix-defexpr,.nix-profile,.config/nixpkgs}
43 sudo rm -rf /nix
43 sudo rm -rf /nix
44
44
45 Switch nix to the latest STABLE channel
45 Switch nix to the latest STABLE channel
46 ---------------------------------------
46 ---------------------------------------
47
47
48 run::
48 run::
49
49
50 nix-channel --add https://nixos.org/channels/nixos-16.03 nixpkgs
50 nix-channel --add https://nixos.org/channels/nixos-18.03 nixpkgs
51
51
52 Followed by::
52 Followed by::
53
53
54 nix-channel --update
54 nix-channel --update
55
55
56
56
57 Install required binaries
57 Install required binaries
58 -------------------------
58 -------------------------
59
59
60 We need some handy tools first.
60 We need some handy tools first.
61
61
62 run::
62 run::
63
63
64 nix-env -i nix-prefetch-hg
64 nix-env -i nix-prefetch-hg
65 nix-env -i nix-prefetch-git
65 nix-env -i nix-prefetch-git
66
66
67
67
68 Clone the required repositories
68 Clone the required repositories
69 -------------------------------
69 -------------------------------
70
70
71 After Nix is set up, clone the RhodeCode Enterprise Community Edition and
71 After Nix is set up, clone the RhodeCode Enterprise Community Edition and
72 RhodeCode VCSServer repositories into the same directory.
72 RhodeCode VCSServer repositories into the same directory.
73 RhodeCode currently is using Mercurial Version Control System, please make sure
73 RhodeCode currently is using Mercurial Version Control System, please make sure
74 you have it installed before continuing.
74 you have it installed before continuing.
75
75
76 To obtain the required sources, use the following commands::
76 To obtain the required sources, use the following commands::
77
77
78 mkdir rhodecode-develop && cd rhodecode-develop
78 mkdir rhodecode-develop && cd rhodecode-develop
79 hg clone https://code.rhodecode.com/rhodecode-enterprise-ce
79 hg clone https://code.rhodecode.com/rhodecode-enterprise-ce
80 hg clone https://code.rhodecode.com/rhodecode-vcsserver
80 hg clone https://code.rhodecode.com/rhodecode-vcsserver
81
81
82 .. note::
82 .. note::
83
83
84 If you cannot clone the repository, please contact us via support@rhodecode.com
84 If you cannot clone the repository, please contact us via support@rhodecode.com
85
85
86
86
87 Install some required libraries
87 Install some required libraries
88 -------------------------------
88 -------------------------------
89
89
90 There are some required drivers and dev libraries that we need to install to
90 There are some required drivers and dev libraries that we need to install to
91 test RhodeCode under different types of databases. For example in Ubuntu we
91 test RhodeCode under different types of databases. For example in Ubuntu we
92 need to install the following.
92 need to install the following.
93
93
94 required libraries::
94 required libraries::
95
95
96 sudo apt-get install libapr1-dev libaprutil1-dev
96 sudo apt-get install libapr1-dev libaprutil1-dev
97 sudo apt-get install libsvn-dev
97 sudo apt-get install libsvn-dev
98 sudo apt-get install mysql-server libmysqlclient-dev
98 sudo apt-get install mysql-server libmysqlclient-dev
99 sudo apt-get install postgresql postgresql-contrib libpq-dev
99 sudo apt-get install postgresql postgresql-contrib libpq-dev
100 sudo apt-get install libcurl4-openssl-dev
100 sudo apt-get install libcurl4-openssl-dev
101
101
102
102
103 Enter the Development Shell
103 Enter the Development Shell
104 ---------------------------
104 ---------------------------
105
105
106 The final step is to start the development shells. To do this, run the
106 The final step is to start the development shells. To do this, run the
107 following command from inside the cloned repository::
107 following command from inside the cloned repository::
108
108
109 #first, the vcsserver
109 #first, the vcsserver
110 cd ~/rhodecode-vcsserver
110 cd ~/rhodecode-vcsserver
111 nix-shell
111 nix-shell
112
112
113 # then enterprise sources
113 # then enterprise sources
114 cd ~/rhodecode-enterprise-ce
114 cd ~/rhodecode-enterprise-ce
115 nix-shell
115 nix-shell
116
116
117 .. note::
117 .. note::
118
118
119 On the first run, this will take a while to download and optionally compile
119 On the first run, this will take a while to download and optionally compile
120 a few things. The following runs will be faster. The development shell works
120 a few things. The following runs will be faster. The development shell works
121 fine on both MacOS and Linux platforms.
121 fine on both MacOS and Linux platforms.
122
122
123
123
124 Create config.nix for development
124 Create config.nix for development
125 ---------------------------------
125 ---------------------------------
126
126
127 In order to run proper tests and setup linking across projects, a config.nix
127 In order to run proper tests and setup linking across projects, a config.nix
128 file needs to be setup::
128 file needs to be setup::
129
129
130 # create config
130 # create config
131 mkdir -p ~/.nixpkgs
131 mkdir -p ~/.nixpkgs
132 touch ~/.nixpkgs/config.nix
132 touch ~/.nixpkgs/config.nix
133
133
134 # put the below content into the ~/.nixpkgs/config.nix file
134 # put the below content into the ~/.nixpkgs/config.nix file
135 # adjusts, the path to where you cloned your repositories.
135 # adjusts, the path to where you cloned your repositories.
136
136
137 {
137 {
138 rc = {
138 rc = {
139 sources = {
139 sources = {
140 rhodecode-vcsserver = "/home/dev/rhodecode-vcsserver";
140 rhodecode-vcsserver = "/home/dev/rhodecode-vcsserver";
141 rhodecode-enterprise-ce = "/home/dev/rhodecode-enterprise-ce";
141 rhodecode-enterprise-ce = "/home/dev/rhodecode-enterprise-ce";
142 rhodecode-enterprise-ee = "/home/dev/rhodecode-enterprise-ee";
142 rhodecode-enterprise-ee = "/home/dev/rhodecode-enterprise-ee";
143 };
143 };
144 };
144 };
145 }
145 }
146
146
147
147
148
148
149 Creating a Development Configuration
149 Creating a Development Configuration
150 ------------------------------------
150 ------------------------------------
151
151
152 To create a development environment for RhodeCode Enterprise,
152 To create a development environment for RhodeCode Enterprise,
153 use the following steps:
153 use the following steps:
154
154
155 1. Create a copy of vcsserver config:
155 1. Create a copy of vcsserver config:
156 `cp ~/rhodecode-vcsserver/configs/development.ini ~/rhodecode-vcsserver/configs/dev.ini`
156 `cp ~/rhodecode-vcsserver/configs/development.ini ~/rhodecode-vcsserver/configs/dev.ini`
157 2. Create a copy of rhodocode config:
157 2. Create a copy of rhodocode config:
158 `cp ~/rhodecode-enterprise-ce/configs/development.ini ~/rhodecode-enterprise-ce/configs/dev.ini`
158 `cp ~/rhodecode-enterprise-ce/configs/development.ini ~/rhodecode-enterprise-ce/configs/dev.ini`
159 3. Adjust the configuration settings to your needs if needed.
159 3. Adjust the configuration settings to your needs if needed.
160
160
161 .. note::
161 .. note::
162
162
163 It is recommended to use the name `dev.ini` since it's included in .hgignore file.
163 It is recommended to use the name `dev.ini` since it's included in .hgignore file.
164
164
165
165
166 Setup the Development Database
166 Setup the Development Database
167 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
167 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
168
168
169 To create a development database, use the following example. This is a one
169 To create a development database, use the following example. This is a one
170 time operation executed from the nix-shell of rhodecode-enterprise-ce sources ::
170 time operation executed from the nix-shell of rhodecode-enterprise-ce sources ::
171
171
172 rc-setup-app dev.ini \
172 rc-setup-app dev.ini \
173 --user=admin --password=secret \
173 --user=admin --password=secret \
174 --email=admin@example.com \
174 --email=admin@example.com \
175 --repos=~/my_dev_repos
175 --repos=~/my_dev_repos
176
176
177
177
178 Compile CSS and JavaScript
178 Compile CSS and JavaScript
179 ^^^^^^^^^^^^^^^^^^^^^^^^^^
179 ^^^^^^^^^^^^^^^^^^^^^^^^^^
180
180
181 To use the application's frontend and prepare it for production deployment,
181 To use the application's frontend and prepare it for production deployment,
182 you will need to compile the CSS and JavaScript with Grunt.
182 you will need to compile the CSS and JavaScript with Grunt.
183 This is easily done from within the nix-shell using the following command::
183 This is easily done from within the nix-shell using the following command::
184
184
185 grunt
185 grunt
186
186
187 When developing new features you will need to recompile following any
187 When developing new features you will need to recompile following any
188 changes made to the CSS or JavaScript files when developing the code::
188 changes made to the CSS or JavaScript files when developing the code::
189
189
190 grunt watch
190 grunt watch
191
191
192 This prepares the development (with comments/whitespace) versions of files.
192 This prepares the development (with comments/whitespace) versions of files.
193
193
194 Start the Development Servers
194 Start the Development Servers
195 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
195 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
196
196
197 From the rhodecode-vcsserver directory, start the development server in another
197 From the rhodecode-vcsserver directory, start the development server in another
198 nix-shell, using the following command::
198 nix-shell, using the following command::
199
199
200 pserve configs/dev.ini
200 pserve configs/dev.ini
201
201
202 In the adjacent nix-shell which you created for your development server, you may
202 In the adjacent nix-shell which you created for your development server, you may
203 now start CE with the following command::
203 now start CE with the following command::
204
204
205
205
206 pserve --reload configs/dev.ini
206 pserve --reload configs/dev.ini
207
207
208 .. note::
208 .. note::
209
209
210 `--reload` flag will automatically reload the server when source file changes.
210 `--reload` flag will automatically reload the server when source file changes.
211
211
212
212
213 Run the Environment Tests
213 Run the Environment Tests
214 ^^^^^^^^^^^^^^^^^^^^^^^^^
214 ^^^^^^^^^^^^^^^^^^^^^^^^^
215
215
216 Please make sure that the tests are passing to verify that your environment is
216 Please make sure that the tests are passing to verify that your environment is
217 set up correctly. RhodeCode uses py.test to run tests.
217 set up correctly. RhodeCode uses py.test to run tests.
218 While your instance is running, start a new nix-shell and simply run
218 While your instance is running, start a new nix-shell and simply run
219 ``make test`` to run the basic test suite.
219 ``make test`` to run the basic test suite.
220
220
221
221
222 Need Help?
222 Need Help?
223 ^^^^^^^^^^
223 ^^^^^^^^^^
224
224
225 Join us on Slack via https://rhodecode.com/join or post questions in our
225 Join us on Slack via https://rhodecode.com/join or post questions in our
226 Community Portal at https://community.rhodecode.com
226 Community Portal at https://community.rhodecode.com
@@ -1,261 +1,227 b''
1 { system ? builtins.currentSystem
1 { system ? builtins.currentSystem
2 }:
2 }:
3
3
4 let
4 let
5
5
6 pkgs = import <nixpkgs> { inherit system; };
6 pkgs = import <nixpkgs> { inherit system; };
7
7
8 inherit (pkgs) fetchurl fetchgit;
8 inherit (pkgs) fetchurl;
9
9
10 buildPythonPackage = pkgs.python27Packages.buildPythonPackage;
10 buildPythonPackage = pkgs.python27Packages.buildPythonPackage;
11 python = pkgs.python27Packages.python;
11 python = pkgs.python27Packages.python;
12
12
13 Jinja2 = buildPythonPackage rec {
13
14 name = "Jinja2-2.9.6";
14 alabaster = buildPythonPackage {
15 buildInputs = [];
15 name = "alabaster-0.7.11";
16 doCheck = false;
17 src = fetchurl {
18 url = "https://files.pythonhosted.org/packages/3f/46/9346ea429931d80244ab7f11c4fce83671df0b7ae5a60247a2b588592c46/alabaster-0.7.11.tar.gz";
19 sha256 = "1mvm69xsn5xf1jc45kdq1mn0yq0pfn54mv2jcww4s1vwqx6iyfxn";
20 };
21 };
22 babel = buildPythonPackage {
23 name = "babel-2.6.0";
16 doCheck = false;
24 doCheck = false;
17 propagatedBuildInputs = [MarkupSafe];
25 propagatedBuildInputs = [
26 pytz
27 ];
18 src = fetchurl {
28 src = fetchurl {
19 url = "https://pypi.python.org/packages/90/61/f820ff0076a2599dd39406dcb858ecb239438c02ce706c8e91131ab9c7f1/Jinja2-2.9.6.tar.gz";
29 url = "https://files.pythonhosted.org/packages/be/cc/9c981b249a455fa0c76338966325fc70b7265521bad641bf2932f77712f4/Babel-2.6.0.tar.gz";
20 md5 = "6411537324b4dba0956aaa8109f3c77b";
30 sha256 = "08rxmbx2s4irp0w0gmn498vns5xy0fagm0fg33xa772jiks51flc";
31 };
32 };
33 certifi = buildPythonPackage {
34 name = "certifi-2018.8.24";
35 doCheck = false;
36 src = fetchurl {
37 url = "https://files.pythonhosted.org/packages/e1/0f/f8d5e939184547b3bdc6128551b831a62832713aa98c2ccdf8c47ecc7f17/certifi-2018.8.24.tar.gz";
38 sha256 = "0f0nhrj9mlrf79iway4578wrsgmjh0fmacl9zv8zjckdy7b90rip";
21 };
39 };
22 };
40 };
23
41 chardet = buildPythonPackage {
24 MarkupSafe = buildPythonPackage rec {
42 name = "chardet-3.0.4";
25 name = "MarkupSafe-1.0";
43 doCheck = false;
26 buildInputs = [];
44 src = fetchurl {
45 url = "https://files.pythonhosted.org/packages/fc/bb/a5768c230f9ddb03acc9ef3f0d4a3cf93462473795d18e9535498c8f929d/chardet-3.0.4.tar.gz";
46 sha256 = "1bpalpia6r5x1kknbk11p1fzph56fmmnp405ds8icksd3knr5aw4";
47 };
48 };
49 docutils = buildPythonPackage {
50 name = "docutils-0.14";
51 doCheck = false;
52 src = fetchurl {
53 url = "https://files.pythonhosted.org/packages/84/f4/5771e41fdf52aabebbadecc9381d11dea0fa34e4759b4071244fa094804c/docutils-0.14.tar.gz";
54 sha256 = "0x22fs3pdmr42kvz6c654756wja305qv6cx1zbhwlagvxgr4xrji";
55 };
56 };
57 idna = buildPythonPackage {
58 name = "idna-2.7";
27 doCheck = false;
59 doCheck = false;
28 propagatedBuildInputs = [];
60 src = fetchurl {
61 url = "https://files.pythonhosted.org/packages/65/c4/80f97e9c9628f3cac9b98bfca0402ede54e0563b56482e3e6e45c43c4935/idna-2.7.tar.gz";
62 sha256 = "05jam7d31767dr12x0rbvvs8lxnpb1mhdb2zdlfxgh83z6k3hjk8";
63 };
64 };
65 imagesize = buildPythonPackage {
66 name = "imagesize-1.1.0";
67 doCheck = false;
29 src = fetchurl {
68 src = fetchurl {
30 url = "https://pypi.python.org/packages/4d/de/32d741db316d8fdb7680822dd37001ef7a448255de9699ab4bfcbdf4172b/MarkupSafe-1.0.tar.gz";
69 url = "https://files.pythonhosted.org/packages/41/f5/3cf63735d54aa9974e544aa25858d8f9670ac5b4da51020bbfc6aaade741/imagesize-1.1.0.tar.gz";
31 md5 = "2fcedc9284d50e577b5192e8e3578355";
70 sha256 = "1dg3wn7qpwmhgqc0r9na2ding1wif9q5spz3j9zn2riwphc2k0zk";
71 };
72 };
73 jinja2 = buildPythonPackage {
74 name = "jinja2-2.9.6";
75 doCheck = false;
76 propagatedBuildInputs = [
77 markupsafe
78 ];
79 src = fetchurl {
80 url = "https://files.pythonhosted.org/packages/90/61/f820ff0076a2599dd39406dcb858ecb239438c02ce706c8e91131ab9c7f1/Jinja2-2.9.6.tar.gz";
81 sha256 = "1zzrkywhziqffrzks14kzixz7nd4yh2vc0fb04a68vfd2ai03anx";
32 };
82 };
33 };
83 };
34
84 markupsafe = buildPythonPackage {
35 Pygments = buildPythonPackage {
85 name = "markupsafe-1.0";
36 name = "Pygments-2.2.0";
86 doCheck = false;
37 buildInputs = [];
87 src = fetchurl {
88 url = "https://files.pythonhosted.org/packages/4d/de/32d741db316d8fdb7680822dd37001ef7a448255de9699ab4bfcbdf4172b/MarkupSafe-1.0.tar.gz";
89 sha256 = "0rdn1s8x9ni7ss8rfiacj7x1085lx8mh2zdwqslnw8xc3l4nkgm6";
90 };
91 };
92 packaging = buildPythonPackage {
93 name = "packaging-17.1";
38 doCheck = false;
94 doCheck = false;
39 propagatedBuildInputs = [];
95 propagatedBuildInputs = [
96 pyparsing
97 six
98 ];
40 src = fetchurl {
99 src = fetchurl {
41 url = "https://pypi.python.org/packages/71/2a/2e4e77803a8bd6408a2903340ac498cb0a2181811af7c9ec92cb70b0308a/Pygments-2.2.0.tar.gz";
100 url = "https://files.pythonhosted.org/packages/77/32/439f47be99809c12ef2da8b60a2c47987786d2c6c9205549dd6ef95df8bd/packaging-17.1.tar.gz";
42 md5 = "13037baca42f16917cbd5ad2fab50844";
101 sha256 = "0nrpayk8kij1zm9sjnk38ldz3a6705ggvw8ljylqbrb4vmqbf6gh";
102 };
103 };
104 pygments = buildPythonPackage {
105 name = "pygments-2.2.0";
106 doCheck = false;
107 src = fetchurl {
108 url = "https://files.pythonhosted.org/packages/71/2a/2e4e77803a8bd6408a2903340ac498cb0a2181811af7c9ec92cb70b0308a/Pygments-2.2.0.tar.gz";
109 sha256 = "1k78qdvir1yb1c634nkv6rbga8wv4289xarghmsbbvzhvr311bnv";
110 };
111 };
112 pyparsing = buildPythonPackage {
113 name = "pyparsing-2.2.0";
114 doCheck = false;
115 src = fetchurl {
116 url = "https://files.pythonhosted.org/packages/3c/ec/a94f8cf7274ea60b5413df054f82a8980523efd712ec55a59e7c3357cf7c/pyparsing-2.2.0.tar.gz";
117 sha256 = "016b9gh606aa44sq92jslm89bg874ia0yyiyb643fa6dgbsbqch8";
43 };
118 };
44 };
119 };
45
120 pytz = buildPythonPackage {
46 Sphinx = buildPythonPackage (rec {
121 name = "pytz-2018.4";
47 name = "Sphinx-1.6.5";
122 doCheck = false;
123 src = fetchurl {
124 url = "https://files.pythonhosted.org/packages/10/76/52efda4ef98e7544321fd8d5d512e11739c1df18b0649551aeccfb1c8376/pytz-2018.4.tar.gz";
125 sha256 = "0jgpqx3kk2rhv81j1izjxvmx8d0x7hzs1857pgqnixic5wq2ar60";
126 };
127 };
128 requests = buildPythonPackage {
129 name = "requests-2.19.1";
130 doCheck = false;
131 propagatedBuildInputs = [
132 chardet
133 idna
134 urllib3
135 certifi
136 ];
48 src = fetchurl {
137 src = fetchurl {
49 url = "https://pypi.python.org/packages/8b/7e/b188d9a3b9c938e736e02a74c1363c2888e095d770df2c72b4c312f9fdcb/Sphinx-1.6.5.tar.gz";
138 url = "https://files.pythonhosted.org/packages/54/1f/782a5734931ddf2e1494e4cd615a51ff98e1879cbe9eecbdfeaf09aa75e9/requests-2.19.1.tar.gz";
50 md5 = "cd73118c21ec610432e63e6421ec54f1";
139 sha256 = "0snf8xxdzsgh1x2zv3vilvbrv9jbpmnfagzzb1rjmmvflckdh8pc";
140 };
141 };
142 six = buildPythonPackage {
143 name = "six-1.11.0";
144 doCheck = false;
145 src = fetchurl {
146 url = "https://files.pythonhosted.org/packages/16/d8/bc6316cf98419719bd59c91742194c111b6f2e85abac88e496adefaf7afe/six-1.11.0.tar.gz";
147 sha256 = "1scqzwc51c875z23phj48gircqjgnn3af8zy2izjwmnlxrxsgs3h";
148 };
51 };
149 };
150 snowballstemmer = buildPythonPackage {
151 name = "snowballstemmer-1.2.1";
152 doCheck = false;
153 src = fetchurl {
154 url = "https://files.pythonhosted.org/packages/20/6b/d2a7cb176d4d664d94a6debf52cd8dbae1f7203c8e42426daa077051d59c/snowballstemmer-1.2.1.tar.gz";
155 sha256 = "0a0idq4y5frv7qsg2x62jd7rd272749xk4x99misf5rcifk2d7wi";
156 };
157 };
158 sphinx = buildPythonPackage {
159 name = "sphinx-1.7.8";
160 doCheck = false;
52 propagatedBuildInputs = [
161 propagatedBuildInputs = [
53 six
162 six
54 Jinja2
163 jinja2
55 Pygments
164 pygments
56 docutils
165 docutils
57 snowballstemmer
166 snowballstemmer
58 babel
167 babel
59 alabaster
168 alabaster
60 imagesize
169 imagesize
61 requests
170 requests
62 setuptools
171 setuptools
172 packaging
63 sphinxcontrib-websupport
173 sphinxcontrib-websupport
64 typing
174 typing
65
66 # special cases
67 pytz
68 sphinx_rtd_theme
69
70 ];
175 ];
71 });
72
73 alabaster = buildPythonPackage rec {
74 name = "alabaster-0.7.10";
75 buildInputs = [];
76 doCheck = false;
77 propagatedBuildInputs = [];
78 src = fetchurl {
176 src = fetchurl {
79 url = "https://pypi.python.org/packages/d0/a5/e3a9ad3ee86aceeff71908ae562580643b955ea1b1d4f08ed6f7e8396bd7/alabaster-0.7.10.tar.gz";
177 url = "https://files.pythonhosted.org/packages/ac/54/4ef326d0c654da1ed91341a7a1f43efc18a8c770ddd2b8e45df97cb79d82/Sphinx-1.7.8.tar.gz";
80 md5 = "7934dccf38801faa105f6e7b4784f493";
178 sha256 = "1ryz0w4c31930f1br2sjwrxwx9cmsy7cqdb0d81g98n9bj250w50";
81 };
179 };
82 };
180 };
83
181 sphinx-rtd-theme = buildPythonPackage {
84 babel = buildPythonPackage {
182 name = "sphinx-rtd-theme-0.4.1";
85 name = "babel-2.5.1";
86 buildInputs = [];
87 doCheck = false;
183 doCheck = false;
88 propagatedBuildInputs = [pytz];
184 propagatedBuildInputs = [
185 sphinx
186 ];
89 src = fetchurl {
187 src = fetchurl {
90 url = "https://pypi.python.org/packages/5a/22/63f1dbb8514bb7e0d0c8a85cc9b14506599a075e231985f98afd70430e1f/Babel-2.5.1.tar.gz";
188 url = "https://files.pythonhosted.org/packages/f2/b0/a1933d792b806118ddbca6699f2e2c844d9b1b16e84a89d7effd5cd2a800/sphinx_rtd_theme-0.4.1.tar.gz";
91 md5 = "60228b3ce93a203357158b909afe8ae1";
189 sha256 = "1xkyqam8dzbjaymdyvkiif85m4y3jf8crdiwlgcfp8gqcj57aj9v";
92 };
93 };
94
95 certifi = buildPythonPackage {
96 name = "certifi-2017.11.5";
97 buildInputs = [];
98 doCheck = false;
99 propagatedBuildInputs = [];
100 src = fetchurl {
101 url = "https://pypi.python.org/packages/23/3f/8be01c50ed24a4bd6b8da799839066ce0288f66f5e11f0367323467f0cbc/certifi-2017.11.5.tar.gz";
102 md5 = "c15ac46ed1fe4b607ff3405928f9a992";
103 };
190 };
104 };
191 };
105
192 sphinxcontrib-websupport = buildPythonPackage {
106 chardet = buildPythonPackage {
193 name = "sphinxcontrib-websupport-1.1.0";
107 name = "chardet-3.0.4";
108 buildInputs = [];
109 doCheck = false;
194 doCheck = false;
110 propagatedBuildInputs = [];
111 src = fetchurl {
195 src = fetchurl {
112 url = "https://pypi.python.org/packages/fc/bb/a5768c230f9ddb03acc9ef3f0d4a3cf93462473795d18e9535498c8f929d/chardet-3.0.4.tar.gz";
196 url = "https://files.pythonhosted.org/packages/07/7a/e74b06dce85555ffee33e1d6b7381314169ebf7e31b62c18fcb2815626b7/sphinxcontrib-websupport-1.1.0.tar.gz";
113 md5 = "7dd1ba7f9c77e32351b0a0cfacf4055c";
197 sha256 = "1ff3ix76xi1y6m99qxhaq5161ix9swwzydilvdya07mgbcvpzr4x";
114 };
198 };
115 };
199 };
116
200 typing = buildPythonPackage {
117 docutils = buildPythonPackage {
201 name = "typing-3.6.6";
118 name = "docutils-0.14";
119 buildInputs = [];
120 doCheck = false;
202 doCheck = false;
121 propagatedBuildInputs = [];
122 src = fetchurl {
203 src = fetchurl {
123 url = "https://pypi.python.org/packages/84/f4/5771e41fdf52aabebbadecc9381d11dea0fa34e4759b4071244fa094804c/docutils-0.14.tar.gz";
204 url = "https://files.pythonhosted.org/packages/bf/9b/2bf84e841575b633d8d91ad923e198a415e3901f228715524689495b4317/typing-3.6.6.tar.gz";
124 md5 = "c53768d63db3873b7d452833553469de";
205 sha256 = "0ba9acs4awx15bf9v3nrs781msbd2nx826906nj6fqks2bvca9s0";
125 };
206 };
126 };
207 };
127
208 urllib3 = buildPythonPackage {
128 idna = buildPythonPackage {
209 name = "urllib3-1.23";
129 name = "idna-2.6";
130 buildInputs = [];
131 doCheck = false;
210 doCheck = false;
132 propagatedBuildInputs = [];
133 src = fetchurl {
211 src = fetchurl {
134 url = "https://pypi.python.org/packages/f4/bd/0467d62790828c23c47fc1dfa1b1f052b24efdf5290f071c7a91d0d82fd3/idna-2.6.tar.gz";
212 url = "https://files.pythonhosted.org/packages/3c/d2/dc5471622bd200db1cd9319e02e71bc655e9ea27b8e0ce65fc69de0dac15/urllib3-1.23.tar.gz";
135 md5 = "c706e2790b016bd0ed4edd2d4ba4d147";
213 sha256 = "1bvbd35q3zdcd7gsv38fwpizy7p06dr0154g5gfybrvnbvhwb2m6";
136 };
137 };
138
139 imagesize = buildPythonPackage {
140 name = "imagesize-0.7.1";
141 buildInputs = [];
142 doCheck = false;
143 propagatedBuildInputs = [];
144 src = fetchurl {
145 url = "https://pypi.python.org/packages/53/72/6c6f1e787d9cab2cc733cf042f125abec07209a58308831c9f292504e826/imagesize-0.7.1.tar.gz";
146 md5 = "976148283286a6ba5f69b0f81aef8052";
147 };
214 };
148 };
215 };
149
216
150 pytz = buildPythonPackage {
151 name = "pytz-2017.3";
152 buildInputs = [];
153 doCheck = false;
154 propagatedBuildInputs = [];
155 src = fetchurl {
156 url = "https://pypi.python.org/packages/60/88/d3152c234da4b2a1f7a989f89609ea488225eaea015bc16fbde2b3fdfefa/pytz-2017.3.zip";
157 md5 = "7006b56c0d68a162d9fe57d4249c3171";
158 };
159 };
160
161 requests = buildPythonPackage {
162 name = "requests-2.18.4";
163 buildInputs = [];
164 doCheck = false;
165 propagatedBuildInputs = [chardet idna urllib3 certifi];
166 src = fetchurl {
167 url = "https://pypi.python.org/packages/b0/e1/eab4fc3752e3d240468a8c0b284607899d2fbfb236a56b7377a329aa8d09/requests-2.18.4.tar.gz";
168 md5 = "081412b2ef79bdc48229891af13f4d82";
169 };
170 };
171
172 six = buildPythonPackage {
173 name = "six-1.11.0";
174 buildInputs = [];
175 doCheck = false;
176 propagatedBuildInputs = [];
177 src = fetchurl {
178 url = "https://pypi.python.org/packages/16/d8/bc6316cf98419719bd59c91742194c111b6f2e85abac88e496adefaf7afe/six-1.11.0.tar.gz";
179 md5 = "d12789f9baf7e9fb2524c0c64f1773f8";
180 };
181 };
182
183 snowballstemmer = buildPythonPackage {
184 name = "snowballstemmer-1.2.1";
185 buildInputs = [];
186 doCheck = false;
187 propagatedBuildInputs = [];
188 src = fetchurl {
189 url = "https://pypi.python.org/packages/20/6b/d2a7cb176d4d664d94a6debf52cd8dbae1f7203c8e42426daa077051d59c/snowballstemmer-1.2.1.tar.gz";
190 md5 = "643b019667a708a922172e33a99bf2fa";
191 };
192 };
193
194 sphinx-rtd-theme = buildPythonPackage {
195 name = "sphinx-rtd-theme-0.2.5b1";
196 buildInputs = [];
197 doCheck = false;
198 propagatedBuildInputs = [];
199 src = fetchurl {
200 url = "https://pypi.python.org/packages/59/e4/9e3a74a3271e6734911d3f549e8439db53b8ac29adf10c8f698e6c86246b/sphinx_rtd_theme-0.2.5b1.tar.gz";
201 md5 = "0923473a43bd2527f32151f195f2a521";
202 };
203 };
204
205 sphinxcontrib-websupport = buildPythonPackage {
206 name = "sphinxcontrib-websupport-1.0.1";
207 buildInputs = [];
208 doCheck = false;
209 propagatedBuildInputs = [];
210 src = fetchurl {
211 url = "https://pypi.python.org/packages/c5/6b/f0630436b931ad4f8331a9399ca18a7d447f0fcc0c7178fb56b1aee68d01/sphinxcontrib-websupport-1.0.1.tar.gz";
212 md5 = "84df26463b1ba65b07f926dbe2055665";
213 };
214 };
215
216 typing = buildPythonPackage {
217 name = "typing-3.6.2";
218 buildInputs = [];
219 doCheck = false;
220 propagatedBuildInputs = [];
221 src = fetchurl {
222 url = "https://pypi.python.org/packages/ca/38/16ba8d542e609997fdcd0214628421c971f8c395084085354b11ff4ac9c3/typing-3.6.2.tar.gz";
223 md5 = "143af0bf3afd1887622771f2f1ffe8e1";
224 };
225 };
226
227 urllib3 = buildPythonPackage {
228 name = "urllib3-1.22";
229 buildInputs = [];
230 doCheck = false;
231 propagatedBuildInputs = [];
232 src = fetchurl {
233 url = "https://pypi.python.org/packages/ee/11/7c59620aceedcc1ef65e156cc5ce5a24ef87be4107c2b74458464e437a5d/urllib3-1.22.tar.gz";
234 md5 = "0da7bed3fe94bf7dc59ae37885cc72f7";
235 };
236 };
237
238
239 sphinx_rtd_theme = buildPythonPackage rec {
240 name = "sphinx-rtd-theme-0.2.5b1";
241 buildInputs = [];
242 doCheck = false;
243 propagatedBuildInputs = [];
244 src = fetchurl {
245 url = "https://pypi.python.org/packages/59/e4/9e3a74a3271e6734911d3f549e8439db53b8ac29adf10c8f698e6c86246b/sphinx_rtd_theme-0.2.5b1.tar.gz";
246 md5 = "0923473a43bd2527f32151f195f2a521";
247 };
248
249
250 };
251 # Avoid that setuptools is replaced, this leads to trouble
217 # Avoid that setuptools is replaced, this leads to trouble
252 # with buildPythonPackage.
218 # with buildPythonPackage.
253 setuptools = pkgs.python27Packages.setuptools;
219 setuptools = pkgs.python27Packages.setuptools;
254
220
255 in python.buildEnv.override {
221 in python.buildEnv.override {
256 inherit python;
222 inherit python;
257 extraLibs = [
223 extraLibs = [
258 Sphinx
224 sphinx
259 sphinx_rtd_theme
225 sphinx-rtd-theme
260 ];
226 ];
261 }
227 } No newline at end of file
@@ -1,88 +1,98 b''
1 .. _known-issues:
1 .. _known-issues:
2
2
3 Known Issues
3 Known Issues
4 ============
4 ============
5
5
6 Subversion Issues
6 Subversion Issues
7 -----------------
7 -----------------
8
8
9 Limited |svn| support has been achieved for this release,
9 Limited |svn| support has been achieved for this release,
10 |release|. The following known issues are in development for improvement.
10 |release|. The following known issues are in development for improvement.
11
11
12 * |svn| |repo| creation:
12 * |svn| |repo| creation:
13 Terminating the VCS Server during remote importation of |svn| |repos| leaves
13 Terminating the VCS Server during remote importation of |svn| |repos| leaves
14 the the process still running in the background.
14 the the process still running in the background.
15
15
16 * |svn| |repo| checkin/checkout:
16 * |svn| |repo| checkin/checkout:
17 |svn| cloning support is not enabled by default. Please contact support if
17 |svn| cloning support is not enabled by default. Please contact support if
18 you want it enabled.
18 you want it enabled.
19
19
20 Windows Upload
20 Windows Upload
21 --------------
21 --------------
22
22
23 There can be an issue with uploading files from web interface on Windows,
23 There can be an issue with uploading files from web interface on Windows,
24 and afterwards users cannot properly clone or synchronize with the repository.
24 and afterwards users cannot properly clone or synchronize with the repository.
25
25
26 Early testing shows that often uploading files via HTML forms on Windows
26 Early testing shows that often uploading files via HTML forms on Windows
27 includes the full path of the file being uploaded and not the name of the file.
27 includes the full path of the file being uploaded and not the name of the file.
28
28
29 Old Format of Git Repositories
29 Old Format of Git Repositories
30 ------------------------------
30 ------------------------------
31
31
32 There is an issue when trying to import old |git| format |repos| into recent
32 There is an issue when trying to import old |git| format |repos| into recent
33 versions of |RCE|. This issue can occur when importing from external |git|
33 versions of |RCE|. This issue can occur when importing from external |git|
34 repositories or from older versions of |RCE| (<=2.2.7).
34 repositories or from older versions of |RCE| (<=2.2.7).
35
35
36 To convert the old version into a current version, clone the old
36 To convert the old version into a current version, clone the old
37 |repo| into a local machine using a recent |git| client, then push it to a new
37 |repo| into a local machine using a recent |git| client, then push it to a new
38 |repo| inside |RCE|.
38 |repo| inside |RCE|.
39
39
40
40 VCS Server Memory Consumption
41 VCS Server Memory Consumption
41 -----------------------------
42 -----------------------------
42
43
43 The VCS Server cache grows without limits if not configured correctly. This
44 The VCS Server cache grows without limits if not configured correctly. This
44 applies to |RCE| versions prior to the 3.3.2 releases, as 3.3.2
45 applies to |RCE| versions prior to the 3.3.2 releases, as 3.3.2
45 shipped with the optimal configuration as default. See the
46 shipped with the optimal configuration as default. See the
46 :ref:`vcs-server-maintain` section for details.
47 :ref:`vcs-server-maintain` section for details.
47
48
48 To fix this issue, upgrade to |RCE| 3.3.2 or greater, and if you discover
49 To fix this issue, upgrade to |RCE| 3.3.2 or greater, and if you discover
49 memory consumption issues check the VCS Server settings.
50 memory consumption issues check the VCS Server settings.
50
51
51 Fedora 23
52 Fedora 23 / Ubuntu 18.04
52 ---------
53 ------------------------
54
55 |RCC| has a know problem with locales, due to changes in glibc 2.27+ which affects
56 the local-archive format, which is now incompatible with our used glibc 2.26.
57
53
58
54 |RCC| does not run perfectly on Fedora 23 due to a locale issue. This is a
59 To work around this problem, you need set path to ``$LOCAL_ARCHIVE`` to the
55 known issue under investigation due to the Nix packaging of the product, see the
60 locale package in older pre glibc 2.27 format, or set `LC_ALL=C` in your enviroment.
56 `Github issue here`_. |RCC| runs fine on Fedora 21.
61
62 To use the pre 2.27 locale-archive fix follow these steps:
57
63
58 To work around this problem, you need to point ``$LOCAL_ARCHIVE`` to the
64 1. Download the pre 2.27 locale-archive package
59 workaround locale package.
60
65
61 1. Download this package:
66 .. code-block:: bash
62 http://lipa.ms.mff.cuni.cz/~cunav5am/nix/locale-archive
67
68 wget https://dls.rhodecode.com/assets/locale-archive
69
63
70
64 2. Point ``$LOCAL_ARCHIVE`` to the locale package.
71 2. Point ``$LOCAL_ARCHIVE`` to the locale package.
65
72
66 .. code-block:: bash
73 .. code-block:: bash
67
74
68 $ export LOCALE_ARCHIVE=/home/VERSION/locale-archive # change to your path
75 $ export LOCALE_ARCHIVE=/home/USER/locale-archive # change to your path
76
77 This can either added in `~/.rccontrol/supervisor/supervisord.ini`
78 or in user .bashrc/.zshrc etc, or via a startup script that
79 runs `rccontrol self-init`
69
80
70 If you happen to be running |RCC| from systemd, use the following
81 If you happen to be running |RCC| from systemd, use the following
71 example to pass the correct locale information on boot.
82 example to pass the correct locale information on boot.
72
83
73 .. code-block:: ini
84 .. code-block:: ini
74
85
75 [Unit]
86 [Unit]
76 Description=Rhodecode
87 Description=Rhodecode
77 After=network.target
88 After=network.target
78
89
79 [Service]
90 [Service]
80 Type=forking
91 Type=forking
81 User=scm
92 User=scm
82 Environment="LOCALE_ARCHIVE=/YOUR-PATH/locale-archive"
93 Environment="LOCALE_ARCHIVE=/YOUR-PATH/locale-archive"
83 ExecStart=/YOUR-PATH/.rccontrol-profile/bin/rccontrol-self-init
94 ExecStart=/YOUR-PATH/.rccontrol-profile/bin/rccontrol-self-init
84
95
85 [Install]
96 [Install]
86 WantedBy=multi-user.target
97 WantedBy=multi-user.target
87
98
88 .. _Github issue here: https://github.com/NixOS/nix/issues/599
@@ -1,119 +1,120 b''
1 .. _rhodecode-release-notes-ref:
1 .. _rhodecode-release-notes-ref:
2
2
3 Release Notes
3 Release Notes
4 =============
4 =============
5
5
6 |RCE| 4.x Versions
6 |RCE| 4.x Versions
7 ------------------
7 ------------------
8
8
9 .. toctree::
9 .. toctree::
10 :maxdepth: 1
10 :maxdepth: 1
11
11
12 release-notes-4.13.0.rst
12 release-notes-4.12.4.rst
13 release-notes-4.12.4.rst
13 release-notes-4.12.3.rst
14 release-notes-4.12.3.rst
14 release-notes-4.12.2.rst
15 release-notes-4.12.2.rst
15 release-notes-4.12.1.rst
16 release-notes-4.12.1.rst
16 release-notes-4.12.0.rst
17 release-notes-4.12.0.rst
17 release-notes-4.11.6.rst
18 release-notes-4.11.6.rst
18 release-notes-4.11.5.rst
19 release-notes-4.11.5.rst
19 release-notes-4.11.4.rst
20 release-notes-4.11.4.rst
20 release-notes-4.11.3.rst
21 release-notes-4.11.3.rst
21 release-notes-4.11.2.rst
22 release-notes-4.11.2.rst
22 release-notes-4.11.1.rst
23 release-notes-4.11.1.rst
23 release-notes-4.11.0.rst
24 release-notes-4.11.0.rst
24 release-notes-4.10.6.rst
25 release-notes-4.10.6.rst
25 release-notes-4.10.5.rst
26 release-notes-4.10.5.rst
26 release-notes-4.10.4.rst
27 release-notes-4.10.4.rst
27 release-notes-4.10.3.rst
28 release-notes-4.10.3.rst
28 release-notes-4.10.2.rst
29 release-notes-4.10.2.rst
29 release-notes-4.10.1.rst
30 release-notes-4.10.1.rst
30 release-notes-4.10.0.rst
31 release-notes-4.10.0.rst
31 release-notes-4.9.1.rst
32 release-notes-4.9.1.rst
32 release-notes-4.9.0.rst
33 release-notes-4.9.0.rst
33 release-notes-4.8.0.rst
34 release-notes-4.8.0.rst
34 release-notes-4.7.2.rst
35 release-notes-4.7.2.rst
35 release-notes-4.7.1.rst
36 release-notes-4.7.1.rst
36 release-notes-4.7.0.rst
37 release-notes-4.7.0.rst
37 release-notes-4.6.1.rst
38 release-notes-4.6.1.rst
38 release-notes-4.6.0.rst
39 release-notes-4.6.0.rst
39 release-notes-4.5.2.rst
40 release-notes-4.5.2.rst
40 release-notes-4.5.1.rst
41 release-notes-4.5.1.rst
41 release-notes-4.5.0.rst
42 release-notes-4.5.0.rst
42 release-notes-4.4.2.rst
43 release-notes-4.4.2.rst
43 release-notes-4.4.1.rst
44 release-notes-4.4.1.rst
44 release-notes-4.4.0.rst
45 release-notes-4.4.0.rst
45 release-notes-4.3.1.rst
46 release-notes-4.3.1.rst
46 release-notes-4.3.0.rst
47 release-notes-4.3.0.rst
47 release-notes-4.2.1.rst
48 release-notes-4.2.1.rst
48 release-notes-4.2.0.rst
49 release-notes-4.2.0.rst
49 release-notes-4.1.2.rst
50 release-notes-4.1.2.rst
50 release-notes-4.1.1.rst
51 release-notes-4.1.1.rst
51 release-notes-4.1.0.rst
52 release-notes-4.1.0.rst
52 release-notes-4.0.1.rst
53 release-notes-4.0.1.rst
53 release-notes-4.0.0.rst
54 release-notes-4.0.0.rst
54
55
55 |RCE| 3.x Versions
56 |RCE| 3.x Versions
56 ------------------
57 ------------------
57
58
58 .. toctree::
59 .. toctree::
59 :maxdepth: 1
60 :maxdepth: 1
60
61
61 release-notes-3.8.4.rst
62 release-notes-3.8.4.rst
62 release-notes-3.8.3.rst
63 release-notes-3.8.3.rst
63 release-notes-3.8.2.rst
64 release-notes-3.8.2.rst
64 release-notes-3.8.1.rst
65 release-notes-3.8.1.rst
65 release-notes-3.8.0.rst
66 release-notes-3.8.0.rst
66 release-notes-3.7.1.rst
67 release-notes-3.7.1.rst
67 release-notes-3.7.0.rst
68 release-notes-3.7.0.rst
68 release-notes-3.6.1.rst
69 release-notes-3.6.1.rst
69 release-notes-3.6.0.rst
70 release-notes-3.6.0.rst
70 release-notes-3.5.2.rst
71 release-notes-3.5.2.rst
71 release-notes-3.5.1.rst
72 release-notes-3.5.1.rst
72 release-notes-3.5.0.rst
73 release-notes-3.5.0.rst
73 release-notes-3.4.1.rst
74 release-notes-3.4.1.rst
74 release-notes-3.4.0.rst
75 release-notes-3.4.0.rst
75 release-notes-3.3.4.rst
76 release-notes-3.3.4.rst
76 release-notes-3.3.3.rst
77 release-notes-3.3.3.rst
77 release-notes-3.3.2.rst
78 release-notes-3.3.2.rst
78 release-notes-3.3.1.rst
79 release-notes-3.3.1.rst
79 release-notes-3.3.0.rst
80 release-notes-3.3.0.rst
80 release-notes-3.2.3.rst
81 release-notes-3.2.3.rst
81 release-notes-3.2.2.rst
82 release-notes-3.2.2.rst
82 release-notes-3.2.1.rst
83 release-notes-3.2.1.rst
83 release-notes-3.2.0.rst
84 release-notes-3.2.0.rst
84 release-notes-3.1.1.rst
85 release-notes-3.1.1.rst
85 release-notes-3.1.0.rst
86 release-notes-3.1.0.rst
86 release-notes-3.0.2.rst
87 release-notes-3.0.2.rst
87 release-notes-3.0.1.rst
88 release-notes-3.0.1.rst
88 release-notes-3.0.0.rst
89 release-notes-3.0.0.rst
89
90
90 |RCE| 2.x Versions
91 |RCE| 2.x Versions
91 ------------------
92 ------------------
92
93
93 .. toctree::
94 .. toctree::
94 :maxdepth: 1
95 :maxdepth: 1
95
96
96 release-notes-2.2.8.rst
97 release-notes-2.2.8.rst
97 release-notes-2.2.7.rst
98 release-notes-2.2.7.rst
98 release-notes-2.2.6.rst
99 release-notes-2.2.6.rst
99 release-notes-2.2.5.rst
100 release-notes-2.2.5.rst
100 release-notes-2.2.4.rst
101 release-notes-2.2.4.rst
101 release-notes-2.2.3.rst
102 release-notes-2.2.3.rst
102 release-notes-2.2.2.rst
103 release-notes-2.2.2.rst
103 release-notes-2.2.1.rst
104 release-notes-2.2.1.rst
104 release-notes-2.2.0.rst
105 release-notes-2.2.0.rst
105 release-notes-2.1.0.rst
106 release-notes-2.1.0.rst
106 release-notes-2.0.2.rst
107 release-notes-2.0.2.rst
107 release-notes-2.0.1.rst
108 release-notes-2.0.1.rst
108 release-notes-2.0.0.rst
109 release-notes-2.0.0.rst
109
110
110 |RCE| 1.x Versions
111 |RCE| 1.x Versions
111 ------------------
112 ------------------
112
113
113 .. toctree::
114 .. toctree::
114 :maxdepth: 1
115 :maxdepth: 1
115
116
116 release-notes-1.7.2.rst
117 release-notes-1.7.2.rst
117 release-notes-1.7.1.rst
118 release-notes-1.7.1.rst
118 release-notes-1.7.0.rst
119 release-notes-1.7.0.rst
119 release-notes-1.6.0.rst
120 release-notes-1.6.0.rst
@@ -1,8 +1,8 b''
1 Sphinx==1.6.5
1 sphinx==1.7.8
2 six==1.11.0
2 six==1.11.0
3 sphinx_rtd_theme==0.2.5b1
3 sphinx_rtd_theme==0.4.1
4 docutils==0.14.0
4 docutils==0.14.0
5 Pygments==2.2.0
5 pygments==2.2.0
6 MarkupSafe==1.0.0
6 markupsafe==1.0.0
7 Jinja2==2.9.6
7 jinja2==2.9.6
8 pytz No newline at end of file
8 pytz==2018.4
@@ -1,25 +1,33 b''
1 {
1 {
2 "name": "rhodecode-enterprise",
2 "name": "rhodecode-enterprise",
3 "version": "0.0.1",
3 "version": "1.0.0",
4 "private": true,
5 "description" : "RhodeCode JS packaged",
6 "license": "SEE LICENSE IN LICENSE.txt",
7 "repository" : {
8 "type" : "hg",
9 "url" : "https://code.rhodecode.com/rhodecode-enterprise-ce"
10 },
4 "devDependencies": {
11 "devDependencies": {
5 "grunt": "^0.4.5",
12 "grunt": "^0.4.5",
6 "grunt-contrib-copy": "^1.0.0",
13 "grunt-contrib-copy": "^1.0.0",
7 "grunt-contrib-concat": "^0.5.1",
14 "grunt-contrib-concat": "^0.5.1",
8 "grunt-contrib-jshint": "^0.12.0",
15 "grunt-contrib-jshint": "^0.12.0",
9 "grunt-contrib-less": "^1.1.0",
16 "grunt-contrib-less": "^1.1.0",
10 "grunt-contrib-watch": "^0.6.1",
17 "grunt-contrib-watch": "^0.6.1",
11 "crisper": "^2.0.2",
18 "crisper": "^2.1.1",
12 "vulcanize": "^1.14.8",
19 "vulcanize": "^1.16.0",
13 "grunt-crisper": "^1.0.1",
20 "grunt-crisper": "^1.0.1",
14 "grunt-vulcanize": "^1.0.0",
21 "grunt-vulcanize": "^1.0.0",
15 "node2nix": "^1.0.0",
22 "node2nix": "^1.0.0",
16 "jshint": "^2.9.1-rc3",
23 "jshint": "^2.9.1-rc3",
17 "bower": "^1.7.9",
24 "bower": "^1.8.4",
18 "jquery": "1.11.3",
25 "jquery": "1.11.3",
19 "favico.js": "^0.3.10",
26 "favico.js": "^0.3.10",
20 "clipboard": "^1.7.1",
27 "clipboard": "^2.0.1",
28 "qrious": "^4.0.2",
21 "moment": "^2.18.1",
29 "moment": "^2.18.1",
22 "mousetrap": "^1.6.1",
30 "mousetrap": "^1.6.1",
23 "appenlight-client": "git+https://git@github.com/AppEnlight/appenlight-client-js.git#0.5.1"
31 "appenlight-client": "git+https://git@github.com/AppEnlight/appenlight-client-js.git#0.5.1"
24 }
32 }
25 }
33 }
@@ -1,33 +1,30 b''
1 # Generated by bower2nix v3.2.0 (https://github.com/rvl/bower2nix)
1 { fetchbower, buildEnv }:
2 { fetchbower, buildEnv }:
2 buildEnv { name = "bower-env"; ignoreCollisions = true; paths = [
3 buildEnv { name = "bower-env"; ignoreCollisions = true; paths = [
3 (fetchbower "webcomponentsjs" "0.7.22" "^0.7.22" "178h9j8jq9wi5845f5pxhhhqw6x022nzmpzm4di8fgsdl1f6nr5d")
4 (fetchbower "webcomponentsjs" "1.2.3" "^1.2.3" "0db2fjk779rhl9d4ifpk1j9a83vngx6j3hk7si1752dqxj857267")
4 (fetchbower "polymer" "Polymer/polymer#1.6.1" "Polymer/polymer#^1.6.1" "09mm0jgk457gvwqlc155swch7gjr6fs3g7spnvhi6vh5b6518540")
5 (fetchbower "polymer" "Polymer/polymer#2.6.0" "Polymer/polymer#^2.6.0" "1jw5syjn0naa7dlxzxvsgwb20zbkbpx0pcg0wzjq4wr49c20nw0k")
5 (fetchbower "paper-button" "PolymerElements/paper-button#1.0.13" "PolymerElements/paper-button#^1.0.13" "0i3y153nqk06pn0gk282vyybnl3g1w3w41d5i9z659cgn27g3fvm")
6 (fetchbower "paper-button" "PolymerElements/paper-button#2.1.2" "PolymerElements/paper-button#^2.1.2" "1lwmjwhvimh02gss39yjp5h7yg9mxl1ig59yrk085v86y5f5ilz1")
6 (fetchbower "paper-spinner" "PolymerElements/paper-spinner#1.2.0" "PolymerElements/paper-spinner#^1.2.0" "1av1m6y81jw3hjhz1yqy3rwcgxarjzl58ldfn4q6sn51pgzngfqb")
7 (fetchbower "paper-spinner" "PolymerElements/paper-spinner#2.1.0" "PolymerElements/paper-spinner#^2.1.0" "07jamgxzvy4r9pgf5ikj1fm8nkrw6sywgcxvmm7ax58hjvmd4i45")
7 (fetchbower "paper-tooltip" "PolymerElements/paper-tooltip#1.1.3" "PolymerElements/paper-tooltip#^1.1.2" "0vmrm1n8k9sk9nvqy03q177axy22pia6i3j1gxbk72j3pqiqvg6k")
8 (fetchbower "paper-tooltip" "PolymerElements/paper-tooltip#2.1.1" "PolymerElements/paper-tooltip#^2.1.1" "0ja9vz4xps7dxfx6kmrwq0gifbjsyc3pk9l3hd5233ss72ghlvgb")
8 (fetchbower "paper-toast" "PolymerElements/paper-toast#1.3.0" "PolymerElements/paper-toast#^1.3.0" "0x9rqxsks5455s8pk4aikpp99ijdn6kxr9gvhwh99nbcqdzcxq1m")
9 (fetchbower "paper-toast" "PolymerElements/paper-toast#2.1.2" "PolymerElements/paper-toast#^2.1.2" "0mkj9ayjx2l9hvrz4kw3yjbgrs9w873k05ywv94nh92mzpjkxn04")
9 (fetchbower "paper-toggle-button" "PolymerElements/paper-toggle-button#1.2.0" "PolymerElements/paper-toggle-button#^1.2.0" "0mphcng3ngspbpg4jjn0mb91nvr4xc1phq3qswib15h6sfww1b2w")
10 (fetchbower "paper-toggle-button" "PolymerElements/paper-toggle-button#2.1.1" "PolymerElements/paper-toggle-button#^2.1.1" "1rl5ar3ny6r3v9hr8s68v8b3zh5yl52pikhi4b9iv9grv29g5999")
10 (fetchbower "iron-ajax" "PolymerElements/iron-ajax#1.4.4" "PolymerElements/iron-ajax#^1.4.4" "0jpi7ik3zljw8yh2ccc85r26lcpzmkc2nl1kn6fqdx57zkzk9v5b")
11 (fetchbower "iron-ajax" "PolymerElements/iron-ajax#2.1.3" "PolymerElements/iron-ajax#^2.1.3" "187zb6lkv18yapl292qhn611mbl4i2bqs2dimlwmdjaln285nc1l")
11 (fetchbower "iron-autogrow-textarea" "PolymerElements/iron-autogrow-textarea#1.0.13" "PolymerElements/iron-autogrow-textarea#^1.0.13" "0zwhpl97vii1s8k0lgain8i9dnw29b0mxc5ixdscx9las13n2lqq")
12 (fetchbower "iron-autogrow-textarea" "PolymerElements/iron-autogrow-textarea#2.2.0" "PolymerElements/iron-autogrow-textarea#^2.2.0" "1cx7g49m20z08x25z24g2pvv6m6dwfbkga3nsw0rpi3jk7xhznqw")
12 (fetchbower "iron-a11y-keys" "PolymerElements/iron-a11y-keys#1.0.6" "PolymerElements/iron-a11y-keys#^1.0.6" "1xz3mgghfcxixq28sdb654iaxj4nyi1bzcwf77ydkms6fviqs9mv")
13 (fetchbower "iron-a11y-keys" "PolymerElements/iron-a11y-keys#2.1.2" "PolymerElements/iron-a11y-keys#^2.1.2" "0zdn3bzfrk88iwahmmzvcjn3m90zga1l8dx42b365n8if0n0zapj")
13 (fetchbower "iron-flex-layout" "PolymerElements/iron-flex-layout#1.3.1" "PolymerElements/iron-flex-layout#^1.0.0" "0nswv3ih3bhflgcd2wjfmddqswzgqxb2xbq65jk9w3rkj26hplbl")
14 (fetchbower "shadycss" "webcomponents/shadycss#1.3.5" "webcomponents/shadycss#^v1.1.0" "1xp07d6jlmc3ywg4cdp2nijwi0vrbzw468242xz0s6zx5z2n2wzf")
14 (fetchbower "paper-behaviors" "PolymerElements/paper-behaviors#1.0.12" "PolymerElements/paper-behaviors#^1.0.0" "012bqk97awgz55cn7rm9g7cckrdhkqhls3zvp8l6nd4rdwcrdzq8")
15 (fetchbower "iron-flex-layout" "PolymerElements/iron-flex-layout#2.0.3" "PolymerElements/iron-flex-layout#1 - 2" "1ir9ili3rkcgbfj6is5s70vyb7m6avz0av0lpjjlhhsplrrl90bk")
15 (fetchbower "paper-material" "PolymerElements/paper-material#1.0.6" "PolymerElements/paper-material#^1.0.0" "0rljmknfdbm5aabvx9pk77754zckj3l127c3mvnmwkpkkr353xnh")
16 (fetchbower "paper-behaviors" "PolymerElements/paper-behaviors#2.1.1" "PolymerElements/paper-behaviors#1 - 2" "0wzyznmy1q64jsm6lck0xma92lg2hz9h9m05r68iy20iyrvbjld7")
16 (fetchbower "paper-styles" "PolymerElements/paper-styles#1.1.4" "PolymerElements/paper-styles#^1.0.0" "0j8vg74xrcxlni8i93dsab3y80f34kk30lv4yblqpkp9c3nrilf7")
17 (fetchbower "paper-styles" "PolymerElements/paper-styles#2.1.0" "PolymerElements/paper-styles#1 - 2" "0xzsd7pvjsk7lgcmvx4q0dvps40q3mymkx26zgs8ns91s1ssfqbx")
17 (fetchbower "neon-animation" "PolymerElements/neon-animation#1.2.4" "PolymerElements/neon-animation#^1.0.0" "16mz9i2n5w0k5j8d6gha23cnbdgm5syz3fawyh89gdbq97bi2q5j")
18 (fetchbower "iron-a11y-announcer" "PolymerElements/iron-a11y-announcer#2.1.0" "PolymerElements/iron-a11y-announcer#1 - 2" "1hvmw76im8y3pxmg1yfnlkzap429q9i4v1z42y7m8lz0996jmxrz")
18 (fetchbower "iron-a11y-announcer" "PolymerElements/iron-a11y-announcer#1.0.5" "PolymerElements/iron-a11y-announcer#^1.0.0" "0n7c7j1pwk3835s7s2jd9125wdcsqf216yi5gj07wn5s8h8p7m9d")
19 (fetchbower "iron-overlay-behavior" "PolymerElements/iron-overlay-behavior#2.3.4" "PolymerElements/iron-overlay-behavior#1 - 2" "0hk2fxhfz7kg27349qz1c87vq6nfdcnjr9az3q95ak3rigsb71wg")
19 (fetchbower "iron-overlay-behavior" "PolymerElements/iron-overlay-behavior#1.8.6" "PolymerElements/iron-overlay-behavior#^1.0.9" "14brn9gz6qqskarg3fxk91xs7vg02vgcsz9a9743kidxr0l0413m")
20 (fetchbower "iron-fit-behavior" "PolymerElements/iron-fit-behavior#2.2.1" "PolymerElements/iron-fit-behavior#1 - 2" "0v89am4r2fncr7m9k0f2xqh5bvgn2dqjjc7p515ix4grk89whbs3")
20 (fetchbower "iron-fit-behavior" "PolymerElements/iron-fit-behavior#1.2.5" "PolymerElements/iron-fit-behavior#^1.1.0" "1msnlh8lp1xg6v4h6dkjwj9kzac5q5q208ayla3x9hi483ki6rlf")
21 (fetchbower "iron-checked-element-behavior" "PolymerElements/iron-checked-element-behavior#2.1.1" "PolymerElements/iron-checked-element-behavior#1 - 2" "00gpvnb7anspadw59av7lca6p03qlx59dgnhw3lqf5v223dsh0l3")
21 (fetchbower "iron-checked-element-behavior" "PolymerElements/iron-checked-element-behavior#1.0.5" "PolymerElements/iron-checked-element-behavior#^1.0.0" "0l0yy4ah454s8bzfv076s8by7h67zy9ni6xb932qwyhx8br6c1m7")
22 (fetchbower "iron-behaviors" "PolymerElements/iron-behaviors#2.1.1" "PolymerElements/iron-behaviors#1 - 2" "0c71l1il76jg8gvyh8bwlqraif53gfnz5700vpg35qyr1biwbr1w")
22 (fetchbower "promise-polyfill" "polymerlabs/promise-polyfill#1.0.1" "polymerlabs/promise-polyfill#^1.0.0" "045bj2caav3famr5hhxgs1dx7n08r4s46mlzwb313vdy17is38xb")
23 (fetchbower "iron-validatable-behavior" "PolymerElements/iron-validatable-behavior#2.1.0" "PolymerElements/iron-validatable-behavior#1 - 2" "1j65zv7hcxdcyyanzhp2wap3bnx7cz8ghd44m12fad2206jj6ysi")
23 (fetchbower "iron-behaviors" "PolymerElements/iron-behaviors#1.0.17" "PolymerElements/iron-behaviors#^1.0.0" "021qvkmbk32jrrmmphpmwgby4bzi5jyf47rh1bxmq2ip07ly4bpr")
24 (fetchbower "iron-a11y-keys-behavior" "PolymerElements/iron-a11y-keys-behavior#2.1.1" "PolymerElements/iron-a11y-keys-behavior#1 - 2" "0jsw7wvh4wzcjqdbvxyha99h1ph61lykyyyvdb6hm8m8w40bhs9b")
24 (fetchbower "iron-validatable-behavior" "PolymerElements/iron-validatable-behavior#1.1.1" "PolymerElements/iron-validatable-behavior#^1.0.0" "1yhxlvywhw2klbbgm3f3cmanxfxggagph4ii635zv0c13707wslv")
25 (fetchbower "paper-ripple" "PolymerElements/paper-ripple#2.1.1" "PolymerElements/paper-ripple#1 - 2" "0sam6w83nxf9mss79j6hjfsx0288pf4hwr1bw5xclzgpddcjmrm5")
25 (fetchbower "iron-form-element-behavior" "PolymerElements/iron-form-element-behavior#1.0.6" "PolymerElements/iron-form-element-behavior#^1.0.0" "0rdhxivgkdhhz2yadgdbjfc70l555p3y83vjh8rfj5hr0asyn6q1")
26 (fetchbower "font-roboto" "PolymerElements/font-roboto#1.1.0" "PolymerElements/font-roboto#^1.0.1" "0z4msvaa5pnr84j2r957g313fmdbdbrknhdw1axy5g48845yv04s")
26 (fetchbower "iron-a11y-keys-behavior" "polymerelements/iron-a11y-keys-behavior#1.1.9" "polymerelements/iron-a11y-keys-behavior#^1.0.0" "1imm4gc84qizihhbyhfa8lwjh3myhj837f79i5m04xjgwrjmkaf6")
27 (fetchbower "iron-resizable-behavior" "PolymerElements/iron-resizable-behavior#2.1.1" "PolymerElements/iron-resizable-behavior#1 - 2" "0169rg6kby0ypfiwbkin46ywaszwj7r91yn081yqd96l1115aqnk")
27 (fetchbower "paper-ripple" "PolymerElements/paper-ripple#1.0.8" "PolymerElements/paper-ripple#^1.0.0" "0r9sq8ik7wwrw0qb82c3rw0c030ljwd3s466c9y4qbcrsbvfjnns")
28 (fetchbower "iron-form-element-behavior" "PolymerElements/iron-form-element-behavior#2.1.3" "PolymerElements/iron-form-element-behavior#1 - 2" "1c83kkfqvb5pdlvrhad3l7b11i244a8lykc8kzfnb9ya0xrln0cn")
28 (fetchbower "font-roboto" "PolymerElements/font-roboto#1.0.1" "PolymerElements/font-roboto#^1.0.1" "02jz43r0wkyr3yp7rq2rc08l5cwnsgca9fr54sr4rhsnl7cjpxrj")
29 (fetchbower "iron-meta" "PolymerElements/iron-meta#2.1.1" "PolymerElements/iron-meta#1 - 2" "12w1pcl3w97xpxihqddbf2d9dx8xz5i1jd9bz1xrmfsh25isni40")
29 (fetchbower "iron-meta" "PolymerElements/iron-meta#1.1.2" "PolymerElements/iron-meta#^1.0.0" "1wl4dx8fnsknw9z9xi8bpc4cy9x70c11x4zxwxnj73hf3smifppl")
30 (fetchbower "iron-resizable-behavior" "PolymerElements/iron-resizable-behavior#1.0.5" "PolymerElements/iron-resizable-behavior#^1.0.0" "1fd5zmbr2hax42vmcasncvk7lzi38fmb1kyii26nn8pnnjak7zkn")
31 (fetchbower "iron-selector" "PolymerElements/iron-selector#1.5.2" "PolymerElements/iron-selector#^1.0.0" "1ajv46llqzvahm5g6g75w7nfyjcslp53ji0wm96l2k94j87spv3r")
32 (fetchbower "web-animations-js" "web-animations/web-animations-js#2.2.2" "web-animations/web-animations-js#^2.2.0" "1izfvm3l67vwys0bqbhidi9rqziw2f8wv289386sc6jsxzgkzhga")
33 ]; }
30 ]; }
@@ -1,15 +1,17 b''
1 # This file has been generated by node2nix 1.0.0. Do not edit!
1 # This file has been generated by node2nix 1.6.0. Do not edit!
2
2
3 {pkgs ? import <nixpkgs> {
3 {pkgs ? import <nixpkgs> {
4 inherit system;
4 inherit system;
5 }, system ? builtins.currentSystem}:
5 }, system ? builtins.currentSystem, nodejs ? pkgs."nodejs-6_x"}:
6
6
7 let
7 let
8 nodeEnv = import ./node-env.nix {
8 nodeEnv = import ./node-env.nix {
9 inherit (pkgs) stdenv python utillinux runCommand writeTextFile nodejs;
9 inherit (pkgs) stdenv python2 utillinux runCommand writeTextFile;
10 inherit nodejs;
11 libtool = if pkgs.stdenv.isDarwin then pkgs.darwin.cctools else null;
10 };
12 };
11 in
13 in
12 import ./node-packages.nix {
14 import ./node-packages.nix {
13 inherit (pkgs) fetchurl fetchgit;
15 inherit (pkgs) fetchurl fetchgit;
14 inherit nodeEnv;
16 inherit nodeEnv;
15 } No newline at end of file
17 }
@@ -1,292 +1,542 b''
1 # This file originates from node2nix
1 # This file originates from node2nix
2
2
3 {stdenv, python, nodejs, utillinux, runCommand, writeTextFile}:
3 {stdenv, nodejs, python2, utillinux, libtool, runCommand, writeTextFile}:
4
4
5 let
5 let
6 python = if nodejs ? python then nodejs.python else python2;
7
6 # Create a tar wrapper that filters all the 'Ignoring unknown extended header keyword' noise
8 # Create a tar wrapper that filters all the 'Ignoring unknown extended header keyword' noise
7 tarWrapper = runCommand "tarWrapper" {} ''
9 tarWrapper = runCommand "tarWrapper" {} ''
8 mkdir -p $out/bin
10 mkdir -p $out/bin
9
11
10 cat > $out/bin/tar <<EOF
12 cat > $out/bin/tar <<EOF
11 #! ${stdenv.shell} -e
13 #! ${stdenv.shell} -e
12 $(type -p tar) "\$@" --warning=no-unknown-keyword
14 $(type -p tar) "\$@" --warning=no-unknown-keyword
13 EOF
15 EOF
14
16
15 chmod +x $out/bin/tar
17 chmod +x $out/bin/tar
16 '';
18 '';
17
19
18 # Function that generates a TGZ file from a NPM project
20 # Function that generates a TGZ file from a NPM project
19 buildNodeSourceDist =
21 buildNodeSourceDist =
20 { name, version, src, ... }:
22 { name, version, src, ... }:
21
23
22 stdenv.mkDerivation {
24 stdenv.mkDerivation {
23 name = "node-tarball-${name}-${version}";
25 name = "node-tarball-${name}-${version}";
24 inherit src;
26 inherit src;
25 buildInputs = [ nodejs ];
27 buildInputs = [ nodejs ];
26 buildPhase = ''
28 buildPhase = ''
27 export HOME=$TMPDIR
29 export HOME=$TMPDIR
28 tgzFile=$(npm pack)
30 tgzFile=$(npm pack | tail -n 1) # Hooks to the pack command will add output (https://docs.npmjs.com/misc/scripts)
29 '';
31 '';
30 installPhase = ''
32 installPhase = ''
31 mkdir -p $out/tarballs
33 mkdir -p $out/tarballs
32 mv $tgzFile $out/tarballs
34 mv $tgzFile $out/tarballs
33 mkdir -p $out/nix-support
35 mkdir -p $out/nix-support
34 echo "file source-dist $out/tarballs/$tgzFile" >> $out/nix-support/hydra-build-products
36 echo "file source-dist $out/tarballs/$tgzFile" >> $out/nix-support/hydra-build-products
35 '';
37 '';
36 };
38 };
37
39
38 includeDependencies = {dependencies}:
40 includeDependencies = {dependencies}:
39 stdenv.lib.optionalString (dependencies != [])
41 stdenv.lib.optionalString (dependencies != [])
40 (stdenv.lib.concatMapStrings (dependency:
42 (stdenv.lib.concatMapStrings (dependency:
41 ''
43 ''
42 # Bundle the dependencies of the package
44 # Bundle the dependencies of the package
43 mkdir -p node_modules
45 mkdir -p node_modules
44 cd node_modules
46 cd node_modules
45
47
46 # Only include dependencies if they don't exist. They may also be bundled in the package.
48 # Only include dependencies if they don't exist. They may also be bundled in the package.
47 if [ ! -e "${dependency.name}" ]
49 if [ ! -e "${dependency.name}" ]
48 then
50 then
49 ${composePackage dependency}
51 ${composePackage dependency}
50 fi
52 fi
51
53
52 cd ..
54 cd ..
53 ''
55 ''
54 ) dependencies);
56 ) dependencies);
55
57
56 # Recursively composes the dependencies of a package
58 # Recursively composes the dependencies of a package
57 composePackage = { name, packageName, src, dependencies ? [], ... }@args:
59 composePackage = { name, packageName, src, dependencies ? [], ... }@args:
58 let
59 fixImpureDependencies = writeTextFile {
60 name = "fixDependencies.js";
61 text = ''
62 var fs = require('fs');
63 var url = require('url');
64
65 /*
66 * Replaces an impure version specification by *
67 */
68 function replaceImpureVersionSpec(versionSpec) {
69 var parsedUrl = url.parse(versionSpec);
70
71 if(versionSpec == "latest" || versionSpec == "unstable" ||
72 versionSpec.substr(0, 2) == ".." || dependency.substr(0, 2) == "./" || dependency.substr(0, 2) == "~/" || dependency.substr(0, 1) == '/')
73 return '*';
74 else if(parsedUrl.protocol == "git:" || parsedUrl.protocol == "git+ssh:" || parsedUrl.protocol == "git+http:" || parsedUrl.protocol == "git+https:" ||
75 parsedUrl.protocol == "http:" || parsedUrl.protocol == "https:")
76 return '*';
77 else
78 return versionSpec;
79 }
80
81 var packageObj = JSON.parse(fs.readFileSync('./package.json'));
82
83 /* Replace dependencies */
84 if(packageObj.dependencies !== undefined) {
85 for(var dependency in packageObj.dependencies) {
86 var versionSpec = packageObj.dependencies[dependency];
87 packageObj.dependencies[dependency] = replaceImpureVersionSpec(versionSpec);
88 }
89 }
90
91 /* Replace development dependencies */
92 if(packageObj.devDependencies !== undefined) {
93 for(var dependency in packageObj.devDependencies) {
94 var versionSpec = packageObj.devDependencies[dependency];
95 packageObj.devDependencies[dependency] = replaceImpureVersionSpec(versionSpec);
96 }
97 }
98
99 /* Replace optional dependencies */
100 if(packageObj.optionalDependencies !== undefined) {
101 for(var dependency in packageObj.optionalDependencies) {
102 var versionSpec = packageObj.optionalDependencies[dependency];
103 packageObj.optionalDependencies[dependency] = replaceImpureVersionSpec(versionSpec);
104 }
105 }
106
107 /* Write the fixed JSON file */
108 fs.writeFileSync("package.json", JSON.stringify(packageObj));
109 '';
110 };
111 in
112 ''
60 ''
113 DIR=$(pwd)
61 DIR=$(pwd)
114 cd $TMPDIR
62 cd $TMPDIR
115
63
116 unpackFile ${src}
64 unpackFile ${src}
117
65
118 # Make the base dir in which the target dependency resides first
66 # Make the base dir in which the target dependency resides first
119 mkdir -p "$(dirname "$DIR/${packageName}")"
67 mkdir -p "$(dirname "$DIR/${packageName}")"
120
68
121 if [ -f "${src}" ]
69 if [ -f "${src}" ]
122 then
70 then
123 # Figure out what directory has been unpacked
71 # Figure out what directory has been unpacked
124 packageDir=$(find . -type d -maxdepth 1 | tail -1)
72 packageDir="$(find . -maxdepth 1 -type d | tail -1)"
125
73
126 # Restore write permissions to make building work
74 # Restore write permissions to make building work
75 find "$packageDir" -type d -print0 | xargs -0 chmod u+x
127 chmod -R u+w "$packageDir"
76 chmod -R u+w "$packageDir"
128
77
129 # Move the extracted tarball into the output folder
78 # Move the extracted tarball into the output folder
130 mv "$packageDir" "$DIR/${packageName}"
79 mv "$packageDir" "$DIR/${packageName}"
131 elif [ -d "${src}" ]
80 elif [ -d "${src}" ]
132 then
81 then
82 # Get a stripped name (without hash) of the source directory.
83 # On old nixpkgs it's already set internally.
84 if [ -z "$strippedName" ]
85 then
86 strippedName="$(stripHash ${src})"
87 fi
88
133 # Restore write permissions to make building work
89 # Restore write permissions to make building work
134 chmod -R u+w $strippedName
90 chmod -R u+w "$strippedName"
135
91
136 # Move the extracted directory into the output folder
92 # Move the extracted directory into the output folder
137 mv $strippedName "$DIR/${packageName}"
93 mv "$strippedName" "$DIR/${packageName}"
138 fi
94 fi
139
95
140 # Unset the stripped name to not confuse the next unpack step
96 # Unset the stripped name to not confuse the next unpack step
141 unset strippedName
97 unset strippedName
142
98
143 # Some version specifiers (latest, unstable, URLs, file paths) force NPM to make remote connections or consult paths outside the Nix store.
99 # Include the dependencies of the package
144 # The following JavaScript replaces these by * to prevent that
145 cd "$DIR/${packageName}"
100 cd "$DIR/${packageName}"
146 node ${fixImpureDependencies}
147
148 # Include the dependencies of the package
149 ${includeDependencies { inherit dependencies; }}
101 ${includeDependencies { inherit dependencies; }}
150 cd ..
102 cd ..
151 ${stdenv.lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
103 ${stdenv.lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
152 '';
104 '';
153
105
106 pinpointDependencies = {dependencies, production}:
107 let
108 pinpointDependenciesFromPackageJSON = writeTextFile {
109 name = "pinpointDependencies.js";
110 text = ''
111 var fs = require('fs');
112 var path = require('path');
113
114 function resolveDependencyVersion(location, name) {
115 if(location == process.env['NIX_STORE']) {
116 return null;
117 } else {
118 var dependencyPackageJSON = path.join(location, "node_modules", name, "package.json");
119
120 if(fs.existsSync(dependencyPackageJSON)) {
121 var dependencyPackageObj = JSON.parse(fs.readFileSync(dependencyPackageJSON));
122
123 if(dependencyPackageObj.name == name) {
124 return dependencyPackageObj.version;
125 }
126 } else {
127 return resolveDependencyVersion(path.resolve(location, ".."), name);
128 }
129 }
130 }
131
132 function replaceDependencies(dependencies) {
133 if(typeof dependencies == "object" && dependencies !== null) {
134 for(var dependency in dependencies) {
135 var resolvedVersion = resolveDependencyVersion(process.cwd(), dependency);
136
137 if(resolvedVersion === null) {
138 process.stderr.write("WARNING: cannot pinpoint dependency: "+dependency+", context: "+process.cwd()+"\n");
139 } else {
140 dependencies[dependency] = resolvedVersion;
141 }
142 }
143 }
144 }
145
146 /* Read the package.json configuration */
147 var packageObj = JSON.parse(fs.readFileSync('./package.json'));
148
149 /* Pinpoint all dependencies */
150 replaceDependencies(packageObj.dependencies);
151 if(process.argv[2] == "development") {
152 replaceDependencies(packageObj.devDependencies);
153 }
154 replaceDependencies(packageObj.optionalDependencies);
155
156 /* Write the fixed package.json file */
157 fs.writeFileSync("package.json", JSON.stringify(packageObj, null, 2));
158 '';
159 };
160 in
161 ''
162 node ${pinpointDependenciesFromPackageJSON} ${if production then "production" else "development"}
163
164 ${stdenv.lib.optionalString (dependencies != [])
165 ''
166 if [ -d node_modules ]
167 then
168 cd node_modules
169 ${stdenv.lib.concatMapStrings (dependency: pinpointDependenciesOfPackage dependency) dependencies}
170 cd ..
171 fi
172 ''}
173 '';
174
175 # Recursively traverses all dependencies of a package and pinpoints all
176 # dependencies in the package.json file to the versions that are actually
177 # being used.
178
179 pinpointDependenciesOfPackage = { packageName, dependencies ? [], production ? true, ... }@args:
180 ''
181 if [ -d "${packageName}" ]
182 then
183 cd "${packageName}"
184 ${pinpointDependencies { inherit dependencies production; }}
185 cd ..
186 ${stdenv.lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
187 fi
188 '';
189
154 # Extract the Node.js source code which is used to compile packages with
190 # Extract the Node.js source code which is used to compile packages with
155 # native bindings
191 # native bindings
156 nodeSources = runCommand "node-sources" {} ''
192 nodeSources = runCommand "node-sources" {} ''
157 tar --no-same-owner --no-same-permissions -xf ${nodejs.src}
193 tar --no-same-owner --no-same-permissions -xf ${nodejs.src}
158 mv node-* $out
194 mv node-* $out
159 '';
195 '';
160
196
197 # Script that adds _integrity fields to all package.json files to prevent NPM from consulting the cache (that is empty)
198 addIntegrityFieldsScript = writeTextFile {
199 name = "addintegrityfields.js";
200 text = ''
201 var fs = require('fs');
202 var path = require('path');
203
204 function augmentDependencies(baseDir, dependencies) {
205 for(var dependencyName in dependencies) {
206 var dependency = dependencies[dependencyName];
207
208 // Open package.json and augment metadata fields
209 var packageJSONDir = path.join(baseDir, "node_modules", dependencyName);
210 var packageJSONPath = path.join(packageJSONDir, "package.json");
211
212 if(fs.existsSync(packageJSONPath)) { // Only augment packages that exist. Sometimes we may have production installs in which development dependencies can be ignored
213 console.log("Adding metadata fields to: "+packageJSONPath);
214 var packageObj = JSON.parse(fs.readFileSync(packageJSONPath));
215
216 if(dependency.integrity) {
217 packageObj["_integrity"] = dependency.integrity;
218 } else {
219 packageObj["_integrity"] = "sha1-000000000000000000000000000="; // When no _integrity string has been provided (e.g. by Git dependencies), add a dummy one. It does not seem to harm and it bypasses downloads.
220 }
221
222 packageObj["_resolved"] = dependency.version; // Set the resolved version to the version identifier. This prevents NPM from cloning Git repositories.
223 fs.writeFileSync(packageJSONPath, JSON.stringify(packageObj, null, 2));
224 }
225
226 // Augment transitive dependencies
227 if(dependency.dependencies !== undefined) {
228 augmentDependencies(packageJSONDir, dependency.dependencies);
229 }
230 }
231 }
232
233 if(fs.existsSync("./package-lock.json")) {
234 var packageLock = JSON.parse(fs.readFileSync("./package-lock.json"));
235
236 if(packageLock.lockfileVersion !== 1) {
237 process.stderr.write("Sorry, I only understand lock file version 1!\n");
238 process.exit(1);
239 }
240
241 if(packageLock.dependencies !== undefined) {
242 augmentDependencies(".", packageLock.dependencies);
243 }
244 }
245 '';
246 };
247
248 # Reconstructs a package-lock file from the node_modules/ folder structure and package.json files with dummy sha1 hashes
249 reconstructPackageLock = writeTextFile {
250 name = "addintegrityfields.js";
251 text = ''
252 var fs = require('fs');
253 var path = require('path');
254
255 var packageObj = JSON.parse(fs.readFileSync("package.json"));
256
257 var lockObj = {
258 name: packageObj.name,
259 version: packageObj.version,
260 lockfileVersion: 1,
261 requires: true,
262 dependencies: {}
263 };
264
265 function augmentPackageJSON(filePath, dependencies) {
266 var packageJSON = path.join(filePath, "package.json");
267 if(fs.existsSync(packageJSON)) {
268 var packageObj = JSON.parse(fs.readFileSync(packageJSON));
269 dependencies[packageObj.name] = {
270 version: packageObj.version,
271 integrity: "sha1-000000000000000000000000000=",
272 dependencies: {}
273 };
274 processDependencies(path.join(filePath, "node_modules"), dependencies[packageObj.name].dependencies);
275 }
276 }
277
278 function processDependencies(dir, dependencies) {
279 if(fs.existsSync(dir)) {
280 var files = fs.readdirSync(dir);
281
282 files.forEach(function(entry) {
283 var filePath = path.join(dir, entry);
284 var stats = fs.statSync(filePath);
285
286 if(stats.isDirectory()) {
287 if(entry.substr(0, 1) == "@") {
288 // When we encounter a namespace folder, augment all packages belonging to the scope
289 var pkgFiles = fs.readdirSync(filePath);
290
291 pkgFiles.forEach(function(entry) {
292 if(stats.isDirectory()) {
293 var pkgFilePath = path.join(filePath, entry);
294 augmentPackageJSON(pkgFilePath, dependencies);
295 }
296 });
297 } else {
298 augmentPackageJSON(filePath, dependencies);
299 }
300 }
301 });
302 }
303 }
304
305 processDependencies("node_modules", lockObj.dependencies);
306
307 fs.writeFileSync("package-lock.json", JSON.stringify(lockObj, null, 2));
308 '';
309 };
310
161 # Builds and composes an NPM package including all its dependencies
311 # Builds and composes an NPM package including all its dependencies
162 buildNodePackage = { name, packageName, version, dependencies ? [], production ? true, npmFlags ? "", dontNpmInstall ? false, preRebuild ? "", ... }@args:
312 buildNodePackage =
313 { name
314 , packageName
315 , version
316 , dependencies ? []
317 , buildInputs ? []
318 , production ? true
319 , npmFlags ? ""
320 , dontNpmInstall ? false
321 , bypassCache ? false
322 , preRebuild ? ""
323 , dontStrip ? true
324 , unpackPhase ? "true"
325 , buildPhase ? "true"
326 , ... }@args:
163
327
164 stdenv.lib.makeOverridable stdenv.mkDerivation (builtins.removeAttrs args [ "dependencies" ] // {
328 let
329 forceOfflineFlag = if bypassCache then "--offline" else "--registry http://www.example.com";
330 extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" "dontStrip" "dontNpmInstall" "preRebuild" "unpackPhase" "buildPhase" ];
331 in
332 stdenv.mkDerivation ({
165 name = "node-${name}-${version}";
333 name = "node-${name}-${version}";
166 buildInputs = [ tarWrapper python nodejs ] ++ stdenv.lib.optional (stdenv.isLinux) utillinux ++ args.buildInputs or [];
334 buildInputs = [ tarWrapper python nodejs ]
167 dontStrip = args.dontStrip or true; # Striping may fail a build for some package deployments
335 ++ stdenv.lib.optional (stdenv.isLinux) utillinux
336 ++ stdenv.lib.optional (stdenv.isDarwin) libtool
337 ++ buildInputs;
168
338
169 inherit dontNpmInstall preRebuild;
339 inherit dontStrip; # Stripping may fail a build for some package deployments
170
340 inherit dontNpmInstall preRebuild unpackPhase buildPhase;
171 unpackPhase = args.unpackPhase or "true";
172
173 buildPhase = args.buildPhase or "true";
174
341
175 compositionScript = composePackage args;
342 compositionScript = composePackage args;
176 passAsFile = [ "compositionScript" ];
343 pinpointDependenciesScript = pinpointDependenciesOfPackage args;
177
344
178 installPhase = args.installPhase or ''
345 passAsFile = [ "compositionScript" "pinpointDependenciesScript" ];
346
347 installPhase = ''
179 # Create and enter a root node_modules/ folder
348 # Create and enter a root node_modules/ folder
180 mkdir -p $out/lib/node_modules
349 mkdir -p $out/lib/node_modules
181 cd $out/lib/node_modules
350 cd $out/lib/node_modules
182
351
183 # Compose the package and all its dependencies
352 # Compose the package and all its dependencies
184 source $compositionScriptPath
353 source $compositionScriptPath
185
354
355 # Pinpoint the versions of all dependencies to the ones that are actually being used
356 echo "pinpointing versions of dependencies..."
357 source $pinpointDependenciesScriptPath
358
186 # Patch the shebangs of the bundled modules to prevent them from
359 # Patch the shebangs of the bundled modules to prevent them from
187 # calling executables outside the Nix store as much as possible
360 # calling executables outside the Nix store as much as possible
188 patchShebangs .
361 patchShebangs .
189
362
190 # Deploy the Node.js package by running npm install. Since the
363 # Deploy the Node.js package by running npm install. Since the
191 # dependencies have been provided already by ourselves, it should not
364 # dependencies have been provided already by ourselves, it should not
192 # attempt to install them again, which is good, because we want to make
365 # attempt to install them again, which is good, because we want to make
193 # it Nix's responsibility. If it needs to install any dependencies
366 # it Nix's responsibility. If it needs to install any dependencies
194 # anyway (e.g. because the dependency parameters are
367 # anyway (e.g. because the dependency parameters are
195 # incomplete/incorrect), it fails.
368 # incomplete/incorrect), it fails.
196 #
369 #
197 # The other responsibilities of NPM are kept -- version checks, build
370 # The other responsibilities of NPM are kept -- version checks, build
198 # steps, postprocessing etc.
371 # steps, postprocessing etc.
199
372
200 export HOME=$TMPDIR
373 export HOME=$TMPDIR
201 cd "${packageName}"
374 cd "${packageName}"
202 runHook preRebuild
375 runHook preRebuild
203 npm --registry http://www.example.com --nodedir=${nodeSources} ${npmFlags} ${stdenv.lib.optionalString production "--production"} rebuild
376
377 ${stdenv.lib.optionalString bypassCache ''
378 if [ ! -f package-lock.json ]
379 then
380 echo "No package-lock.json file found, reconstructing..."
381 node ${reconstructPackageLock}
382 fi
383
384 node ${addIntegrityFieldsScript}
385 ''}
386
387 npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${stdenv.lib.optionalString production "--production"} rebuild
204
388
205 if [ "$dontNpmInstall" != "1" ]
389 if [ "$dontNpmInstall" != "1" ]
206 then
390 then
207 npm --registry http://www.example.com --nodedir=${nodeSources} ${npmFlags} ${stdenv.lib.optionalString production "--production"} install
391 # NPM tries to download packages even when they already exist if npm-shrinkwrap is used.
392 rm -f npm-shrinkwrap.json
393
394 npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${stdenv.lib.optionalString production "--production"} install
208 fi
395 fi
209
396
210 # Create symlink to the deployed executable folder, if applicable
397 # Create symlink to the deployed executable folder, if applicable
211 if [ -d "$out/lib/node_modules/.bin" ]
398 if [ -d "$out/lib/node_modules/.bin" ]
212 then
399 then
213 ln -s $out/lib/node_modules/.bin $out/bin
400 ln -s $out/lib/node_modules/.bin $out/bin
214 fi
401 fi
215
402
216 # Create symlinks to the deployed manual page folders, if applicable
403 # Create symlinks to the deployed manual page folders, if applicable
217 if [ -d "$out/lib/node_modules/${packageName}/man" ]
404 if [ -d "$out/lib/node_modules/${packageName}/man" ]
218 then
405 then
219 mkdir -p $out/share
406 mkdir -p $out/share
220 for dir in "$out/lib/node_modules/${packageName}/man/"*
407 for dir in "$out/lib/node_modules/${packageName}/man/"*
221 do
408 do
222 mkdir -p $out/share/man/$(basename "$dir")
409 mkdir -p $out/share/man/$(basename "$dir")
223 for page in "$dir"/*
410 for page in "$dir"/*
224 do
411 do
225 ln -s $page $out/share/man/$(basename "$dir")
412 ln -s $page $out/share/man/$(basename "$dir")
226 done
413 done
227 done
414 done
228 fi
415 fi
416
417 # Run post install hook, if provided
418 runHook postInstall
229 '';
419 '';
230 });
420 } // extraArgs);
231
421
232 # Builds a development shell
422 # Builds a development shell
233 buildNodeShell = { name, packageName, version, src, dependencies ? [], production ? true, npmFlags ? "", dontNpmInstall ? false, ... }@args:
423 buildNodeShell =
424 { name
425 , packageName
426 , version
427 , src
428 , dependencies ? []
429 , buildInputs ? []
430 , production ? true
431 , npmFlags ? ""
432 , dontNpmInstall ? false
433 , bypassCache ? false
434 , dontStrip ? true
435 , unpackPhase ? "true"
436 , buildPhase ? "true"
437 , ... }@args:
438
234 let
439 let
235 nodeDependencies = stdenv.mkDerivation {
440 forceOfflineFlag = if bypassCache then "--offline" else "--registry http://www.example.com";
441
442 extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" ];
443
444 nodeDependencies = stdenv.mkDerivation ({
236 name = "node-dependencies-${name}-${version}";
445 name = "node-dependencies-${name}-${version}";
237
446
238 buildInputs = [ tarWrapper python nodejs ] ++ stdenv.lib.optional (stdenv.isLinux) utillinux ++ args.buildInputs or [];
447 buildInputs = [ tarWrapper python nodejs ]
448 ++ stdenv.lib.optional (stdenv.isLinux) utillinux
449 ++ stdenv.lib.optional (stdenv.isDarwin) libtool
450 ++ buildInputs;
451
452 inherit dontStrip; # Stripping may fail a build for some package deployments
453 inherit dontNpmInstall unpackPhase buildPhase;
239
454
240 includeScript = includeDependencies { inherit dependencies; };
455 includeScript = includeDependencies { inherit dependencies; };
241 passAsFile = [ "includeScript" ];
456 pinpointDependenciesScript = pinpointDependenciesOfPackage args;
457
458 passAsFile = [ "includeScript" "pinpointDependenciesScript" ];
242
459
243 buildCommand = ''
460 installPhase = ''
244 mkdir -p $out/lib
461 mkdir -p $out/${packageName}
245 cd $out/lib
462 cd $out/${packageName}
463
246 source $includeScriptPath
464 source $includeScriptPath
247
465
248 # Create fake package.json to make the npm commands work properly
466 # Create fake package.json to make the npm commands work properly
249 cat > package.json <<EOF
467 cp ${src}/package.json .
250 {
468 chmod 644 package.json
251 "name": "${packageName}",
469 ${stdenv.lib.optionalString bypassCache ''
252 "version": "${version}"
470 if [ -f ${src}/package-lock.json ]
253 }
471 then
254 EOF
472 cp ${src}/package-lock.json .
473 fi
474 ''}
475
476 # Pinpoint the versions of all dependencies to the ones that are actually being used
477 echo "pinpointing versions of dependencies..."
478 cd ..
479 ${stdenv.lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
480
481 source $pinpointDependenciesScriptPath
482 cd ${packageName}
255
483
256 # Patch the shebangs of the bundled modules to prevent them from
484 # Patch the shebangs of the bundled modules to prevent them from
257 # calling executables outside the Nix store as much as possible
485 # calling executables outside the Nix store as much as possible
258 patchShebangs .
486 patchShebangs .
259
487
260 export HOME=$TMPDIR
488 export HOME=$PWD
261 npm --registry http://www.example.com --nodedir=${nodeSources} ${npmFlags} ${stdenv.lib.optionalString production "--production"} rebuild
262
489
263 ${stdenv.lib.optionalString (!dontNpmInstall) ''
490 ${stdenv.lib.optionalString bypassCache ''
264 npm --registry http://www.example.com --nodedir=${nodeSources} ${npmFlags} ${stdenv.lib.optionalString production "--production"} install
491 if [ ! -f package-lock.json ]
492 then
493 echo "No package-lock.json file found, reconstructing..."
494 node ${reconstructPackageLock}
495 fi
496
497 node ${addIntegrityFieldsScript}
265 ''}
498 ''}
266
499
500 npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${stdenv.lib.optionalString production "--production"} rebuild
501
502 ${stdenv.lib.optionalString (!dontNpmInstall) ''
503 # NPM tries to download packages even when they already exist if npm-shrinkwrap is used.
504 rm -f npm-shrinkwrap.json
505
506 npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${stdenv.lib.optionalString production "--production"} install
507 ''}
508
509 cd ..
510 ${stdenv.lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
511
512 mv ${packageName} lib
267 ln -s $out/lib/node_modules/.bin $out/bin
513 ln -s $out/lib/node_modules/.bin $out/bin
268 '';
514 '';
269 };
515 } // extraArgs);
270 in
516 in
271 stdenv.lib.makeOverridable stdenv.mkDerivation {
517 stdenv.mkDerivation {
272 name = "node-shell-${name}-${version}";
518 name = "node-shell-${name}-${version}";
273
519
274 buildInputs = [ python nodejs ] ++ stdenv.lib.optional (stdenv.isLinux) utillinux ++ args.buildInputs or [];
520 buildInputs = [ python nodejs ] ++ stdenv.lib.optional (stdenv.isLinux) utillinux ++ buildInputs;
275 buildCommand = ''
521 buildCommand = ''
276 mkdir -p $out/bin
522 mkdir -p $out/bin
277 cat > $out/bin/shell <<EOF
523 cat > $out/bin/shell <<EOF
278 #! ${stdenv.shell} -e
524 #! ${stdenv.shell} -e
279 $shellHook
525 $shellHook
280 exec ${stdenv.shell}
526 exec ${stdenv.shell}
281 EOF
527 EOF
282 chmod +x $out/bin/shell
528 chmod +x $out/bin/shell
283 '';
529 '';
284
530
285 # Provide the dependencies in a development shell through the NODE_PATH environment variable
531 # Provide the dependencies in a development shell through the NODE_PATH environment variable
286 inherit nodeDependencies;
532 inherit nodeDependencies;
287 shellHook = stdenv.lib.optionalString (dependencies != []) ''
533 shellHook = stdenv.lib.optionalString (dependencies != []) ''
288 export NODE_PATH=$nodeDependencies/lib/node_modules
534 export NODE_PATH=$nodeDependencies/lib/node_modules
289 '';
535 '';
290 };
536 };
291 in
537 in
292 { inherit buildNodeSourceDist buildNodePackage buildNodeShell; }
538 {
539 buildNodeSourceDist = stdenv.lib.makeOverridable buildNodeSourceDist;
540 buildNodePackage = stdenv.lib.makeOverridable buildNodePackage;
541 buildNodeShell = stdenv.lib.makeOverridable buildNodeShell;
542 }
This diff has been collapsed as it changes many lines, (5680 lines changed) Show them Hide them
@@ -1,3022 +1,3386 b''
1 # This file has been generated by node2nix 1.0.0. Do not edit!
1 # This file has been generated by node2nix 1.6.0. Do not edit!
2
2
3 {nodeEnv, fetchurl, fetchgit}:
3 {nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
4
4
5 let
5 let
6 sources = {
6 sources = {
7 "@types/clone-0.1.30" = {
8 name = "_at_types_slash_clone";
9 packageName = "@types/clone";
10 version = "0.1.30";
11 src = fetchurl {
12 url = "https://registry.npmjs.org/@types/clone/-/clone-0.1.30.tgz";
13 sha1 = "e7365648c1b42136a59c7d5040637b3b5c83b614";
14 };
15 };
16 "@types/node-4.2.23" = {
17 name = "_at_types_slash_node";
18 packageName = "@types/node";
19 version = "4.2.23";
20 src = fetchurl {
21 url = "https://registry.npmjs.org/@types/node/-/node-4.2.23.tgz";
22 sha512 = "U6IchCNLRyswc9p6G6lxWlbE+KwAhZp6mGo6MD2yWpmFomhYmetK+c98OpKyvphNn04CU3aXeJrXdOqbXVTS/w==";
23 };
24 };
25 "@types/node-6.0.114" = {
26 name = "_at_types_slash_node";
27 packageName = "@types/node";
28 version = "6.0.114";
29 src = fetchurl {
30 url = "https://registry.npmjs.org/@types/node/-/node-6.0.114.tgz";
31 sha512 = "5ViC9dwf1VIAtrOFTvOuN04lJgw28eKjuy0Vg2Bd/fSlxKP2feCSkIw04ZgOENL2ywdWrtbkthp1XVLEjJmouw==";
32 };
33 };
34 "@types/parse5-0.0.31" = {
35 name = "_at_types_slash_parse5";
36 packageName = "@types/parse5";
37 version = "0.0.31";
38 src = fetchurl {
39 url = "https://registry.npmjs.org/@types/parse5/-/parse5-0.0.31.tgz";
40 sha1 = "e827a493a443b156e1b582a2e4c3bdc0040f2ee7";
41 };
42 };
43 "abbrev-1.1.1" = {
44 name = "abbrev";
45 packageName = "abbrev";
46 version = "1.1.1";
47 src = fetchurl {
48 url = "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz";
49 sha512 = "nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==";
50 };
51 };
52 "acorn-3.3.0" = {
53 name = "acorn";
54 packageName = "acorn";
55 version = "3.3.0";
56 src = fetchurl {
57 url = "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz";
58 sha1 = "45e37fb39e8da3f25baee3ff5369e2bb5f22017a";
59 };
60 };
61 "acorn-5.7.1" = {
62 name = "acorn";
63 packageName = "acorn";
64 version = "5.7.1";
65 src = fetchurl {
66 url = "https://registry.npmjs.org/acorn/-/acorn-5.7.1.tgz";
67 sha512 = "d+nbxBUGKg7Arpsvbnlq61mc12ek3EY8EQldM3GPAhWJ1UVxC6TDGbIvUMNU6obBX3i1+ptCIzV4vq0gFPEGVQ==";
68 };
69 };
70 "acorn-jsx-3.0.1" = {
71 name = "acorn-jsx";
72 packageName = "acorn-jsx";
73 version = "3.0.1";
74 src = fetchurl {
75 url = "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz";
76 sha1 = "afdf9488fb1ecefc8348f6fb22f464e32a58b36b";
77 };
78 };
79 "ajv-4.11.8" = {
80 name = "ajv";
81 packageName = "ajv";
82 version = "4.11.8";
83 src = fetchurl {
84 url = "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz";
85 sha1 = "82ffb02b29e662ae53bdc20af15947706739c536";
86 };
87 };
88 "amdefine-1.0.1" = {
89 name = "amdefine";
90 packageName = "amdefine";
91 version = "1.0.1";
92 src = fetchurl {
93 url = "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz";
94 sha1 = "4a5282ac164729e93619bcfd3ad151f817ce91f5";
95 };
96 };
97 "ansi-escape-sequences-3.0.0" = {
98 name = "ansi-escape-sequences";
99 packageName = "ansi-escape-sequences";
100 version = "3.0.0";
101 src = fetchurl {
102 url = "https://registry.npmjs.org/ansi-escape-sequences/-/ansi-escape-sequences-3.0.0.tgz";
103 sha1 = "1c18394b6af9b76ff9a63509fa497669fd2ce53e";
104 };
105 };
106 "ansi-regex-0.2.1" = {
107 name = "ansi-regex";
108 packageName = "ansi-regex";
109 version = "0.2.1";
110 src = fetchurl {
111 url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz";
112 sha1 = "0d8e946967a3d8143f93e24e298525fc1b2235f9";
113 };
114 };
115 "ansi-regex-2.1.1" = {
116 name = "ansi-regex";
117 packageName = "ansi-regex";
118 version = "2.1.1";
119 src = fetchurl {
120 url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz";
121 sha1 = "c3b33ab5ee360d86e0e628f0468ae7ef27d654df";
122 };
123 };
124 "ansi-styles-1.1.0" = {
125 name = "ansi-styles";
126 packageName = "ansi-styles";
127 version = "1.1.0";
128 src = fetchurl {
129 url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz";
130 sha1 = "eaecbf66cd706882760b2f4691582b8f55d7a7de";
131 };
132 };
133 "ansi-styles-2.2.1" = {
134 name = "ansi-styles";
135 packageName = "ansi-styles";
136 version = "2.2.1";
137 src = fetchurl {
138 url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz";
139 sha1 = "b432dd3358b634cf75e1e4664368240533c1ddbe";
140 };
141 };
142 "appenlight-client-git+https://git@github.com/AppEnlight/appenlight-client-js.git#0.5.1" = {
143 name = "appenlight-client";
144 packageName = "appenlight-client";
145 version = "0.5.1";
146 src = fetchgit {
147 url = "https://git@github.com/AppEnlight/appenlight-client-js.git";
148 rev = "14712c64c230fbbe94fcbc8094aef5eb3b90b307";
149 sha256 = "05146f5b932f166c9a4db601bc9c13ae686899653d1dd03121652631f9bc83d6";
150 };
151 };
152 "aproba-1.2.0" = {
153 name = "aproba";
154 packageName = "aproba";
155 version = "1.2.0";
156 src = fetchurl {
157 url = "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz";
158 sha512 = "Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==";
159 };
160 };
161 "are-we-there-yet-1.1.5" = {
162 name = "are-we-there-yet";
163 packageName = "are-we-there-yet";
164 version = "1.1.5";
165 src = fetchurl {
166 url = "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz";
167 sha512 = "5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==";
168 };
169 };
170 "argparse-0.1.16" = {
171 name = "argparse";
172 packageName = "argparse";
173 version = "0.1.16";
174 src = fetchurl {
175 url = "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz";
176 sha1 = "cfd01e0fbba3d6caed049fbd758d40f65196f57c";
177 };
178 };
179 "array-back-1.0.4" = {
180 name = "array-back";
181 packageName = "array-back";
182 version = "1.0.4";
183 src = fetchurl {
184 url = "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz";
185 sha1 = "644ba7f095f7ffcf7c43b5f0dc39d3c1f03c063b";
186 };
187 };
188 "asap-2.0.6" = {
189 name = "asap";
190 packageName = "asap";
191 version = "2.0.6";
192 src = fetchurl {
193 url = "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz";
194 sha1 = "e50347611d7e690943208bbdafebcbc2fb866d46";
195 };
196 };
197 "asn1-0.2.3" = {
198 name = "asn1";
199 packageName = "asn1";
200 version = "0.2.3";
201 src = fetchurl {
202 url = "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz";
203 sha1 = "dac8787713c9966849fc8180777ebe9c1ddf3b86";
204 };
205 };
206 "assert-plus-0.2.0" = {
207 name = "assert-plus";
208 packageName = "assert-plus";
209 version = "0.2.0";
210 src = fetchurl {
211 url = "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz";
212 sha1 = "d74e1b87e7affc0db8aadb7021f3fe48101ab234";
213 };
214 };
215 "assert-plus-1.0.0" = {
216 name = "assert-plus";
217 packageName = "assert-plus";
218 version = "1.0.0";
219 src = fetchurl {
220 url = "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz";
221 sha1 = "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525";
222 };
223 };
224 "async-0.1.22" = {
225 name = "async";
226 packageName = "async";
227 version = "0.1.22";
228 src = fetchurl {
229 url = "https://registry.npmjs.org/async/-/async-0.1.22.tgz";
230 sha1 = "0fc1aaa088a0e3ef0ebe2d8831bab0dcf8845061";
231 };
232 };
233 "async-0.2.10" = {
234 name = "async";
235 packageName = "async";
236 version = "0.2.10";
237 src = fetchurl {
238 url = "https://registry.npmjs.org/async/-/async-0.2.10.tgz";
239 sha1 = "b6bbe0b0674b9d719708ca38de8c237cb526c3d1";
240 };
241 };
242 "async-1.0.0" = {
243 name = "async";
244 packageName = "async";
245 version = "1.0.0";
246 src = fetchurl {
247 url = "https://registry.npmjs.org/async/-/async-1.0.0.tgz";
248 sha1 = "f8fc04ca3a13784ade9e1641af98578cfbd647a9";
249 };
250 };
251 "async-2.6.1" = {
252 name = "async";
253 packageName = "async";
254 version = "2.6.1";
255 src = fetchurl {
256 url = "https://registry.npmjs.org/async/-/async-2.6.1.tgz";
257 sha512 = "fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==";
258 };
259 };
260 "asynckit-0.4.0" = {
261 name = "asynckit";
262 packageName = "asynckit";
263 version = "0.4.0";
264 src = fetchurl {
265 url = "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz";
266 sha1 = "c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79";
267 };
268 };
269 "aws-sign2-0.6.0" = {
270 name = "aws-sign2";
271 packageName = "aws-sign2";
272 version = "0.6.0";
273 src = fetchurl {
274 url = "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz";
275 sha1 = "14342dd38dbcc94d0e5b87d763cd63612c0e794f";
276 };
277 };
278 "aws4-1.7.0" = {
279 name = "aws4";
280 packageName = "aws4";
281 version = "1.7.0";
282 src = fetchurl {
283 url = "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz";
284 sha512 = "32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==";
285 };
286 };
287 "babel-polyfill-6.26.0" = {
288 name = "babel-polyfill";
289 packageName = "babel-polyfill";
290 version = "6.26.0";
291 src = fetchurl {
292 url = "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz";
293 sha1 = "379937abc67d7895970adc621f284cd966cf2153";
294 };
295 };
296 "babel-runtime-6.26.0" = {
297 name = "babel-runtime";
298 packageName = "babel-runtime";
299 version = "6.26.0";
300 src = fetchurl {
301 url = "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz";
302 sha1 = "965c7058668e82b55d7bfe04ff2337bc8b5647fe";
303 };
304 };
305 "balanced-match-1.0.0" = {
306 name = "balanced-match";
307 packageName = "balanced-match";
308 version = "1.0.0";
309 src = fetchurl {
310 url = "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz";
311 sha1 = "89b4d199ab2bee49de164ea02b89ce462d71b767";
312 };
313 };
314 "base64-js-1.2.3" = {
315 name = "base64-js";
316 packageName = "base64-js";
317 version = "1.2.3";
318 src = fetchurl {
319 url = "https://registry.npmjs.org/base64-js/-/base64-js-1.2.3.tgz";
320 sha512 = "MsAhsUW1GxCdgYSO6tAfZrNapmUKk7mWx/k5mFY/A1gBtkaCaNapTg+FExCw1r9yeaZhqx/xPg43xgTFH6KL5w==";
321 };
322 };
323 "bcrypt-pbkdf-1.0.2" = {
324 name = "bcrypt-pbkdf";
325 packageName = "bcrypt-pbkdf";
326 version = "1.0.2";
327 src = fetchurl {
328 url = "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz";
329 sha1 = "a4301d389b6a43f9b67ff3ca11a3f6637e360e9e";
330 };
331 };
332 "boom-2.10.1" = {
333 name = "boom";
334 packageName = "boom";
335 version = "2.10.1";
336 src = fetchurl {
337 url = "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz";
338 sha1 = "39c8918ceff5799f83f9492a848f625add0c766f";
339 };
340 };
341 "bower-1.8.4" = {
342 name = "bower";
343 packageName = "bower";
344 version = "1.8.4";
345 src = fetchurl {
346 url = "https://registry.npmjs.org/bower/-/bower-1.8.4.tgz";
347 sha1 = "e7876a076deb8137f7d06525dc5e8c66db82f28a";
348 };
349 };
350 "brace-expansion-1.1.11" = {
351 name = "brace-expansion";
352 packageName = "brace-expansion";
353 version = "1.1.11";
354 src = fetchurl {
355 url = "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz";
356 sha512 = "iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==";
357 };
358 };
359 "buffer-from-1.1.1" = {
360 name = "buffer-from";
361 packageName = "buffer-from";
362 version = "1.1.1";
363 src = fetchurl {
364 url = "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz";
365 sha512 = "MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==";
366 };
367 };
368 "builtin-modules-1.1.1" = {
369 name = "builtin-modules";
370 packageName = "builtin-modules";
371 version = "1.1.1";
372 src = fetchurl {
373 url = "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz";
374 sha1 = "270f076c5a72c02f5b65a47df94c5fe3a278892f";
375 };
376 };
377 "builtins-1.0.3" = {
378 name = "builtins";
379 packageName = "builtins";
380 version = "1.0.3";
381 src = fetchurl {
382 url = "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz";
383 sha1 = "cb94faeb61c8696451db36534e1422f94f0aee88";
384 };
385 };
386 "caseless-0.12.0" = {
387 name = "caseless";
388 packageName = "caseless";
389 version = "0.12.0";
390 src = fetchurl {
391 url = "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz";
392 sha1 = "1b681c21ff84033c826543090689420d187151dc";
393 };
394 };
395 "chalk-0.5.1" = {
396 name = "chalk";
397 packageName = "chalk";
398 version = "0.5.1";
399 src = fetchurl {
400 url = "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz";
401 sha1 = "663b3a648b68b55d04690d49167aa837858f2174";
402 };
403 };
404 "chalk-1.1.3" = {
405 name = "chalk";
406 packageName = "chalk";
407 version = "1.1.3";
408 src = fetchurl {
409 url = "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz";
410 sha1 = "a8115c55e4a702fe4d150abd3872822a7e09fc98";
411 };
412 };
413 "cli-1.0.1" = {
414 name = "cli";
415 packageName = "cli";
416 version = "1.0.1";
417 src = fetchurl {
418 url = "https://registry.npmjs.org/cli/-/cli-1.0.1.tgz";
419 sha1 = "22817534f24bfa4950c34d532d48ecbc621b8c14";
420 };
421 };
422 "clipboard-2.0.1" = {
423 name = "clipboard";
424 packageName = "clipboard";
425 version = "2.0.1";
426 src = fetchurl {
427 url = "https://registry.npmjs.org/clipboard/-/clipboard-2.0.1.tgz";
428 sha512 = "7yhQBmtN+uYZmfRjjVjKa0dZdWuabzpSKGtyQZN+9C8xlC788SSJjOHWh7tzurfwTqTD5UDYAhIv5fRJg3sHjQ==";
429 };
430 };
431 "clone-1.0.4" = {
432 name = "clone";
433 packageName = "clone";
434 version = "1.0.4";
435 src = fetchurl {
436 url = "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz";
437 sha1 = "da309cc263df15994c688ca902179ca3c7cd7c7e";
438 };
439 };
440 "co-4.6.0" = {
441 name = "co";
442 packageName = "co";
443 version = "4.6.0";
444 src = fetchurl {
445 url = "https://registry.npmjs.org/co/-/co-4.6.0.tgz";
446 sha1 = "6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184";
447 };
448 };
449 "code-point-at-1.1.0" = {
450 name = "code-point-at";
451 packageName = "code-point-at";
452 version = "1.1.0";
453 src = fetchurl {
454 url = "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz";
455 sha1 = "0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77";
456 };
457 };
458 "coffee-script-1.3.3" = {
459 name = "coffee-script";
460 packageName = "coffee-script";
461 version = "1.3.3";
462 src = fetchurl {
463 url = "https://registry.npmjs.org/coffee-script/-/coffee-script-1.3.3.tgz";
464 sha1 = "150d6b4cb522894369efed6a2101c20bc7f4a4f4";
465 };
466 };
467 "colors-0.6.2" = {
468 name = "colors";
469 packageName = "colors";
470 version = "0.6.2";
471 src = fetchurl {
472 url = "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz";
473 sha1 = "2423fe6678ac0c5dae8852e5d0e5be08c997abcc";
474 };
475 };
476 "colors-1.0.3" = {
477 name = "colors";
478 packageName = "colors";
479 version = "1.0.3";
480 src = fetchurl {
481 url = "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz";
482 sha1 = "0433f44d809680fdeb60ed260f1b0c262e82a40b";
483 };
484 };
485 "combined-stream-1.0.6" = {
486 name = "combined-stream";
487 packageName = "combined-stream";
488 version = "1.0.6";
489 src = fetchurl {
490 url = "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz";
491 sha1 = "723e7df6e801ac5613113a7e445a9b69cb632818";
492 };
493 };
494 "command-line-args-3.0.5" = {
495 name = "command-line-args";
496 packageName = "command-line-args";
497 version = "3.0.5";
498 src = fetchurl {
499 url = "https://registry.npmjs.org/command-line-args/-/command-line-args-3.0.5.tgz";
500 sha1 = "5bd4ad45e7983e5c1344918e40280ee2693c5ac0";
501 };
502 };
503 "command-line-usage-3.0.8" = {
504 name = "command-line-usage";
505 packageName = "command-line-usage";
506 version = "3.0.8";
507 src = fetchurl {
508 url = "https://registry.npmjs.org/command-line-usage/-/command-line-usage-3.0.8.tgz";
509 sha1 = "b6a20978c1b383477f5c11a529428b880bfe0f4d";
510 };
511 };
512 "concat-map-0.0.1" = {
513 name = "concat-map";
514 packageName = "concat-map";
515 version = "0.0.1";
516 src = fetchurl {
517 url = "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz";
518 sha1 = "d8a96bd77fd68df7793a73036a3ba0d5405d477b";
519 };
520 };
521 "concat-stream-1.6.2" = {
522 name = "concat-stream";
523 packageName = "concat-stream";
524 version = "1.6.2";
525 src = fetchurl {
526 url = "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz";
527 sha512 = "27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==";
528 };
529 };
530 "config-chain-1.1.11" = {
531 name = "config-chain";
532 packageName = "config-chain";
533 version = "1.1.11";
534 src = fetchurl {
535 url = "https://registry.npmjs.org/config-chain/-/config-chain-1.1.11.tgz";
536 sha1 = "aba09747dfbe4c3e70e766a6e41586e1859fc6f2";
537 };
538 };
539 "console-browserify-1.1.0" = {
540 name = "console-browserify";
541 packageName = "console-browserify";
542 version = "1.1.0";
543 src = fetchurl {
544 url = "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz";
545 sha1 = "f0241c45730a9fc6323b206dbf38edc741d0bb10";
546 };
547 };
548 "console-control-strings-1.1.0" = {
549 name = "console-control-strings";
550 packageName = "console-control-strings";
551 version = "1.1.0";
552 src = fetchurl {
553 url = "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz";
554 sha1 = "3d7cf4464db6446ea644bf4b39507f9851008e8e";
555 };
556 };
557 "core-js-2.5.7" = {
558 name = "core-js";
559 packageName = "core-js";
560 version = "2.5.7";
561 src = fetchurl {
562 url = "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz";
563 sha512 = "RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==";
564 };
565 };
566 "core-util-is-1.0.2" = {
567 name = "core-util-is";
568 packageName = "core-util-is";
569 version = "1.0.2";
570 src = fetchurl {
571 url = "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz";
572 sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7";
573 };
574 };
575 "crisper-1.2.0" = {
576 name = "crisper";
577 packageName = "crisper";
578 version = "1.2.0";
579 src = fetchurl {
580 url = "https://registry.npmjs.org/crisper/-/crisper-1.2.0.tgz";
581 sha1 = "9a91f597d71f6110294e076ad44dbb3408568e46";
582 };
583 };
584 "crisper-2.1.1" = {
585 name = "crisper";
586 packageName = "crisper";
587 version = "2.1.1";
588 src = fetchurl {
589 url = "https://registry.npmjs.org/crisper/-/crisper-2.1.1.tgz";
590 sha512 = "yxfj9nTbFunDASztAxVF8hCPwaZBvTjayNzG3YL/VVQfQaKBXX2+TM3p1xB1Pxd8RYeDQJkJIQRwM3FQSIa+pw==";
591 };
592 };
593 "cryptiles-2.0.5" = {
594 name = "cryptiles";
595 packageName = "cryptiles";
596 version = "2.0.5";
597 src = fetchurl {
598 url = "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz";
599 sha1 = "3bdfecdc608147c1c67202fa291e7dca59eaa3b8";
600 };
601 };
602 "cycle-1.0.3" = {
603 name = "cycle";
604 packageName = "cycle";
605 version = "1.0.3";
606 src = fetchurl {
607 url = "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz";
608 sha1 = "21e80b2be8580f98b468f379430662b046c34ad2";
609 };
610 };
611 "dashdash-1.14.1" = {
612 name = "dashdash";
613 packageName = "dashdash";
614 version = "1.14.1";
615 src = fetchurl {
616 url = "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz";
617 sha1 = "853cfa0f7cbe2fed5de20326b8dd581035f6e2f0";
618 };
619 };
620 "date-now-0.1.4" = {
621 name = "date-now";
622 packageName = "date-now";
623 version = "0.1.4";
624 src = fetchurl {
625 url = "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz";
626 sha1 = "eaf439fd4d4848ad74e5cc7dbef200672b9e345b";
627 };
628 };
629 "dateformat-1.0.2-1.2.3" = {
630 name = "dateformat";
631 packageName = "dateformat";
632 version = "1.0.2-1.2.3";
633 src = fetchurl {
634 url = "https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz";
635 sha1 = "b0220c02de98617433b72851cf47de3df2cdbee9";
636 };
637 };
638 "debug-0.7.4" = {
639 name = "debug";
640 packageName = "debug";
641 version = "0.7.4";
642 src = fetchurl {
643 url = "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz";
644 sha1 = "06e1ea8082c2cb14e39806e22e2f6f757f92af39";
645 };
646 };
647 "debug-2.6.9" = {
648 name = "debug";
649 packageName = "debug";
650 version = "2.6.9";
651 src = fetchurl {
652 url = "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz";
653 sha512 = "bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==";
654 };
655 };
656 "deep-extend-0.4.2" = {
657 name = "deep-extend";
658 packageName = "deep-extend";
659 version = "0.4.2";
660 src = fetchurl {
661 url = "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz";
662 sha1 = "48b699c27e334bf89f10892be432f6e4c7d34a7f";
663 };
664 };
665 "deep-is-0.1.3" = {
666 name = "deep-is";
667 packageName = "deep-is";
668 version = "0.1.3";
669 src = fetchurl {
670 url = "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz";
671 sha1 = "b369d6fb5dbc13eecf524f91b070feedc357cf34";
672 };
673 };
674 "delayed-stream-1.0.0" = {
675 name = "delayed-stream";
676 packageName = "delayed-stream";
677 version = "1.0.0";
678 src = fetchurl {
679 url = "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz";
680 sha1 = "df3ae199acadfb7d440aaae0b29e2272b24ec619";
681 };
682 };
683 "delegate-3.2.0" = {
684 name = "delegate";
685 packageName = "delegate";
686 version = "3.2.0";
687 src = fetchurl {
688 url = "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz";
689 sha512 = "IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==";
690 };
691 };
692 "delegates-1.0.0" = {
693 name = "delegates";
694 packageName = "delegates";
695 version = "1.0.0";
696 src = fetchurl {
697 url = "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz";
698 sha1 = "84c6e159b81904fdca59a0ef44cd870d31250f9a";
699 };
700 };
701 "doctrine-0.7.2" = {
702 name = "doctrine";
703 packageName = "doctrine";
704 version = "0.7.2";
705 src = fetchurl {
706 url = "https://registry.npmjs.org/doctrine/-/doctrine-0.7.2.tgz";
707 sha1 = "7cb860359ba3be90e040b26b729ce4bfa654c523";
708 };
709 };
710 "dom-serializer-0.1.0" = {
711 name = "dom-serializer";
712 packageName = "dom-serializer";
713 version = "0.1.0";
714 src = fetchurl {
715 url = "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz";
716 sha1 = "073c697546ce0780ce23be4a28e293e40bc30c82";
717 };
718 };
719 "dom5-1.1.0" = {
720 name = "dom5";
721 packageName = "dom5";
722 version = "1.1.0";
723 src = fetchurl {
724 url = "https://registry.npmjs.org/dom5/-/dom5-1.1.0.tgz";
725 sha1 = "3a0c7700c083ab4c4d26938a78b0f0c6dcc37794";
726 };
727 };
728 "dom5-1.3.6" = {
729 name = "dom5";
730 packageName = "dom5";
731 version = "1.3.6";
732 src = fetchurl {
733 url = "https://registry.npmjs.org/dom5/-/dom5-1.3.6.tgz";
734 sha1 = "a7088a9fc5f3b08dc9f6eda4c7abaeb241945e0d";
735 };
736 };
737 "domelementtype-1.1.3" = {
738 name = "domelementtype";
739 packageName = "domelementtype";
740 version = "1.1.3";
741 src = fetchurl {
742 url = "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz";
743 sha1 = "bd28773e2642881aec51544924299c5cd822185b";
744 };
745 };
746 "domelementtype-1.3.0" = {
747 name = "domelementtype";
748 packageName = "domelementtype";
749 version = "1.3.0";
750 src = fetchurl {
751 url = "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz";
752 sha1 = "b17aed82e8ab59e52dd9c19b1756e0fc187204c2";
753 };
754 };
755 "domhandler-2.3.0" = {
756 name = "domhandler";
757 packageName = "domhandler";
758 version = "2.3.0";
759 src = fetchurl {
760 url = "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz";
761 sha1 = "2de59a0822d5027fabff6f032c2b25a2a8abe738";
762 };
763 };
764 "domutils-1.5.1" = {
765 name = "domutils";
766 packageName = "domutils";
767 version = "1.5.1";
768 src = fetchurl {
769 url = "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz";
770 sha1 = "dcd8488a26f563d61079e48c9f7b7e32373682cf";
771 };
772 };
773 "ecc-jsbn-0.1.2" = {
774 name = "ecc-jsbn";
775 packageName = "ecc-jsbn";
776 version = "0.1.2";
777 src = fetchurl {
778 url = "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz";
779 sha1 = "3a83a904e54353287874c564b7549386849a98c9";
780 };
781 };
782 "entities-1.0.0" = {
783 name = "entities";
784 packageName = "entities";
785 version = "1.0.0";
786 src = fetchurl {
787 url = "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz";
788 sha1 = "b2987aa3821347fcde642b24fdfc9e4fb712bf26";
789 };
790 };
791 "entities-1.1.1" = {
792 name = "entities";
793 packageName = "entities";
794 version = "1.1.1";
795 src = fetchurl {
796 url = "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz";
797 sha1 = "6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0";
798 };
799 };
800 "errno-0.1.7" = {
801 name = "errno";
802 packageName = "errno";
803 version = "0.1.7";
804 src = fetchurl {
805 url = "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz";
806 sha512 = "MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==";
807 };
808 };
809 "es6-promise-2.3.0" = {
810 name = "es6-promise";
811 packageName = "es6-promise";
812 version = "2.3.0";
813 src = fetchurl {
814 url = "https://registry.npmjs.org/es6-promise/-/es6-promise-2.3.0.tgz";
815 sha1 = "96edb9f2fdb01995822b263dd8aadab6748181bc";
816 };
817 };
818 "es6-promise-4.2.4" = {
819 name = "es6-promise";
820 packageName = "es6-promise";
821 version = "4.2.4";
822 src = fetchurl {
823 url = "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz";
824 sha512 = "/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==";
825 };
826 };
827 "escape-string-regexp-1.0.5" = {
828 name = "escape-string-regexp";
829 packageName = "escape-string-regexp";
830 version = "1.0.5";
831 src = fetchurl {
832 url = "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz";
833 sha1 = "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4";
834 };
835 };
836 "escodegen-1.11.0" = {
837 name = "escodegen";
838 packageName = "escodegen";
839 version = "1.11.0";
840 src = fetchurl {
841 url = "https://registry.npmjs.org/escodegen/-/escodegen-1.11.0.tgz";
842 sha512 = "IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw==";
843 };
844 };
845 "espree-3.5.4" = {
846 name = "espree";
847 packageName = "espree";
848 version = "3.5.4";
849 src = fetchurl {
850 url = "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz";
851 sha512 = "yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==";
852 };
853 };
854 "esprima-1.0.4" = {
855 name = "esprima";
856 packageName = "esprima";
857 version = "1.0.4";
858 src = fetchurl {
859 url = "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz";
860 sha1 = "9f557e08fc3b4d26ece9dd34f8fbf476b62585ad";
861 };
862 };
863 "esprima-3.1.3" = {
864 name = "esprima";
865 packageName = "esprima";
866 version = "3.1.3";
867 src = fetchurl {
868 url = "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz";
869 sha1 = "fdca51cee6133895e3c88d535ce49dbff62a4633";
870 };
871 };
872 "estraverse-3.1.0" = {
873 name = "estraverse";
874 packageName = "estraverse";
875 version = "3.1.0";
876 src = fetchurl {
877 url = "https://registry.npmjs.org/estraverse/-/estraverse-3.1.0.tgz";
878 sha1 = "15e28a446b8b82bc700ccc8b96c78af4da0d6cba";
879 };
880 };
881 "estraverse-4.2.0" = {
882 name = "estraverse";
883 packageName = "estraverse";
884 version = "4.2.0";
885 src = fetchurl {
886 url = "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz";
887 sha1 = "0dee3fed31fcd469618ce7342099fc1afa0bdb13";
888 };
889 };
890 "esutils-1.1.6" = {
891 name = "esutils";
892 packageName = "esutils";
893 version = "1.1.6";
894 src = fetchurl {
895 url = "https://registry.npmjs.org/esutils/-/esutils-1.1.6.tgz";
896 sha1 = "c01ccaa9ae4b897c6d0c3e210ae52f3c7a844375";
897 };
898 };
899 "esutils-2.0.2" = {
900 name = "esutils";
901 packageName = "esutils";
902 version = "2.0.2";
903 src = fetchurl {
904 url = "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz";
905 sha1 = "0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b";
906 };
907 };
908 "eventemitter2-0.4.14" = {
909 name = "eventemitter2";
910 packageName = "eventemitter2";
911 version = "0.4.14";
912 src = fetchurl {
913 url = "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz";
914 sha1 = "8f61b75cde012b2e9eb284d4545583b5643b61ab";
915 };
916 };
917 "exit-0.1.2" = {
918 name = "exit";
919 packageName = "exit";
920 version = "0.1.2";
921 src = fetchurl {
922 url = "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz";
923 sha1 = "0632638f8d877cc82107d30a0fff1a17cba1cd0c";
924 };
925 };
926 "extend-3.0.2" = {
927 name = "extend";
928 packageName = "extend";
929 version = "3.0.2";
930 src = fetchurl {
931 url = "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz";
932 sha512 = "fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==";
933 };
934 };
935 "extract-zip-1.6.7" = {
936 name = "extract-zip";
937 packageName = "extract-zip";
938 version = "1.6.7";
939 src = fetchurl {
940 url = "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz";
941 sha1 = "a840b4b8af6403264c8db57f4f1a74333ef81fe9";
942 };
943 };
944 "extsprintf-1.3.0" = {
945 name = "extsprintf";
946 packageName = "extsprintf";
947 version = "1.3.0";
948 src = fetchurl {
949 url = "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz";
950 sha1 = "96918440e3041a7a414f8c52e3c574eb3c3e1e05";
951 };
952 };
953 "eyes-0.1.8" = {
954 name = "eyes";
955 packageName = "eyes";
956 version = "0.1.8";
957 src = fetchurl {
958 url = "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz";
959 sha1 = "62cf120234c683785d902348a800ef3e0cc20bc0";
960 };
961 };
962 "fast-levenshtein-2.0.6" = {
963 name = "fast-levenshtein";
964 packageName = "fast-levenshtein";
965 version = "2.0.6";
966 src = fetchurl {
967 url = "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz";
968 sha1 = "3d8a5c66883a16a30ca8643e851f19baa7797917";
969 };
970 };
971 "favico.js-0.3.10" = {
972 name = "favico.js";
973 packageName = "favico.js";
974 version = "0.3.10";
975 src = fetchurl {
976 url = "https://registry.npmjs.org/favico.js/-/favico.js-0.3.10.tgz";
977 sha1 = "80586e27a117f24a8d51c18a99bdc714d4339301";
978 };
979 };
980 "faye-websocket-0.4.4" = {
981 name = "faye-websocket";
982 packageName = "faye-websocket";
983 version = "0.4.4";
984 src = fetchurl {
985 url = "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.4.4.tgz";
986 sha1 = "c14c5b3bf14d7417ffbfd990c0a7495cd9f337bc";
987 };
988 };
989 "fd-slicer-1.0.1" = {
990 name = "fd-slicer";
991 packageName = "fd-slicer";
992 version = "1.0.1";
993 src = fetchurl {
994 url = "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz";
995 sha1 = "8b5bcbd9ec327c5041bf9ab023fd6750f1177e65";
996 };
997 };
998 "feature-detect-es6-1.5.0" = {
999 name = "feature-detect-es6";
1000 packageName = "feature-detect-es6";
1001 version = "1.5.0";
1002 src = fetchurl {
1003 url = "https://registry.npmjs.org/feature-detect-es6/-/feature-detect-es6-1.5.0.tgz";
1004 sha512 = "DzWPIGzTnfp3/KK1d/YPfmgLqeDju9F2DQYBL35VusgSApcA7XGqVtXfR4ETOOFEzdFJ3J7zh0Gkk011TiA4uQ==";
1005 };
1006 };
1007 "file-sync-cmp-0.1.1" = {
1008 name = "file-sync-cmp";
1009 packageName = "file-sync-cmp";
1010 version = "0.1.1";
1011 src = fetchurl {
1012 url = "https://registry.npmjs.org/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz";
1013 sha1 = "a5e7a8ffbfa493b43b923bbd4ca89a53b63b612b";
1014 };
1015 };
1016 "find-replace-1.0.3" = {
1017 name = "find-replace";
1018 packageName = "find-replace";
1019 version = "1.0.3";
1020 src = fetchurl {
1021 url = "https://registry.npmjs.org/find-replace/-/find-replace-1.0.3.tgz";
1022 sha1 = "b88e7364d2d9c959559f388c66670d6130441fa0";
1023 };
1024 };
1025 "findit-2.0.0" = {
1026 name = "findit";
1027 packageName = "findit";
1028 version = "2.0.0";
1029 src = fetchurl {
1030 url = "https://registry.npmjs.org/findit/-/findit-2.0.0.tgz";
1031 sha1 = "6509f0126af4c178551cfa99394e032e13a4d56e";
1032 };
1033 };
1034 "findup-sync-0.1.3" = {
1035 name = "findup-sync";
1036 packageName = "findup-sync";
1037 version = "0.1.3";
1038 src = fetchurl {
1039 url = "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz";
1040 sha1 = "7f3e7a97b82392c653bf06589bd85190e93c3683";
1041 };
1042 };
1043 "foreachasync-3.0.0" = {
1044 name = "foreachasync";
1045 packageName = "foreachasync";
1046 version = "3.0.0";
1047 src = fetchurl {
1048 url = "https://registry.npmjs.org/foreachasync/-/foreachasync-3.0.0.tgz";
1049 sha1 = "5502987dc8714be3392097f32e0071c9dee07cf6";
1050 };
1051 };
1052 "forever-agent-0.6.1" = {
1053 name = "forever-agent";
1054 packageName = "forever-agent";
1055 version = "0.6.1";
1056 src = fetchurl {
1057 url = "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz";
1058 sha1 = "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91";
1059 };
1060 };
1061 "form-data-2.1.4" = {
1062 name = "form-data";
1063 packageName = "form-data";
1064 version = "2.1.4";
1065 src = fetchurl {
1066 url = "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz";
1067 sha1 = "33c183acf193276ecaa98143a69e94bfee1750d1";
1068 };
1069 };
1070 "fs-extra-0.6.4" = {
1071 name = "fs-extra";
1072 packageName = "fs-extra";
1073 version = "0.6.4";
1074 src = fetchurl {
1075 url = "https://registry.npmjs.org/fs-extra/-/fs-extra-0.6.4.tgz";
1076 sha1 = "f46f0c75b7841f8d200b3348cd4d691d5a099d15";
1077 };
1078 };
1079 "fs-extra-1.0.0" = {
1080 name = "fs-extra";
1081 packageName = "fs-extra";
1082 version = "1.0.0";
1083 src = fetchurl {
1084 url = "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz";
1085 sha1 = "cd3ce5f7e7cb6145883fcae3191e9877f8587950";
1086 };
1087 };
1088 "fs.extra-1.3.2" = {
1089 name = "fs.extra";
1090 packageName = "fs.extra";
1091 version = "1.3.2";
1092 src = fetchurl {
1093 url = "https://registry.npmjs.org/fs.extra/-/fs.extra-1.3.2.tgz";
1094 sha1 = "dd023f93013bee24531f1b33514c37b20fd93349";
1095 };
1096 };
1097 "fs.realpath-1.0.0" = {
1098 name = "fs.realpath";
1099 packageName = "fs.realpath";
1100 version = "1.0.0";
1101 src = fetchurl {
1102 url = "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz";
1103 sha1 = "1504ad2523158caa40db4a2787cb01411994ea4f";
1104 };
1105 };
1106 "gauge-2.7.4" = {
1107 name = "gauge";
1108 packageName = "gauge";
1109 version = "2.7.4";
1110 src = fetchurl {
1111 url = "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz";
1112 sha1 = "2c03405c7538c39d7eb37b317022e325fb018bf7";
1113 };
1114 };
1115 "gaze-0.5.2" = {
1116 name = "gaze";
1117 packageName = "gaze";
1118 version = "0.5.2";
1119 src = fetchurl {
1120 url = "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz";
1121 sha1 = "40b709537d24d1d45767db5a908689dfe69ac44f";
1122 };
1123 };
1124 "getobject-0.1.0" = {
1125 name = "getobject";
1126 packageName = "getobject";
1127 version = "0.1.0";
1128 src = fetchurl {
1129 url = "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz";
1130 sha1 = "047a449789fa160d018f5486ed91320b6ec7885c";
1131 };
1132 };
1133 "getpass-0.1.7" = {
1134 name = "getpass";
1135 packageName = "getpass";
1136 version = "0.1.7";
1137 src = fetchurl {
1138 url = "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz";
1139 sha1 = "5eff8e3e684d569ae4cb2b1282604e8ba62149fa";
1140 };
1141 };
1142 "glob-3.1.21" = {
1143 name = "glob";
1144 packageName = "glob";
1145 version = "3.1.21";
1146 src = fetchurl {
1147 url = "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz";
1148 sha1 = "d29e0a055dea5138f4d07ed40e8982e83c2066cd";
1149 };
1150 };
1151 "glob-3.2.11" = {
1152 name = "glob";
1153 packageName = "glob";
1154 version = "3.2.11";
1155 src = fetchurl {
1156 url = "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz";
1157 sha1 = "4a973f635b9190f715d10987d5c00fd2815ebe3d";
1158 };
1159 };
1160 "glob-7.1.2" = {
1161 name = "glob";
1162 packageName = "glob";
1163 version = "7.1.2";
1164 src = fetchurl {
1165 url = "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz";
1166 sha512 = "MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==";
1167 };
1168 };
1169 "globule-0.1.0" = {
1170 name = "globule";
1171 packageName = "globule";
1172 version = "0.1.0";
1173 src = fetchurl {
1174 url = "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz";
1175 sha1 = "d9c8edde1da79d125a151b79533b978676346ae5";
1176 };
1177 };
1178 "good-listener-1.2.2" = {
1179 name = "good-listener";
1180 packageName = "good-listener";
1181 version = "1.2.2";
1182 src = fetchurl {
1183 url = "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz";
1184 sha1 = "d53b30cdf9313dffb7dc9a0d477096aa6d145c50";
1185 };
1186 };
1187 "graceful-fs-1.2.3" = {
1188 name = "graceful-fs";
1189 packageName = "graceful-fs";
1190 version = "1.2.3";
1191 src = fetchurl {
1192 url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz";
1193 sha1 = "15a4806a57547cb2d2dbf27f42e89a8c3451b364";
1194 };
1195 };
1196 "graceful-fs-4.1.11" = {
1197 name = "graceful-fs";
1198 packageName = "graceful-fs";
1199 version = "4.1.11";
1200 src = fetchurl {
1201 url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz";
1202 sha1 = "0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658";
1203 };
1204 };
7 "grunt-0.4.5" = {
1205 "grunt-0.4.5" = {
8 name = "grunt";
1206 name = "grunt";
9 packageName = "grunt";
1207 packageName = "grunt";
10 version = "0.4.5";
1208 version = "0.4.5";
11 src = fetchurl {
1209 src = fetchurl {
12 url = "https://registry.npmjs.org/grunt/-/grunt-0.4.5.tgz";
1210 url = "https://registry.npmjs.org/grunt/-/grunt-0.4.5.tgz";
13 sha1 = "56937cd5194324adff6d207631832a9d6ba4e7f0";
1211 sha1 = "56937cd5194324adff6d207631832a9d6ba4e7f0";
14 };
1212 };
15 };
1213 };
1214 "grunt-contrib-concat-0.5.1" = {
1215 name = "grunt-contrib-concat";
1216 packageName = "grunt-contrib-concat";
1217 version = "0.5.1";
1218 src = fetchurl {
1219 url = "https://registry.npmjs.org/grunt-contrib-concat/-/grunt-contrib-concat-0.5.1.tgz";
1220 sha1 = "953c6efdfdfd2c107ab9c85077f2d4b24d31cd49";
1221 };
1222 };
16 "grunt-contrib-copy-1.0.0" = {
1223 "grunt-contrib-copy-1.0.0" = {
17 name = "grunt-contrib-copy";
1224 name = "grunt-contrib-copy";
18 packageName = "grunt-contrib-copy";
1225 packageName = "grunt-contrib-copy";
19 version = "1.0.0";
1226 version = "1.0.0";
20 src = fetchurl {
1227 src = fetchurl {
21 url = "https://registry.npmjs.org/grunt-contrib-copy/-/grunt-contrib-copy-1.0.0.tgz";
1228 url = "https://registry.npmjs.org/grunt-contrib-copy/-/grunt-contrib-copy-1.0.0.tgz";
22 sha1 = "7060c6581e904b8ab0d00f076e0a8f6e3e7c3573";
1229 sha1 = "7060c6581e904b8ab0d00f076e0a8f6e3e7c3573";
23 };
1230 };
24 };
1231 };
25 "grunt-contrib-concat-0.5.1" = {
26 name = "grunt-contrib-concat";
27 packageName = "grunt-contrib-concat";
28 version = "0.5.1";
29 src = fetchurl {
30 url = "https://registry.npmjs.org/grunt-contrib-concat/-/grunt-contrib-concat-0.5.1.tgz";
31 sha1 = "953c6efdfdfd2c107ab9c85077f2d4b24d31cd49";
32 };
33 };
34 "grunt-contrib-jshint-0.12.0" = {
1232 "grunt-contrib-jshint-0.12.0" = {
35 name = "grunt-contrib-jshint";
1233 name = "grunt-contrib-jshint";
36 packageName = "grunt-contrib-jshint";
1234 packageName = "grunt-contrib-jshint";
37 version = "0.12.0";
1235 version = "0.12.0";
38 src = fetchurl {
1236 src = fetchurl {
39 url = "https://registry.npmjs.org/grunt-contrib-jshint/-/grunt-contrib-jshint-0.12.0.tgz";
1237 url = "https://registry.npmjs.org/grunt-contrib-jshint/-/grunt-contrib-jshint-0.12.0.tgz";
40 sha1 = "f6b2f06fc715264837a7ab6c69a1ce1a689c2c29";
1238 sha1 = "f6b2f06fc715264837a7ab6c69a1ce1a689c2c29";
41 };
1239 };
42 };
1240 };
43 "grunt-contrib-less-1.4.1" = {
1241 "grunt-contrib-less-1.4.1" = {
44 name = "grunt-contrib-less";
1242 name = "grunt-contrib-less";
45 packageName = "grunt-contrib-less";
1243 packageName = "grunt-contrib-less";
46 version = "1.4.1";
1244 version = "1.4.1";
47 src = fetchurl {
1245 src = fetchurl {
48 url = "https://registry.npmjs.org/grunt-contrib-less/-/grunt-contrib-less-1.4.1.tgz";
1246 url = "https://registry.npmjs.org/grunt-contrib-less/-/grunt-contrib-less-1.4.1.tgz";
49 sha1 = "3bbdec0b75d12ceaa55d62943625c0b0861cdf6f";
1247 sha1 = "3bbdec0b75d12ceaa55d62943625c0b0861cdf6f";
50 };
1248 };
51 };
1249 };
52 "grunt-contrib-watch-0.6.1" = {
1250 "grunt-contrib-watch-0.6.1" = {
53 name = "grunt-contrib-watch";
1251 name = "grunt-contrib-watch";
54 packageName = "grunt-contrib-watch";
1252 packageName = "grunt-contrib-watch";
55 version = "0.6.1";
1253 version = "0.6.1";
56 src = fetchurl {
1254 src = fetchurl {
57 url = "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-0.6.1.tgz";
1255 url = "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-0.6.1.tgz";
58 sha1 = "64fdcba25a635f5b4da1b6ce6f90da0aeb6e3f15";
1256 sha1 = "64fdcba25a635f5b4da1b6ce6f90da0aeb6e3f15";
59 };
1257 };
60 };
1258 };
61 "crisper-2.1.1" = {
62 name = "crisper";
63 packageName = "crisper";
64 version = "2.1.1";
65 src = fetchurl {
66 url = "https://registry.npmjs.org/crisper/-/crisper-2.1.1.tgz";
67 sha1 = "4cc7321c3e90f3c5cbdc3503217f118fd7d5c51c";
68 };
69 };
70 "vulcanize-1.16.0" = {
71 name = "vulcanize";
72 packageName = "vulcanize";
73 version = "1.16.0";
74 src = fetchurl {
75 url = "https://registry.npmjs.org/vulcanize/-/vulcanize-1.16.0.tgz";
76 sha1 = "b0ce3b0044d194ad4908ae4f1a6c6110a6e4d5e6";
77 };
78 };
79 "grunt-crisper-1.0.1" = {
1259 "grunt-crisper-1.0.1" = {
80 name = "grunt-crisper";
1260 name = "grunt-crisper";
81 packageName = "grunt-crisper";
1261 packageName = "grunt-crisper";
82 version = "1.0.1";
1262 version = "1.0.1";
83 src = fetchurl {
1263 src = fetchurl {
84 url = "https://registry.npmjs.org/grunt-crisper/-/grunt-crisper-1.0.1.tgz";
1264 url = "https://registry.npmjs.org/grunt-crisper/-/grunt-crisper-1.0.1.tgz";
85 sha1 = "e7c091dcaff10deb0091e3035ca7e54008991fe7";
1265 sha1 = "e7c091dcaff10deb0091e3035ca7e54008991fe7";
86 };
1266 };
87 };
1267 };
1268 "grunt-legacy-log-0.1.3" = {
1269 name = "grunt-legacy-log";
1270 packageName = "grunt-legacy-log";
1271 version = "0.1.3";
1272 src = fetchurl {
1273 url = "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-0.1.3.tgz";
1274 sha1 = "ec29426e803021af59029f87d2f9cd7335a05531";
1275 };
1276 };
1277 "grunt-legacy-log-utils-0.1.1" = {
1278 name = "grunt-legacy-log-utils";
1279 packageName = "grunt-legacy-log-utils";
1280 version = "0.1.1";
1281 src = fetchurl {
1282 url = "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-0.1.1.tgz";
1283 sha1 = "c0706b9dd9064e116f36f23fe4e6b048672c0f7e";
1284 };
1285 };
1286 "grunt-legacy-util-0.2.0" = {
1287 name = "grunt-legacy-util";
1288 packageName = "grunt-legacy-util";
1289 version = "0.2.0";
1290 src = fetchurl {
1291 url = "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-0.2.0.tgz";
1292 sha1 = "93324884dbf7e37a9ff7c026dff451d94a9e554b";
1293 };
1294 };
88 "grunt-vulcanize-1.0.0" = {
1295 "grunt-vulcanize-1.0.0" = {
89 name = "grunt-vulcanize";
1296 name = "grunt-vulcanize";
90 packageName = "grunt-vulcanize";
1297 packageName = "grunt-vulcanize";
91 version = "1.0.0";
1298 version = "1.0.0";
92 src = fetchurl {
1299 src = fetchurl {
93 url = "https://registry.npmjs.org/grunt-vulcanize/-/grunt-vulcanize-1.0.0.tgz";
1300 url = "https://registry.npmjs.org/grunt-vulcanize/-/grunt-vulcanize-1.0.0.tgz";
94 sha1 = "f4d6cfef274f8216c06f6c290e7dbb3b9e9e3b0f";
1301 sha1 = "f4d6cfef274f8216c06f6c290e7dbb3b9e9e3b0f";
95 };
1302 };
96 };
1303 };
97 "node2nix-1.3.0" = {
1304 "har-schema-1.0.5" = {
98 name = "node2nix";
1305 name = "har-schema";
99 packageName = "node2nix";
1306 packageName = "har-schema";
100 version = "1.3.0";
1307 version = "1.0.5";
101 src = fetchurl {
1308 src = fetchurl {
102 url = "https://registry.npmjs.org/node2nix/-/node2nix-1.3.0.tgz";
1309 url = "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz";
103 sha1 = "e830a3bc5880dd22ae47be71a147f776542850cc";
1310 sha1 = "d263135f43307c02c602afc8fe95970c0151369e";
104 };
1311 };
105 };
1312 };
106 "jshint-2.9.5" = {
1313 "har-validator-4.2.1" = {
107 name = "jshint";
1314 name = "har-validator";
108 packageName = "jshint";
1315 packageName = "har-validator";
109 version = "2.9.5";
1316 version = "4.2.1";
110 src = fetchurl {
1317 src = fetchurl {
111 url = "https://registry.npmjs.org/jshint/-/jshint-2.9.5.tgz";
1318 url = "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz";
112 sha1 = "1e7252915ce681b40827ee14248c46d34e9aa62c";
1319 sha1 = "33481d0f1bbff600dd203d75812a6a5fba002e2a";
113 };
1320 };
114 };
1321 };
115 "bower-1.8.2" = {
1322 "has-ansi-0.1.0" = {
116 name = "bower";
1323 name = "has-ansi";
117 packageName = "bower";
1324 packageName = "has-ansi";
118 version = "1.8.2";
119 src = fetchurl {
120 url = "https://registry.npmjs.org/bower/-/bower-1.8.2.tgz";
121 sha1 = "adf53529c8d4af02ef24fb8d5341c1419d33e2f7";
122 };
123 };
124 "jquery-1.11.3" = {
125 name = "jquery";
126 packageName = "jquery";
127 version = "1.11.3";
128 src = fetchurl {
129 url = "https://registry.npmjs.org/jquery/-/jquery-1.11.3.tgz";
130 sha1 = "dd8b74278b27102d29df63eae28308a8cfa1b583";
131 };
132 };
133 "favico.js-0.3.10" = {
134 name = "favico.js";
135 packageName = "favico.js";
136 version = "0.3.10";
137 src = fetchurl {
138 url = "https://registry.npmjs.org/favico.js/-/favico.js-0.3.10.tgz";
139 sha1 = "80586e27a117f24a8d51c18a99bdc714d4339301";
140 };
141 };
142 "clipboard-1.7.1" = {
143 name = "clipboard";
144 packageName = "clipboard";
145 version = "1.7.1";
146 src = fetchurl {
147 url = "https://registry.npmjs.org/clipboard/-/clipboard-1.7.1.tgz";
148 sha1 = "360d6d6946e99a7a1fef395e42ba92b5e9b5a16b";
149 };
150 };
151 "moment-2.18.1" = {
152 name = "moment";
153 packageName = "moment";
154 version = "2.18.1";
155 src = fetchurl {
156 url = "https://registry.npmjs.org/moment/-/moment-2.18.1.tgz";
157 sha1 = "c36193dd3ce1c2eed2adb7c802dbbc77a81b1c0f";
158 };
159 };
160 "mousetrap-1.6.1" = {
161 name = "mousetrap";
162 packageName = "mousetrap";
163 version = "1.6.1";
164 src = fetchurl {
165 url = "https://registry.npmjs.org/mousetrap/-/mousetrap-1.6.1.tgz";
166 sha1 = "2a085f5c751294c75e7e81f6ec2545b29cbf42d9";
167 };
168 };
169 "appenlight-client-git+https://git@github.com/AppEnlight/appenlight-client-js.git#0.5.1" = {
170 name = "appenlight-client";
171 packageName = "appenlight-client";
172 version = "0.5.1";
173 src = fetchgit {
174 url = "https://git@github.com/AppEnlight/appenlight-client-js.git";
175 rev = "14712c64c230fbbe94fcbc8094aef5eb3b90b307";
176 sha256 = "92111f1104cbf0b31303c366c0fa752cf68af7ddde40d0161edd1b5fd9dd07f7";
177 };
178 };
179 "async-0.1.22" = {
180 name = "async";
181 packageName = "async";
182 version = "0.1.22";
183 src = fetchurl {
184 url = "https://registry.npmjs.org/async/-/async-0.1.22.tgz";
185 sha1 = "0fc1aaa088a0e3ef0ebe2d8831bab0dcf8845061";
186 };
187 };
188 "coffee-script-1.3.3" = {
189 name = "coffee-script";
190 packageName = "coffee-script";
191 version = "1.3.3";
192 src = fetchurl {
193 url = "https://registry.npmjs.org/coffee-script/-/coffee-script-1.3.3.tgz";
194 sha1 = "150d6b4cb522894369efed6a2101c20bc7f4a4f4";
195 };
196 };
197 "colors-0.6.2" = {
198 name = "colors";
199 packageName = "colors";
200 version = "0.6.2";
201 src = fetchurl {
202 url = "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz";
203 sha1 = "2423fe6678ac0c5dae8852e5d0e5be08c997abcc";
204 };
205 };
206 "dateformat-1.0.2-1.2.3" = {
207 name = "dateformat";
208 packageName = "dateformat";
209 version = "1.0.2-1.2.3";
210 src = fetchurl {
211 url = "https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz";
212 sha1 = "b0220c02de98617433b72851cf47de3df2cdbee9";
213 };
214 };
215 "eventemitter2-0.4.14" = {
216 name = "eventemitter2";
217 packageName = "eventemitter2";
218 version = "0.4.14";
219 src = fetchurl {
220 url = "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz";
221 sha1 = "8f61b75cde012b2e9eb284d4545583b5643b61ab";
222 };
223 };
224 "findup-sync-0.1.3" = {
225 name = "findup-sync";
226 packageName = "findup-sync";
227 version = "0.1.3";
228 src = fetchurl {
229 url = "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz";
230 sha1 = "7f3e7a97b82392c653bf06589bd85190e93c3683";
231 };
232 };
233 "glob-3.1.21" = {
234 name = "glob";
235 packageName = "glob";
236 version = "3.1.21";
237 src = fetchurl {
238 url = "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz";
239 sha1 = "d29e0a055dea5138f4d07ed40e8982e83c2066cd";
240 };
241 };
242 "hooker-0.2.3" = {
243 name = "hooker";
244 packageName = "hooker";
245 version = "0.2.3";
246 src = fetchurl {
247 url = "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz";
248 sha1 = "b834f723cc4a242aa65963459df6d984c5d3d959";
249 };
250 };
251 "iconv-lite-0.2.11" = {
252 name = "iconv-lite";
253 packageName = "iconv-lite";
254 version = "0.2.11";
255 src = fetchurl {
256 url = "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz";
257 sha1 = "1ce60a3a57864a292d1321ff4609ca4bb965adc8";
258 };
259 };
260 "minimatch-0.2.14" = {
261 name = "minimatch";
262 packageName = "minimatch";
263 version = "0.2.14";
264 src = fetchurl {
265 url = "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz";
266 sha1 = "c74e780574f63c6f9a090e90efbe6ef53a6a756a";
267 };
268 };
269 "nopt-1.0.10" = {
270 name = "nopt";
271 packageName = "nopt";
272 version = "1.0.10";
273 src = fetchurl {
274 url = "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz";
275 sha1 = "6ddd21bd2a31417b92727dd585f8a6f37608ebee";
276 };
277 };
278 "rimraf-2.2.8" = {
279 name = "rimraf";
280 packageName = "rimraf";
281 version = "2.2.8";
282 src = fetchurl {
283 url = "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz";
284 sha1 = "e439be2aaee327321952730f99a8929e4fc50582";
285 };
286 };
287 "lodash-0.9.2" = {
288 name = "lodash";
289 packageName = "lodash";
290 version = "0.9.2";
291 src = fetchurl {
292 url = "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz";
293 sha1 = "8f3499c5245d346d682e5b0d3b40767e09f1a92c";
294 };
295 };
296 "underscore.string-2.2.1" = {
297 name = "underscore.string";
298 packageName = "underscore.string";
299 version = "2.2.1";
300 src = fetchurl {
301 url = "https://registry.npmjs.org/underscore.string/-/underscore.string-2.2.1.tgz";
302 sha1 = "d7c0fa2af5d5a1a67f4253daee98132e733f0f19";
303 };
304 };
305 "which-1.0.9" = {
306 name = "which";
307 packageName = "which";
308 version = "1.0.9";
309 src = fetchurl {
310 url = "https://registry.npmjs.org/which/-/which-1.0.9.tgz";
311 sha1 = "460c1da0f810103d0321a9b633af9e575e64486f";
312 };
313 };
314 "js-yaml-2.0.5" = {
315 name = "js-yaml";
316 packageName = "js-yaml";
317 version = "2.0.5";
318 src = fetchurl {
319 url = "https://registry.npmjs.org/js-yaml/-/js-yaml-2.0.5.tgz";
320 sha1 = "a25ae6509999e97df278c6719da11bd0687743a8";
321 };
322 };
323 "exit-0.1.2" = {
324 name = "exit";
325 packageName = "exit";
326 version = "0.1.2";
327 src = fetchurl {
328 url = "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz";
329 sha1 = "0632638f8d877cc82107d30a0fff1a17cba1cd0c";
330 };
331 };
332 "getobject-0.1.0" = {
333 name = "getobject";
334 packageName = "getobject";
335 version = "0.1.0";
1325 version = "0.1.0";
336 src = fetchurl {
1326 src = fetchurl {
337 url = "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz";
1327 url = "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz";
338 sha1 = "047a449789fa160d018f5486ed91320b6ec7885c";
1328 sha1 = "84f265aae8c0e6a88a12d7022894b7568894c62e";
339 };
340 };
341 "grunt-legacy-util-0.2.0" = {
342 name = "grunt-legacy-util";
343 packageName = "grunt-legacy-util";
344 version = "0.2.0";
345 src = fetchurl {
346 url = "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-0.2.0.tgz";
347 sha1 = "93324884dbf7e37a9ff7c026dff451d94a9e554b";
348 };
349 };
350 "grunt-legacy-log-0.1.3" = {
351 name = "grunt-legacy-log";
352 packageName = "grunt-legacy-log";
353 version = "0.1.3";
354 src = fetchurl {
355 url = "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-0.1.3.tgz";
356 sha1 = "ec29426e803021af59029f87d2f9cd7335a05531";
357 };
358 };
359 "glob-3.2.11" = {
360 name = "glob";
361 packageName = "glob";
362 version = "3.2.11";
363 src = fetchurl {
364 url = "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz";
365 sha1 = "4a973f635b9190f715d10987d5c00fd2815ebe3d";
366 };
367 };
368 "lodash-2.4.2" = {
369 name = "lodash";
370 packageName = "lodash";
371 version = "2.4.2";
372 src = fetchurl {
373 url = "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz";
374 sha1 = "fadd834b9683073da179b3eae6d9c0d15053f73e";
375 };
376 };
377 "inherits-2.0.3" = {
378 name = "inherits";
379 packageName = "inherits";
380 version = "2.0.3";
381 src = fetchurl {
382 url = "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz";
383 sha1 = "633c2c83e3da42a502f52466022480f4208261de";
384 };
385 };
386 "minimatch-0.3.0" = {
387 name = "minimatch";
388 packageName = "minimatch";
389 version = "0.3.0";
390 src = fetchurl {
391 url = "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz";
392 sha1 = "275d8edaac4f1bb3326472089e7949c8394699dd";
393 };
394 };
395 "lru-cache-2.7.3" = {
396 name = "lru-cache";
397 packageName = "lru-cache";
398 version = "2.7.3";
399 src = fetchurl {
400 url = "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz";
401 sha1 = "6d4524e8b955f95d4f5b58851ce21dd72fb4e952";
402 };
403 };
404 "sigmund-1.0.1" = {
405 name = "sigmund";
406 packageName = "sigmund";
407 version = "1.0.1";
408 src = fetchurl {
409 url = "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz";
410 sha1 = "3ff21f198cad2175f9f3b781853fd94d0d19b590";
411 };
412 };
413 "graceful-fs-1.2.3" = {
414 name = "graceful-fs";
415 packageName = "graceful-fs";
416 version = "1.2.3";
417 src = fetchurl {
418 url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz";
419 sha1 = "15a4806a57547cb2d2dbf27f42e89a8c3451b364";
420 };
421 };
422 "inherits-1.0.2" = {
423 name = "inherits";
424 packageName = "inherits";
425 version = "1.0.2";
426 src = fetchurl {
427 url = "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz";
428 sha1 = "ca4309dadee6b54cc0b8d247e8d7c7a0975bdc9b";
429 };
430 };
431 "abbrev-1.1.0" = {
432 name = "abbrev";
433 packageName = "abbrev";
434 version = "1.1.0";
435 src = fetchurl {
436 url = "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz";
437 sha1 = "d0554c2256636e2f56e7c2e5ad183f859428d81f";
438 };
439 };
440 "argparse-0.1.16" = {
441 name = "argparse";
442 packageName = "argparse";
443 version = "0.1.16";
444 src = fetchurl {
445 url = "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz";
446 sha1 = "cfd01e0fbba3d6caed049fbd758d40f65196f57c";
447 };
448 };
449 "esprima-1.0.4" = {
450 name = "esprima";
451 packageName = "esprima";
452 version = "1.0.4";
453 src = fetchurl {
454 url = "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz";
455 sha1 = "9f557e08fc3b4d26ece9dd34f8fbf476b62585ad";
456 };
457 };
458 "underscore-1.7.0" = {
459 name = "underscore";
460 packageName = "underscore";
461 version = "1.7.0";
462 src = fetchurl {
463 url = "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz";
464 sha1 = "6bbaf0877500d36be34ecaa584e0db9fef035209";
465 };
466 };
467 "underscore.string-2.4.0" = {
468 name = "underscore.string";
469 packageName = "underscore.string";
470 version = "2.4.0";
471 src = fetchurl {
472 url = "https://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz";
473 sha1 = "8cdd8fbac4e2d2ea1e7e2e8097c42f442280f85b";
474 };
475 };
476 "grunt-legacy-log-utils-0.1.1" = {
477 name = "grunt-legacy-log-utils";
478 packageName = "grunt-legacy-log-utils";
479 version = "0.1.1";
480 src = fetchurl {
481 url = "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-0.1.1.tgz";
482 sha1 = "c0706b9dd9064e116f36f23fe4e6b048672c0f7e";
483 };
484 };
485 "underscore.string-2.3.3" = {
486 name = "underscore.string";
487 packageName = "underscore.string";
488 version = "2.3.3";
489 src = fetchurl {
490 url = "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz";
491 sha1 = "71c08bf6b428b1133f37e78fa3a21c82f7329b0d";
492 };
493 };
494 "chalk-1.1.3" = {
495 name = "chalk";
496 packageName = "chalk";
497 version = "1.1.3";
498 src = fetchurl {
499 url = "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz";
500 sha1 = "a8115c55e4a702fe4d150abd3872822a7e09fc98";
501 };
502 };
503 "file-sync-cmp-0.1.1" = {
504 name = "file-sync-cmp";
505 packageName = "file-sync-cmp";
506 version = "0.1.1";
507 src = fetchurl {
508 url = "https://registry.npmjs.org/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz";
509 sha1 = "a5e7a8ffbfa493b43b923bbd4ca89a53b63b612b";
510 };
511 };
512 "ansi-styles-2.2.1" = {
513 name = "ansi-styles";
514 packageName = "ansi-styles";
515 version = "2.2.1";
516 src = fetchurl {
517 url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz";
518 sha1 = "b432dd3358b634cf75e1e4664368240533c1ddbe";
519 };
520 };
521 "escape-string-regexp-1.0.5" = {
522 name = "escape-string-regexp";
523 packageName = "escape-string-regexp";
524 version = "1.0.5";
525 src = fetchurl {
526 url = "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz";
527 sha1 = "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4";
528 };
1329 };
529 };
1330 };
530 "has-ansi-2.0.0" = {
1331 "has-ansi-2.0.0" = {
531 name = "has-ansi";
1332 name = "has-ansi";
532 packageName = "has-ansi";
1333 packageName = "has-ansi";
533 version = "2.0.0";
1334 version = "2.0.0";
534 src = fetchurl {
1335 src = fetchurl {
535 url = "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz";
1336 url = "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz";
536 sha1 = "34f5049ce1ecdf2b0649af3ef24e45ed35416d91";
1337 sha1 = "34f5049ce1ecdf2b0649af3ef24e45ed35416d91";
537 };
1338 };
538 };
1339 };
539 "strip-ansi-3.0.1" = {
1340 "has-unicode-2.0.1" = {
540 name = "strip-ansi";
1341 name = "has-unicode";
541 packageName = "strip-ansi";
1342 packageName = "has-unicode";
542 version = "3.0.1";
1343 version = "2.0.1";
543 src = fetchurl {
1344 src = fetchurl {
544 url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz";
1345 url = "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz";
545 sha1 = "6a385fb8853d952d5ff05d0e8aaf94278dc63dcf";
1346 sha1 = "e0e6fe6a28cf51138855e086d1691e771de2a8b9";
546 };
1347 };
547 };
1348 };
548 "supports-color-2.0.0" = {
1349 "hasha-2.2.0" = {
549 name = "supports-color";
1350 name = "hasha";
550 packageName = "supports-color";
1351 packageName = "hasha";
551 version = "2.0.0";
1352 version = "2.2.0";
552 src = fetchurl {
1353 src = fetchurl {
553 url = "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz";
1354 url = "https://registry.npmjs.org/hasha/-/hasha-2.2.0.tgz";
554 sha1 = "535d045ce6b6363fa40117084629995e9df324c7";
1355 sha1 = "78d7cbfc1e6d66303fe79837365984517b2f6ee1";
555 };
1356 };
556 };
1357 };
557 "ansi-regex-2.1.1" = {
1358 "hawk-3.1.3" = {
558 name = "ansi-regex";
1359 name = "hawk";
559 packageName = "ansi-regex";
1360 packageName = "hawk";
560 version = "2.1.1";
1361 version = "3.1.3";
561 src = fetchurl {
1362 src = fetchurl {
562 url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz";
1363 url = "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz";
563 sha1 = "c3b33ab5ee360d86e0e628f0468ae7ef27d654df";
1364 sha1 = "078444bd7c1640b0fe540d2c9b73d59678e8e1c4";
564 };
1365 };
565 };
1366 };
566 "chalk-0.5.1" = {
1367 "hoek-2.16.3" = {
567 name = "chalk";
1368 name = "hoek";
568 packageName = "chalk";
1369 packageName = "hoek";
569 version = "0.5.1";
1370 version = "2.16.3";
570 src = fetchurl {
1371 src = fetchurl {
571 url = "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz";
1372 url = "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz";
572 sha1 = "663b3a648b68b55d04690d49167aa837858f2174";
1373 sha1 = "20bb7403d3cea398e91dc4710a8ff1b8274a25ed";
573 };
1374 };
574 };
1375 };
575 "source-map-0.3.0" = {
1376 "hooker-0.2.3" = {
576 name = "source-map";
1377 name = "hooker";
577 packageName = "source-map";
1378 packageName = "hooker";
578 version = "0.3.0";
1379 version = "0.2.3";
579 src = fetchurl {
1380 src = fetchurl {
580 url = "https://registry.npmjs.org/source-map/-/source-map-0.3.0.tgz";
1381 url = "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz";
581 sha1 = "8586fb9a5a005e5b501e21cd18b6f21b457ad1f9";
1382 sha1 = "b834f723cc4a242aa65963459df6d984c5d3d959";
582 };
1383 };
583 };
1384 };
584 "ansi-styles-1.1.0" = {
1385 "hosted-git-info-2.7.1" = {
585 name = "ansi-styles";
1386 name = "hosted-git-info";
586 packageName = "ansi-styles";
1387 packageName = "hosted-git-info";
587 version = "1.1.0";
1388 version = "2.7.1";
588 src = fetchurl {
1389 src = fetchurl {
589 url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz";
1390 url = "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz";
590 sha1 = "eaecbf66cd706882760b2f4691582b8f55d7a7de";
1391 sha512 = "7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==";
591 };
1392 };
592 };
1393 };
593 "has-ansi-0.1.0" = {
1394 "htmlparser2-3.8.3" = {
594 name = "has-ansi";
1395 name = "htmlparser2";
595 packageName = "has-ansi";
1396 packageName = "htmlparser2";
596 version = "0.1.0";
1397 version = "3.8.3";
597 src = fetchurl {
1398 src = fetchurl {
598 url = "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz";
1399 url = "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz";
599 sha1 = "84f265aae8c0e6a88a12d7022894b7568894c62e";
1400 sha1 = "996c28b191516a8be86501a7d79757e5c70c1068";
600 };
1401 };
601 };
1402 };
602 "strip-ansi-0.3.0" = {
1403 "http-signature-1.1.1" = {
603 name = "strip-ansi";
1404 name = "http-signature";
604 packageName = "strip-ansi";
1405 packageName = "http-signature";
605 version = "0.3.0";
1406 version = "1.1.1";
606 src = fetchurl {
1407 src = fetchurl {
607 url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz";
1408 url = "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz";
608 sha1 = "25f48ea22ca79187f3174a4db8759347bb126220";
1409 sha1 = "df72e267066cd0ac67fb76adf8e134a8fbcf91bf";
609 };
1410 };
610 };
1411 };
611 "supports-color-0.2.0" = {
1412 "hydrolysis-1.25.0" = {
612 name = "supports-color";
1413 name = "hydrolysis";
613 packageName = "supports-color";
1414 packageName = "hydrolysis";
614 version = "0.2.0";
1415 version = "1.25.0";
615 src = fetchurl {
1416 src = fetchurl {
616 url = "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz";
1417 url = "https://registry.npmjs.org/hydrolysis/-/hydrolysis-1.25.0.tgz";
617 sha1 = "d92de2694eb3f67323973d7ae3d8b55b4c22190a";
1418 sha1 = "a4fb14a37a1e03b0db52d8aaa57c682272a14d84";
618 };
1419 };
619 };
1420 };
620 "ansi-regex-0.2.1" = {
1421 "iconv-lite-0.2.11" = {
621 name = "ansi-regex";
1422 name = "iconv-lite";
622 packageName = "ansi-regex";
1423 packageName = "iconv-lite";
623 version = "0.2.1";
1424 version = "0.2.11";
624 src = fetchurl {
1425 src = fetchurl {
625 url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz";
1426 url = "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz";
626 sha1 = "0d8e946967a3d8143f93e24e298525fc1b2235f9";
1427 sha1 = "1ce60a3a57864a292d1321ff4609ca4bb965adc8";
627 };
628 };
629 "amdefine-1.0.1" = {
630 name = "amdefine";
631 packageName = "amdefine";
632 version = "1.0.1";
633 src = fetchurl {
634 url = "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz";
635 sha1 = "4a5282ac164729e93619bcfd3ad151f817ce91f5";
636 };
637 };
638 "async-2.5.0" = {
639 name = "async";
640 packageName = "async";
641 version = "2.5.0";
642 src = fetchurl {
643 url = "https://registry.npmjs.org/async/-/async-2.5.0.tgz";
644 sha1 = "843190fd6b7357a0b9e1c956edddd5ec8462b54d";
645 };
646 };
647 "less-2.7.2" = {
648 name = "less";
649 packageName = "less";
650 version = "2.7.2";
651 src = fetchurl {
652 url = "https://registry.npmjs.org/less/-/less-2.7.2.tgz";
653 sha1 = "368d6cc73e1fb03981183280918743c5dcf9b3df";
654 };
655 };
656 "lodash-4.17.4" = {
657 name = "lodash";
658 packageName = "lodash";
659 version = "4.17.4";
660 src = fetchurl {
661 url = "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz";
662 sha1 = "78203a4d1c328ae1d86dca6460e369b57f4055ae";
663 };
664 };
665 "errno-0.1.4" = {
666 name = "errno";
667 packageName = "errno";
668 version = "0.1.4";
669 src = fetchurl {
670 url = "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz";
671 sha1 = "b896e23a9e5e8ba33871fc996abd3635fc9a1c7d";
672 };
673 };
674 "graceful-fs-4.1.11" = {
675 name = "graceful-fs";
676 packageName = "graceful-fs";
677 version = "4.1.11";
678 src = fetchurl {
679 url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz";
680 sha1 = "0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658";
681 };
1428 };
682 };
1429 };
683 "image-size-0.5.5" = {
1430 "image-size-0.5.5" = {
684 name = "image-size";
1431 name = "image-size";
685 packageName = "image-size";
1432 packageName = "image-size";
686 version = "0.5.5";
1433 version = "0.5.5";
687 src = fetchurl {
1434 src = fetchurl {
688 url = "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz";
1435 url = "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz";
689 sha1 = "09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c";
1436 sha1 = "09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c";
690 };
1437 };
691 };
1438 };
692 "mime-1.4.0" = {
1439 "inflight-1.0.6" = {
693 name = "mime";
1440 name = "inflight";
694 packageName = "mime";
1441 packageName = "inflight";
695 version = "1.4.0";
1442 version = "1.0.6";
696 src = fetchurl {
1443 src = fetchurl {
697 url = "https://registry.npmjs.org/mime/-/mime-1.4.0.tgz";
1444 url = "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz";
698 sha1 = "69e9e0db51d44f2a3b56e48b7817d7d137f1a343";
1445 sha1 = "49bd6331d7d02d0c09bc910a1075ba8165b56df9";
699 };
1446 };
700 };
1447 };
701 "mkdirp-0.5.1" = {
1448 "inherits-1.0.2" = {
702 name = "mkdirp";
1449 name = "inherits";
703 packageName = "mkdirp";
1450 packageName = "inherits";
704 version = "0.5.1";
1451 version = "1.0.2";
705 src = fetchurl {
1452 src = fetchurl {
706 url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz";
1453 url = "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz";
707 sha1 = "30057438eac6cf7f8c4767f38648d6697d75c903";
1454 sha1 = "ca4309dadee6b54cc0b8d247e8d7c7a0975bdc9b";
708 };
1455 };
709 };
1456 };
710 "promise-7.3.1" = {
1457 "inherits-2.0.3" = {
711 name = "promise";
1458 name = "inherits";
712 packageName = "promise";
1459 packageName = "inherits";
713 version = "7.3.1";
1460 version = "2.0.3";
714 src = fetchurl {
1461 src = fetchurl {
715 url = "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz";
1462 url = "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz";
716 sha1 = "064b72602b18f90f29192b8b1bc418ffd1ebd3bf";
1463 sha1 = "633c2c83e3da42a502f52466022480f4208261de";
717 };
1464 };
718 };
1465 };
719 "source-map-0.5.7" = {
1466 "ini-1.3.5" = {
720 name = "source-map";
1467 name = "ini";
721 packageName = "source-map";
1468 packageName = "ini";
722 version = "0.5.7";
1469 version = "1.3.5";
723 src = fetchurl {
1470 src = fetchurl {
724 url = "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz";
1471 url = "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz";
725 sha1 = "8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc";
1472 sha512 = "RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==";
726 };
1473 };
727 };
1474 };
728 "request-2.82.0" = {
1475 "is-builtin-module-1.0.0" = {
729 name = "request";
1476 name = "is-builtin-module";
730 packageName = "request";
1477 packageName = "is-builtin-module";
731 version = "2.82.0";
1478 version = "1.0.0";
732 src = fetchurl {
1479 src = fetchurl {
733 url = "https://registry.npmjs.org/request/-/request-2.82.0.tgz";
1480 url = "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz";
734 sha1 = "2ba8a92cd7ac45660ea2b10a53ae67cd247516ea";
1481 sha1 = "540572d34f7ac3119f8f76c30cbc1b1e037affbe";
735 };
1482 };
736 };
1483 };
737 "prr-0.0.0" = {
1484 "is-fullwidth-code-point-1.0.0" = {
738 name = "prr";
1485 name = "is-fullwidth-code-point";
739 packageName = "prr";
1486 packageName = "is-fullwidth-code-point";
740 version = "0.0.0";
1487 version = "1.0.0";
741 src = fetchurl {
1488 src = fetchurl {
742 url = "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz";
1489 url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz";
743 sha1 = "1a84b85908325501411853d0081ee3fa86e2926a";
1490 sha1 = "ef9e31386f031a7f0d643af82fde50c457ef00cb";
744 };
1491 };
745 };
1492 };
746 "minimist-0.0.8" = {
1493 "is-stream-1.1.0" = {
747 name = "minimist";
1494 name = "is-stream";
748 packageName = "minimist";
1495 packageName = "is-stream";
749 version = "0.0.8";
1496 version = "1.1.0";
750 src = fetchurl {
1497 src = fetchurl {
751 url = "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz";
1498 url = "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz";
752 sha1 = "857fcabfc3397d2625b8228262e86aa7a011b05d";
1499 sha1 = "12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44";
753 };
754 };
755 "asap-2.0.6" = {
756 name = "asap";
757 packageName = "asap";
758 version = "2.0.6";
759 src = fetchurl {
760 url = "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz";
761 sha1 = "e50347611d7e690943208bbdafebcbc2fb866d46";
762 };
763 };
764 "aws-sign2-0.7.0" = {
765 name = "aws-sign2";
766 packageName = "aws-sign2";
767 version = "0.7.0";
768 src = fetchurl {
769 url = "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz";
770 sha1 = "b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8";
771 };
772 };
773 "aws4-1.6.0" = {
774 name = "aws4";
775 packageName = "aws4";
776 version = "1.6.0";
777 src = fetchurl {
778 url = "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz";
779 sha1 = "83ef5ca860b2b32e4a0deedee8c771b9db57471e";
780 };
781 };
782 "caseless-0.12.0" = {
783 name = "caseless";
784 packageName = "caseless";
785 version = "0.12.0";
786 src = fetchurl {
787 url = "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz";
788 sha1 = "1b681c21ff84033c826543090689420d187151dc";
789 };
790 };
791 "combined-stream-1.0.5" = {
792 name = "combined-stream";
793 packageName = "combined-stream";
794 version = "1.0.5";
795 src = fetchurl {
796 url = "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz";
797 sha1 = "938370a57b4a51dea2c77c15d5c5fdf895164009";
798 };
799 };
800 "extend-3.0.1" = {
801 name = "extend";
802 packageName = "extend";
803 version = "3.0.1";
804 src = fetchurl {
805 url = "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz";
806 sha1 = "a755ea7bc1adfcc5a31ce7e762dbaadc5e636444";
807 };
808 };
809 "forever-agent-0.6.1" = {
810 name = "forever-agent";
811 packageName = "forever-agent";
812 version = "0.6.1";
813 src = fetchurl {
814 url = "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz";
815 sha1 = "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91";
816 };
817 };
818 "form-data-2.3.1" = {
819 name = "form-data";
820 packageName = "form-data";
821 version = "2.3.1";
822 src = fetchurl {
823 url = "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz";
824 sha1 = "6fb94fbd71885306d73d15cc497fe4cc4ecd44bf";
825 };
826 };
827 "har-validator-5.0.3" = {
828 name = "har-validator";
829 packageName = "har-validator";
830 version = "5.0.3";
831 src = fetchurl {
832 url = "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz";
833 sha1 = "ba402c266194f15956ef15e0fcf242993f6a7dfd";
834 };
835 };
836 "hawk-6.0.2" = {
837 name = "hawk";
838 packageName = "hawk";
839 version = "6.0.2";
840 src = fetchurl {
841 url = "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz";
842 sha1 = "af4d914eb065f9b5ce4d9d11c1cb2126eecc3038";
843 };
844 };
845 "http-signature-1.2.0" = {
846 name = "http-signature";
847 packageName = "http-signature";
848 version = "1.2.0";
849 src = fetchurl {
850 url = "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz";
851 sha1 = "9aecd925114772f3d95b65a60abb8f7c18fbace1";
852 };
1500 };
853 };
1501 };
854 "is-typedarray-1.0.0" = {
1502 "is-typedarray-1.0.0" = {
855 name = "is-typedarray";
1503 name = "is-typedarray";
856 packageName = "is-typedarray";
1504 packageName = "is-typedarray";
857 version = "1.0.0";
1505 version = "1.0.0";
858 src = fetchurl {
1506 src = fetchurl {
859 url = "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz";
1507 url = "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz";
860 sha1 = "e479c80858df0c1b11ddda6940f96011fcda4a9a";
1508 sha1 = "e479c80858df0c1b11ddda6940f96011fcda4a9a";
861 };
1509 };
862 };
1510 };
1511 "isarray-0.0.1" = {
1512 name = "isarray";
1513 packageName = "isarray";
1514 version = "0.0.1";
1515 src = fetchurl {
1516 url = "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz";
1517 sha1 = "8a18acfca9a8f4177e09abfc6038939b05d1eedf";
1518 };
1519 };
1520 "isarray-1.0.0" = {
1521 name = "isarray";
1522 packageName = "isarray";
1523 version = "1.0.0";
1524 src = fetchurl {
1525 url = "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz";
1526 sha1 = "bb935d48582cba168c06834957a54a3e07124f11";
1527 };
1528 };
1529 "isexe-2.0.0" = {
1530 name = "isexe";
1531 packageName = "isexe";
1532 version = "2.0.0";
1533 src = fetchurl {
1534 url = "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz";
1535 sha1 = "e8fbf374dc556ff8947a10dcb0572d633f2cfa10";
1536 };
1537 };
863 "isstream-0.1.2" = {
1538 "isstream-0.1.2" = {
864 name = "isstream";
1539 name = "isstream";
865 packageName = "isstream";
1540 packageName = "isstream";
866 version = "0.1.2";
1541 version = "0.1.2";
867 src = fetchurl {
1542 src = fetchurl {
868 url = "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz";
1543 url = "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz";
869 sha1 = "47e63f7af55afa6f92e1500e690eb8b8529c099a";
1544 sha1 = "47e63f7af55afa6f92e1500e690eb8b8529c099a";
870 };
1545 };
871 };
1546 };
1547 "jquery-1.11.3" = {
1548 name = "jquery";
1549 packageName = "jquery";
1550 version = "1.11.3";
1551 src = fetchurl {
1552 url = "https://registry.npmjs.org/jquery/-/jquery-1.11.3.tgz";
1553 sha1 = "dd8b74278b27102d29df63eae28308a8cfa1b583";
1554 };
1555 };
1556 "js-yaml-2.0.5" = {
1557 name = "js-yaml";
1558 packageName = "js-yaml";
1559 version = "2.0.5";
1560 src = fetchurl {
1561 url = "https://registry.npmjs.org/js-yaml/-/js-yaml-2.0.5.tgz";
1562 sha1 = "a25ae6509999e97df278c6719da11bd0687743a8";
1563 };
1564 };
1565 "jsbn-0.1.1" = {
1566 name = "jsbn";
1567 packageName = "jsbn";
1568 version = "0.1.1";
1569 src = fetchurl {
1570 url = "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz";
1571 sha1 = "a5e654c2e5a2deb5f201d96cefbca80c0ef2f513";
1572 };
1573 };
1574 "jshint-2.9.6" = {
1575 name = "jshint";
1576 packageName = "jshint";
1577 version = "2.9.6";
1578 src = fetchurl {
1579 url = "https://registry.npmjs.org/jshint/-/jshint-2.9.6.tgz";
1580 sha512 = "KO9SIAKTlJQOM4lE64GQUtGBRpTOuvbrRrSZw3AhUxMNG266nX9hK2cKA4SBhXOj0irJGyNyGSLT62HGOVDEOA==";
1581 };
1582 };
1583 "json-schema-0.2.3" = {
1584 name = "json-schema";
1585 packageName = "json-schema";
1586 version = "0.2.3";
1587 src = fetchurl {
1588 url = "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz";
1589 sha1 = "b480c892e59a2f05954ce727bd3f2a4e882f9e13";
1590 };
1591 };
1592 "json-stable-stringify-1.0.1" = {
1593 name = "json-stable-stringify";
1594 packageName = "json-stable-stringify";
1595 version = "1.0.1";
1596 src = fetchurl {
1597 url = "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz";
1598 sha1 = "9a759d39c5f2ff503fd5300646ed445f88c4f9af";
1599 };
1600 };
872 "json-stringify-safe-5.0.1" = {
1601 "json-stringify-safe-5.0.1" = {
873 name = "json-stringify-safe";
1602 name = "json-stringify-safe";
874 packageName = "json-stringify-safe";
1603 packageName = "json-stringify-safe";
875 version = "5.0.1";
1604 version = "5.0.1";
876 src = fetchurl {
1605 src = fetchurl {
877 url = "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz";
1606 url = "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz";
878 sha1 = "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb";
1607 sha1 = "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb";
879 };
1608 };
880 };
1609 };
881 "mime-types-2.1.17" = {
1610 "jsonfile-1.0.1" = {
882 name = "mime-types";
1611 name = "jsonfile";
883 packageName = "mime-types";
1612 packageName = "jsonfile";
884 version = "2.1.17";
885 src = fetchurl {
886 url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz";
887 sha1 = "09d7a393f03e995a79f8af857b70a9e0ab16557a";
888 };
889 };
890 "oauth-sign-0.8.2" = {
891 name = "oauth-sign";
892 packageName = "oauth-sign";
893 version = "0.8.2";
894 src = fetchurl {
895 url = "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz";
896 sha1 = "46a6ab7f0aead8deae9ec0565780b7d4efeb9d43";
897 };
898 };
899 "performance-now-2.1.0" = {
900 name = "performance-now";
901 packageName = "performance-now";
902 version = "2.1.0";
903 src = fetchurl {
904 url = "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz";
905 sha1 = "6309f4e0e5fa913ec1c69307ae364b4b377c9e7b";
906 };
907 };
908 "qs-6.5.1" = {
909 name = "qs";
910 packageName = "qs";
911 version = "6.5.1";
912 src = fetchurl {
913 url = "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz";
914 sha1 = "349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8";
915 };
916 };
917 "safe-buffer-5.1.1" = {
918 name = "safe-buffer";
919 packageName = "safe-buffer";
920 version = "5.1.1";
921 src = fetchurl {
922 url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz";
923 sha1 = "893312af69b2123def71f57889001671eeb2c853";
924 };
925 };
926 "stringstream-0.0.5" = {
927 name = "stringstream";
928 packageName = "stringstream";
929 version = "0.0.5";
930 src = fetchurl {
931 url = "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz";
932 sha1 = "4e484cd4de5a0bbbee18e46307710a8a81621878";
933 };
934 };
935 "tough-cookie-2.3.3" = {
936 name = "tough-cookie";
937 packageName = "tough-cookie";
938 version = "2.3.3";
939 src = fetchurl {
940 url = "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz";
941 sha1 = "0b618a5565b6dea90bf3425d04d55edc475a7561";
942 };
943 };
944 "tunnel-agent-0.6.0" = {
945 name = "tunnel-agent";
946 packageName = "tunnel-agent";
947 version = "0.6.0";
948 src = fetchurl {
949 url = "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz";
950 sha1 = "27a5dea06b36b04a0a9966774b290868f0fc40fd";
951 };
952 };
953 "uuid-3.1.0" = {
954 name = "uuid";
955 packageName = "uuid";
956 version = "3.1.0";
957 src = fetchurl {
958 url = "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz";
959 sha1 = "3dd3d3e790abc24d7b0d3a034ffababe28ebbc04";
960 };
961 };
962 "delayed-stream-1.0.0" = {
963 name = "delayed-stream";
964 packageName = "delayed-stream";
965 version = "1.0.0";
966 src = fetchurl {
967 url = "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz";
968 sha1 = "df3ae199acadfb7d440aaae0b29e2272b24ec619";
969 };
970 };
971 "asynckit-0.4.0" = {
972 name = "asynckit";
973 packageName = "asynckit";
974 version = "0.4.0";
975 src = fetchurl {
976 url = "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz";
977 sha1 = "c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79";
978 };
979 };
980 "ajv-5.2.2" = {
981 name = "ajv";
982 packageName = "ajv";
983 version = "5.2.2";
984 src = fetchurl {
985 url = "https://registry.npmjs.org/ajv/-/ajv-5.2.2.tgz";
986 sha1 = "47c68d69e86f5d953103b0074a9430dc63da5e39";
987 };
988 };
989 "har-schema-2.0.0" = {
990 name = "har-schema";
991 packageName = "har-schema";
992 version = "2.0.0";
993 src = fetchurl {
994 url = "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz";
995 sha1 = "a94c2224ebcac04782a0d9035521f24735b7ec92";
996 };
997 };
998 "co-4.6.0" = {
999 name = "co";
1000 packageName = "co";
1001 version = "4.6.0";
1002 src = fetchurl {
1003 url = "https://registry.npmjs.org/co/-/co-4.6.0.tgz";
1004 sha1 = "6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184";
1005 };
1006 };
1007 "fast-deep-equal-1.0.0" = {
1008 name = "fast-deep-equal";
1009 packageName = "fast-deep-equal";
1010 version = "1.0.0";
1011 src = fetchurl {
1012 url = "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz";
1013 sha1 = "96256a3bc975595eb36d82e9929d060d893439ff";
1014 };
1015 };
1016 "json-schema-traverse-0.3.1" = {
1017 name = "json-schema-traverse";
1018 packageName = "json-schema-traverse";
1019 version = "0.3.1";
1020 src = fetchurl {
1021 url = "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz";
1022 sha1 = "349a6d44c53a51de89b40805c5d5e59b417d3340";
1023 };
1024 };
1025 "json-stable-stringify-1.0.1" = {
1026 name = "json-stable-stringify";
1027 packageName = "json-stable-stringify";
1028 version = "1.0.1";
1613 version = "1.0.1";
1029 src = fetchurl {
1614 src = fetchurl {
1030 url = "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz";
1615 url = "https://registry.npmjs.org/jsonfile/-/jsonfile-1.0.1.tgz";
1031 sha1 = "9a759d39c5f2ff503fd5300646ed445f88c4f9af";
1616 sha1 = "ea5efe40b83690b98667614a7392fc60e842c0dd";
1617 };
1618 };
1619 "jsonfile-2.4.0" = {
1620 name = "jsonfile";
1621 packageName = "jsonfile";
1622 version = "2.4.0";
1623 src = fetchurl {
1624 url = "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz";
1625 sha1 = "3736a2b428b87bbda0cc83b53fa3d633a35c2ae8";
1032 };
1626 };
1033 };
1627 };
1034 "jsonify-0.0.0" = {
1628 "jsonify-0.0.0" = {
1035 name = "jsonify";
1629 name = "jsonify";
1036 packageName = "jsonify";
1630 packageName = "jsonify";
1037 version = "0.0.0";
1631 version = "0.0.0";
1038 src = fetchurl {
1632 src = fetchurl {
1039 url = "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz";
1633 url = "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz";
1040 sha1 = "2c74b6ee41d93ca51b7b5aaee8f503631d252a73";
1634 sha1 = "2c74b6ee41d93ca51b7b5aaee8f503631d252a73";
1041 };
1635 };
1042 };
1636 };
1043 "hoek-4.2.0" = {
1044 name = "hoek";
1045 packageName = "hoek";
1046 version = "4.2.0";
1047 src = fetchurl {
1048 url = "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz";
1049 sha1 = "72d9d0754f7fe25ca2d01ad8f8f9a9449a89526d";
1050 };
1051 };
1052 "boom-4.3.1" = {
1053 name = "boom";
1054 packageName = "boom";
1055 version = "4.3.1";
1056 src = fetchurl {
1057 url = "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz";
1058 sha1 = "4f8a3005cb4a7e3889f749030fd25b96e01d2e31";
1059 };
1060 };
1061 "cryptiles-3.1.2" = {
1062 name = "cryptiles";
1063 packageName = "cryptiles";
1064 version = "3.1.2";
1065 src = fetchurl {
1066 url = "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz";
1067 sha1 = "a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe";
1068 };
1069 };
1070 "sntp-2.0.2" = {
1071 name = "sntp";
1072 packageName = "sntp";
1073 version = "2.0.2";
1074 src = fetchurl {
1075 url = "https://registry.npmjs.org/sntp/-/sntp-2.0.2.tgz";
1076 sha1 = "5064110f0af85f7cfdb7d6b67a40028ce52b4b2b";
1077 };
1078 };
1079 "boom-5.2.0" = {
1080 name = "boom";
1081 packageName = "boom";
1082 version = "5.2.0";
1083 src = fetchurl {
1084 url = "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz";
1085 sha1 = "5dd9da6ee3a5f302077436290cb717d3f4a54e02";
1086 };
1087 };
1088 "assert-plus-1.0.0" = {
1089 name = "assert-plus";
1090 packageName = "assert-plus";
1091 version = "1.0.0";
1092 src = fetchurl {
1093 url = "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz";
1094 sha1 = "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525";
1095 };
1096 };
1097 "jsprim-1.4.1" = {
1637 "jsprim-1.4.1" = {
1098 name = "jsprim";
1638 name = "jsprim";
1099 packageName = "jsprim";
1639 packageName = "jsprim";
1100 version = "1.4.1";
1640 version = "1.4.1";
1101 src = fetchurl {
1641 src = fetchurl {
1102 url = "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz";
1642 url = "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz";
1103 sha1 = "313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2";
1643 sha1 = "313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2";
1104 };
1644 };
1105 };
1645 };
1106 "sshpk-1.13.1" = {
1646 "kew-0.7.0" = {
1107 name = "sshpk";
1647 name = "kew";
1108 packageName = "sshpk";
1648 packageName = "kew";
1109 version = "1.13.1";
1649 version = "0.7.0";
1110 src = fetchurl {
1650 src = fetchurl {
1111 url = "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz";
1651 url = "https://registry.npmjs.org/kew/-/kew-0.7.0.tgz";
1112 sha1 = "512df6da6287144316dc4c18fe1cf1d940739be3";
1652 sha1 = "79d93d2d33363d6fdd2970b335d9141ad591d79b";
1113 };
1653 };
1114 };
1654 };
1115 "extsprintf-1.3.0" = {
1655 "klaw-1.3.1" = {
1116 name = "extsprintf";
1656 name = "klaw";
1117 packageName = "extsprintf";
1657 packageName = "klaw";
1118 version = "1.3.0";
1658 version = "1.3.1";
1119 src = fetchurl {
1659 src = fetchurl {
1120 url = "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz";
1660 url = "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz";
1121 sha1 = "96918440e3041a7a414f8c52e3c574eb3c3e1e05";
1661 sha1 = "4088433b46b3b1ba259d78785d8e96f73ba02439";
1122 };
1662 };
1123 };
1663 };
1124 "json-schema-0.2.3" = {
1664 "less-2.7.3" = {
1125 name = "json-schema";
1665 name = "less";
1126 packageName = "json-schema";
1666 packageName = "less";
1127 version = "0.2.3";
1667 version = "2.7.3";
1128 src = fetchurl {
1668 src = fetchurl {
1129 url = "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz";
1669 url = "https://registry.npmjs.org/less/-/less-2.7.3.tgz";
1130 sha1 = "b480c892e59a2f05954ce727bd3f2a4e882f9e13";
1670 sha512 = "KPdIJKWcEAb02TuJtaLrhue0krtRLoRoo7x6BNJIBelO00t/CCdJQUnHW5V34OnHMWzIktSalJxRO+FvytQlCQ==";
1131 };
1671 };
1132 };
1672 };
1133 "verror-1.10.0" = {
1673 "levn-0.3.0" = {
1134 name = "verror";
1674 name = "levn";
1135 packageName = "verror";
1675 packageName = "levn";
1136 version = "1.10.0";
1676 version = "0.3.0";
1137 src = fetchurl {
1677 src = fetchurl {
1138 url = "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz";
1678 url = "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz";
1139 sha1 = "3a105ca17053af55d6e270c1f8288682e18da400";
1679 sha1 = "3b09924edf9f083c0490fdd4c0bc4421e04764ee";
1140 };
1680 };
1141 };
1681 };
1142 "core-util-is-1.0.2" = {
1682 "lodash-0.9.2" = {
1143 name = "core-util-is";
1683 name = "lodash";
1144 packageName = "core-util-is";
1684 packageName = "lodash";
1145 version = "1.0.2";
1685 version = "0.9.2";
1146 src = fetchurl {
1686 src = fetchurl {
1147 url = "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz";
1687 url = "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz";
1148 sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7";
1688 sha1 = "8f3499c5245d346d682e5b0d3b40767e09f1a92c";
1149 };
1150 };
1151 "asn1-0.2.3" = {
1152 name = "asn1";
1153 packageName = "asn1";
1154 version = "0.2.3";
1155 src = fetchurl {
1156 url = "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz";
1157 sha1 = "dac8787713c9966849fc8180777ebe9c1ddf3b86";
1158 };
1159 };
1160 "dashdash-1.14.1" = {
1161 name = "dashdash";
1162 packageName = "dashdash";
1163 version = "1.14.1";
1164 src = fetchurl {
1165 url = "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz";
1166 sha1 = "853cfa0f7cbe2fed5de20326b8dd581035f6e2f0";
1167 };
1168 };
1169 "getpass-0.1.7" = {
1170 name = "getpass";
1171 packageName = "getpass";
1172 version = "0.1.7";
1173 src = fetchurl {
1174 url = "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz";
1175 sha1 = "5eff8e3e684d569ae4cb2b1282604e8ba62149fa";
1176 };
1177 };
1178 "jsbn-0.1.1" = {
1179 name = "jsbn";
1180 packageName = "jsbn";
1181 version = "0.1.1";
1182 src = fetchurl {
1183 url = "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz";
1184 sha1 = "a5e654c2e5a2deb5f201d96cefbca80c0ef2f513";
1185 };
1186 };
1187 "tweetnacl-0.14.5" = {
1188 name = "tweetnacl";
1189 packageName = "tweetnacl";
1190 version = "0.14.5";
1191 src = fetchurl {
1192 url = "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz";
1193 sha1 = "5ae68177f192d4456269d108afa93ff8743f4f64";
1194 };
1195 };
1196 "ecc-jsbn-0.1.1" = {
1197 name = "ecc-jsbn";
1198 packageName = "ecc-jsbn";
1199 version = "0.1.1";
1200 src = fetchurl {
1201 url = "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz";
1202 sha1 = "0fc73a9ed5f0d53c38193398523ef7e543777505";
1203 };
1204 };
1205 "bcrypt-pbkdf-1.0.1" = {
1206 name = "bcrypt-pbkdf";
1207 packageName = "bcrypt-pbkdf";
1208 version = "1.0.1";
1209 src = fetchurl {
1210 url = "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz";
1211 sha1 = "63bc5dcb61331b92bc05fd528953c33462a06f8d";
1212 };
1213 };
1214 "mime-db-1.30.0" = {
1215 name = "mime-db";
1216 packageName = "mime-db";
1217 version = "1.30.0";
1218 src = fetchurl {
1219 url = "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz";
1220 sha1 = "74c643da2dd9d6a45399963465b26d5ca7d71f01";
1221 };
1222 };
1223 "punycode-1.4.1" = {
1224 name = "punycode";
1225 packageName = "punycode";
1226 version = "1.4.1";
1227 src = fetchurl {
1228 url = "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz";
1229 sha1 = "c0d5a63b2718800ad8e1eb0fa5269c84dd41845e";
1230 };
1231 };
1232 "gaze-0.5.2" = {
1233 name = "gaze";
1234 packageName = "gaze";
1235 version = "0.5.2";
1236 src = fetchurl {
1237 url = "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz";
1238 sha1 = "40b709537d24d1d45767db5a908689dfe69ac44f";
1239 };
1240 };
1241 "tiny-lr-fork-0.0.5" = {
1242 name = "tiny-lr-fork";
1243 packageName = "tiny-lr-fork";
1244 version = "0.0.5";
1245 src = fetchurl {
1246 url = "https://registry.npmjs.org/tiny-lr-fork/-/tiny-lr-fork-0.0.5.tgz";
1247 sha1 = "1e99e1e2a8469b736ab97d97eefa98c71f76ed0a";
1248 };
1249 };
1250 "async-0.2.10" = {
1251 name = "async";
1252 packageName = "async";
1253 version = "0.2.10";
1254 src = fetchurl {
1255 url = "https://registry.npmjs.org/async/-/async-0.2.10.tgz";
1256 sha1 = "b6bbe0b0674b9d719708ca38de8c237cb526c3d1";
1257 };
1258 };
1259 "globule-0.1.0" = {
1260 name = "globule";
1261 packageName = "globule";
1262 version = "0.1.0";
1263 src = fetchurl {
1264 url = "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz";
1265 sha1 = "d9c8edde1da79d125a151b79533b978676346ae5";
1266 };
1689 };
1267 };
1690 };
1268 "lodash-1.0.2" = {
1691 "lodash-1.0.2" = {
1269 name = "lodash";
1692 name = "lodash";
1270 packageName = "lodash";
1693 packageName = "lodash";
1271 version = "1.0.2";
1694 version = "1.0.2";
1272 src = fetchurl {
1695 src = fetchurl {
1273 url = "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz";
1696 url = "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz";
1274 sha1 = "8f57560c83b59fc270bd3d561b690043430e2551";
1697 sha1 = "8f57560c83b59fc270bd3d561b690043430e2551";
1275 };
1698 };
1276 };
1699 };
1277 "qs-0.5.6" = {
1700 "lodash-2.4.2" = {
1278 name = "qs";
1701 name = "lodash";
1279 packageName = "qs";
1702 packageName = "lodash";
1280 version = "0.5.6";
1703 version = "2.4.2";
1281 src = fetchurl {
1704 src = fetchurl {
1282 url = "https://registry.npmjs.org/qs/-/qs-0.5.6.tgz";
1705 url = "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz";
1283 sha1 = "31b1ad058567651c526921506b9a8793911a0384";
1706 sha1 = "fadd834b9683073da179b3eae6d9c0d15053f73e";
1284 };
1707 };
1285 };
1708 };
1286 "faye-websocket-0.4.4" = {
1709 "lodash-4.17.10" = {
1287 name = "faye-websocket";
1710 name = "lodash";
1288 packageName = "faye-websocket";
1711 packageName = "lodash";
1289 version = "0.4.4";
1712 version = "4.17.10";
1290 src = fetchurl {
1713 src = fetchurl {
1291 url = "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.4.4.tgz";
1714 url = "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz";
1292 sha1 = "c14c5b3bf14d7417ffbfd990c0a7495cd9f337bc";
1715 sha512 = "UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==";
1293 };
1716 };
1294 };
1717 };
1295 "noptify-0.0.3" = {
1718 "lru-cache-2.7.3" = {
1296 name = "noptify";
1719 name = "lru-cache";
1297 packageName = "noptify";
1720 packageName = "lru-cache";
1298 version = "0.0.3";
1721 version = "2.7.3";
1299 src = fetchurl {
1722 src = fetchurl {
1300 url = "https://registry.npmjs.org/noptify/-/noptify-0.0.3.tgz";
1723 url = "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz";
1301 sha1 = "58f654a73d9753df0c51d9686dc92104a67f4bbb";
1724 sha1 = "6d4524e8b955f95d4f5b58851ce21dd72fb4e952";
1302 };
1725 };
1303 };
1726 };
1304 "debug-0.7.4" = {
1727 "mime-1.6.0" = {
1305 name = "debug";
1728 name = "mime";
1306 packageName = "debug";
1729 packageName = "mime";
1307 version = "0.7.4";
1730 version = "1.6.0";
1308 src = fetchurl {
1731 src = fetchurl {
1309 url = "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz";
1732 url = "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz";
1310 sha1 = "06e1ea8082c2cb14e39806e22e2f6f757f92af39";
1733 sha512 = "x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==";
1734 };
1735 };
1736 "mime-db-1.35.0" = {
1737 name = "mime-db";
1738 packageName = "mime-db";
1739 version = "1.35.0";
1740 src = fetchurl {
1741 url = "https://registry.npmjs.org/mime-db/-/mime-db-1.35.0.tgz";
1742 sha512 = "JWT/IcCTsB0Io3AhWUMjRqucrHSPsSf2xKLaRldJVULioggvkJvggZ3VXNNSRkCddE6D+BUI4HEIZIA2OjwIvg==";
1743 };
1744 };
1745 "mime-types-2.1.19" = {
1746 name = "mime-types";
1747 packageName = "mime-types";
1748 version = "2.1.19";
1749 src = fetchurl {
1750 url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.19.tgz";
1751 sha512 = "P1tKYHVSZ6uFo26mtnve4HQFE3koh1UWVkp8YUC+ESBHe945xWSoXuHHiGarDqcEZ+whpCDnlNw5LON0kLo+sw==";
1752 };
1753 };
1754 "minimatch-0.2.14" = {
1755 name = "minimatch";
1756 packageName = "minimatch";
1757 version = "0.2.14";
1758 src = fetchurl {
1759 url = "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz";
1760 sha1 = "c74e780574f63c6f9a090e90efbe6ef53a6a756a";
1761 };
1762 };
1763 "minimatch-0.3.0" = {
1764 name = "minimatch";
1765 packageName = "minimatch";
1766 version = "0.3.0";
1767 src = fetchurl {
1768 url = "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz";
1769 sha1 = "275d8edaac4f1bb3326472089e7949c8394699dd";
1770 };
1771 };
1772 "minimatch-3.0.4" = {
1773 name = "minimatch";
1774 packageName = "minimatch";
1775 version = "3.0.4";
1776 src = fetchurl {
1777 url = "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz";
1778 sha512 = "yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==";
1779 };
1780 };
1781 "minimist-0.0.8" = {
1782 name = "minimist";
1783 packageName = "minimist";
1784 version = "0.0.8";
1785 src = fetchurl {
1786 url = "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz";
1787 sha1 = "857fcabfc3397d2625b8228262e86aa7a011b05d";
1788 };
1789 };
1790 "minipass-2.3.3" = {
1791 name = "minipass";
1792 packageName = "minipass";
1793 version = "2.3.3";
1794 src = fetchurl {
1795 url = "https://registry.npmjs.org/minipass/-/minipass-2.3.3.tgz";
1796 sha512 = "/jAn9/tEX4gnpyRATxgHEOV6xbcyxgT7iUnxo9Y3+OB0zX00TgKIv/2FZCf5brBbICcwbLqVv2ImjvWWrQMSYw==";
1797 };
1798 };
1799 "minizlib-1.1.0" = {
1800 name = "minizlib";
1801 packageName = "minizlib";
1802 version = "1.1.0";
1803 src = fetchurl {
1804 url = "https://registry.npmjs.org/minizlib/-/minizlib-1.1.0.tgz";
1805 sha512 = "4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA==";
1806 };
1807 };
1808 "mkdirp-0.3.5" = {
1809 name = "mkdirp";
1810 packageName = "mkdirp";
1811 version = "0.3.5";
1812 src = fetchurl {
1813 url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz";
1814 sha1 = "de3e5f8961c88c787ee1368df849ac4413eca8d7";
1815 };
1816 };
1817 "mkdirp-0.5.1" = {
1818 name = "mkdirp";
1819 packageName = "mkdirp";
1820 version = "0.5.1";
1821 src = fetchurl {
1822 url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz";
1823 sha1 = "30057438eac6cf7f8c4767f38648d6697d75c903";
1824 };
1825 };
1826 "moment-2.22.2" = {
1827 name = "moment";
1828 packageName = "moment";
1829 version = "2.22.2";
1830 src = fetchurl {
1831 url = "https://registry.npmjs.org/moment/-/moment-2.22.2.tgz";
1832 sha1 = "3c257f9839fc0e93ff53149632239eb90783ff66";
1833 };
1834 };
1835 "mousetrap-1.6.2" = {
1836 name = "mousetrap";
1837 packageName = "mousetrap";
1838 version = "1.6.2";
1839 src = fetchurl {
1840 url = "https://registry.npmjs.org/mousetrap/-/mousetrap-1.6.2.tgz";
1841 sha512 = "jDjhi7wlHwdO6q6DS7YRmSHcuI+RVxadBkLt3KHrhd3C2b+w5pKefg3oj5beTcHZyVFA9Aksf+yEE1y5jxUjVA==";
1842 };
1843 };
1844 "ms-2.0.0" = {
1845 name = "ms";
1846 packageName = "ms";
1847 version = "2.0.0";
1848 src = fetchurl {
1849 url = "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz";
1850 sha1 = "5608aeadfc00be6c2901df5f9861788de0d597c8";
1851 };
1852 };
1853 "ncp-0.4.2" = {
1854 name = "ncp";
1855 packageName = "ncp";
1856 version = "0.4.2";
1857 src = fetchurl {
1858 url = "https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz";
1859 sha1 = "abcc6cbd3ec2ed2a729ff6e7c1fa8f01784a8574";
1860 };
1861 };
1862 "nijs-0.0.25" = {
1863 name = "nijs";
1864 packageName = "nijs";
1865 version = "0.0.25";
1866 src = fetchurl {
1867 url = "https://registry.npmjs.org/nijs/-/nijs-0.0.25.tgz";
1868 sha1 = "04b035cb530d46859d1018839a518c029133f676";
1869 };
1870 };
1871 "node2nix-1.6.0" = {
1872 name = "node2nix";
1873 packageName = "node2nix";
1874 version = "1.6.0";
1875 src = fetchurl {
1876 url = "https://registry.npmjs.org/node2nix/-/node2nix-1.6.0.tgz";
1877 sha512 = "MJY6SsQH3pN59R9N3nMz/L8BsbQ0DlvSF38mgg1fwfwgnaJ+y600s3Nd0vZ+cnETUH+4OPETc4QohflccjPUYw==";
1878 };
1879 };
1880 "nopt-1.0.10" = {
1881 name = "nopt";
1882 packageName = "nopt";
1883 version = "1.0.10";
1884 src = fetchurl {
1885 url = "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz";
1886 sha1 = "6ddd21bd2a31417b92727dd585f8a6f37608ebee";
1311 };
1887 };
1312 };
1888 };
1313 "nopt-2.0.0" = {
1889 "nopt-2.0.0" = {
1314 name = "nopt";
1890 name = "nopt";
1315 packageName = "nopt";
1891 packageName = "nopt";
1316 version = "2.0.0";
1892 version = "2.0.0";
1317 src = fetchurl {
1893 src = fetchurl {
1318 url = "https://registry.npmjs.org/nopt/-/nopt-2.0.0.tgz";
1894 url = "https://registry.npmjs.org/nopt/-/nopt-2.0.0.tgz";
1319 sha1 = "ca7416f20a5e3f9c3b86180f96295fa3d0b52e0d";
1895 sha1 = "ca7416f20a5e3f9c3b86180f96295fa3d0b52e0d";
1320 };
1896 };
1321 };
1897 };
1322 "command-line-args-3.0.5" = {
1323 name = "command-line-args";
1324 packageName = "command-line-args";
1325 version = "3.0.5";
1326 src = fetchurl {
1327 url = "https://registry.npmjs.org/command-line-args/-/command-line-args-3.0.5.tgz";
1328 sha1 = "5bd4ad45e7983e5c1344918e40280ee2693c5ac0";
1329 };
1330 };
1331 "command-line-usage-3.0.8" = {
1332 name = "command-line-usage";
1333 packageName = "command-line-usage";
1334 version = "3.0.8";
1335 src = fetchurl {
1336 url = "https://registry.npmjs.org/command-line-usage/-/command-line-usage-3.0.8.tgz";
1337 sha1 = "b6a20978c1b383477f5c11a529428b880bfe0f4d";
1338 };
1339 };
1340 "dom5-1.3.6" = {
1341 name = "dom5";
1342 packageName = "dom5";
1343 version = "1.3.6";
1344 src = fetchurl {
1345 url = "https://registry.npmjs.org/dom5/-/dom5-1.3.6.tgz";
1346 sha1 = "a7088a9fc5f3b08dc9f6eda4c7abaeb241945e0d";
1347 };
1348 };
1349 "array-back-1.0.4" = {
1350 name = "array-back";
1351 packageName = "array-back";
1352 version = "1.0.4";
1353 src = fetchurl {
1354 url = "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz";
1355 sha1 = "644ba7f095f7ffcf7c43b5f0dc39d3c1f03c063b";
1356 };
1357 };
1358 "feature-detect-es6-1.3.1" = {
1359 name = "feature-detect-es6";
1360 packageName = "feature-detect-es6";
1361 version = "1.3.1";
1362 src = fetchurl {
1363 url = "https://registry.npmjs.org/feature-detect-es6/-/feature-detect-es6-1.3.1.tgz";
1364 sha1 = "f888736af9cb0c91f55663bfa4762eb96ee7047f";
1365 };
1366 };
1367 "find-replace-1.0.3" = {
1368 name = "find-replace";
1369 packageName = "find-replace";
1370 version = "1.0.3";
1371 src = fetchurl {
1372 url = "https://registry.npmjs.org/find-replace/-/find-replace-1.0.3.tgz";
1373 sha1 = "b88e7364d2d9c959559f388c66670d6130441fa0";
1374 };
1375 };
1376 "typical-2.6.1" = {
1377 name = "typical";
1378 packageName = "typical";
1379 version = "2.6.1";
1380 src = fetchurl {
1381 url = "https://registry.npmjs.org/typical/-/typical-2.6.1.tgz";
1382 sha1 = "5c080e5d661cbbe38259d2e70a3c7253e873881d";
1383 };
1384 };
1385 "test-value-2.1.0" = {
1386 name = "test-value";
1387 packageName = "test-value";
1388 version = "2.1.0";
1389 src = fetchurl {
1390 url = "https://registry.npmjs.org/test-value/-/test-value-2.1.0.tgz";
1391 sha1 = "11da6ff670f3471a73b625ca4f3fdcf7bb748291";
1392 };
1393 };
1394 "ansi-escape-sequences-3.0.0" = {
1395 name = "ansi-escape-sequences";
1396 packageName = "ansi-escape-sequences";
1397 version = "3.0.0";
1398 src = fetchurl {
1399 url = "https://registry.npmjs.org/ansi-escape-sequences/-/ansi-escape-sequences-3.0.0.tgz";
1400 sha1 = "1c18394b6af9b76ff9a63509fa497669fd2ce53e";
1401 };
1402 };
1403 "table-layout-0.3.0" = {
1404 name = "table-layout";
1405 packageName = "table-layout";
1406 version = "0.3.0";
1407 src = fetchurl {
1408 url = "https://registry.npmjs.org/table-layout/-/table-layout-0.3.0.tgz";
1409 sha1 = "6ee20dc483db371b3e5c87f704ed2f7c799d2c9a";
1410 };
1411 };
1412 "core-js-2.5.1" = {
1413 name = "core-js";
1414 packageName = "core-js";
1415 version = "2.5.1";
1416 src = fetchurl {
1417 url = "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz";
1418 sha1 = "ae6874dc66937789b80754ff5428df66819ca50b";
1419 };
1420 };
1421 "deep-extend-0.4.2" = {
1422 name = "deep-extend";
1423 packageName = "deep-extend";
1424 version = "0.4.2";
1425 src = fetchurl {
1426 url = "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz";
1427 sha1 = "48b699c27e334bf89f10892be432f6e4c7d34a7f";
1428 };
1429 };
1430 "wordwrapjs-2.0.0" = {
1431 name = "wordwrapjs";
1432 packageName = "wordwrapjs";
1433 version = "2.0.0";
1434 src = fetchurl {
1435 url = "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-2.0.0.tgz";
1436 sha1 = "ab55f695e6118da93858fdd70c053d1c5e01ac20";
1437 };
1438 };
1439 "reduce-flatten-1.0.1" = {
1440 name = "reduce-flatten";
1441 packageName = "reduce-flatten";
1442 version = "1.0.1";
1443 src = fetchurl {
1444 url = "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-1.0.1.tgz";
1445 sha1 = "258c78efd153ddf93cb561237f61184f3696e327";
1446 };
1447 };
1448 "@types/clone-0.1.30" = {
1449 name = "@types/clone";
1450 packageName = "@types/clone";
1451 version = "0.1.30";
1452 src = fetchurl {
1453 url = "https://registry.npmjs.org/@types/clone/-/clone-0.1.30.tgz";
1454 sha1 = "e7365648c1b42136a59c7d5040637b3b5c83b614";
1455 };
1456 };
1457 "@types/node-4.2.20" = {
1458 name = "@types/node";
1459 packageName = "@types/node";
1460 version = "4.2.20";
1461 src = fetchurl {
1462 url = "https://registry.npmjs.org/@types/node/-/node-4.2.20.tgz";
1463 sha1 = "3f7dceff43e07cfff4407fc3495d98a533b32267";
1464 };
1465 };
1466 "@types/parse5-0.0.31" = {
1467 name = "@types/parse5";
1468 packageName = "@types/parse5";
1469 version = "0.0.31";
1470 src = fetchurl {
1471 url = "https://registry.npmjs.org/@types/parse5/-/parse5-0.0.31.tgz";
1472 sha1 = "e827a493a443b156e1b582a2e4c3bdc0040f2ee7";
1473 };
1474 };
1475 "clone-1.0.2" = {
1476 name = "clone";
1477 packageName = "clone";
1478 version = "1.0.2";
1479 src = fetchurl {
1480 url = "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz";
1481 sha1 = "260b7a99ebb1edfe247538175f783243cb19d149";
1482 };
1483 };
1484 "parse5-1.5.1" = {
1485 name = "parse5";
1486 packageName = "parse5";
1487 version = "1.5.1";
1488 src = fetchurl {
1489 url = "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz";
1490 sha1 = "9b7f3b0de32be78dc2401b17573ccaf0f6f59d94";
1491 };
1492 };
1493 "@types/node-6.0.88" = {
1494 name = "@types/node";
1495 packageName = "@types/node";
1496 version = "6.0.88";
1497 src = fetchurl {
1498 url = "https://registry.npmjs.org/@types/node/-/node-6.0.88.tgz";
1499 sha1 = "f618f11a944f6a18d92b5c472028728a3e3d4b66";
1500 };
1501 };
1502 "es6-promise-2.3.0" = {
1503 name = "es6-promise";
1504 packageName = "es6-promise";
1505 version = "2.3.0";
1506 src = fetchurl {
1507 url = "https://registry.npmjs.org/es6-promise/-/es6-promise-2.3.0.tgz";
1508 sha1 = "96edb9f2fdb01995822b263dd8aadab6748181bc";
1509 };
1510 };
1511 "hydrolysis-1.25.0" = {
1512 name = "hydrolysis";
1513 packageName = "hydrolysis";
1514 version = "1.25.0";
1515 src = fetchurl {
1516 url = "https://registry.npmjs.org/hydrolysis/-/hydrolysis-1.25.0.tgz";
1517 sha1 = "a4fb14a37a1e03b0db52d8aaa57c682272a14d84";
1518 };
1519 };
1520 "nopt-3.0.6" = {
1898 "nopt-3.0.6" = {
1521 name = "nopt";
1899 name = "nopt";
1522 packageName = "nopt";
1900 packageName = "nopt";
1523 version = "3.0.6";
1901 version = "3.0.6";
1524 src = fetchurl {
1902 src = fetchurl {
1525 url = "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz";
1903 url = "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz";
1526 sha1 = "c6465dbf08abcd4db359317f79ac68a646b28ff9";
1904 sha1 = "c6465dbf08abcd4db359317f79ac68a646b28ff9";
1527 };
1905 };
1528 };
1906 };
1529 "path-posix-1.0.0" = {
1907 "noptify-0.0.3" = {
1530 name = "path-posix";
1908 name = "noptify";
1531 packageName = "path-posix";
1909 packageName = "noptify";
1532 version = "1.0.0";
1910 version = "0.0.3";
1533 src = fetchurl {
1911 src = fetchurl {
1534 url = "https://registry.npmjs.org/path-posix/-/path-posix-1.0.0.tgz";
1912 url = "https://registry.npmjs.org/noptify/-/noptify-0.0.3.tgz";
1535 sha1 = "06b26113f56beab042545a23bfa88003ccac260f";
1913 sha1 = "58f654a73d9753df0c51d9686dc92104a67f4bbb";
1536 };
1914 };
1537 };
1915 };
1538 "acorn-3.3.0" = {
1916 "normalize-package-data-2.4.0" = {
1539 name = "acorn";
1917 name = "normalize-package-data";
1540 packageName = "acorn";
1918 packageName = "normalize-package-data";
1541 version = "3.3.0";
1919 version = "2.4.0";
1542 src = fetchurl {
1920 src = fetchurl {
1543 url = "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz";
1921 url = "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz";
1544 sha1 = "45e37fb39e8da3f25baee3ff5369e2bb5f22017a";
1922 sha512 = "9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==";
1545 };
1923 };
1546 };
1924 };
1547 "babel-polyfill-6.26.0" = {
1925 "npm-package-arg-6.1.0" = {
1548 name = "babel-polyfill";
1926 name = "npm-package-arg";
1549 packageName = "babel-polyfill";
1927 packageName = "npm-package-arg";
1550 version = "6.26.0";
1928 version = "6.1.0";
1551 src = fetchurl {
1929 src = fetchurl {
1552 url = "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz";
1930 url = "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.0.tgz";
1553 sha1 = "379937abc67d7895970adc621f284cd966cf2153";
1931 sha512 = "zYbhP2k9DbJhA0Z3HKUePUgdB1x7MfIfKssC+WLPFMKTBZKpZh5m13PgexJjCq6KW7j17r0jHWcCpxEqnnncSA==";
1554 };
1932 };
1555 };
1933 };
1556 "doctrine-0.7.2" = {
1934 "npm-registry-client-8.5.1" = {
1557 name = "doctrine";
1935 name = "npm-registry-client";
1558 packageName = "doctrine";
1936 packageName = "npm-registry-client";
1559 version = "0.7.2";
1937 version = "8.5.1";
1560 src = fetchurl {
1938 src = fetchurl {
1561 url = "https://registry.npmjs.org/doctrine/-/doctrine-0.7.2.tgz";
1939 url = "https://registry.npmjs.org/npm-registry-client/-/npm-registry-client-8.5.1.tgz";
1562 sha1 = "7cb860359ba3be90e040b26b729ce4bfa654c523";
1940 sha512 = "7rjGF2eA7hKDidGyEWmHTiKfXkbrcQAsGL/Rh4Rt3x3YNRNHhwaTzVJfW3aNvvlhg4G62VCluif0sLCb/i51Hg==";
1563 };
1941 };
1564 };
1942 };
1565 "dom5-1.1.0" = {
1943 "npmconf-2.1.3" = {
1566 name = "dom5";
1944 name = "npmconf";
1567 packageName = "dom5";
1945 packageName = "npmconf";
1568 version = "1.1.0";
1946 version = "2.1.3";
1569 src = fetchurl {
1947 src = fetchurl {
1570 url = "https://registry.npmjs.org/dom5/-/dom5-1.1.0.tgz";
1948 url = "https://registry.npmjs.org/npmconf/-/npmconf-2.1.3.tgz";
1571 sha1 = "3a0c7700c083ab4c4d26938a78b0f0c6dcc37794";
1949 sha512 = "iTK+HI68GceCoGOHAQiJ/ik1iDfI7S+cgyG8A+PP18IU3X83kRhQIRhAUNj4Bp2JMx6Zrt5kCiozYa9uGWTjhA==";
1572 };
1950 };
1573 };
1951 };
1574 "escodegen-1.9.0" = {
1952 "npmlog-4.1.2" = {
1575 name = "escodegen";
1953 name = "npmlog";
1576 packageName = "escodegen";
1954 packageName = "npmlog";
1577 version = "1.9.0";
1955 version = "4.1.2";
1578 src = fetchurl {
1956 src = fetchurl {
1579 url = "https://registry.npmjs.org/escodegen/-/escodegen-1.9.0.tgz";
1957 url = "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz";
1580 sha1 = "9811a2f265dc1cd3894420ee3717064b632b8852";
1958 sha512 = "2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==";
1581 };
1959 };
1582 };
1960 };
1583 "espree-3.5.1" = {
1961 "number-is-nan-1.0.1" = {
1584 name = "espree";
1962 name = "number-is-nan";
1585 packageName = "espree";
1963 packageName = "number-is-nan";
1586 version = "3.5.1";
1587 src = fetchurl {
1588 url = "https://registry.npmjs.org/espree/-/espree-3.5.1.tgz";
1589 sha1 = "0c988b8ab46db53100a1954ae4ba995ddd27d87e";
1590 };
1591 };
1592 "estraverse-3.1.0" = {
1593 name = "estraverse";
1594 packageName = "estraverse";
1595 version = "3.1.0";
1596 src = fetchurl {
1597 url = "https://registry.npmjs.org/estraverse/-/estraverse-3.1.0.tgz";
1598 sha1 = "15e28a446b8b82bc700ccc8b96c78af4da0d6cba";
1599 };
1600 };
1601 "path-is-absolute-1.0.1" = {
1602 name = "path-is-absolute";
1603 packageName = "path-is-absolute";
1604 version = "1.0.1";
1964 version = "1.0.1";
1605 src = fetchurl {
1965 src = fetchurl {
1606 url = "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz";
1966 url = "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz";
1607 sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f";
1967 sha1 = "097b602b53422a522c1afb8790318336941a011d";
1608 };
1968 };
1609 };
1969 };
1610 "babel-runtime-6.26.0" = {
1970 "oauth-sign-0.8.2" = {
1611 name = "babel-runtime";
1971 name = "oauth-sign";
1612 packageName = "babel-runtime";
1972 packageName = "oauth-sign";
1613 version = "6.26.0";
1973 version = "0.8.2";
1614 src = fetchurl {
1974 src = fetchurl {
1615 url = "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz";
1975 url = "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz";
1616 sha1 = "965c7058668e82b55d7bfe04ff2337bc8b5647fe";
1976 sha1 = "46a6ab7f0aead8deae9ec0565780b7d4efeb9d43";
1617 };
1977 };
1618 };
1978 };
1619 "regenerator-runtime-0.10.5" = {
1979 "object-assign-4.1.1" = {
1620 name = "regenerator-runtime";
1980 name = "object-assign";
1621 packageName = "regenerator-runtime";
1981 packageName = "object-assign";
1622 version = "0.10.5";
1982 version = "4.1.1";
1623 src = fetchurl {
1983 src = fetchurl {
1624 url = "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz";
1984 url = "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz";
1625 sha1 = "336c3efc1220adcedda2c9fab67b5a7955a33658";
1985 sha1 = "2109adc7965887cfc05cbbd442cac8bfbb360863";
1626 };
1986 };
1627 };
1987 };
1628 "regenerator-runtime-0.11.0" = {
1988 "once-1.3.3" = {
1629 name = "regenerator-runtime";
1989 name = "once";
1630 packageName = "regenerator-runtime";
1990 packageName = "once";
1631 version = "0.11.0";
1991 version = "1.3.3";
1632 src = fetchurl {
1992 src = fetchurl {
1633 url = "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz";
1993 url = "https://registry.npmjs.org/once/-/once-1.3.3.tgz";
1634 sha1 = "7e54fe5b5ccd5d6624ea6255c3473be090b802e1";
1994 sha1 = "b2e261557ce4c314ec8304f3fa82663e4297ca20";
1635 };
1995 };
1636 };
1996 };
1637 "esutils-1.1.6" = {
1997 "once-1.4.0" = {
1638 name = "esutils";
1998 name = "once";
1639 packageName = "esutils";
1999 packageName = "once";
1640 version = "1.1.6";
2000 version = "1.4.0";
1641 src = fetchurl {
2001 src = fetchurl {
1642 url = "https://registry.npmjs.org/esutils/-/esutils-1.1.6.tgz";
2002 url = "https://registry.npmjs.org/once/-/once-1.4.0.tgz";
1643 sha1 = "c01ccaa9ae4b897c6d0c3e210ae52f3c7a844375";
2003 sha1 = "583b1aa775961d4b113ac17d9c50baef9dd76bd1";
1644 };
1645 };
1646 "isarray-0.0.1" = {
1647 name = "isarray";
1648 packageName = "isarray";
1649 version = "0.0.1";
1650 src = fetchurl {
1651 url = "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz";
1652 sha1 = "8a18acfca9a8f4177e09abfc6038939b05d1eedf";
1653 };
1654 };
1655 "estraverse-4.2.0" = {
1656 name = "estraverse";
1657 packageName = "estraverse";
1658 version = "4.2.0";
1659 src = fetchurl {
1660 url = "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz";
1661 sha1 = "0dee3fed31fcd469618ce7342099fc1afa0bdb13";
1662 };
1663 };
1664 "esutils-2.0.2" = {
1665 name = "esutils";
1666 packageName = "esutils";
1667 version = "2.0.2";
1668 src = fetchurl {
1669 url = "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz";
1670 sha1 = "0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b";
1671 };
1672 };
1673 "esprima-3.1.3" = {
1674 name = "esprima";
1675 packageName = "esprima";
1676 version = "3.1.3";
1677 src = fetchurl {
1678 url = "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz";
1679 sha1 = "fdca51cee6133895e3c88d535ce49dbff62a4633";
1680 };
2004 };
1681 };
2005 };
1682 "optionator-0.8.2" = {
2006 "optionator-0.8.2" = {
1683 name = "optionator";
2007 name = "optionator";
1684 packageName = "optionator";
2008 packageName = "optionator";
1685 version = "0.8.2";
2009 version = "0.8.2";
1686 src = fetchurl {
2010 src = fetchurl {
1687 url = "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz";
2011 url = "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz";
1688 sha1 = "364c5e409d3f4d6301d6c0b4c05bba50180aeb64";
2012 sha1 = "364c5e409d3f4d6301d6c0b4c05bba50180aeb64";
1689 };
2013 };
1690 };
2014 };
1691 "prelude-ls-1.1.2" = {
1692 name = "prelude-ls";
1693 packageName = "prelude-ls";
1694 version = "1.1.2";
1695 src = fetchurl {
1696 url = "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz";
1697 sha1 = "21932a549f5e52ffd9a827f570e04be62a97da54";
1698 };
1699 };
1700 "deep-is-0.1.3" = {
1701 name = "deep-is";
1702 packageName = "deep-is";
1703 version = "0.1.3";
1704 src = fetchurl {
1705 url = "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz";
1706 sha1 = "b369d6fb5dbc13eecf524f91b070feedc357cf34";
1707 };
1708 };
1709 "wordwrap-1.0.0" = {
1710 name = "wordwrap";
1711 packageName = "wordwrap";
1712 version = "1.0.0";
1713 src = fetchurl {
1714 url = "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz";
1715 sha1 = "27584810891456a4171c8d0226441ade90cbcaeb";
1716 };
1717 };
1718 "type-check-0.3.2" = {
1719 name = "type-check";
1720 packageName = "type-check";
1721 version = "0.3.2";
1722 src = fetchurl {
1723 url = "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz";
1724 sha1 = "5884cab512cf1d355e3fb784f30804b2b520db72";
1725 };
1726 };
1727 "levn-0.3.0" = {
1728 name = "levn";
1729 packageName = "levn";
1730 version = "0.3.0";
1731 src = fetchurl {
1732 url = "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz";
1733 sha1 = "3b09924edf9f083c0490fdd4c0bc4421e04764ee";
1734 };
1735 };
1736 "fast-levenshtein-2.0.6" = {
1737 name = "fast-levenshtein";
1738 packageName = "fast-levenshtein";
1739 version = "2.0.6";
1740 src = fetchurl {
1741 url = "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz";
1742 sha1 = "3d8a5c66883a16a30ca8643e851f19baa7797917";
1743 };
1744 };
1745 "acorn-5.1.2" = {
1746 name = "acorn";
1747 packageName = "acorn";
1748 version = "5.1.2";
1749 src = fetchurl {
1750 url = "https://registry.npmjs.org/acorn/-/acorn-5.1.2.tgz";
1751 sha1 = "911cb53e036807cf0fa778dc5d370fbd864246d7";
1752 };
1753 };
1754 "acorn-jsx-3.0.1" = {
1755 name = "acorn-jsx";
1756 packageName = "acorn-jsx";
1757 version = "3.0.1";
1758 src = fetchurl {
1759 url = "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz";
1760 sha1 = "afdf9488fb1ecefc8348f6fb22f464e32a58b36b";
1761 };
1762 };
1763 "object-assign-4.1.1" = {
1764 name = "object-assign";
1765 packageName = "object-assign";
1766 version = "4.1.1";
1767 src = fetchurl {
1768 url = "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz";
1769 sha1 = "2109adc7965887cfc05cbbd442cac8bfbb360863";
1770 };
1771 };
1772 "crisper-1.2.0" = {
1773 name = "crisper";
1774 packageName = "crisper";
1775 version = "1.2.0";
1776 src = fetchurl {
1777 url = "https://registry.npmjs.org/crisper/-/crisper-1.2.0.tgz";
1778 sha1 = "9a91f597d71f6110294e076ad44dbb3408568e46";
1779 };
1780 };
1781 "optparse-1.0.5" = {
2015 "optparse-1.0.5" = {
1782 name = "optparse";
2016 name = "optparse";
1783 packageName = "optparse";
2017 packageName = "optparse";
1784 version = "1.0.5";
2018 version = "1.0.5";
1785 src = fetchurl {
2019 src = fetchurl {
1786 url = "https://registry.npmjs.org/optparse/-/optparse-1.0.5.tgz";
2020 url = "https://registry.npmjs.org/optparse/-/optparse-1.0.5.tgz";
1787 sha1 = "75e75a96506611eb1c65ba89018ff08a981e2c16";
2021 sha1 = "75e75a96506611eb1c65ba89018ff08a981e2c16";
1788 };
2022 };
1789 };
2023 };
1790 "semver-5.4.1" = {
1791 name = "semver";
1792 packageName = "semver";
1793 version = "5.4.1";
1794 src = fetchurl {
1795 url = "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz";
1796 sha1 = "e059c09d8571f0540823733433505d3a2f00b18e";
1797 };
1798 };
1799 "npm-registry-client-8.4.0" = {
1800 name = "npm-registry-client";
1801 packageName = "npm-registry-client";
1802 version = "8.4.0";
1803 src = fetchurl {
1804 url = "https://registry.npmjs.org/npm-registry-client/-/npm-registry-client-8.4.0.tgz";
1805 sha1 = "d52b901685647fc62a4c03eafecb6ceaa5018d4c";
1806 };
1807 };
1808 "npmconf-2.1.2" = {
1809 name = "npmconf";
1810 packageName = "npmconf";
1811 version = "2.1.2";
1812 src = fetchurl {
1813 url = "https://registry.npmjs.org/npmconf/-/npmconf-2.1.2.tgz";
1814 sha1 = "66606a4a736f1e77a059aa071a79c94ab781853a";
1815 };
1816 };
1817 "tar-3.1.15" = {
1818 name = "tar";
1819 packageName = "tar";
1820 version = "3.1.15";
1821 src = fetchurl {
1822 url = "https://registry.npmjs.org/tar/-/tar-3.1.15.tgz";
1823 sha1 = "cccdc35b90917d58e4c3837795d5d022d7a1f46f";
1824 };
1825 };
1826 "temp-0.8.3" = {
1827 name = "temp";
1828 packageName = "temp";
1829 version = "0.8.3";
1830 src = fetchurl {
1831 url = "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz";
1832 sha1 = "e0c6bc4d26b903124410e4fed81103014dfc1f59";
1833 };
1834 };
1835 "fs.extra-1.3.2" = {
1836 name = "fs.extra";
1837 packageName = "fs.extra";
1838 version = "1.3.2";
1839 src = fetchurl {
1840 url = "https://registry.npmjs.org/fs.extra/-/fs.extra-1.3.2.tgz";
1841 sha1 = "dd023f93013bee24531f1b33514c37b20fd93349";
1842 };
1843 };
1844 "findit-2.0.0" = {
1845 name = "findit";
1846 packageName = "findit";
1847 version = "2.0.0";
1848 src = fetchurl {
1849 url = "https://registry.npmjs.org/findit/-/findit-2.0.0.tgz";
1850 sha1 = "6509f0126af4c178551cfa99394e032e13a4d56e";
1851 };
1852 };
1853 "base64-js-1.2.1" = {
1854 name = "base64-js";
1855 packageName = "base64-js";
1856 version = "1.2.1";
1857 src = fetchurl {
1858 url = "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz";
1859 sha1 = "a91947da1f4a516ea38e5b4ec0ec3773675e0886";
1860 };
1861 };
1862 "slasp-0.0.4" = {
1863 name = "slasp";
1864 packageName = "slasp";
1865 version = "0.0.4";
1866 src = fetchurl {
1867 url = "https://registry.npmjs.org/slasp/-/slasp-0.0.4.tgz";
1868 sha1 = "9adc26ee729a0f95095851a5489f87a5258d57a9";
1869 };
1870 };
1871 "nijs-0.0.23" = {
1872 name = "nijs";
1873 packageName = "nijs";
1874 version = "0.0.23";
1875 src = fetchurl {
1876 url = "https://registry.npmjs.org/nijs/-/nijs-0.0.23.tgz";
1877 sha1 = "dbf8f4a0acafbe3b8d9b71c24cbd1d851de6c31a";
1878 };
1879 };
1880 "concat-stream-1.6.0" = {
1881 name = "concat-stream";
1882 packageName = "concat-stream";
1883 version = "1.6.0";
1884 src = fetchurl {
1885 url = "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz";
1886 sha1 = "0aac662fd52be78964d5532f694784e70110acf7";
1887 };
1888 };
1889 "normalize-package-data-2.4.0" = {
1890 name = "normalize-package-data";
1891 packageName = "normalize-package-data";
1892 version = "2.4.0";
1893 src = fetchurl {
1894 url = "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz";
1895 sha1 = "12f95a307d58352075a04907b84ac8be98ac012f";
1896 };
1897 };
1898 "npm-package-arg-5.1.2" = {
1899 name = "npm-package-arg";
1900 packageName = "npm-package-arg";
1901 version = "5.1.2";
1902 src = fetchurl {
1903 url = "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-5.1.2.tgz";
1904 sha1 = "fb18d17bb61e60900d6312619919bd753755ab37";
1905 };
1906 };
1907 "once-1.4.0" = {
1908 name = "once";
1909 packageName = "once";
1910 version = "1.4.0";
1911 src = fetchurl {
1912 url = "https://registry.npmjs.org/once/-/once-1.4.0.tgz";
1913 sha1 = "583b1aa775961d4b113ac17d9c50baef9dd76bd1";
1914 };
1915 };
1916 "retry-0.10.1" = {
1917 name = "retry";
1918 packageName = "retry";
1919 version = "0.10.1";
1920 src = fetchurl {
1921 url = "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz";
1922 sha1 = "e76388d217992c252750241d3d3956fed98d8ff4";
1923 };
1924 };
1925 "slide-1.1.6" = {
1926 name = "slide";
1927 packageName = "slide";
1928 version = "1.1.6";
1929 src = fetchurl {
1930 url = "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz";
1931 sha1 = "56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707";
1932 };
1933 };
1934 "ssri-4.1.6" = {
1935 name = "ssri";
1936 packageName = "ssri";
1937 version = "4.1.6";
1938 src = fetchurl {
1939 url = "https://registry.npmjs.org/ssri/-/ssri-4.1.6.tgz";
1940 sha1 = "0cb49b6ac84457e7bdd466cb730c3cb623e9a25b";
1941 };
1942 };
1943 "npmlog-4.1.2" = {
1944 name = "npmlog";
1945 packageName = "npmlog";
1946 version = "4.1.2";
1947 src = fetchurl {
1948 url = "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz";
1949 sha1 = "08a7f2a8bf734604779a9efa4ad5cc717abb954b";
1950 };
1951 };
1952 "typedarray-0.0.6" = {
1953 name = "typedarray";
1954 packageName = "typedarray";
1955 version = "0.0.6";
1956 src = fetchurl {
1957 url = "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz";
1958 sha1 = "867ac74e3864187b1d3d47d996a78ec5c8830777";
1959 };
1960 };
1961 "readable-stream-2.3.3" = {
1962 name = "readable-stream";
1963 packageName = "readable-stream";
1964 version = "2.3.3";
1965 src = fetchurl {
1966 url = "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz";
1967 sha1 = "368f2512d79f9d46fdfc71349ae7878bbc1eb95c";
1968 };
1969 };
1970 "isarray-1.0.0" = {
1971 name = "isarray";
1972 packageName = "isarray";
1973 version = "1.0.0";
1974 src = fetchurl {
1975 url = "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz";
1976 sha1 = "bb935d48582cba168c06834957a54a3e07124f11";
1977 };
1978 };
1979 "process-nextick-args-1.0.7" = {
1980 name = "process-nextick-args";
1981 packageName = "process-nextick-args";
1982 version = "1.0.7";
1983 src = fetchurl {
1984 url = "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz";
1985 sha1 = "150e20b756590ad3f91093f25a4f2ad8bff30ba3";
1986 };
1987 };
1988 "string_decoder-1.0.3" = {
1989 name = "string_decoder";
1990 packageName = "string_decoder";
1991 version = "1.0.3";
1992 src = fetchurl {
1993 url = "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz";
1994 sha1 = "0fc67d7c141825de94282dd536bec6b9bce860ab";
1995 };
1996 };
1997 "util-deprecate-1.0.2" = {
1998 name = "util-deprecate";
1999 packageName = "util-deprecate";
2000 version = "1.0.2";
2001 src = fetchurl {
2002 url = "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz";
2003 sha1 = "450d4dc9fa70de732762fbd2d4a28981419a0ccf";
2004 };
2005 };
2006 "hosted-git-info-2.5.0" = {
2007 name = "hosted-git-info";
2008 packageName = "hosted-git-info";
2009 version = "2.5.0";
2010 src = fetchurl {
2011 url = "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz";
2012 sha1 = "6d60e34b3abbc8313062c3b798ef8d901a07af3c";
2013 };
2014 };
2015 "is-builtin-module-1.0.0" = {
2016 name = "is-builtin-module";
2017 packageName = "is-builtin-module";
2018 version = "1.0.0";
2019 src = fetchurl {
2020 url = "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz";
2021 sha1 = "540572d34f7ac3119f8f76c30cbc1b1e037affbe";
2022 };
2023 };
2024 "validate-npm-package-license-3.0.1" = {
2025 name = "validate-npm-package-license";
2026 packageName = "validate-npm-package-license";
2027 version = "3.0.1";
2028 src = fetchurl {
2029 url = "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz";
2030 sha1 = "2804babe712ad3379459acfbe24746ab2c303fbc";
2031 };
2032 };
2033 "builtin-modules-1.1.1" = {
2034 name = "builtin-modules";
2035 packageName = "builtin-modules";
2036 version = "1.1.1";
2037 src = fetchurl {
2038 url = "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz";
2039 sha1 = "270f076c5a72c02f5b65a47df94c5fe3a278892f";
2040 };
2041 };
2042 "spdx-correct-1.0.2" = {
2043 name = "spdx-correct";
2044 packageName = "spdx-correct";
2045 version = "1.0.2";
2046 src = fetchurl {
2047 url = "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz";
2048 sha1 = "4b3073d933ff51f3912f03ac5519498a4150db40";
2049 };
2050 };
2051 "spdx-expression-parse-1.0.4" = {
2052 name = "spdx-expression-parse";
2053 packageName = "spdx-expression-parse";
2054 version = "1.0.4";
2055 src = fetchurl {
2056 url = "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz";
2057 sha1 = "9bdf2f20e1f40ed447fbe273266191fced51626c";
2058 };
2059 };
2060 "spdx-license-ids-1.2.2" = {
2061 name = "spdx-license-ids";
2062 packageName = "spdx-license-ids";
2063 version = "1.2.2";
2064 src = fetchurl {
2065 url = "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz";
2066 sha1 = "c9df7a3424594ade6bd11900d596696dc06bac57";
2067 };
2068 };
2069 "osenv-0.1.4" = {
2070 name = "osenv";
2071 packageName = "osenv";
2072 version = "0.1.4";
2073 src = fetchurl {
2074 url = "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz";
2075 sha1 = "42fe6d5953df06c8064be6f176c3d05aaaa34644";
2076 };
2077 };
2078 "validate-npm-package-name-3.0.0" = {
2079 name = "validate-npm-package-name";
2080 packageName = "validate-npm-package-name";
2081 version = "3.0.0";
2082 src = fetchurl {
2083 url = "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz";
2084 sha1 = "5fa912d81eb7d0c74afc140de7317f0ca7df437e";
2085 };
2086 };
2087 "os-homedir-1.0.2" = {
2024 "os-homedir-1.0.2" = {
2088 name = "os-homedir";
2025 name = "os-homedir";
2089 packageName = "os-homedir";
2026 packageName = "os-homedir";
2090 version = "1.0.2";
2027 version = "1.0.2";
2091 src = fetchurl {
2028 src = fetchurl {
2092 url = "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz";
2029 url = "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz";
2093 sha1 = "ffbc4988336e0e833de0c168c7ef152121aa7fb3";
2030 sha1 = "ffbc4988336e0e833de0c168c7ef152121aa7fb3";
2094 };
2031 };
2095 };
2032 };
2096 "os-tmpdir-1.0.2" = {
2033 "os-tmpdir-1.0.2" = {
2097 name = "os-tmpdir";
2034 name = "os-tmpdir";
2098 packageName = "os-tmpdir";
2035 packageName = "os-tmpdir";
2099 version = "1.0.2";
2036 version = "1.0.2";
2100 src = fetchurl {
2037 src = fetchurl {
2101 url = "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz";
2038 url = "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz";
2102 sha1 = "bbe67406c79aa85c5cfec766fe5734555dfa1274";
2039 sha1 = "bbe67406c79aa85c5cfec766fe5734555dfa1274";
2103 };
2040 };
2104 };
2041 };
2105 "builtins-1.0.3" = {
2042 "osenv-0.1.5" = {
2106 name = "builtins";
2043 name = "osenv";
2107 packageName = "builtins";
2044 packageName = "osenv";
2108 version = "1.0.3";
2045 version = "0.1.5";
2109 src = fetchurl {
2046 src = fetchurl {
2110 url = "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz";
2047 url = "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz";
2111 sha1 = "cb94faeb61c8696451db36534e1422f94f0aee88";
2048 sha512 = "0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==";
2112 };
2049 };
2113 };
2050 };
2114 "wrappy-1.0.2" = {
2051 "parse5-1.5.1" = {
2115 name = "wrappy";
2052 name = "parse5";
2116 packageName = "wrappy";
2053 packageName = "parse5";
2117 version = "1.0.2";
2054 version = "1.5.1";
2118 src = fetchurl {
2055 src = fetchurl {
2119 url = "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz";
2056 url = "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz";
2120 sha1 = "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f";
2057 sha1 = "9b7f3b0de32be78dc2401b17573ccaf0f6f59d94";
2121 };
2058 };
2122 };
2059 };
2123 "are-we-there-yet-1.1.4" = {
2060 "path-is-absolute-1.0.1" = {
2124 name = "are-we-there-yet";
2061 name = "path-is-absolute";
2125 packageName = "are-we-there-yet";
2062 packageName = "path-is-absolute";
2126 version = "1.1.4";
2063 version = "1.0.1";
2127 src = fetchurl {
2064 src = fetchurl {
2128 url = "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz";
2065 url = "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz";
2129 sha1 = "bb5dca382bb94f05e15194373d16fd3ba1ca110d";
2066 sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f";
2130 };
2067 };
2131 };
2068 };
2132 "console-control-strings-1.1.0" = {
2069 "path-posix-1.0.0" = {
2133 name = "console-control-strings";
2070 name = "path-posix";
2134 packageName = "console-control-strings";
2071 packageName = "path-posix";
2135 version = "1.1.0";
2136 src = fetchurl {
2137 url = "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz";
2138 sha1 = "3d7cf4464db6446ea644bf4b39507f9851008e8e";
2139 };
2140 };
2141 "gauge-2.7.4" = {
2142 name = "gauge";
2143 packageName = "gauge";
2144 version = "2.7.4";
2145 src = fetchurl {
2146 url = "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz";
2147 sha1 = "2c03405c7538c39d7eb37b317022e325fb018bf7";
2148 };
2149 };
2150 "set-blocking-2.0.0" = {
2151 name = "set-blocking";
2152 packageName = "set-blocking";
2153 version = "2.0.0";
2154 src = fetchurl {
2155 url = "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz";
2156 sha1 = "045f9782d011ae9a6803ddd382b24392b3d890f7";
2157 };
2158 };
2159 "delegates-1.0.0" = {
2160 name = "delegates";
2161 packageName = "delegates";
2162 version = "1.0.0";
2072 version = "1.0.0";
2163 src = fetchurl {
2073 src = fetchurl {
2164 url = "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz";
2074 url = "https://registry.npmjs.org/path-posix/-/path-posix-1.0.0.tgz";
2165 sha1 = "84c6e159b81904fdca59a0ef44cd870d31250f9a";
2075 sha1 = "06b26113f56beab042545a23bfa88003ccac260f";
2166 };
2076 };
2167 };
2077 };
2168 "aproba-1.2.0" = {
2078 "pend-1.2.0" = {
2169 name = "aproba";
2079 name = "pend";
2170 packageName = "aproba";
2080 packageName = "pend";
2171 version = "1.2.0";
2081 version = "1.2.0";
2172 src = fetchurl {
2082 src = fetchurl {
2173 url = "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz";
2083 url = "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz";
2174 sha1 = "6802e6264efd18c790a1b0d517f0f2627bf2c94a";
2084 sha1 = "7a57eb550a6783f9115331fcf4663d5c8e007a50";
2175 };
2085 };
2176 };
2086 };
2177 "has-unicode-2.0.1" = {
2087 "performance-now-0.2.0" = {
2178 name = "has-unicode";
2088 name = "performance-now";
2179 packageName = "has-unicode";
2089 packageName = "performance-now";
2090 version = "0.2.0";
2091 src = fetchurl {
2092 url = "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz";
2093 sha1 = "33ef30c5c77d4ea21c5a53869d91b56d8f2555e5";
2094 };
2095 };
2096 "phantom-4.0.12" = {
2097 name = "phantom";
2098 packageName = "phantom";
2099 version = "4.0.12";
2100 src = fetchurl {
2101 url = "https://registry.npmjs.org/phantom/-/phantom-4.0.12.tgz";
2102 sha512 = "Tz82XhtPmwCk1FFPmecy7yRGZG2btpzY2KI9fcoPT7zT9det0CcMyfBFPp1S8DqzsnQnm8ZYEfdy528mwVtksA==";
2103 };
2104 };
2105 "phantomjs-prebuilt-2.1.16" = {
2106 name = "phantomjs-prebuilt";
2107 packageName = "phantomjs-prebuilt";
2108 version = "2.1.16";
2109 src = fetchurl {
2110 url = "https://registry.npmjs.org/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.16.tgz";
2111 sha1 = "efd212a4a3966d3647684ea8ba788549be2aefef";
2112 };
2113 };
2114 "pinkie-2.0.4" = {
2115 name = "pinkie";
2116 packageName = "pinkie";
2117 version = "2.0.4";
2118 src = fetchurl {
2119 url = "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz";
2120 sha1 = "72556b80cfa0d48a974e80e77248e80ed4f7f870";
2121 };
2122 };
2123 "pinkie-promise-2.0.1" = {
2124 name = "pinkie-promise";
2125 packageName = "pinkie-promise";
2180 version = "2.0.1";
2126 version = "2.0.1";
2181 src = fetchurl {
2127 src = fetchurl {
2182 url = "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz";
2128 url = "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz";
2183 sha1 = "e0e6fe6a28cf51138855e086d1691e771de2a8b9";
2129 sha1 = "2135d6dfa7a358c069ac9b178776288228450ffa";
2184 };
2130 };
2185 };
2131 };
2186 "signal-exit-3.0.2" = {
2132 "prelude-ls-1.1.2" = {
2187 name = "signal-exit";
2133 name = "prelude-ls";
2188 packageName = "signal-exit";
2134 packageName = "prelude-ls";
2189 version = "3.0.2";
2190 src = fetchurl {
2191 url = "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz";
2192 sha1 = "b5fdc08f1287ea1178628e415e25132b73646c6d";
2193 };
2194 };
2195 "string-width-1.0.2" = {
2196 name = "string-width";
2197 packageName = "string-width";
2198 version = "1.0.2";
2199 src = fetchurl {
2200 url = "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz";
2201 sha1 = "118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3";
2202 };
2203 };
2204 "wide-align-1.1.2" = {
2205 name = "wide-align";
2206 packageName = "wide-align";
2207 version = "1.1.2";
2135 version = "1.1.2";
2208 src = fetchurl {
2136 src = fetchurl {
2209 url = "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz";
2137 url = "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz";
2210 sha1 = "571e0f1b0604636ebc0dfc21b0339bbe31341710";
2138 sha1 = "21932a549f5e52ffd9a827f570e04be62a97da54";
2211 };
2139 };
2212 };
2140 };
2213 "code-point-at-1.1.0" = {
2141 "process-nextick-args-2.0.0" = {
2214 name = "code-point-at";
2142 name = "process-nextick-args";
2215 packageName = "code-point-at";
2143 packageName = "process-nextick-args";
2216 version = "1.1.0";
2144 version = "2.0.0";
2217 src = fetchurl {
2145 src = fetchurl {
2218 url = "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz";
2146 url = "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz";
2219 sha1 = "0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77";
2147 sha512 = "MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==";
2220 };
2148 };
2221 };
2149 };
2222 "is-fullwidth-code-point-1.0.0" = {
2150 "progress-1.1.8" = {
2223 name = "is-fullwidth-code-point";
2151 name = "progress";
2224 packageName = "is-fullwidth-code-point";
2152 packageName = "progress";
2225 version = "1.0.0";
2153 version = "1.1.8";
2226 src = fetchurl {
2154 src = fetchurl {
2227 url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz";
2155 url = "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz";
2228 sha1 = "ef9e31386f031a7f0d643af82fde50c457ef00cb";
2156 sha1 = "e260c78f6161cdd9b0e56cc3e0a85de17c7a57be";
2229 };
2157 };
2230 };
2158 };
2231 "number-is-nan-1.0.1" = {
2159 "promise-7.3.1" = {
2232 name = "number-is-nan";
2160 name = "promise";
2233 packageName = "number-is-nan";
2161 packageName = "promise";
2234 version = "1.0.1";
2162 version = "7.3.1";
2235 src = fetchurl {
2163 src = fetchurl {
2236 url = "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz";
2164 url = "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz";
2237 sha1 = "097b602b53422a522c1afb8790318336941a011d";
2165 sha512 = "nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==";
2238 };
2239 };
2240 "config-chain-1.1.11" = {
2241 name = "config-chain";
2242 packageName = "config-chain";
2243 version = "1.1.11";
2244 src = fetchurl {
2245 url = "https://registry.npmjs.org/config-chain/-/config-chain-1.1.11.tgz";
2246 sha1 = "aba09747dfbe4c3e70e766a6e41586e1859fc6f2";
2247 };
2248 };
2249 "ini-1.3.4" = {
2250 name = "ini";
2251 packageName = "ini";
2252 version = "1.3.4";
2253 src = fetchurl {
2254 url = "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz";
2255 sha1 = "0537cb79daf59b59a1a517dff706c86ec039162e";
2256 };
2257 };
2258 "once-1.3.3" = {
2259 name = "once";
2260 packageName = "once";
2261 version = "1.3.3";
2262 src = fetchurl {
2263 url = "https://registry.npmjs.org/once/-/once-1.3.3.tgz";
2264 sha1 = "b2e261557ce4c314ec8304f3fa82663e4297ca20";
2265 };
2266 };
2267 "semver-4.3.6" = {
2268 name = "semver";
2269 packageName = "semver";
2270 version = "4.3.6";
2271 src = fetchurl {
2272 url = "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz";
2273 sha1 = "300bc6e0e86374f7ba61068b5b1ecd57fc6532da";
2274 };
2275 };
2276 "uid-number-0.0.5" = {
2277 name = "uid-number";
2278 packageName = "uid-number";
2279 version = "0.0.5";
2280 src = fetchurl {
2281 url = "https://registry.npmjs.org/uid-number/-/uid-number-0.0.5.tgz";
2282 sha1 = "5a3db23ef5dbd55b81fce0ec9a2ac6fccdebb81e";
2283 };
2166 };
2284 };
2167 };
2285 "proto-list-1.2.4" = {
2168 "proto-list-1.2.4" = {
2286 name = "proto-list";
2169 name = "proto-list";
2287 packageName = "proto-list";
2170 packageName = "proto-list";
2288 version = "1.2.4";
2171 version = "1.2.4";
2289 src = fetchurl {
2172 src = fetchurl {
2290 url = "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz";
2173 url = "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz";
2291 sha1 = "212d5bfe1318306a420f6402b8e26ff39647a849";
2174 sha1 = "212d5bfe1318306a420f6402b8e26ff39647a849";
2292 };
2175 };
2293 };
2176 };
2294 "minipass-2.2.1" = {
2177 "prr-1.0.1" = {
2295 name = "minipass";
2178 name = "prr";
2296 packageName = "minipass";
2179 packageName = "prr";
2297 version = "2.2.1";
2298 src = fetchurl {
2299 url = "https://registry.npmjs.org/minipass/-/minipass-2.2.1.tgz";
2300 sha1 = "5ada97538b1027b4cf7213432428578cb564011f";
2301 };
2302 };
2303 "minizlib-1.0.3" = {
2304 name = "minizlib";
2305 packageName = "minizlib";
2306 version = "1.0.3";
2307 src = fetchurl {
2308 url = "https://registry.npmjs.org/minizlib/-/minizlib-1.0.3.tgz";
2309 sha1 = "d5c1abf77be154619952e253336eccab9b2a32f5";
2310 };
2311 };
2312 "yallist-3.0.2" = {
2313 name = "yallist";
2314 packageName = "yallist";
2315 version = "3.0.2";
2316 src = fetchurl {
2317 url = "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz";
2318 sha1 = "8452b4bb7e83c7c188d8041c1a837c773d6d8bb9";
2319 };
2320 };
2321 "fs-extra-0.6.4" = {
2322 name = "fs-extra";
2323 packageName = "fs-extra";
2324 version = "0.6.4";
2325 src = fetchurl {
2326 url = "https://registry.npmjs.org/fs-extra/-/fs-extra-0.6.4.tgz";
2327 sha1 = "f46f0c75b7841f8d200b3348cd4d691d5a099d15";
2328 };
2329 };
2330 "mkdirp-0.3.5" = {
2331 name = "mkdirp";
2332 packageName = "mkdirp";
2333 version = "0.3.5";
2334 src = fetchurl {
2335 url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz";
2336 sha1 = "de3e5f8961c88c787ee1368df849ac4413eca8d7";
2337 };
2338 };
2339 "walk-2.3.9" = {
2340 name = "walk";
2341 packageName = "walk";
2342 version = "2.3.9";
2343 src = fetchurl {
2344 url = "https://registry.npmjs.org/walk/-/walk-2.3.9.tgz";
2345 sha1 = "31b4db6678f2ae01c39ea9fb8725a9031e558a7b";
2346 };
2347 };
2348 "ncp-0.4.2" = {
2349 name = "ncp";
2350 packageName = "ncp";
2351 version = "0.4.2";
2352 src = fetchurl {
2353 url = "https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz";
2354 sha1 = "abcc6cbd3ec2ed2a729ff6e7c1fa8f01784a8574";
2355 };
2356 };
2357 "jsonfile-1.0.1" = {
2358 name = "jsonfile";
2359 packageName = "jsonfile";
2360 version = "1.0.1";
2361 src = fetchurl {
2362 url = "https://registry.npmjs.org/jsonfile/-/jsonfile-1.0.1.tgz";
2363 sha1 = "ea5efe40b83690b98667614a7392fc60e842c0dd";
2364 };
2365 };
2366 "foreachasync-3.0.0" = {
2367 name = "foreachasync";
2368 packageName = "foreachasync";
2369 version = "3.0.0";
2370 src = fetchurl {
2371 url = "https://registry.npmjs.org/foreachasync/-/foreachasync-3.0.0.tgz";
2372 sha1 = "5502987dc8714be3392097f32e0071c9dee07cf6";
2373 };
2374 };
2375 "cli-1.0.1" = {
2376 name = "cli";
2377 packageName = "cli";
2378 version = "1.0.1";
2180 version = "1.0.1";
2379 src = fetchurl {
2181 src = fetchurl {
2380 url = "https://registry.npmjs.org/cli/-/cli-1.0.1.tgz";
2182 url = "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz";
2381 sha1 = "22817534f24bfa4950c34d532d48ecbc621b8c14";
2183 sha1 = "d3fc114ba06995a45ec6893f484ceb1d78f5f476";
2382 };
2184 };
2383 };
2185 };
2384 "console-browserify-1.1.0" = {
2186 "punycode-1.4.1" = {
2385 name = "console-browserify";
2187 name = "punycode";
2386 packageName = "console-browserify";
2188 packageName = "punycode";
2387 version = "1.1.0";
2189 version = "1.4.1";
2388 src = fetchurl {
2190 src = fetchurl {
2389 url = "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz";
2191 url = "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz";
2390 sha1 = "f0241c45730a9fc6323b206dbf38edc741d0bb10";
2192 sha1 = "c0d5a63b2718800ad8e1eb0fa5269c84dd41845e";
2391 };
2193 };
2392 };
2194 };
2393 "htmlparser2-3.8.3" = {
2195 "qrious-4.0.2" = {
2394 name = "htmlparser2";
2196 name = "qrious";
2395 packageName = "htmlparser2";
2197 packageName = "qrious";
2396 version = "3.8.3";
2198 version = "4.0.2";
2397 src = fetchurl {
2199 src = fetchurl {
2398 url = "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz";
2200 url = "https://registry.npmjs.org/qrious/-/qrious-4.0.2.tgz";
2399 sha1 = "996c28b191516a8be86501a7d79757e5c70c1068";
2201 sha512 = "xWPJIrK1zu5Ypn898fBp8RHkT/9ibquV2Kv24S/JY9VYEhMBMKur1gHVsOiNUh7PHP9uCgejjpZUHUIXXKoU/g==";
2400 };
2202 };
2401 };
2203 };
2402 "minimatch-3.0.4" = {
2204 "qs-0.5.6" = {
2403 name = "minimatch";
2205 name = "qs";
2404 packageName = "minimatch";
2206 packageName = "qs";
2405 version = "3.0.4";
2207 version = "0.5.6";
2406 src = fetchurl {
2208 src = fetchurl {
2407 url = "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz";
2209 url = "https://registry.npmjs.org/qs/-/qs-0.5.6.tgz";
2408 sha1 = "5166e286457f03306064be5497e8dbb0c3d32083";
2210 sha1 = "31b1ad058567651c526921506b9a8793911a0384";
2409 };
2211 };
2410 };
2212 };
2411 "shelljs-0.3.0" = {
2213 "qs-6.4.0" = {
2412 name = "shelljs";
2214 name = "qs";
2413 packageName = "shelljs";
2215 packageName = "qs";
2414 version = "0.3.0";
2216 version = "6.4.0";
2415 src = fetchurl {
2217 src = fetchurl {
2416 url = "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz";
2218 url = "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz";
2417 sha1 = "3596e6307a781544f591f37da618360f31db57b1";
2219 sha1 = "13e26d28ad6b0ffaa91312cd3bf708ed351e7233";
2418 };
2419 };
2420 "strip-json-comments-1.0.4" = {
2421 name = "strip-json-comments";
2422 packageName = "strip-json-comments";
2423 version = "1.0.4";
2424 src = fetchurl {
2425 url = "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz";
2426 sha1 = "1e15fbcac97d3ee99bf2d73b4c656b082bbafb91";
2427 };
2428 };
2429 "lodash-3.7.0" = {
2430 name = "lodash";
2431 packageName = "lodash";
2432 version = "3.7.0";
2433 src = fetchurl {
2434 url = "https://registry.npmjs.org/lodash/-/lodash-3.7.0.tgz";
2435 sha1 = "3678bd8ab995057c07ade836ed2ef087da811d45";
2436 };
2437 };
2438 "glob-7.1.2" = {
2439 name = "glob";
2440 packageName = "glob";
2441 version = "7.1.2";
2442 src = fetchurl {
2443 url = "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz";
2444 sha1 = "c19c9df9a028702d678612384a6552404c636d15";
2445 };
2446 };
2447 "fs.realpath-1.0.0" = {
2448 name = "fs.realpath";
2449 packageName = "fs.realpath";
2450 version = "1.0.0";
2451 src = fetchurl {
2452 url = "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz";
2453 sha1 = "1504ad2523158caa40db4a2787cb01411994ea4f";
2454 };
2455 };
2456 "inflight-1.0.6" = {
2457 name = "inflight";
2458 packageName = "inflight";
2459 version = "1.0.6";
2460 src = fetchurl {
2461 url = "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz";
2462 sha1 = "49bd6331d7d02d0c09bc910a1075ba8165b56df9";
2463 };
2464 };
2465 "brace-expansion-1.1.8" = {
2466 name = "brace-expansion";
2467 packageName = "brace-expansion";
2468 version = "1.1.8";
2469 src = fetchurl {
2470 url = "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz";
2471 sha1 = "c07b211c7c952ec1f8efd51a77ef0d1d3990a292";
2472 };
2473 };
2474 "balanced-match-1.0.0" = {
2475 name = "balanced-match";
2476 packageName = "balanced-match";
2477 version = "1.0.0";
2478 src = fetchurl {
2479 url = "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz";
2480 sha1 = "89b4d199ab2bee49de164ea02b89ce462d71b767";
2481 };
2482 };
2483 "concat-map-0.0.1" = {
2484 name = "concat-map";
2485 packageName = "concat-map";
2486 version = "0.0.1";
2487 src = fetchurl {
2488 url = "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz";
2489 sha1 = "d8a96bd77fd68df7793a73036a3ba0d5405d477b";
2490 };
2491 };
2492 "date-now-0.1.4" = {
2493 name = "date-now";
2494 packageName = "date-now";
2495 version = "0.1.4";
2496 src = fetchurl {
2497 url = "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz";
2498 sha1 = "eaf439fd4d4848ad74e5cc7dbef200672b9e345b";
2499 };
2500 };
2501 "domhandler-2.3.0" = {
2502 name = "domhandler";
2503 packageName = "domhandler";
2504 version = "2.3.0";
2505 src = fetchurl {
2506 url = "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz";
2507 sha1 = "2de59a0822d5027fabff6f032c2b25a2a8abe738";
2508 };
2509 };
2510 "domutils-1.5.1" = {
2511 name = "domutils";
2512 packageName = "domutils";
2513 version = "1.5.1";
2514 src = fetchurl {
2515 url = "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz";
2516 sha1 = "dcd8488a26f563d61079e48c9f7b7e32373682cf";
2517 };
2518 };
2519 "domelementtype-1.3.0" = {
2520 name = "domelementtype";
2521 packageName = "domelementtype";
2522 version = "1.3.0";
2523 src = fetchurl {
2524 url = "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz";
2525 sha1 = "b17aed82e8ab59e52dd9c19b1756e0fc187204c2";
2526 };
2220 };
2527 };
2221 };
2528 "readable-stream-1.1.14" = {
2222 "readable-stream-1.1.14" = {
2529 name = "readable-stream";
2223 name = "readable-stream";
2530 packageName = "readable-stream";
2224 packageName = "readable-stream";
2531 version = "1.1.14";
2225 version = "1.1.14";
2532 src = fetchurl {
2226 src = fetchurl {
2533 url = "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz";
2227 url = "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz";
2534 sha1 = "7cf4c54ef648e3813084c636dd2079e166c081d9";
2228 sha1 = "7cf4c54ef648e3813084c636dd2079e166c081d9";
2535 };
2229 };
2536 };
2230 };
2537 "entities-1.0.0" = {
2231 "readable-stream-2.3.6" = {
2538 name = "entities";
2232 name = "readable-stream";
2539 packageName = "entities";
2233 packageName = "readable-stream";
2540 version = "1.0.0";
2234 version = "2.3.6";
2541 src = fetchurl {
2235 src = fetchurl {
2542 url = "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz";
2236 url = "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz";
2543 sha1 = "b2987aa3821347fcde642b24fdfc9e4fb712bf26";
2237 sha512 = "tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==";
2544 };
2238 };
2545 };
2239 };
2546 "dom-serializer-0.1.0" = {
2240 "reduce-flatten-1.0.1" = {
2547 name = "dom-serializer";
2241 name = "reduce-flatten";
2548 packageName = "dom-serializer";
2242 packageName = "reduce-flatten";
2549 version = "0.1.0";
2243 version = "1.0.1";
2550 src = fetchurl {
2244 src = fetchurl {
2551 url = "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz";
2245 url = "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-1.0.1.tgz";
2552 sha1 = "073c697546ce0780ce23be4a28e293e40bc30c82";
2246 sha1 = "258c78efd153ddf93cb561237f61184f3696e327";
2553 };
2247 };
2554 };
2248 };
2555 "domelementtype-1.1.3" = {
2249 "regenerator-runtime-0.10.5" = {
2556 name = "domelementtype";
2250 name = "regenerator-runtime";
2557 packageName = "domelementtype";
2251 packageName = "regenerator-runtime";
2558 version = "1.1.3";
2252 version = "0.10.5";
2559 src = fetchurl {
2253 src = fetchurl {
2560 url = "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz";
2254 url = "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz";
2561 sha1 = "bd28773e2642881aec51544924299c5cd822185b";
2255 sha1 = "336c3efc1220adcedda2c9fab67b5a7955a33658";
2562 };
2256 };
2563 };
2257 };
2564 "entities-1.1.1" = {
2258 "regenerator-runtime-0.11.1" = {
2565 name = "entities";
2259 name = "regenerator-runtime";
2566 packageName = "entities";
2260 packageName = "regenerator-runtime";
2567 version = "1.1.1";
2261 version = "0.11.1";
2568 src = fetchurl {
2262 src = fetchurl {
2569 url = "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz";
2263 url = "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz";
2570 sha1 = "6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0";
2264 sha512 = "MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==";
2571 };
2265 };
2572 };
2266 };
2573 "string_decoder-0.10.31" = {
2267 "request-2.81.0" = {
2574 name = "string_decoder";
2268 name = "request";
2575 packageName = "string_decoder";
2269 packageName = "request";
2576 version = "0.10.31";
2270 version = "2.81.0";
2577 src = fetchurl {
2271 src = fetchurl {
2578 url = "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz";
2272 url = "https://registry.npmjs.org/request/-/request-2.81.0.tgz";
2579 sha1 = "62e203bc41766c6c28c9fc84301dab1c5310fa94";
2273 sha1 = "c6928946a0e06c5f8d6f8a9333469ffda46298a0";
2580 };
2274 };
2581 };
2275 };
2582 "good-listener-1.2.2" = {
2276 "request-progress-2.0.1" = {
2583 name = "good-listener";
2277 name = "request-progress";
2584 packageName = "good-listener";
2278 packageName = "request-progress";
2585 version = "1.2.2";
2279 version = "2.0.1";
2586 src = fetchurl {
2280 src = fetchurl {
2587 url = "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz";
2281 url = "https://registry.npmjs.org/request-progress/-/request-progress-2.0.1.tgz";
2588 sha1 = "d53b30cdf9313dffb7dc9a0d477096aa6d145c50";
2282 sha1 = "5d36bb57961c673aa5b788dbc8141fdf23b44e08";
2283 };
2284 };
2285 "retry-0.10.1" = {
2286 name = "retry";
2287 packageName = "retry";
2288 version = "0.10.1";
2289 src = fetchurl {
2290 url = "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz";
2291 sha1 = "e76388d217992c252750241d3d3956fed98d8ff4";
2292 };
2293 };
2294 "rimraf-2.2.8" = {
2295 name = "rimraf";
2296 packageName = "rimraf";
2297 version = "2.2.8";
2298 src = fetchurl {
2299 url = "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz";
2300 sha1 = "e439be2aaee327321952730f99a8929e4fc50582";
2301 };
2302 };
2303 "safe-buffer-5.1.2" = {
2304 name = "safe-buffer";
2305 packageName = "safe-buffer";
2306 version = "5.1.2";
2307 src = fetchurl {
2308 url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz";
2309 sha512 = "Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==";
2310 };
2311 };
2312 "safer-buffer-2.1.2" = {
2313 name = "safer-buffer";
2314 packageName = "safer-buffer";
2315 version = "2.1.2";
2316 src = fetchurl {
2317 url = "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz";
2318 sha512 = "YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==";
2589 };
2319 };
2590 };
2320 };
2591 "select-1.1.2" = {
2321 "select-1.1.2" = {
2592 name = "select";
2322 name = "select";
2593 packageName = "select";
2323 packageName = "select";
2594 version = "1.1.2";
2324 version = "1.1.2";
2595 src = fetchurl {
2325 src = fetchurl {
2596 url = "https://registry.npmjs.org/select/-/select-1.1.2.tgz";
2326 url = "https://registry.npmjs.org/select/-/select-1.1.2.tgz";
2597 sha1 = "0e7350acdec80b1108528786ec1d4418d11b396d";
2327 sha1 = "0e7350acdec80b1108528786ec1d4418d11b396d";
2598 };
2328 };
2599 };
2329 };
2330 "semver-4.3.6" = {
2331 name = "semver";
2332 packageName = "semver";
2333 version = "4.3.6";
2334 src = fetchurl {
2335 url = "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz";
2336 sha1 = "300bc6e0e86374f7ba61068b5b1ecd57fc6532da";
2337 };
2338 };
2339 "semver-5.5.0" = {
2340 name = "semver";
2341 packageName = "semver";
2342 version = "5.5.0";
2343 src = fetchurl {
2344 url = "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz";
2345 sha512 = "4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==";
2346 };
2347 };
2348 "set-blocking-2.0.0" = {
2349 name = "set-blocking";
2350 packageName = "set-blocking";
2351 version = "2.0.0";
2352 src = fetchurl {
2353 url = "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz";
2354 sha1 = "045f9782d011ae9a6803ddd382b24392b3d890f7";
2355 };
2356 };
2357 "shelljs-0.3.0" = {
2358 name = "shelljs";
2359 packageName = "shelljs";
2360 version = "0.3.0";
2361 src = fetchurl {
2362 url = "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz";
2363 sha1 = "3596e6307a781544f591f37da618360f31db57b1";
2364 };
2365 };
2366 "sigmund-1.0.1" = {
2367 name = "sigmund";
2368 packageName = "sigmund";
2369 version = "1.0.1";
2370 src = fetchurl {
2371 url = "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz";
2372 sha1 = "3ff21f198cad2175f9f3b781853fd94d0d19b590";
2373 };
2374 };
2375 "signal-exit-3.0.2" = {
2376 name = "signal-exit";
2377 packageName = "signal-exit";
2378 version = "3.0.2";
2379 src = fetchurl {
2380 url = "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz";
2381 sha1 = "b5fdc08f1287ea1178628e415e25132b73646c6d";
2382 };
2383 };
2384 "slasp-0.0.4" = {
2385 name = "slasp";
2386 packageName = "slasp";
2387 version = "0.0.4";
2388 src = fetchurl {
2389 url = "https://registry.npmjs.org/slasp/-/slasp-0.0.4.tgz";
2390 sha1 = "9adc26ee729a0f95095851a5489f87a5258d57a9";
2391 };
2392 };
2393 "slide-1.1.6" = {
2394 name = "slide";
2395 packageName = "slide";
2396 version = "1.1.6";
2397 src = fetchurl {
2398 url = "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz";
2399 sha1 = "56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707";
2400 };
2401 };
2402 "sntp-1.0.9" = {
2403 name = "sntp";
2404 packageName = "sntp";
2405 version = "1.0.9";
2406 src = fetchurl {
2407 url = "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz";
2408 sha1 = "6541184cc90aeea6c6e7b35e2659082443c66198";
2409 };
2410 };
2411 "source-map-0.3.0" = {
2412 name = "source-map";
2413 packageName = "source-map";
2414 version = "0.3.0";
2415 src = fetchurl {
2416 url = "https://registry.npmjs.org/source-map/-/source-map-0.3.0.tgz";
2417 sha1 = "8586fb9a5a005e5b501e21cd18b6f21b457ad1f9";
2418 };
2419 };
2420 "source-map-0.5.7" = {
2421 name = "source-map";
2422 packageName = "source-map";
2423 version = "0.5.7";
2424 src = fetchurl {
2425 url = "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz";
2426 sha1 = "8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc";
2427 };
2428 };
2429 "source-map-0.6.1" = {
2430 name = "source-map";
2431 packageName = "source-map";
2432 version = "0.6.1";
2433 src = fetchurl {
2434 url = "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz";
2435 sha512 = "UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==";
2436 };
2437 };
2438 "spdx-correct-3.0.0" = {
2439 name = "spdx-correct";
2440 packageName = "spdx-correct";
2441 version = "3.0.0";
2442 src = fetchurl {
2443 url = "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz";
2444 sha512 = "N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==";
2445 };
2446 };
2447 "spdx-exceptions-2.1.0" = {
2448 name = "spdx-exceptions";
2449 packageName = "spdx-exceptions";
2450 version = "2.1.0";
2451 src = fetchurl {
2452 url = "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz";
2453 sha512 = "4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==";
2454 };
2455 };
2456 "spdx-expression-parse-3.0.0" = {
2457 name = "spdx-expression-parse";
2458 packageName = "spdx-expression-parse";
2459 version = "3.0.0";
2460 src = fetchurl {
2461 url = "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz";
2462 sha512 = "Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==";
2463 };
2464 };
2465 "spdx-license-ids-3.0.0" = {
2466 name = "spdx-license-ids";
2467 packageName = "spdx-license-ids";
2468 version = "3.0.0";
2469 src = fetchurl {
2470 url = "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz";
2471 sha512 = "2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==";
2472 };
2473 };
2474 "split-1.0.1" = {
2475 name = "split";
2476 packageName = "split";
2477 version = "1.0.1";
2478 src = fetchurl {
2479 url = "https://registry.npmjs.org/split/-/split-1.0.1.tgz";
2480 sha512 = "mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==";
2481 };
2482 };
2483 "sshpk-1.14.2" = {
2484 name = "sshpk";
2485 packageName = "sshpk";
2486 version = "1.14.2";
2487 src = fetchurl {
2488 url = "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz";
2489 sha1 = "c6fc61648a3d9c4e764fd3fcdf4ea105e492ba98";
2490 };
2491 };
2492 "ssri-5.3.0" = {
2493 name = "ssri";
2494 packageName = "ssri";
2495 version = "5.3.0";
2496 src = fetchurl {
2497 url = "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz";
2498 sha512 = "XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==";
2499 };
2500 };
2501 "stack-trace-0.0.10" = {
2502 name = "stack-trace";
2503 packageName = "stack-trace";
2504 version = "0.0.10";
2505 src = fetchurl {
2506 url = "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz";
2507 sha1 = "547c70b347e8d32b4e108ea1a2a159e5fdde19c0";
2508 };
2509 };
2510 "string-width-1.0.2" = {
2511 name = "string-width";
2512 packageName = "string-width";
2513 version = "1.0.2";
2514 src = fetchurl {
2515 url = "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz";
2516 sha1 = "118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3";
2517 };
2518 };
2519 "string_decoder-0.10.31" = {
2520 name = "string_decoder";
2521 packageName = "string_decoder";
2522 version = "0.10.31";
2523 src = fetchurl {
2524 url = "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz";
2525 sha1 = "62e203bc41766c6c28c9fc84301dab1c5310fa94";
2526 };
2527 };
2528 "string_decoder-1.1.1" = {
2529 name = "string_decoder";
2530 packageName = "string_decoder";
2531 version = "1.1.1";
2532 src = fetchurl {
2533 url = "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz";
2534 sha512 = "n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==";
2535 };
2536 };
2537 "stringstream-0.0.6" = {
2538 name = "stringstream";
2539 packageName = "stringstream";
2540 version = "0.0.6";
2541 src = fetchurl {
2542 url = "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz";
2543 sha512 = "87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==";
2544 };
2545 };
2546 "strip-ansi-0.3.0" = {
2547 name = "strip-ansi";
2548 packageName = "strip-ansi";
2549 version = "0.3.0";
2550 src = fetchurl {
2551 url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz";
2552 sha1 = "25f48ea22ca79187f3174a4db8759347bb126220";
2553 };
2554 };
2555 "strip-ansi-3.0.1" = {
2556 name = "strip-ansi";
2557 packageName = "strip-ansi";
2558 version = "3.0.1";
2559 src = fetchurl {
2560 url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz";
2561 sha1 = "6a385fb8853d952d5ff05d0e8aaf94278dc63dcf";
2562 };
2563 };
2564 "strip-json-comments-1.0.4" = {
2565 name = "strip-json-comments";
2566 packageName = "strip-json-comments";
2567 version = "1.0.4";
2568 src = fetchurl {
2569 url = "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz";
2570 sha1 = "1e15fbcac97d3ee99bf2d73b4c656b082bbafb91";
2571 };
2572 };
2573 "supports-color-0.2.0" = {
2574 name = "supports-color";
2575 packageName = "supports-color";
2576 version = "0.2.0";
2577 src = fetchurl {
2578 url = "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz";
2579 sha1 = "d92de2694eb3f67323973d7ae3d8b55b4c22190a";
2580 };
2581 };
2582 "supports-color-2.0.0" = {
2583 name = "supports-color";
2584 packageName = "supports-color";
2585 version = "2.0.0";
2586 src = fetchurl {
2587 url = "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz";
2588 sha1 = "535d045ce6b6363fa40117084629995e9df324c7";
2589 };
2590 };
2591 "table-layout-0.3.0" = {
2592 name = "table-layout";
2593 packageName = "table-layout";
2594 version = "0.3.0";
2595 src = fetchurl {
2596 url = "https://registry.npmjs.org/table-layout/-/table-layout-0.3.0.tgz";
2597 sha1 = "6ee20dc483db371b3e5c87f704ed2f7c799d2c9a";
2598 };
2599 };
2600 "tar-3.1.15" = {
2601 name = "tar";
2602 packageName = "tar";
2603 version = "3.1.15";
2604 src = fetchurl {
2605 url = "https://registry.npmjs.org/tar/-/tar-3.1.15.tgz";
2606 sha512 = "pQNFsg+Wb6VXsrIPUnuQwrHR4wD5ASBR0jRyiT4/AALFA2Nl+CjhkDX5fTmIwCuULRtyQR3Dae2BBnP2EFHscw==";
2607 };
2608 };
2609 "temp-0.8.3" = {
2610 name = "temp";
2611 packageName = "temp";
2612 version = "0.8.3";
2613 src = fetchurl {
2614 url = "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz";
2615 sha1 = "e0c6bc4d26b903124410e4fed81103014dfc1f59";
2616 };
2617 };
2618 "test-value-2.1.0" = {
2619 name = "test-value";
2620 packageName = "test-value";
2621 version = "2.1.0";
2622 src = fetchurl {
2623 url = "https://registry.npmjs.org/test-value/-/test-value-2.1.0.tgz";
2624 sha1 = "11da6ff670f3471a73b625ca4f3fdcf7bb748291";
2625 };
2626 };
2627 "throttleit-1.0.0" = {
2628 name = "throttleit";
2629 packageName = "throttleit";
2630 version = "1.0.0";
2631 src = fetchurl {
2632 url = "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz";
2633 sha1 = "9e785836daf46743145a5984b6268d828528ac6c";
2634 };
2635 };
2636 "through-2.3.8" = {
2637 name = "through";
2638 packageName = "through";
2639 version = "2.3.8";
2640 src = fetchurl {
2641 url = "https://registry.npmjs.org/through/-/through-2.3.8.tgz";
2642 sha1 = "0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5";
2643 };
2644 };
2600 "tiny-emitter-2.0.2" = {
2645 "tiny-emitter-2.0.2" = {
2601 name = "tiny-emitter";
2646 name = "tiny-emitter";
2602 packageName = "tiny-emitter";
2647 packageName = "tiny-emitter";
2603 version = "2.0.2";
2648 version = "2.0.2";
2604 src = fetchurl {
2649 src = fetchurl {
2605 url = "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.0.2.tgz";
2650 url = "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.0.2.tgz";
2606 sha1 = "82d27468aca5ade8e5fd1e6d22b57dd43ebdfb7c";
2651 sha512 = "2NM0auVBGft5tee/OxP4PI3d8WItkDM+fPnaRAVo6xTDI2knbz9eC5ArWGqtGlYqiH3RU5yMpdyTTO7MguC4ow==";
2607 };
2652 };
2608 };
2653 };
2609 "delegate-3.1.3" = {
2654 "tiny-lr-fork-0.0.5" = {
2610 name = "delegate";
2655 name = "tiny-lr-fork";
2611 packageName = "delegate";
2656 packageName = "tiny-lr-fork";
2612 version = "3.1.3";
2657 version = "0.0.5";
2613 src = fetchurl {
2658 src = fetchurl {
2614 url = "https://registry.npmjs.org/delegate/-/delegate-3.1.3.tgz";
2659 url = "https://registry.npmjs.org/tiny-lr-fork/-/tiny-lr-fork-0.0.5.tgz";
2615 sha1 = "9a8251a777d7025faa55737bc3b071742127a9fd";
2660 sha1 = "1e99e1e2a8469b736ab97d97eefa98c71f76ed0a";
2661 };
2662 };
2663 "tough-cookie-2.3.4" = {
2664 name = "tough-cookie";
2665 packageName = "tough-cookie";
2666 version = "2.3.4";
2667 src = fetchurl {
2668 url = "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz";
2669 sha512 = "TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==";
2670 };
2671 };
2672 "tunnel-agent-0.6.0" = {
2673 name = "tunnel-agent";
2674 packageName = "tunnel-agent";
2675 version = "0.6.0";
2676 src = fetchurl {
2677 url = "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz";
2678 sha1 = "27a5dea06b36b04a0a9966774b290868f0fc40fd";
2679 };
2680 };
2681 "tweetnacl-0.14.5" = {
2682 name = "tweetnacl";
2683 packageName = "tweetnacl";
2684 version = "0.14.5";
2685 src = fetchurl {
2686 url = "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz";
2687 sha1 = "5ae68177f192d4456269d108afa93ff8743f4f64";
2688 };
2689 };
2690 "type-check-0.3.2" = {
2691 name = "type-check";
2692 packageName = "type-check";
2693 version = "0.3.2";
2694 src = fetchurl {
2695 url = "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz";
2696 sha1 = "5884cab512cf1d355e3fb784f30804b2b520db72";
2697 };
2698 };
2699 "typedarray-0.0.6" = {
2700 name = "typedarray";
2701 packageName = "typedarray";
2702 version = "0.0.6";
2703 src = fetchurl {
2704 url = "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz";
2705 sha1 = "867ac74e3864187b1d3d47d996a78ec5c8830777";
2706 };
2707 };
2708 "typical-2.6.1" = {
2709 name = "typical";
2710 packageName = "typical";
2711 version = "2.6.1";
2712 src = fetchurl {
2713 url = "https://registry.npmjs.org/typical/-/typical-2.6.1.tgz";
2714 sha1 = "5c080e5d661cbbe38259d2e70a3c7253e873881d";
2715 };
2716 };
2717 "uid-number-0.0.5" = {
2718 name = "uid-number";
2719 packageName = "uid-number";
2720 version = "0.0.5";
2721 src = fetchurl {
2722 url = "https://registry.npmjs.org/uid-number/-/uid-number-0.0.5.tgz";
2723 sha1 = "5a3db23ef5dbd55b81fce0ec9a2ac6fccdebb81e";
2724 };
2725 };
2726 "underscore-1.7.0" = {
2727 name = "underscore";
2728 packageName = "underscore";
2729 version = "1.7.0";
2730 src = fetchurl {
2731 url = "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz";
2732 sha1 = "6bbaf0877500d36be34ecaa584e0db9fef035209";
2733 };
2734 };
2735 "underscore.string-2.2.1" = {
2736 name = "underscore.string";
2737 packageName = "underscore.string";
2738 version = "2.2.1";
2739 src = fetchurl {
2740 url = "https://registry.npmjs.org/underscore.string/-/underscore.string-2.2.1.tgz";
2741 sha1 = "d7c0fa2af5d5a1a67f4253daee98132e733f0f19";
2742 };
2743 };
2744 "underscore.string-2.3.3" = {
2745 name = "underscore.string";
2746 packageName = "underscore.string";
2747 version = "2.3.3";
2748 src = fetchurl {
2749 url = "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz";
2750 sha1 = "71c08bf6b428b1133f37e78fa3a21c82f7329b0d";
2751 };
2752 };
2753 "underscore.string-2.4.0" = {
2754 name = "underscore.string";
2755 packageName = "underscore.string";
2756 version = "2.4.0";
2757 src = fetchurl {
2758 url = "https://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz";
2759 sha1 = "8cdd8fbac4e2d2ea1e7e2e8097c42f442280f85b";
2760 };
2761 };
2762 "unicode-5.2.0-0.7.5" = {
2763 name = "unicode-5.2.0";
2764 packageName = "unicode-5.2.0";
2765 version = "0.7.5";
2766 src = fetchurl {
2767 url = "https://registry.npmjs.org/unicode-5.2.0/-/unicode-5.2.0-0.7.5.tgz";
2768 sha512 = "KVGLW1Bri30x00yv4HNM8kBxoqFXr0Sbo55735nvrlsx4PYBZol3UtoWgO492fSwmsetzPEZzy73rbU8OGXJcA==";
2769 };
2770 };
2771 "util-deprecate-1.0.2" = {
2772 name = "util-deprecate";
2773 packageName = "util-deprecate";
2774 version = "1.0.2";
2775 src = fetchurl {
2776 url = "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz";
2777 sha1 = "450d4dc9fa70de732762fbd2d4a28981419a0ccf";
2778 };
2779 };
2780 "uuid-3.3.2" = {
2781 name = "uuid";
2782 packageName = "uuid";
2783 version = "3.3.2";
2784 src = fetchurl {
2785 url = "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz";
2786 sha512 = "yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==";
2787 };
2788 };
2789 "validate-npm-package-license-3.0.3" = {
2790 name = "validate-npm-package-license";
2791 packageName = "validate-npm-package-license";
2792 version = "3.0.3";
2793 src = fetchurl {
2794 url = "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz";
2795 sha512 = "63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==";
2796 };
2797 };
2798 "validate-npm-package-name-3.0.0" = {
2799 name = "validate-npm-package-name";
2800 packageName = "validate-npm-package-name";
2801 version = "3.0.0";
2802 src = fetchurl {
2803 url = "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz";
2804 sha1 = "5fa912d81eb7d0c74afc140de7317f0ca7df437e";
2805 };
2806 };
2807 "verror-1.10.0" = {
2808 name = "verror";
2809 packageName = "verror";
2810 version = "1.10.0";
2811 src = fetchurl {
2812 url = "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz";
2813 sha1 = "3a105ca17053af55d6e270c1f8288682e18da400";
2814 };
2815 };
2816 "vulcanize-1.16.0" = {
2817 name = "vulcanize";
2818 packageName = "vulcanize";
2819 version = "1.16.0";
2820 src = fetchurl {
2821 url = "https://registry.npmjs.org/vulcanize/-/vulcanize-1.16.0.tgz";
2822 sha512 = "TYlFljSc896b5+0FmMiw0JAMrHNBiHx0IAFC/dQR3Dxdb9Nx43ohm6wMWTlPXQn4sk/0WkqfgoAA6SLxyvPCLQ==";
2823 };
2824 };
2825 "walk-2.3.14" = {
2826 name = "walk";
2827 packageName = "walk";
2828 version = "2.3.14";
2829 src = fetchurl {
2830 url = "https://registry.npmjs.org/walk/-/walk-2.3.14.tgz";
2831 sha512 = "5skcWAUmySj6hkBdH6B6+3ddMjVQYH5Qy9QGbPmN8kVmLteXk+yVXg+yfk1nbX30EYakahLrr8iPcCxJQSCBeg==";
2832 };
2833 };
2834 "which-1.0.9" = {
2835 name = "which";
2836 packageName = "which";
2837 version = "1.0.9";
2838 src = fetchurl {
2839 url = "https://registry.npmjs.org/which/-/which-1.0.9.tgz";
2840 sha1 = "460c1da0f810103d0321a9b633af9e575e64486f";
2841 };
2842 };
2843 "which-1.3.1" = {
2844 name = "which";
2845 packageName = "which";
2846 version = "1.3.1";
2847 src = fetchurl {
2848 url = "https://registry.npmjs.org/which/-/which-1.3.1.tgz";
2849 sha512 = "HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==";
2850 };
2851 };
2852 "wide-align-1.1.3" = {
2853 name = "wide-align";
2854 packageName = "wide-align";
2855 version = "1.1.3";
2856 src = fetchurl {
2857 url = "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz";
2858 sha512 = "QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==";
2859 };
2860 };
2861 "winston-2.4.3" = {
2862 name = "winston";
2863 packageName = "winston";
2864 version = "2.4.3";
2865 src = fetchurl {
2866 url = "https://registry.npmjs.org/winston/-/winston-2.4.3.tgz";
2867 sha512 = "GYKuysPz2pxYAVJD2NPsDLP5Z79SDEzPm9/j4tCjkF/n89iBNGBMJcR+dMUqxgPNgoSs6fVygPi+Vl2oxIpBuw==";
2868 };
2869 };
2870 "wordwrap-1.0.0" = {
2871 name = "wordwrap";
2872 packageName = "wordwrap";
2873 version = "1.0.0";
2874 src = fetchurl {
2875 url = "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz";
2876 sha1 = "27584810891456a4171c8d0226441ade90cbcaeb";
2877 };
2878 };
2879 "wordwrapjs-2.0.0" = {
2880 name = "wordwrapjs";
2881 packageName = "wordwrapjs";
2882 version = "2.0.0";
2883 src = fetchurl {
2884 url = "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-2.0.0.tgz";
2885 sha1 = "ab55f695e6118da93858fdd70c053d1c5e01ac20";
2886 };
2887 };
2888 "wrappy-1.0.2" = {
2889 name = "wrappy";
2890 packageName = "wrappy";
2891 version = "1.0.2";
2892 src = fetchurl {
2893 url = "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz";
2894 sha1 = "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f";
2895 };
2896 };
2897 "yallist-3.0.2" = {
2898 name = "yallist";
2899 packageName = "yallist";
2900 version = "3.0.2";
2901 src = fetchurl {
2902 url = "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz";
2903 sha1 = "8452b4bb7e83c7c188d8041c1a837c773d6d8bb9";
2904 };
2905 };
2906 "yauzl-2.4.1" = {
2907 name = "yauzl";
2908 packageName = "yauzl";
2909 version = "2.4.1";
2910 src = fetchurl {
2911 url = "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz";
2912 sha1 = "9528f442dab1b2284e58b4379bb194e22e0c4005";
2616 };
2913 };
2617 };
2914 };
2618 };
2915 };
2619 args = {
2916 args = {
2620 name = "rhodecode-enterprise";
2917 name = "rhodecode-enterprise";
2621 packageName = "rhodecode-enterprise";
2918 packageName = "rhodecode-enterprise";
2622 version = "0.0.1";
2919 version = "1.0.0";
2623 src = ./.;
2920 src = ./..;
2624 dependencies = [
2921 dependencies = [
2625 sources."grunt-0.4.5"
2922 sources."@types/clone-0.1.30"
2626 sources."grunt-contrib-copy-1.0.0"
2923 sources."@types/node-4.2.23"
2627 (sources."grunt-contrib-concat-0.5.1" // {
2924 (sources."@types/parse5-0.0.31" // {
2628 dependencies = [
2925 dependencies = [
2629 sources."chalk-0.5.1"
2926 sources."@types/node-6.0.114"
2630 sources."ansi-styles-1.1.0"
2927 ];
2631 sources."has-ansi-0.1.0"
2928 })
2632 sources."strip-ansi-0.3.0"
2929 sources."abbrev-1.1.1"
2633 sources."supports-color-0.2.0"
2930 sources."acorn-3.3.0"
2634 sources."ansi-regex-0.2.1"
2931 sources."acorn-jsx-3.0.1"
2932 sources."ajv-4.11.8"
2933 sources."amdefine-1.0.1"
2934 sources."ansi-escape-sequences-3.0.0"
2935 sources."ansi-regex-2.1.1"
2936 sources."ansi-styles-2.2.1"
2937 sources."appenlight-client-git+https://git@github.com/AppEnlight/appenlight-client-js.git#0.5.1"
2938 sources."aproba-1.2.0"
2939 sources."are-we-there-yet-1.1.5"
2940 (sources."argparse-0.1.16" // {
2941 dependencies = [
2942 sources."underscore.string-2.4.0"
2635 ];
2943 ];
2636 })
2944 })
2637 sources."grunt-contrib-jshint-0.12.0"
2945 sources."array-back-1.0.4"
2638 (sources."grunt-contrib-less-1.4.1" // {
2946 sources."asap-2.0.6"
2947 sources."asn1-0.2.3"
2948 sources."assert-plus-0.2.0"
2949 sources."async-0.1.22"
2950 sources."asynckit-0.4.0"
2951 sources."aws-sign2-0.6.0"
2952 sources."aws4-1.7.0"
2953 sources."babel-polyfill-6.26.0"
2954 (sources."babel-runtime-6.26.0" // {
2639 dependencies = [
2955 dependencies = [
2640 sources."async-2.5.0"
2956 sources."regenerator-runtime-0.11.1"
2641 sources."lodash-4.17.4"
2642 ];
2957 ];
2643 })
2958 })
2644 (sources."grunt-contrib-watch-0.6.1" // {
2959 sources."balanced-match-1.0.0"
2960 sources."base64-js-1.2.3"
2961 sources."bcrypt-pbkdf-1.0.2"
2962 sources."boom-2.10.1"
2963 sources."bower-1.8.4"
2964 sources."brace-expansion-1.1.11"
2965 sources."buffer-from-1.1.1"
2966 sources."builtin-modules-1.1.1"
2967 sources."builtins-1.0.3"
2968 sources."caseless-0.12.0"
2969 sources."chalk-1.1.3"
2970 (sources."cli-1.0.1" // {
2645 dependencies = [
2971 dependencies = [
2646 sources."lodash-2.4.2"
2972 sources."glob-7.1.2"
2647 sources."async-0.2.10"
2973 sources."minimatch-3.0.4"
2648 ];
2974 ];
2649 })
2975 })
2976 sources."clipboard-2.0.1"
2977 sources."clone-1.0.4"
2978 sources."co-4.6.0"
2979 sources."code-point-at-1.1.0"
2980 sources."coffee-script-1.3.3"
2981 sources."colors-0.6.2"
2982 sources."combined-stream-1.0.6"
2983 sources."command-line-args-3.0.5"
2984 sources."command-line-usage-3.0.8"
2985 sources."concat-map-0.0.1"
2986 sources."concat-stream-1.6.2"
2987 sources."config-chain-1.1.11"
2988 sources."console-browserify-1.1.0"
2989 sources."console-control-strings-1.1.0"
2990 sources."core-js-2.5.7"
2991 sources."core-util-is-1.0.2"
2650 sources."crisper-2.1.1"
2992 sources."crisper-2.1.1"
2651 (sources."vulcanize-1.16.0" // {
2993 sources."cryptiles-2.0.5"
2994 sources."cycle-1.0.3"
2995 (sources."dashdash-1.14.1" // {
2652 dependencies = [
2996 dependencies = [
2653 sources."nopt-3.0.6"
2997 sources."assert-plus-1.0.0"
2654 ];
2998 ];
2655 })
2999 })
2656 sources."grunt-crisper-1.0.1"
3000 sources."date-now-0.1.4"
2657 (sources."grunt-vulcanize-1.0.0" // {
3001 sources."dateformat-1.0.2-1.2.3"
3002 sources."debug-0.7.4"
3003 sources."deep-extend-0.4.2"
3004 sources."deep-is-0.1.3"
3005 sources."delayed-stream-1.0.0"
3006 sources."delegate-3.2.0"
3007 sources."delegates-1.0.0"
3008 sources."doctrine-0.7.2"
3009 (sources."dom-serializer-0.1.0" // {
2658 dependencies = [
3010 dependencies = [
2659 sources."crisper-1.2.0"
3011 sources."domelementtype-1.1.3"
2660 sources."nopt-3.0.6"
3012 sources."entities-1.1.1"
2661 ];
3013 ];
2662 })
3014 })
2663 sources."node2nix-1.3.0"
3015 sources."dom5-1.3.6"
2664 (sources."jshint-2.9.5" // {
3016 sources."domelementtype-1.3.0"
3017 sources."domhandler-2.3.0"
3018 sources."domutils-1.5.1"
3019 sources."ecc-jsbn-0.1.2"
3020 sources."entities-1.0.0"
3021 sources."errno-0.1.7"
3022 sources."es6-promise-2.3.0"
3023 sources."escape-string-regexp-1.0.5"
3024 (sources."escodegen-1.11.0" // {
2665 dependencies = [
3025 dependencies = [
2666 sources."minimatch-3.0.4"
3026 sources."esprima-3.1.3"
2667 sources."lodash-3.7.0"
3027 sources."estraverse-4.2.0"
3028 sources."esutils-2.0.2"
3029 sources."source-map-0.6.1"
3030 ];
3031 })
3032 (sources."espree-3.5.4" // {
3033 dependencies = [
3034 sources."acorn-5.7.1"
2668 ];
3035 ];
2669 })
3036 })
2670 sources."bower-1.8.2"
3037 sources."esprima-1.0.4"
2671 sources."jquery-1.11.3"
3038 sources."estraverse-3.1.0"
3039 sources."esutils-1.1.6"
3040 sources."eventemitter2-0.4.14"
3041 sources."exit-0.1.2"
3042 sources."extend-3.0.2"
3043 (sources."extract-zip-1.6.7" // {
3044 dependencies = [
3045 sources."debug-2.6.9"
3046 ];
3047 })
3048 sources."extsprintf-1.3.0"
3049 sources."eyes-0.1.8"
3050 sources."fast-levenshtein-2.0.6"
2672 sources."favico.js-0.3.10"
3051 sources."favico.js-0.3.10"
2673 sources."clipboard-1.7.1"
3052 sources."faye-websocket-0.4.4"
2674 sources."moment-2.18.1"
3053 sources."fd-slicer-1.0.1"
2675 sources."mousetrap-1.6.1"
3054 sources."feature-detect-es6-1.5.0"
2676 sources."appenlight-client-git+https://git@github.com/AppEnlight/appenlight-client-js.git#0.5.1"
3055 sources."file-sync-cmp-0.1.1"
2677 sources."async-0.1.22"
3056 sources."find-replace-1.0.3"
2678 sources."coffee-script-1.3.3"
3057 sources."findit-2.0.0"
2679 sources."colors-0.6.2"
2680 sources."dateformat-1.0.2-1.2.3"
2681 sources."eventemitter2-0.4.14"
2682 (sources."findup-sync-0.1.3" // {
3058 (sources."findup-sync-0.1.3" // {
2683 dependencies = [
3059 dependencies = [
2684 sources."glob-3.2.11"
3060 sources."glob-3.2.11"
2685 sources."lodash-2.4.2"
3061 sources."lodash-2.4.2"
2686 sources."minimatch-0.3.0"
3062 sources."minimatch-0.3.0"
2687 ];
3063 ];
2688 })
3064 })
3065 sources."foreachasync-3.0.0"
3066 sources."forever-agent-0.6.1"
3067 sources."form-data-2.1.4"
3068 (sources."fs-extra-0.6.4" // {
3069 dependencies = [
3070 sources."mkdirp-0.3.5"
3071 ];
3072 })
3073 (sources."fs.extra-1.3.2" // {
3074 dependencies = [
3075 sources."mkdirp-0.3.5"
3076 ];
3077 })
3078 sources."fs.realpath-1.0.0"
3079 sources."gauge-2.7.4"
3080 sources."gaze-0.5.2"
3081 sources."getobject-0.1.0"
3082 (sources."getpass-0.1.7" // {
3083 dependencies = [
3084 sources."assert-plus-1.0.0"
3085 ];
3086 })
2689 (sources."glob-3.1.21" // {
3087 (sources."glob-3.1.21" // {
2690 dependencies = [
3088 dependencies = [
2691 sources."inherits-1.0.2"
3089 sources."inherits-1.0.2"
2692 ];
3090 ];
2693 })
3091 })
2694 sources."hooker-0.2.3"
3092 (sources."globule-0.1.0" // {
2695 sources."iconv-lite-0.2.11"
3093 dependencies = [
2696 sources."minimatch-0.2.14"
3094 sources."lodash-1.0.2"
2697 sources."nopt-1.0.10"
3095 ];
2698 sources."rimraf-2.2.8"
3096 })
2699 sources."lodash-0.9.2"
3097 sources."good-listener-1.2.2"
2700 sources."underscore.string-2.2.1"
3098 sources."graceful-fs-1.2.3"
2701 sources."which-1.0.9"
3099 sources."grunt-0.4.5"
2702 sources."js-yaml-2.0.5"
3100 (sources."grunt-contrib-concat-0.5.1" // {
2703 sources."exit-0.1.2"
3101 dependencies = [
2704 sources."getobject-0.1.0"
3102 sources."ansi-regex-0.2.1"
2705 sources."grunt-legacy-util-0.2.0"
3103 sources."ansi-styles-1.1.0"
3104 sources."chalk-0.5.1"
3105 sources."has-ansi-0.1.0"
3106 sources."strip-ansi-0.3.0"
3107 sources."supports-color-0.2.0"
3108 ];
3109 })
3110 sources."grunt-contrib-copy-1.0.0"
3111 sources."grunt-contrib-jshint-0.12.0"
3112 (sources."grunt-contrib-less-1.4.1" // {
3113 dependencies = [
3114 sources."async-2.6.1"
3115 sources."lodash-4.17.10"
3116 ];
3117 })
3118 (sources."grunt-contrib-watch-0.6.1" // {
3119 dependencies = [
3120 sources."async-0.2.10"
3121 sources."lodash-2.4.2"
3122 ];
3123 })
3124 sources."grunt-crisper-1.0.1"
2706 (sources."grunt-legacy-log-0.1.3" // {
3125 (sources."grunt-legacy-log-0.1.3" // {
2707 dependencies = [
3126 dependencies = [
2708 sources."lodash-2.4.2"
3127 sources."lodash-2.4.2"
2709 sources."underscore.string-2.3.3"
3128 sources."underscore.string-2.3.3"
2710 ];
3129 ];
2711 })
3130 })
2712 sources."inherits-2.0.3"
2713 sources."lru-cache-2.7.3"
2714 sources."sigmund-1.0.1"
2715 sources."graceful-fs-1.2.3"
2716 sources."abbrev-1.1.0"
2717 (sources."argparse-0.1.16" // {
2718 dependencies = [
2719 sources."underscore.string-2.4.0"
2720 ];
2721 })
2722 sources."esprima-1.0.4"
2723 sources."underscore-1.7.0"
2724 (sources."grunt-legacy-log-utils-0.1.1" // {
3131 (sources."grunt-legacy-log-utils-0.1.1" // {
2725 dependencies = [
3132 dependencies = [
2726 sources."lodash-2.4.2"
3133 sources."lodash-2.4.2"
2727 sources."underscore.string-2.3.3"
3134 sources."underscore.string-2.3.3"
2728 ];
3135 ];
2729 })
3136 })
2730 sources."chalk-1.1.3"
3137 sources."grunt-legacy-util-0.2.0"
2731 sources."file-sync-cmp-0.1.1"
3138 (sources."grunt-vulcanize-1.0.0" // {
2732 sources."ansi-styles-2.2.1"
3139 dependencies = [
2733 sources."escape-string-regexp-1.0.5"
3140 sources."crisper-1.2.0"
3141 sources."nopt-3.0.6"
3142 ];
3143 })
3144 sources."har-schema-1.0.5"
3145 sources."har-validator-4.2.1"
2734 sources."has-ansi-2.0.0"
3146 sources."has-ansi-2.0.0"
2735 sources."strip-ansi-3.0.1"
3147 sources."has-unicode-2.0.1"
2736 sources."supports-color-2.0.0"
3148 sources."hasha-2.2.0"
2737 sources."ansi-regex-2.1.1"
3149 sources."hawk-3.1.3"
2738 sources."source-map-0.3.0"
3150 sources."hoek-2.16.3"
2739 sources."amdefine-1.0.1"
3151 sources."hooker-0.2.3"
2740 (sources."less-2.7.2" // {
3152 sources."hosted-git-info-2.7.1"
3153 (sources."htmlparser2-3.8.3" // {
3154 dependencies = [
3155 sources."readable-stream-1.1.14"
3156 sources."string_decoder-0.10.31"
3157 ];
3158 })
3159 sources."http-signature-1.1.1"
3160 (sources."hydrolysis-1.25.0" // {
3161 dependencies = [
3162 sources."dom5-1.1.0"
3163 ];
3164 })
3165 sources."iconv-lite-0.2.11"
3166 sources."image-size-0.5.5"
3167 sources."inflight-1.0.6"
3168 sources."inherits-2.0.3"
3169 sources."ini-1.3.5"
3170 sources."is-builtin-module-1.0.0"
3171 sources."is-fullwidth-code-point-1.0.0"
3172 sources."is-stream-1.1.0"
3173 sources."is-typedarray-1.0.0"
3174 sources."isarray-0.0.1"
3175 sources."isexe-2.0.0"
3176 sources."isstream-0.1.2"
3177 sources."jquery-1.11.3"
3178 sources."js-yaml-2.0.5"
3179 sources."jsbn-0.1.1"
3180 (sources."jshint-2.9.6" // {
3181 dependencies = [
3182 sources."lodash-4.17.10"
3183 sources."minimatch-3.0.4"
3184 ];
3185 })
3186 sources."json-schema-0.2.3"
3187 sources."json-stable-stringify-1.0.1"
3188 sources."json-stringify-safe-5.0.1"
3189 sources."jsonfile-1.0.1"
3190 sources."jsonify-0.0.0"
3191 (sources."jsprim-1.4.1" // {
3192 dependencies = [
3193 sources."assert-plus-1.0.0"
3194 ];
3195 })
3196 sources."kew-0.7.0"
3197 (sources."klaw-1.3.1" // {
3198 dependencies = [
3199 sources."graceful-fs-4.1.11"
3200 ];
3201 })
3202 (sources."less-2.7.3" // {
2741 dependencies = [
3203 dependencies = [
2742 sources."graceful-fs-4.1.11"
3204 sources."graceful-fs-4.1.11"
2743 sources."source-map-0.5.7"
3205 sources."source-map-0.5.7"
2744 ];
3206 ];
2745 })
3207 })
2746 sources."errno-0.1.4"
3208 sources."levn-0.3.0"
2747 sources."image-size-0.5.5"
3209 sources."lodash-0.9.2"
2748 sources."mime-1.4.0"
3210 sources."lru-cache-2.7.3"
2749 sources."mkdirp-0.5.1"
3211 sources."mime-1.6.0"
2750 sources."promise-7.3.1"
3212 sources."mime-db-1.35.0"
2751 sources."request-2.82.0"
3213 sources."mime-types-2.1.19"
2752 sources."prr-0.0.0"
3214 sources."minimatch-0.2.14"
2753 sources."minimist-0.0.8"
3215 sources."minimist-0.0.8"
2754 sources."asap-2.0.6"
3216 sources."minipass-2.3.3"
2755 sources."aws-sign2-0.7.0"
3217 sources."minizlib-1.1.0"
2756 sources."aws4-1.6.0"
3218 sources."mkdirp-0.5.1"
2757 sources."caseless-0.12.0"
3219 sources."moment-2.22.2"
2758 sources."combined-stream-1.0.5"
3220 sources."mousetrap-1.6.2"
2759 sources."extend-3.0.1"
3221 sources."ms-2.0.0"
2760 sources."forever-agent-0.6.1"
3222 sources."ncp-0.4.2"
2761 sources."form-data-2.3.1"
3223 sources."nijs-0.0.25"
2762 sources."har-validator-5.0.3"
3224 sources."node2nix-1.6.0"
2763 sources."hawk-6.0.2"
3225 sources."nopt-1.0.10"
2764 sources."http-signature-1.2.0"
2765 sources."is-typedarray-1.0.0"
2766 sources."isstream-0.1.2"
2767 sources."json-stringify-safe-5.0.1"
2768 sources."mime-types-2.1.17"
2769 sources."oauth-sign-0.8.2"
2770 sources."performance-now-2.1.0"
2771 sources."qs-6.5.1"
2772 sources."safe-buffer-5.1.1"
2773 sources."stringstream-0.0.5"
2774 sources."tough-cookie-2.3.3"
2775 sources."tunnel-agent-0.6.0"
2776 sources."uuid-3.1.0"
2777 sources."delayed-stream-1.0.0"
2778 sources."asynckit-0.4.0"
2779 sources."ajv-5.2.2"
2780 sources."har-schema-2.0.0"
2781 sources."co-4.6.0"
2782 sources."fast-deep-equal-1.0.0"
2783 sources."json-schema-traverse-0.3.1"
2784 sources."json-stable-stringify-1.0.1"
2785 sources."jsonify-0.0.0"
2786 sources."hoek-4.2.0"
2787 sources."boom-4.3.1"
2788 (sources."cryptiles-3.1.2" // {
2789 dependencies = [
2790 sources."boom-5.2.0"
2791 ];
2792 })
2793 sources."sntp-2.0.2"
2794 sources."assert-plus-1.0.0"
2795 sources."jsprim-1.4.1"
2796 sources."sshpk-1.13.1"
2797 sources."extsprintf-1.3.0"
2798 sources."json-schema-0.2.3"
2799 sources."verror-1.10.0"
2800 sources."core-util-is-1.0.2"
2801 sources."asn1-0.2.3"
2802 sources."dashdash-1.14.1"
2803 sources."getpass-0.1.7"
2804 sources."jsbn-0.1.1"
2805 sources."tweetnacl-0.14.5"
2806 sources."ecc-jsbn-0.1.1"
2807 sources."bcrypt-pbkdf-1.0.1"
2808 sources."mime-db-1.30.0"
2809 sources."punycode-1.4.1"
2810 sources."gaze-0.5.2"
2811 (sources."tiny-lr-fork-0.0.5" // {
2812 dependencies = [
2813 sources."qs-0.5.6"
2814 ];
2815 })
2816 (sources."globule-0.1.0" // {
2817 dependencies = [
2818 sources."lodash-1.0.2"
2819 ];
2820 })
2821 sources."faye-websocket-0.4.4"
2822 (sources."noptify-0.0.3" // {
3226 (sources."noptify-0.0.3" // {
2823 dependencies = [
3227 dependencies = [
2824 sources."nopt-2.0.0"
3228 sources."nopt-2.0.0"
2825 ];
3229 ];
2826 })
3230 })
2827 sources."debug-0.7.4"
3231 sources."normalize-package-data-2.4.0"
2828 sources."command-line-args-3.0.5"
3232 sources."npm-package-arg-6.1.0"
2829 sources."command-line-usage-3.0.8"
3233 (sources."npm-registry-client-8.5.1" // {
2830 sources."dom5-1.3.6"
2831 sources."array-back-1.0.4"
2832 sources."feature-detect-es6-1.3.1"
2833 sources."find-replace-1.0.3"
2834 sources."typical-2.6.1"
2835 sources."test-value-2.1.0"
2836 sources."ansi-escape-sequences-3.0.0"
2837 sources."table-layout-0.3.0"
2838 sources."core-js-2.5.1"
2839 sources."deep-extend-0.4.2"
2840 sources."wordwrapjs-2.0.0"
2841 sources."reduce-flatten-1.0.1"
2842 sources."@types/clone-0.1.30"
2843 sources."@types/node-4.2.20"
2844 (sources."@types/parse5-0.0.31" // {
2845 dependencies = [
2846 sources."@types/node-6.0.88"
2847 ];
2848 })
2849 sources."clone-1.0.2"
2850 sources."parse5-1.5.1"
2851 sources."es6-promise-2.3.0"
2852 (sources."hydrolysis-1.25.0" // {
2853 dependencies = [
2854 sources."dom5-1.1.0"
2855 ];
2856 })
2857 sources."path-posix-1.0.0"
2858 sources."acorn-3.3.0"
2859 sources."babel-polyfill-6.26.0"
2860 sources."doctrine-0.7.2"
2861 (sources."escodegen-1.9.0" // {
2862 dependencies = [
2863 sources."estraverse-4.2.0"
2864 sources."esutils-2.0.2"
2865 sources."esprima-3.1.3"
2866 sources."source-map-0.5.7"
2867 ];
2868 })
2869 (sources."espree-3.5.1" // {
2870 dependencies = [
2871 sources."acorn-5.1.2"
2872 ];
2873 })
2874 sources."estraverse-3.1.0"
2875 sources."path-is-absolute-1.0.1"
2876 (sources."babel-runtime-6.26.0" // {
2877 dependencies = [
2878 sources."regenerator-runtime-0.11.0"
2879 ];
2880 })
2881 sources."regenerator-runtime-0.10.5"
2882 sources."esutils-1.1.6"
2883 sources."isarray-0.0.1"
2884 sources."optionator-0.8.2"
2885 sources."prelude-ls-1.1.2"
2886 sources."deep-is-0.1.3"
2887 sources."wordwrap-1.0.0"
2888 sources."type-check-0.3.2"
2889 sources."levn-0.3.0"
2890 sources."fast-levenshtein-2.0.6"
2891 sources."acorn-jsx-3.0.1"
2892 sources."object-assign-4.1.1"
2893 sources."optparse-1.0.5"
2894 sources."semver-5.4.1"
2895 (sources."npm-registry-client-8.4.0" // {
2896 dependencies = [
3234 dependencies = [
2897 sources."graceful-fs-4.1.11"
3235 sources."graceful-fs-4.1.11"
2898 ];
3236 ];
2899 })
3237 })
2900 (sources."npmconf-2.1.2" // {
3238 (sources."npmconf-2.1.3" // {
2901 dependencies = [
3239 dependencies = [
2902 sources."nopt-3.0.6"
3240 sources."nopt-3.0.6"
2903 sources."once-1.3.3"
3241 sources."once-1.3.3"
2904 sources."semver-4.3.6"
3242 sources."semver-4.3.6"
2905 ];
3243 ];
2906 })
3244 })
2907 sources."tar-3.1.15"
3245 sources."npmlog-4.1.2"
2908 sources."temp-0.8.3"
3246 sources."number-is-nan-1.0.1"
2909 (sources."fs.extra-1.3.2" // {
3247 sources."oauth-sign-0.8.2"
3248 sources."object-assign-4.1.1"
3249 sources."once-1.4.0"
3250 sources."optionator-0.8.2"
3251 sources."optparse-1.0.5"
3252 sources."os-homedir-1.0.2"
3253 sources."os-tmpdir-1.0.2"
3254 sources."osenv-0.1.5"
3255 sources."parse5-1.5.1"
3256 sources."path-is-absolute-1.0.1"
3257 sources."path-posix-1.0.0"
3258 sources."pend-1.2.0"
3259 sources."performance-now-0.2.0"
3260 sources."phantom-4.0.12"
3261 (sources."phantomjs-prebuilt-2.1.16" // {
2910 dependencies = [
3262 dependencies = [
2911 sources."mkdirp-0.3.5"
3263 sources."es6-promise-4.2.4"
3264 sources."fs-extra-1.0.0"
3265 sources."graceful-fs-4.1.11"
3266 sources."jsonfile-2.4.0"
3267 sources."which-1.3.1"
2912 ];
3268 ];
2913 })
3269 })
2914 sources."findit-2.0.0"
3270 sources."pinkie-2.0.4"
2915 sources."base64-js-1.2.1"
3271 sources."pinkie-promise-2.0.1"
2916 sources."slasp-0.0.4"
3272 sources."prelude-ls-1.1.2"
2917 sources."nijs-0.0.23"
3273 sources."process-nextick-args-2.0.0"
2918 sources."concat-stream-1.6.0"
3274 sources."progress-1.1.8"
2919 sources."normalize-package-data-2.4.0"
3275 sources."promise-7.3.1"
2920 sources."npm-package-arg-5.1.2"
3276 sources."proto-list-1.2.4"
2921 sources."once-1.4.0"
3277 sources."prr-1.0.1"
2922 sources."retry-0.10.1"
3278 sources."punycode-1.4.1"
2923 sources."slide-1.1.6"
3279 sources."qrious-4.0.2"
2924 sources."ssri-4.1.6"
3280 sources."qs-6.4.0"
2925 sources."npmlog-4.1.2"
3281 (sources."readable-stream-2.3.6" // {
2926 sources."typedarray-0.0.6"
2927 (sources."readable-stream-2.3.3" // {
2928 dependencies = [
3282 dependencies = [
2929 sources."isarray-1.0.0"
3283 sources."isarray-1.0.0"
2930 ];
3284 ];
2931 })
3285 })
2932 sources."process-nextick-args-1.0.7"
3286 sources."reduce-flatten-1.0.1"
2933 sources."string_decoder-1.0.3"
3287 sources."regenerator-runtime-0.10.5"
2934 sources."util-deprecate-1.0.2"
3288 sources."request-2.81.0"
2935 sources."hosted-git-info-2.5.0"
3289 sources."request-progress-2.0.1"
2936 sources."is-builtin-module-1.0.0"
3290 sources."retry-0.10.1"
2937 sources."validate-npm-package-license-3.0.1"
3291 sources."rimraf-2.2.8"
2938 sources."builtin-modules-1.1.1"
3292 sources."safe-buffer-5.1.2"
2939 sources."spdx-correct-1.0.2"
3293 sources."safer-buffer-2.1.2"
2940 sources."spdx-expression-parse-1.0.4"
3294 sources."select-1.1.2"
2941 sources."spdx-license-ids-1.2.2"
3295 sources."semver-5.5.0"
2942 sources."osenv-0.1.4"
2943 sources."validate-npm-package-name-3.0.0"
2944 sources."os-homedir-1.0.2"
2945 sources."os-tmpdir-1.0.2"
2946 sources."builtins-1.0.3"
2947 sources."wrappy-1.0.2"
2948 sources."are-we-there-yet-1.1.4"
2949 sources."console-control-strings-1.1.0"
2950 sources."gauge-2.7.4"
2951 sources."set-blocking-2.0.0"
3296 sources."set-blocking-2.0.0"
2952 sources."delegates-1.0.0"
3297 sources."shelljs-0.3.0"
2953 sources."aproba-1.2.0"
3298 sources."sigmund-1.0.1"
2954 sources."has-unicode-2.0.1"
2955 sources."signal-exit-3.0.2"
3299 sources."signal-exit-3.0.2"
2956 sources."string-width-1.0.2"
3300 sources."slasp-0.0.4"
2957 sources."wide-align-1.1.2"
3301 sources."slide-1.1.6"
2958 sources."code-point-at-1.1.0"
3302 sources."sntp-1.0.9"
2959 sources."is-fullwidth-code-point-1.0.0"
3303 sources."source-map-0.3.0"
2960 sources."number-is-nan-1.0.1"
3304 sources."spdx-correct-3.0.0"
2961 sources."config-chain-1.1.11"
3305 sources."spdx-exceptions-2.1.0"
2962 sources."ini-1.3.4"
3306 sources."spdx-expression-parse-3.0.0"
2963 sources."uid-number-0.0.5"
3307 sources."spdx-license-ids-3.0.0"
2964 sources."proto-list-1.2.4"
3308 sources."split-1.0.1"
2965 sources."minipass-2.2.1"
3309 (sources."sshpk-1.14.2" // {
2966 sources."minizlib-1.0.3"
2967 sources."yallist-3.0.2"
2968 (sources."fs-extra-0.6.4" // {
2969 dependencies = [
3310 dependencies = [
2970 sources."mkdirp-0.3.5"
3311 sources."assert-plus-1.0.0"
2971 ];
3312 ];
2972 })
3313 })
2973 sources."walk-2.3.9"
3314 sources."ssri-5.3.0"
2974 sources."ncp-0.4.2"
3315 sources."stack-trace-0.0.10"
2975 sources."jsonfile-1.0.1"
3316 sources."string-width-1.0.2"
2976 sources."foreachasync-3.0.0"
3317 sources."string_decoder-1.1.1"
2977 (sources."cli-1.0.1" // {
3318 sources."stringstream-0.0.6"
3319 sources."strip-ansi-3.0.1"
3320 sources."strip-json-comments-1.0.4"
3321 sources."supports-color-2.0.0"
3322 sources."table-layout-0.3.0"
3323 sources."tar-3.1.15"
3324 sources."temp-0.8.3"
3325 sources."test-value-2.1.0"
3326 sources."throttleit-1.0.0"
3327 sources."through-2.3.8"
3328 sources."tiny-emitter-2.0.2"
3329 (sources."tiny-lr-fork-0.0.5" // {
2978 dependencies = [
3330 dependencies = [
2979 sources."glob-7.1.2"
3331 sources."qs-0.5.6"
2980 sources."minimatch-3.0.4"
2981 ];
2982 })
2983 sources."console-browserify-1.1.0"
2984 (sources."htmlparser2-3.8.3" // {
2985 dependencies = [
2986 sources."readable-stream-1.1.14"
2987 sources."string_decoder-0.10.31"
2988 ];
3332 ];
2989 })
3333 })
2990 sources."shelljs-0.3.0"
3334 sources."tough-cookie-2.3.4"
2991 sources."strip-json-comments-1.0.4"
3335 sources."tunnel-agent-0.6.0"
2992 sources."fs.realpath-1.0.0"
3336 sources."tweetnacl-0.14.5"
2993 sources."inflight-1.0.6"
3337 sources."type-check-0.3.2"
2994 sources."brace-expansion-1.1.8"
3338 sources."typedarray-0.0.6"
2995 sources."balanced-match-1.0.0"
3339 sources."typical-2.6.1"
2996 sources."concat-map-0.0.1"
3340 sources."uid-number-0.0.5"
2997 sources."date-now-0.1.4"
3341 sources."underscore-1.7.0"
2998 sources."domhandler-2.3.0"
3342 sources."underscore.string-2.2.1"
2999 sources."domutils-1.5.1"
3343 sources."unicode-5.2.0-0.7.5"
3000 sources."domelementtype-1.3.0"
3344 sources."util-deprecate-1.0.2"
3001 sources."entities-1.0.0"
3345 sources."uuid-3.3.2"
3002 (sources."dom-serializer-0.1.0" // {
3346 sources."validate-npm-package-license-3.0.3"
3347 sources."validate-npm-package-name-3.0.0"
3348 (sources."verror-1.10.0" // {
3003 dependencies = [
3349 dependencies = [
3004 sources."domelementtype-1.1.3"
3350 sources."assert-plus-1.0.0"
3005 sources."entities-1.1.1"
3006 ];
3351 ];
3007 })
3352 })
3008 sources."good-listener-1.2.2"
3353 (sources."vulcanize-1.16.0" // {
3009 sources."select-1.1.2"
3354 dependencies = [
3010 sources."tiny-emitter-2.0.2"
3355 sources."nopt-3.0.6"
3011 sources."delegate-3.1.3"
3012 ];
3356 ];
3357 })
3358 sources."walk-2.3.14"
3359 sources."which-1.0.9"
3360 sources."wide-align-1.1.3"
3361 (sources."winston-2.4.3" // {
3362 dependencies = [
3363 sources."async-1.0.0"
3364 sources."colors-1.0.3"
3365 ];
3366 })
3367 sources."wordwrap-1.0.0"
3368 sources."wordwrapjs-2.0.0"
3369 sources."wrappy-1.0.2"
3370 sources."yallist-3.0.2"
3371 sources."yauzl-2.4.1"
3372 ];
3373 buildInputs = globalBuildInputs;
3013 meta = {
3374 meta = {
3375 description = "RhodeCode JS packaged";
3376 license = "SEE LICENSE IN LICENSE.txt";
3014 };
3377 };
3015 production = false;
3378 production = false;
3379 bypassCache = false;
3016 };
3380 };
3017 in
3381 in
3018 {
3382 {
3019 tarball = nodeEnv.buildNodeSourceDist args;
3383 tarball = nodeEnv.buildNodeSourceDist args;
3020 package = nodeEnv.buildNodePackage args;
3384 package = nodeEnv.buildNodePackage args;
3021 shell = nodeEnv.buildNodeShell args;
3385 shell = nodeEnv.buildNodeShell args;
3022 } No newline at end of file
3386 }
1 NO CONTENT: file renamed from pkgs/patch-beaker-lock-func-debug.diff to pkgs/patch_beaker/patch-beaker-lock-func-debug.diff
NO CONTENT: file renamed from pkgs/patch-beaker-lock-func-debug.diff to pkgs/patch_beaker/patch-beaker-lock-func-debug.diff
@@ -1,250 +1,247 b''
1 # Overrides for the generated python-packages.nix
1 # Overrides for the generated python-packages.nix
2 #
2 #
3 # This function is intended to be used as an extension to the generated file
3 # This function is intended to be used as an extension to the generated file
4 # python-packages.nix. The main objective is to add needed dependencies of C
4 # python-packages.nix. The main objective is to add needed dependencies of C
5 # libraries and tweak the build instructions where needed.
5 # libraries and tweak the build instructions where needed.
6
6
7 { pkgs, basePythonPackages }:
7 { pkgs
8 , basePythonPackages
9 }:
8
10
9 let
11 let
10 sed = "sed -i";
12 sed = "sed -i";
13
11 localLicenses = {
14 localLicenses = {
12 repoze = {
15 repoze = {
13 fullName = "Repoze License";
16 fullName = "Repoze License";
14 url = http://www.repoze.org/LICENSE.txt;
17 url = http://www.repoze.org/LICENSE.txt;
15 };
18 };
16 };
19 };
17
20
18 in
21 in
19
22
20 self: super: {
23 self: super: {
21
24
22 appenlight-client = super.appenlight-client.override (attrs: {
25 "appenlight-client" = super."appenlight-client".override (attrs: {
23 meta = {
26 meta = {
24 license = [ pkgs.lib.licenses.bsdOriginal ];
27 license = [ pkgs.lib.licenses.bsdOriginal ];
25 };
28 };
26 });
29 });
27
30
28 Beaker = super.Beaker.override (attrs: {
31 "beaker" = super."beaker".override (attrs: {
29 patches = [
32 patches = [
30 ./patch-beaker-lock-func-debug.diff
33 ./patch_beaker/patch-beaker-lock-func-debug.diff
34 ./patch_beaker/patch-beaker-metadata-reuse.diff
31 ];
35 ];
32 });
36 });
33
37
34 future = super.future.override (attrs: {
38 "gevent" = super."gevent".override (attrs: {
39 propagatedBuildInputs = attrs.propagatedBuildInputs ++ [
40 # NOTE: (marcink) odd requirements from gevent aren't set properly,
41 # thus we need to inject psutil manually
42 self."psutil"
43 ];
44 });
45
46 "future" = super."future".override (attrs: {
35 meta = {
47 meta = {
36 license = [ pkgs.lib.licenses.mit ];
48 license = [ pkgs.lib.licenses.mit ];
37 };
49 };
38 });
50 });
39
51
40 testpath = super.testpath.override (attrs: {
52 "testpath" = super."testpath".override (attrs: {
41 meta = {
53 meta = {
42 license = [ pkgs.lib.licenses.mit ];
54 license = [ pkgs.lib.licenses.mit ];
43 };
55 };
44 });
56 });
45
57
46 gnureadline = super.gnureadline.override (attrs: {
58 "gnureadline" = super."gnureadline".override (attrs: {
47 buildInputs = attrs.buildInputs ++ [
59 buildInputs = [
48 pkgs.ncurses
60 pkgs.ncurses
49 ];
61 ];
50 patchPhase = ''
62 patchPhase = ''
51 substituteInPlace setup.py --replace "/bin/bash" "${pkgs.bash}/bin/bash"
63 substituteInPlace setup.py --replace "/bin/bash" "${pkgs.bash}/bin/bash"
52 '';
64 '';
53 });
65 });
54
66
55 gunicorn = super.gunicorn.override (attrs: {
67 "gunicorn" = super."gunicorn".override (attrs: {
56 propagatedBuildInputs = attrs.propagatedBuildInputs ++ [
68 propagatedBuildInputs = [
57 # johbo: futures is needed as long as we are on Python 2, otherwise
69 # johbo: futures is needed as long as we are on Python 2, otherwise
58 # gunicorn explodes if used with multiple threads per worker.
70 # gunicorn explodes if used with multiple threads per worker.
59 self.futures
71 self."futures"
60 ];
72 ];
61 });
73 });
62
74
63 nbconvert = super.nbconvert.override (attrs: {
75 "nbconvert" = super."nbconvert".override (attrs: {
64 propagatedBuildInputs = attrs.propagatedBuildInputs ++ [
76 propagatedBuildInputs = attrs.propagatedBuildInputs ++ [
65 # marcink: plug in jupyter-client for notebook rendering
77 # marcink: plug in jupyter-client for notebook rendering
66 self.jupyter-client
78 self."jupyter-client"
67 ];
79 ];
68 });
80 });
69
81
70 ipython = super.ipython.override (attrs: {
82 "ipython" = super."ipython".override (attrs: {
71 propagatedBuildInputs = attrs.propagatedBuildInputs ++ [
83 propagatedBuildInputs = attrs.propagatedBuildInputs ++ [
72 self.gnureadline
84 self."gnureadline"
73 ];
85 ];
74 });
86 });
75
87
76 lxml = super.lxml.override (attrs: {
88 "lxml" = super."lxml".override (attrs: {
77 # johbo: On 16.09 we need this to compile on darwin, otherwise compilation
89 buildInputs = [
78 # fails on Darwin.
79 hardeningDisable = if pkgs.stdenv.isDarwin then [ "format" ] else null;
80 buildInputs = with self; [
81 pkgs.libxml2
90 pkgs.libxml2
82 pkgs.libxslt
91 pkgs.libxslt
83 ];
92 ];
93 propagatedBuildInputs = [
94 # Needed, so that "setup.py bdist_wheel" does work
95 self."wheel"
96 ];
84 });
97 });
85
98
86 MySQL-python = super.MySQL-python.override (attrs: {
99 "mysql-python" = super."mysql-python".override (attrs: {
87 buildInputs = attrs.buildInputs ++ [
100 buildInputs = [
88 pkgs.openssl
101 pkgs.openssl
89 ];
102 ];
90 propagatedBuildInputs = attrs.propagatedBuildInputs ++ [
103 propagatedBuildInputs = [
91 pkgs.libmysql
104 pkgs.libmysql
92 pkgs.zlib
105 pkgs.zlib
93 ];
106 ];
94 });
107 });
95
108
96 psutil = super.psutil.override (attrs: {
109 "psycopg2" = super."psycopg2".override (attrs: {
97 buildInputs = attrs.buildInputs ++
110 propagatedBuildInputs = [
98 pkgs.lib.optional pkgs.stdenv.isDarwin pkgs.darwin.IOKit;
99 });
100
101 psycopg2 = super.psycopg2.override (attrs: {
102 buildInputs = attrs.buildInputs ++
103 pkgs.lib.optional pkgs.stdenv.isDarwin pkgs.openssl;
104 propagatedBuildInputs = attrs.propagatedBuildInputs ++ [
105 pkgs.postgresql
111 pkgs.postgresql
106 ];
112 ];
107 meta = {
113 meta = {
108 license = pkgs.lib.licenses.lgpl3Plus;
114 license = pkgs.lib.licenses.lgpl3Plus;
109 };
115 };
110 });
116 });
111
117
112 pycurl = super.pycurl.override (attrs: {
118 "pycurl" = super."pycurl".override (attrs: {
113 propagatedBuildInputs = attrs.propagatedBuildInputs ++ [
119 propagatedBuildInputs = [
114 pkgs.curl
120 pkgs.curl
115 pkgs.openssl
121 pkgs.openssl
116 ];
122 ];
117 preConfigure = ''
123 preConfigure = ''
118 substituteInPlace setup.py --replace '--static-libs' '--libs'
124 substituteInPlace setup.py --replace '--static-libs' '--libs'
119 export PYCURL_SSL_LIBRARY=openssl
125 export PYCURL_SSL_LIBRARY=openssl
120 '';
126 '';
121 meta = {
127 meta = {
122 # TODO: It is LGPL and MIT
123 license = pkgs.lib.licenses.mit;
128 license = pkgs.lib.licenses.mit;
124 };
129 };
125 });
130 });
126
131
127 pyramid = super.pyramid.override (attrs: {
132 "pyramid" = super."pyramid".override (attrs: {
128 postFixup = ''
129 wrapPythonPrograms
130 # TODO: johbo: "wrapPython" adds this magic line which
131 # confuses pserve.
132 ${sed} '/import sys; sys.argv/d' $out/bin/.pserve-wrapped
133 '';
134 meta = {
133 meta = {
135 license = localLicenses.repoze;
134 license = localLicenses.repoze;
136 };
135 };
137 });
136 });
138
137
139 pyramid-debugtoolbar = super.pyramid-debugtoolbar.override (attrs: {
138 "pyramid-debugtoolbar" = super."pyramid-debugtoolbar".override (attrs: {
140 meta = {
139 meta = {
141 license = [ pkgs.lib.licenses.bsdOriginal localLicenses.repoze ];
140 license = [ pkgs.lib.licenses.bsdOriginal localLicenses.repoze ];
142 };
141 };
143 });
142 });
144
143
145 pysqlite = super.pysqlite.override (attrs: {
144 "pysqlite" = super."pysqlite".override (attrs: {
146 propagatedBuildInputs = [
145 propagatedBuildInputs = [
147 pkgs.sqlite
146 pkgs.sqlite
148 ];
147 ];
149 meta = {
148 meta = {
150 license = [ pkgs.lib.licenses.zlib pkgs.lib.licenses.libpng ];
149 license = [ pkgs.lib.licenses.zlib pkgs.lib.licenses.libpng ];
151 };
150 };
152 });
151 });
153
152
154 pytest-runner = super.pytest-runner.override (attrs: {
153 "pytest-runner" = super."pytest-runner".override (attrs: {
155 propagatedBuildInputs = [
154 propagatedBuildInputs = [
156 self.setuptools-scm
155 self."setuptools-scm"
157 ];
156 ];
158 });
157 });
159
158
160 python-ldap = super.python-ldap.override (attrs: {
159 "python-ldap" = super."python-ldap".override (attrs: {
161 propagatedBuildInputs = attrs.propagatedBuildInputs ++ [
160 propagatedBuildInputs = attrs.propagatedBuildInputs ++ [
161 pkgs.openldap
162 pkgs.cyrus_sasl
162 pkgs.cyrus_sasl
163 pkgs.openldap
164 pkgs.openssl
163 pkgs.openssl
165 ];
164 ];
166 # TODO: johbo: Remove the "or" once we drop 16.03 support.
167 NIX_CFLAGS_COMPILE = "-I${pkgs.cyrus_sasl.dev or pkgs.cyrus_sasl}/include/sasl";
168 });
165 });
169
166
170 python-pam = super.python-pam.override (attrs:
167 "python-pam" = super."python-pam".override (attrs: {
171 let
168 propagatedBuildInputs = [
172 includeLibPam = pkgs.stdenv.isLinux;
173 in {
174 # TODO: johbo: Move the option up into the default.nix, we should
175 # include python-pam only on supported platforms.
176 propagatedBuildInputs = attrs.propagatedBuildInputs ++
177 pkgs.lib.optional includeLibPam [
178 pkgs.pam
169 pkgs.pam
179 ];
170 ];
180 # TODO: johbo: Check if this can be avoided, or transform into
171 # TODO: johbo: Check if this can be avoided, or transform into
181 # a real patch
172 # a real patch
182 patchPhase = pkgs.lib.optionals includeLibPam ''
173 patchPhase = ''
183 substituteInPlace pam.py \
174 substituteInPlace pam.py \
184 --replace 'find_library("pam")' '"${pkgs.pam}/lib/libpam.so.0"'
175 --replace 'find_library("pam")' '"${pkgs.pam}/lib/libpam.so.0"'
185 '';
176 '';
186 });
177 });
187
178
188 URLObject = super.URLObject.override (attrs: {
179 "pyzmq" = super."pyzmq".override (attrs: {
180 buildInputs = [
181 pkgs.czmq
182 ];
183 });
184
185 "urlobject" = super."urlobject".override (attrs: {
189 meta = {
186 meta = {
190 license = {
187 license = {
191 spdxId = "Unlicense";
188 spdxId = "Unlicense";
192 fullName = "The Unlicense";
189 fullName = "The Unlicense";
193 url = http://unlicense.org/;
190 url = http://unlicense.org/;
194 };
191 };
195 };
192 };
196 });
193 });
197
194
198 docutils = super.docutils.override (attrs: {
195 "docutils" = super."docutils".override (attrs: {
199 meta = {
196 meta = {
200 license = pkgs.lib.licenses.bsd2;
197 license = pkgs.lib.licenses.bsd2;
201 };
198 };
202 });
199 });
203
200
204 colander = super.colander.override (attrs: {
201 "colander" = super."colander".override (attrs: {
205 meta = {
202 meta = {
206 license = localLicenses.repoze;
203 license = localLicenses.repoze;
207 };
204 };
208 });
205 });
209
206
210 pyramid-beaker = super.pyramid-beaker.override (attrs: {
207 "pyramid-beaker" = super."pyramid-beaker".override (attrs: {
211 meta = {
208 meta = {
212 license = localLicenses.repoze;
209 license = localLicenses.repoze;
213 };
210 };
214 });
211 });
215
212
216 pyramid-mako = super.pyramid-mako.override (attrs: {
213 "pyramid-mako" = super."pyramid-mako".override (attrs: {
217 meta = {
214 meta = {
218 license = localLicenses.repoze;
215 license = localLicenses.repoze;
219 };
216 };
220 });
217 });
221
218
222 repoze.lru = super.repoze.lru.override (attrs: {
219 "repoze.lru" = super."repoze.lru".override (attrs: {
223 meta = {
220 meta = {
224 license = localLicenses.repoze;
221 license = localLicenses.repoze;
225 };
222 };
226 });
223 });
227
224
228 python-editor = super.python-editor.override (attrs: {
225 "python-editor" = super."python-editor".override (attrs: {
229 meta = {
226 meta = {
230 license = pkgs.lib.licenses.asl20;
227 license = pkgs.lib.licenses.asl20;
231 };
228 };
232 });
229 });
233
230
234 translationstring = super.translationstring.override (attrs: {
231 "translationstring" = super."translationstring".override (attrs: {
235 meta = {
232 meta = {
236 license = localLicenses.repoze;
233 license = localLicenses.repoze;
237 };
234 };
238 });
235 });
239
236
240 venusian = super.venusian.override (attrs: {
237 "venusian" = super."venusian".override (attrs: {
241 meta = {
238 meta = {
242 license = localLicenses.repoze;
239 license = localLicenses.repoze;
243 };
240 };
244 });
241 });
245
242
246 # Avoid that setuptools is replaced, this leads to trouble
243 # Avoid that base packages screw up the build process
247 # with buildPythonPackage.
244 inherit (basePythonPackages)
248 setuptools = basePythonPackages.setuptools;
245 setuptools;
249
246
250 }
247 }
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file renamed from rhodecode/lib/memory_lru_debug.py to rhodecode/lib/memory_lru_dict.py
NO CONTENT: file renamed from rhodecode/lib/memory_lru_debug.py to rhodecode/lib/memory_lru_dict.py
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file renamed from rhodecode/tests/controllers/test_utils.py to rhodecode/tests/other/test_views_utils.py
NO CONTENT: file renamed from rhodecode/tests/controllers/test_utils.py to rhodecode/tests/other/test_views_utils.py
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
General Comments 0
You need to be logged in to leave comments. Login now