summaryrefslogtreecommitdiff
path: root/src/rebar_state.erl
Commit message (Collapse)AuthorAgeFilesLines
* compiler behaviour (#1893)Tristan Sloughter2018-10-051-0/+37
| | | | | | | | | | | | | | | | * add compile type for dynamic project compilation * new rebar_compiler abstraction for running multiple compilers rebar_compiler is a new behaviour that a plugin can implement to be called on any ues of the compile provider to compile source files and keep track of their dependencies. * fix check that modules in .app modules list are from src_dirs * use project_type to find module for building projects * allow plugins to add project builders and compilers
* support for hex v2, multiple repository fetching, private organizations (#1884)Tristan Sloughter2018-09-131-25/+51
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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
* Work around OTP-21 deprecation of get_stacktrace()Fred Hebert2018-05-031-3/+3
| | | | Based off a macro by @okeuday at https://github.com/erlang/otp/pull/1783
* sort-as: a more general patternPierre Fenoll2018-03-021-2/+2
|
* do not append test profile if already there. Note that it comes from the prv ↵Pierre Fenoll2018-03-021-0/+3
| | | | list passed to providers:create/1
* Revert "sort-as: found the issue. Will look into tests now"Pierre Fenoll2018-03-021-5/+4
| | | | This reverts commit 0f7e6c31e97c238649e7ae0a1b7087e342174ecc.
* Revert "sort-as: show issue more clearly"Pierre Fenoll2018-03-021-4/+0
| | | | This reverts commit 4ad1db97336a3ac070880876ada07d4c7b769327.
* sort-as: show issue more clearlyPierre Fenoll2018-03-021-0/+4
|
* sort-as: found the issue. Will look into tests nowPierre Fenoll2018-03-021-4/+5
|
* Alias plugin promoted to built-in commandFred Hebert2017-12-051-1/+1
| | | | | | | | | | - Uses the code at https://github.com/tsloughter/rebar_alias and brings it within rebar3 - adds safety checks to prevent redefining built-in commands or obvious circular dependencies between commands (indirect circular deps are still possible) - adds tests - adds a systest to ensure no clash with the existing plugin
* Unicode support in all the placesFred Hebert2017-08-061-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* Fix rebar3 dialyzer warningsFred Hebert2016-11-191-12/+19
| | | | Some tricky changes in there but should be okay
* Make sure not to dump in api modeHeinz N. Gies2016-04-161-2/+2
|
* Write rebar3.crashdump on errorsHeinz N. Gies2016-04-161-1/+2
|
* Merge branch 'state' of https://github.com/saleyn/rebar3 into saleyn-stateFred Hebert2016-03-011-0/+17
|\
| * Turn functor into a function to support older Erlang VMSerge Aleynikov2016-02-081-11/+10
| |
| * Improve recursive display of dictionary valuesSerge Aleynikov2016-02-081-7/+14
| |
| * Add a state display providerSerge Aleynikov2016-02-081-0/+10
| | | | | | | | | | | | | | The provider is used for debugging to help displaying current rebar's state. Usage: rebar3 state
* | Merge pull request #1075 from tsloughter/plugin_overrideFred Hebert2016-02-221-4/+14
|\ \ | | | | | | add project_providers after initing default providers but allow overrides
| * | add project_providers after initing default providers but allow overridesTristan Sloughter2016-02-221-4/+14
| | |
* | | Merge pull request #1065 from tsloughter/plugin_precedenceFred Hebert2016-02-211-2/+4
|\ \ \ | |/ / | | | give top level plugin providers precedence over default providers
| * | give new opt project_plugins providers precedence over default providersTristan Sloughter2016-02-201-2/+4
| |/
* | Make lock files future-proofFred Hebert2016-02-161-4/+4
|/ | | | | | | | | | | | | | | | | | | | | | | | | 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.
* if a provider of the same namespace and name already exists, skip adding new ↵Tristan Sloughter2015-11-231-1/+18
| | | | provider
* add current_app attribute for setting before calling hooksTristan Sloughter2015-09-041-2/+10
|
* move opts functions to new module rebar_optsTristan Sloughter2015-09-011-3/+3
|
* remove overrides element from state recordTristan Sloughter2015-09-011-14/+0
|
* more cleanupTristan Sloughter2015-08-311-13/+3
|
* update use of hooks and plugins with state in app_infoTristan Sloughter2015-08-311-90/+6
|
* simplify package dep parsing and handlingTristan Sloughter2015-08-251-14/+30
|
* override 'deps' now automatically overrides '{deps,default}'Tristan Sloughter2015-08-231-3/+10
|
* don't store deps list with duplicate in stateTristan Sloughter2015-08-221-16/+10
|
* replace use of dict of packages and registry with single ets tableTristan Sloughter2015-08-211-45/+7
|
* this patch treats pkg and src deps as equals, so level decides winnerTristan Sloughter2015-08-211-4/+13
| | | | | | | | Instead fetching and resolving src deps (which could depend on pkg deps) and then pkg deps this patch combines the two into a single set of iterations by level. The only difference between src and pkg deps in this new install_deps is how their deps list is found -- from the config or lock file for src deps and from the neighbors of the vertex for pkg.
* fix leaking hex_registry tablepvmart2015-08-191-11/+19
|
* fix dialyzer warnings, except 'no local return' warningsTristan Sloughter2015-08-081-4/+7
|
* only use upgrade on default depsTristan Sloughter2015-08-011-2/+2
|
* add comment for global apply_profiles and log message for bad bootstrap lock ↵Tristan Sloughter2015-07-111-0/+3
| | | | file
* handle global plugins installing plugins to build depsTristan Sloughter2015-07-111-1/+7
|
* error message for bad profile configTristan Sloughter2015-06-251-2/+12
|
* plugins providerTristan Sloughter2015-06-181-17/+35
|
* check format of config file and print the bad section in the errorTristan Sloughter2015-06-181-9/+21
|
* add config option artifactsTristan Sloughter2015-06-021-0/+19
|
* fix for plugin installation and code pathsTristan Sloughter2015-05-271-0/+11
|
* Initialize namespace in rebar_state with default value.Viacheslav Kovalev2015-05-221-1/+1
|
* Properly initialize command parsed args in rebar stateViacheslav V. Kovalev2015-05-201-1/+1
|
* install plugins from the global config to ~/.cache/pluginsTristan Sloughter2015-05-171-1/+4
|
* set resources to empty list if non in app envTristan Sloughter2015-05-041-1/+6
|
* set resources of state in state initialize functionsTristan Sloughter2015-05-041-8/+15
|
* Merge branch 'master' into app-discover-profile-duplicationViacheslav V. Kovalev2015-05-011-2/+27
|\ | | | | | | | | Conflicts: test/rebar_profiles_SUITE.erl