-u makes it upgrade all apps which can be upgraded, which is a common
operation
However, we don't want device.txt to run a full install + upgrade +
uninstall cycle again, as that's too slow. For that reason, introduce an
dry-run flag in install, so that we can check that -u would do the right
thing.
Fixes#22.
This has multiple advantages. For one, we can simplify our code, as we
can use globals like os.Stdout and flagsets directly.
It will also be easier to write parallel tests which will run faster, as
each testscript runs concurrently.
While at it, start using $HOME if set, as that is often better than
blindly relying on the current user's home directory via cgo.
Go 1.11 and 1.12 add os.UserCacheDir and os.UserHomeDir respectively, so
soon enough we'll be able to replace most of basedir with those.
Finally, stop having the tests require on the f-droid.org repository to
work. Committing under 2MB of data is plenty to get the files we need in
a static local http server, which makes the tests much faster and not
depend on an internet connection.
Follow-up commits will finish porting the rest of the tests.
This way, users can simply do:
go get mvdan.cc/fdroidcl
Instead of the repetitive:
go get mvdan.cc/fdroidcl/cmd/fdroidcl
The cmd/... pattern only makes sense if the repository has many
commands, or if the name of the repository and command don't match.
Neither is the case here.
That is, downloading /index-v1.jar instead of /index.jar.
This lets us clean up some code, as the old format was a bit more
complex and made use of some slightly weird encodings. But most
importantly, the new index format includes some extra information that
we might start using soon.
This way, we avoid linking an executable, and running the tests is also
faster. This shaves the test time by half, from ~9s to ~4s.
This also means we can use tooling better. For example, the cover tool
now works properly, reporting a coverage of nearly 60%.
I have been moving all github.com/mvdan/... packages to mvdan.cc/...
recently - do this one too.
basedir was only really used by these packages, so merge it in to
simplify building and packaging the tool.