summaryrefslogtreecommitdiff
path: root/src/rebar_config.erl
Commit message (Collapse)AuthorAgeFilesLines
* support for hex v2, multiple repository fetching, private organizations (#1884)Tristan Sloughter2018-09-131-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * update to hex_core for hex-v2 repo support (#1865) * update to hex_core for hex-v2 repo support This patch adds only single repo hex-v2 support through hex_core. Packages no longer filtered out by buildtool metadata and the package index is updated per-package instead of fetched as one large ets dump. * tell travis to also build hex_core branch * support list of repos for hex packages (#1866) * support list of repos for hex packages repos are defined under the hex key in rebar configs. They can be defined at the top level of a project or globally, but not in profiles and the repos configured in dependencies are also ignored. Searching for packages involves first checking for a match in the local repo index cache, in the order repos are defined. If not found each repo is checked through the hex api for any known versions of the package and the first repo with a version that fits the constraint is used. * add {repos, replace, []} for overriding the global & default repos * add hex auth handling for repos (#1874) auth token are kept in a hex.config file that is modified by the rebar3 hex plugin. Repo names that have a : separating a parent and child are considered organizations. The parent repo's auth will be included with the child. So an organization named hexpm:rebar3_test will include any hexpm auth tokens found in the rebar3_test organization's configuration. * move packages to top level of of hexpm cache dir (#1876) * move packages to top level of of hexpm cache dir * append organization name to parent's repo_url when parsing repos * only eval config scripts and apply overrides once per app (#1879) * only eval config scripts and apply overrides once per app * move new resource behaviour to rebar_resource_v2 and keep v1 * cleanup use of rebar_resource module and unused functions * cleanup error messages and unused code * when discovering apps support mix packages as unbuilt apps (#1882) * use hex_core tarball unpacking support in pkg resource (#1883) * use hex_core tarball unpacking support in pkg resource * ignore etag if package doesn't exist and delete if checksum fails * add back tests for bad package checksums * improve bad registry checksum error message
* Display error when rebar.config.script failsFred Hebert2018-04-201-0/+2
| | | | | | | | | | This will at least display the script that failed with the stacktrace before failing as usual, but without altering the return value. This should make the common failure path more user-friendly without breaking any existing behaviour that may have relied on the script file working. If there's any unexpected side-effect, it will be visual only rather than blocking full builds if ?ABORT were used.
* Unicode support in all the placesFred Hebert2017-08-061-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This is done through 3 main change groups: - replacing `~s` by `~ts` in format strings, so that strings that contain unicode are properly printed rather than crashing - adding the `unicode` argument to all function of the `re` module to ensure transformations on strings containing unicode data are valid instead of crashing (see issue #1302) - replacing `ec_cnv:to_binary/1` and `ec_cnv:to_list/1` with matching functions in `rebar_utils`. The last point has been done, rather than modifying and updating erlware commons, because binary and list conversions can be a contentious subject. For example, if what is being handled is actually bytes from a given binary stream, then forcing a byte-oriented interpretation of the data can corrupt it. As such, it does not appear safe to modify erlware commons' conversion functions since it may not be safe for all its users. Instead, rebar3 reimplements a subset of them (only converting atoms and chardata, ignoring numbers) with the explicit purpose of handling unicode string data. Tests were left as unchanged as possible. This may impact the ability to run rebar3's own suites in a unicode path, but respects a principle of least change for such a large patch.
* REBAR_CONFIG impacts file project root onlyFred Hebert2017-02-241-5/+5
|
* Fix Alisdair's review, add more types and docsFred Hebert2016-12-161-3/+3
|
* Type specifications and edocs improvementsFred Hebert2016-11-271-4/+78
| | | | | | Includes improvments and function documentation for all modules (in alphabetical order) up to rebar_core, and may have included more in other modules as I saw fit to dig and understand more of the internals.
* Merge pull request #1387 from ericmj/emj-rebar-config-envFred Hebert2016-11-221-2/+17
|\ | | | | Always read REBAR_CONFIG env var when loading config
| * Always read REBAR_CONFIG env var when loading configEric Meadows-Jönsson2016-11-221-2/+17
| |
* | Fix rebar3 dialyzer warningsFred Hebert2016-11-191-3/+1
|/ | | | Some tricky changes in there but should be okay
* Merge pull request #1207 from ferd/pkg-local-hash-lockFred Hebert2016-06-221-12/+82
|\ | | | | lock file contains expected hash for pkg dependencies
| * Only display old version warning onceFred Hebert2016-06-101-4/+17
| | | | | | | | | | This uses the env variable as a global store for variables. It's not the cleanest thing, but it sounded nicer than pdicts.
| * Hashes in lockfile are diff friendlyFred Hebert2016-06-091-2/+21
| | | | | | | | | | | | | | | | | | | | This reworks the version and hash printing in the lockfile to minimize diff changes: - the version is on its own line so that the locks are mostly the same aside from the last line - the hashes are each printed on one line with the package name for simpler diffing too.
| * Support package hashes in structure and lockfileFred Hebert2016-05-241-14/+52
| | | | | | | | | | | | | | | | | | - the internal representation for package locks moves from `{Name, {pkg, PkgName, Vsn}, Lvl}` to `{Name, {pkg, PkgName, Vsn, Hash}, Lvl}` - the internal representation for packages moves from `{pkg, PkgName, Vsn}` to `{pkg, PkgName, Vsn, Hash}` - the hash can be `undefined`, meaning no check will be done - no checking is done yet.
* | Don't die when source deps with [raw] are usedFred Hebert2016-05-271-0/+18
|/ | | | | This adds support for their format both on the first read and when looking for modifications to dependencies.
* Make lock files future-proofFred Hebert2016-02-161-2/+36
| | | | | | | | | | | | | | | | | | | | | | | | | Changes to how hex or packages may work in the future will necessarily bring changes to the format of lock files. This commit adds an optional framing for future lock files of the form: {Version, LockList}. <Whatever consultable attributes> This format is supported such as the LockList is the current lockfile contents, and will never have more information than it currently does. Attributes can be whatever and are currently undefined. Rebar copies will be able to: - Keep using the core locklist (which avoids breaking the last year or so of community libraries using rebar3) - Warn when it runs an outdated copy in comparison to the lock file - Automatically rewrite lock files in the format it supports - Augment or parse files in a version-specific manner. This changes the usage interface slightly, but is backwards *and* forwards compatible.
* handle newly added deps to config even when lock is emptyTristan Sloughter2015-09-241-3/+0
|
* Fix consult_and_eval/2 to behave like consultHeinz N. Gies2015-09-201-1/+15
|
* Terms is already a listGarret Smith2015-09-111-1/+1
| | | | Fixes compiling yaws, which has an .app.src.script file
* support pkg attribute on dep to declare package name different from app nameTristan Sloughter2015-08-231-0/+9
|
* add tree option to deps command that prints pkg deps treeTristan Sloughter2015-08-031-13/+23
|
* include app.src.script in app discover and always use if availableTristan Sloughter2015-07-261-1/+2
|
* check format of config file and print the bad section in the errorTristan Sloughter2015-06-181-3/+26
|
* print and format error message for bad .app files and all bad configsTristan Sloughter2015-05-221-12/+2
|
* merge_locks crashed if a config didn't have a deps entryTristan Sloughter2015-04-231-1/+1
|
* real bootstrappingTristan Sloughter2015-04-221-1/+0
|
* clean ups from Fred's commentsTristan Sloughter2015-04-111-2/+2
|
* error on dep name that isn't an atomTristan Sloughter2015-04-111-4/+11
|
* support single atoms for pkg deps, fetch highest version availableTristan Sloughter2015-04-111-18/+22
|
* Fix lock merging for nonexistant lock files.Fred Hebert2015-02-231-0/+5
|
* don't attempt to merge locks when there are no dependenciesalisdair sullivan2015-02-221-1/+1
| | | | fixes #172
* consolidate app validation and exist checksTristan Sloughter2015-02-221-1/+1
|
* check for newly added deps in config file that aren't level 0 in the lockTristan Sloughter2015-02-191-1/+36
|
* handle throw by relxTristan Sloughter2014-11-081-3/+3
|
* split options up by taskTristan Sloughter2014-10-101-1/+0
|
* slowly widdling away at dialyzer errorsTristan Sloughter2014-09-201-2/+2
|
* start of moving to splitting state from config parsingTristan Sloughter2014-08-171-259/+12
|
* add rebar update providerTristan Sloughter2014-08-161-1/+9
|
* replace logging with ec_cmd_log from erlware_commonsTristan Sloughter2014-08-161-2/+2
|
* large refactoringTristan Sloughter2014-08-161-39/+109
| | | | | | | | Removed separate compilers Resolves apps to build Finds avail deps before pulling/building Includes relx Simplifies build commands
* Use correct types for OTP >=17.xTuncer Ayaz2014-06-291-1/+1
|
* Fix a few minor formatting inconsistenciesTuncer Ayaz2014-06-291-2/+2
| | | | | * fix overlong lines * where appropriate use %% instead of %
* Fix build for 17.0 using the solutiong proposed by @tsloughterMatwey V. Kornilov2014-06-081-4/+12
| | | | We use namespaced_types option to choose between dict() and dict:dict() types.
* Fix #56 (always-on recursion)Tuncer Ayaz2014-03-111-0/+4
| | | | | | | | | | | | | | | | | | Always-on recursive application of all rebar commands causes too many issues. Recursive application is required for: 1. dealing with dependencies: get-deps, update-deps, and compile of deps right after get-deps or update-deps 2. projects with a riak-like apps/ project structure and dev process The vast majority of projects are not structured like riak. Therefore, moving forward it's best to (by default) restrict recursive behavior to dealing with deps. This commit does that and also adds command line and rebar.config options for controlling or configuring recursion. Also, we introduce two meta commands: prepare-deps (equivalent to rebar -r get-deps compile) and refresh-deps (equivalent to rebar -r update-deps compile). riak-like projects can extend the list of recursive commands (to include 'eunit' and 'compile') by adding {recursive_cmds, [eunit, compile]} to rebar.config.
* Fix is_verbose/1 helper functionTuncer Ayaz2013-12-061-5/+0
|
* rebar_config:is_verbose/0: fix variable nameTuncer Ayaz2013-12-061-2/+2
|
* Remove two commentsTuncer Ayaz2012-08-041-2/+0
|
* Refactor setup_env rebar_config funsTuncer Ayaz2012-08-041-5/+4
|
* Do not use application:set_envTuncer Ayaz2012-07-231-26/+35
|
* Document rebar_config TODOsTuncer Ayaz2012-07-131-0/+2
|
* Make sure cached setup_envs are resetTuncer Ayaz2012-07-131-1/+4
|