| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| |\ \
| | | |
| | | | |
Support old-style shell for rebar3 shell
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This reuses the trick used within OTP to pick within old and new shell.
The 'user' structure is the same for all cases (escript, escript + dumb
TERM, unstable install, unstable install + dumb TERM), so we take it
down first.
Then we boot the TTY driver, which fails if TERM=dumb, in which case we
boot the retro-style usr. If it worked, we shut down the driver again,
and boot a modern shell structure.
This avoids all warnings and seems to work in all cases.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This is quite the hack.
This requires to detect the current shell running; if it's the new
shell, business as usual.
However, if it's the old shell, we have to find a way to take over it
and drive IO. This requires a few steps because:
- the old shell does not let you be supervised intelligently (it uses
supervisor_bridge, so killing the child is not a supported operation
from the supervisor)
- the old shell ignores all trappable exit signals except those coming
from the Port in charge of stdio ({fd, 0, 1})
- the old shell shuts down on all exit signals from the stdio Port
except for badsig, and replicates the shutdown reason otherwise
- An escript does not tolerate the `user` process dying (old shell) for
any non-normal reason without also taking the whole escript down
- Booting in an escript has an implicit 'noshell' argument interpreted
by the old shell as a way to boot the stdio Port with only stdout
taken care of
Because of all these points, we have to kill the old `user` process by
sending it a message pretending to be the Stdio port dying of reason
`normal`, which lets it die without triggering the ire of its
supervision tree and keeping the escript alive. This, in turn, kills the
old stdio port since its parent (user.erl) has died.
Then we have to boot our copy of user.erl (rebar_user.erl) which
conveniently ignores the possibility of running the stdio port on stdout
only -- always using stdin *and* stdout, giving us a bona fide old-style
shell.
A known issue introduced is that running r3:do(ct) seems to then kill
the shell, and r3:do(dialyzer) appears to have an odd failure, but
otherwise most other commands appear to work fine.
|
| |\ \ \
| | | |/
| | |/| |
merge overlay entries into a single {overlay, list()} for relx
|
| | | | |
|
| |\ \ \
| | | | |
| | | | | |
Updates cth_readable so it supports dumb terminals
|
| | | |/
| | |/|
| | | |
| | | |
| | | | |
cth_readable 1.2.0 uses cf 0.2.1 to output colors, which makes it
support dumb terminals without issue.
|
| |\ \ \
| | | | |
| | | | | |
Unquote templates, add a warning instead.
|
| |/ / / |
|
| |\ \ \
| | | |/
| | |/| |
install project app plugins after discovering them not before
|
| |/ / |
|
| |\ \
| | | |
| | | | |
only apply default and prod profile to dependencies
|
| | | | |
|
| |\ \ \
| | | | |
| | | | | |
Fix windows stuff
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
- robocopying a directory into another directory recursively expects the
directory name to be properly mapped onto the destination, otherwise
all the files are copied into the given path. This patches things so
a directory-to-directory robocopy works as expected in a linux mindset
so tests pass
- the test for canonical paths didn't expect a windows environment at
all; the test (and library) is modified to be consistent in that
environment: always with a native format and with proper support of
drive letters.
|
| | | |/
| | |/| |
|
| |\ \ \
| | | |/
| | |/| |
only need to compare ref and not ref+url in git resource
|
| |/ / |
|
| |\ \
| | |/
| |/| |
warn if the directories `eunit' or `ct' show up in `src_dirs'
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
if these directories actually exist they'll be added to the path ahead
of the release/standard distribution directories and they'll break eunit
and/or ct execution
fixes #950
|
| |\ \
| | |/
| |/| |
contributors -> maintaiers in template app data
|
| |/
| |
| |
| |
| | |
hex.pm is now using maintainers instead of contributors in metadata.
Templates should be updated to reflect it.
|
| |\
| | |
| | | |
Allow bootstrap to pick up existing Hex cache and deps
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This detects existence of Hex registry at
$HOME/.cache/rebar3/hex/default/registry and skips "rebar3 update" step.
It also detect presence of bootstrap dependencies in _build/default/lib/
and skips fetching them.
|
| |\ \
| | | |
| | | | |
allow ct suites to be specified at root of project (or root of app)
|
| | | | |
|
| | | |
| | | |
| | | |
| | | | |
this allows repeated test suite names across apps without conflicts
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
previously rebar3 dropped suites declared at the root of the project (via
`--suite=whatever_SUITE' probably) and warned. this was because the compiler
would recursively copy and compile everything in the directory indicated by
the test suite. this changes the copy mechanism to only copy erl source files
and directories that end with `_SUITE_data' into the `extras' dir in `_build'
|
| | | | |
|
| |\ \ \
| | | | |
| | | | | |
convert ~> versions to highest matching
|
| | | | | |
|
| |\ \ \ \
| | | | | |
| | | | | | |
Bump cth_readable to 1.1.1
|
| |/ / / /
| | | | |
| | | | |
| | | | | |
This fixes a typo that could cause failure in some test runs.
|
| |\ \ \ \
| | |/ / /
| |/| | | |
Upgrade relx to v3.11.0
|
| |/ / / |
|
| |\ \ \
| | |/ /
| |/| | |
Plugin templates
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This lets a plugin define templates to be loaded:
$ rebar3 new
...
proper (plugin): A basic PropEr suite for an OTP application
...
$ rebar3 new help proper
proper:
plugin template (...)
Description: A basic PropEr suite for an OTP application
Variables:
name="suite" (...)
...
→ rebar3 new proper fakesuite
===> Writing test/prop_fakesuite.erl
In this case, proper is a fake template file I've put by hand in
_build/default/plugins/rebar3_proper/priv/<somename>/, meaning it will
only work as far as it's called from the project's root.
The priority order of plugins is now .config > plugin > built-in, such
that someone could ensure plugins do not crush their own private
templates, but also that custom or plugin templates do overtake built-in
ones. It used to be Built-in > .config only.
Templates are searched for recursively in the priv/ directory of
plugins.
|
| |\ \ \
| | |/ /
| |/| | |
support temporary cdn change with HEX_CDN os var
|
| |/ / |
|
| |\ \
| | | |
| | | | |
Fix wrong relative path resolution
|
| | | |
| | | |
| | | |
| | | | |
Tests both absolutes and relative paths.
|
| | |\ \
| | | | |
| | | | |
| | | | | |
schutm-wrong-paths
|
| | | |/ |
|
| |\ \ \
| | |/ /
| |/| | |
A bad template index does not crash; shows warning
|
| | |/
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This should fix #955
The test is implicit as a bad index previously silently crashed rebar3.
By adding the bad index to the `new` suite's files, we can show that
things keep running.
|
| |\ \
| | |/
| |/| |
Add support for total code coverage
|
| | | |
|
| |/ |
|
| |\
| | |
| | | |
symlink mib hrl output in apps `include' directories
|
| | | |
|