Commit graph

309 commits

Author SHA1 Message Date
jguer 991c5b4146
style(parser): simplify ignore option adding 2020-07-26 23:48:33 +02:00
jguer de92f24ce5
style(parser): simplify option creation 2020-07-26 23:40:21 +02:00
jguer 7dd5d7e13e
fix(parser): fix ignores getting... ignored 2020-07-26 23:00:28 +02:00
jguer 45d7da4df6
fix(tests): move runes test to text package 2020-07-24 23:24:53 +02:00
jguer 42f337f2a5
fix(pgp): package key importing 2020-07-11 00:48:30 +02:00
jguer 054a9ac613
refactor(dep): package dep 2020-07-10 02:36:45 +02:00
jguer e47c9584c1
fix(format): gofumt files 2020-07-08 03:40:50 +02:00
jguer a0cff2b622
fix(cmdArgs): reorder args 2020-07-08 03:31:35 +02:00
jguer 7a32ffdd37
fix(cmdArgs): deglobal cmd args 2020-07-08 03:22:01 +02:00
jguer 93719d488c
fix(deps): update parser method 2020-07-07 01:46:39 +02:00
Jonas Bögle 71929cb225
ignore dependency checks on double --nodeps 2020-07-07 01:43:22 +02:00
jguer 2f88858ce6
fix(parser): squash globals into options 2020-07-06 02:02:12 +02:00
jguer 56760e1b7c
fix(parser): add support for stackable parameters. Fixes #1155, Fixes #1280 2020-07-06 00:28:04 +02:00
jguer 36730a41e3
fix(config): package alpmHandle into runtimeSettings 2020-07-05 16:58:35 +02:00
jguer 968b61ac57
fix(config): pack pacmanConf into runtime 2020-07-05 15:34:27 +02:00
jguer 9b49f76bbd
fix(config): vcs filepath fix 2020-07-05 09:36:27 +02:00
jguer 2dc01d8a3e
fix(init): refactor init to use runtime 2020-07-05 09:36:27 +02:00
jguer fb5b6b74fe
fix(parser): package parser 2020-07-05 09:36:27 +02:00
jguer cb8a988701
fix(news): package news and begin settings 2020-07-05 09:36:27 +02:00
Giftpflanze fff9d74764 Fix "%s is up to date -- skipping" message formatting 2020-07-05 09:35:52 +02:00
jguer d0450179f9
fix(usecolor): usecolor belongs to text. remove deprecated 2020-06-26 09:03:45 +02:00
jguer d003e96e07
fix(ci): fix env propagation
fix broken ci artifact download
2020-06-13 19:49:57 +02:00
jguer 732f1a5412
feat(localization): wrap all translatable strings 2020-05-05 19:21:42 +02:00
jguer 9fccdcb30f
fix(ci): implement stricter linting settings 2020-05-02 16:17:20 +02:00
Ferdinand Bachmann 023c742490 install.go: check if packages exist before trying to install them
Sometimes *-debug packages generated by makepkg are listed in
`makepkg --packagelist`, but are not built when running `makepkg`.

This is the case when no debug info sections could be found in the package,
which is often the case for `python-*` packages, like `python-bashlex`.
--
2020-05-01 17:59:58 +02:00
Ferdinand Bachmann 4f35c2c4fe install.go: swap if branches for readability 2020-05-01 17:59:58 +02:00
Ferdinand Bachmann 873b2db591 install.go: fix linter failure
(personal note: I don't believe this helps readability in this case,
"fixing" this to allow merge checks to pass)
2020-05-01 17:59:58 +02:00
Ferdinand Bachmann 328c561230 install.go: also install *-debug packages if built by makepkg
fixes #1190
2020-05-01 17:59:58 +02:00
morganamilo ab956ea3d2
Hide warnings for ignored packages 2019-11-11 07:15:27 +00:00
morganamilo f2959922a7
Remove tar support
tar is slower and harder to diff. I doubt any one still uses it intentially.

There's a chance some people have not cleared their cache in two years
and still have tar based packages around. But forcing them to clear
their cache is not a big deal at all.
2019-11-11 02:57:14 +00:00
morganamilo 3c996e5235
Ignore errors while diffing
std{out,err} all passed to the call so errors should print just as
before, the only difference is now yay will not abort after an error
occurs. We always provide a confirmation dialog after viewing diffs so
this should be safe.
2019-11-03 07:01:51 +00:00
morganamilo b60a888981
Simplify stringset function names
Now that stringset has its own module we can use more basic function
names while keeping it obvious what it does.
2019-10-16 23:18:04 +01:00
morganamilo dacd77012c
Move multierror to its own module
types is pretty generic as a module name, this should be split into
seperate modules.
2019-10-16 23:18:04 +01:00
morganamilo cff358d5d6
Move intrange to its own module
types is pretty generic as a module name, this should be split into
seperate modules.
2019-10-16 23:18:04 +01:00
morganamilo f2579f26a3
Move stringset to its own module
types is pretty generic as a module name, this should be split into
seperate modules.
2019-10-16 23:18:04 +01:00
morganamilo 4d91acc749
Re-add --batchinstall and fix dep issues 2019-10-16 20:59:52 +01:00
Jguer c180fa8d19
PkgbuildDiffs use MultiError now to accumulate errors instead of breaking execution at any error 2019-10-13 23:23:55 +01:00
Jguer a591b33262
Add errguards throughout the code to enable golangci-lint 2019-10-13 20:56:27 +01:00
Loic Reyreaud 7ee206f36e
Implement proper diff display
As raised in #994, diff display was not proper when interrupting during
download or diff review.

This commit introduce:
- Add a ref in the git tree named "YAY_DIFF_REVIEW" which is set to the last
diff reviewed by the user.
- Change the function displaying diff to user to make proper use of this
new ref. If the ref does not exist in the git tree, it will display the
diff from origin to HEAD@{upstream}.
- Add a function updating the YAY_DIFF_REVIEW after it has been reviewed
by user. It uses the `toDiff` list in the `install` function.
- Add utils function related to handling this change in download.go.

This change only consider diff reviewed to update the YAY_DIFF_REVIEW ref.
If a user does not enable review, the ref will not be updated and the
user will be prompted for review when he enables diff review.

Signed-off-by: Loic Reyreaud <reyreaud.loic@gmail.com>
2019-10-07 13:59:17 +02:00
Jguer bf89b3383c
Move IntRange definition to types package 2019-10-05 19:23:13 +01:00
Jguer b01790f752
Moved StringSet definition to types package 2019-10-05 18:39:31 +01:00
Jguer 9e205eef4b
Move MultiError to types package 2019-10-05 17:35:46 +01:00
Jguer 5fa3557817
Store completions in yay's cache folder instead of build directory 2019-10-05 02:10:15 +01:00
Jguer c5c2e906d3
Move completion to submodule 2019-10-05 02:02:30 +01:00
Jguer 2214bc0cb2
Revert "Merge pull request #778 from Morganamilo/group-transactions"
This reverts commit 6cd47dd83c, reversing
changes made to 16fddae8b6.

Signed-off-by: Jguer <me@jguer.space>
2019-10-04 19:42:17 +01:00
morganamilo 80e66ce479
Allow many aur packages to be installed at once.
After building an AUR package don't install it right away. Instead queue
it for install.

Then when a package comes along that does not have all of its
dependencies satisfied, install the queued packages before builting.

This allows a standard AUR update to be done with one transaction, while
building AUR packages with long dependency chains will work as normal.

This feature is behind the `--batchinstall` flag.
2019-06-17 14:25:59 +01:00
morganamilo e01af5dfd6
Fixup asdeps logic 2019-06-17 13:15:54 +01:00
morganamilo c717b61e69
Extract dep and exp setting to their own functions 2019-06-17 13:08:23 +01:00
morganamilo 5ac36ad97e
Ensure global pacman arguments are always used 2019-06-17 13:03:57 +01:00
Jordan Day 37f3309917 Defer clean and remove make 2019-06-11 08:54:24 -05:00
morganamilo 112046853b
Use correct case on go-alpm import 2019-04-23 16:53:20 +01:00
Jguer e1bc834f5b
Fix #918. Get back in the groove 2019-03-29 22:05:04 +00:00
Motkov Kirill 14ac756298 Code improvements
- Removed yoda condition.
- Renamed/removed variables which shadows built-in names.
- Rewrited if-else-if-else chains to switch statements.
2019-03-10 16:36:01 +03:00
morganamilo 895788e01b
Update go-alpm 2019-02-14 20:45:18 +00:00
morganamilo 5ce4a49687
Update go-alpm 2019-02-04 16:56:02 +00:00
morganamilo 4ab7814af1
Revert "Merge pull request #767 from Morganamilo/merge-dep-pool-order"
This reverts commit c2aeb4bc4e, reversing
changes made to 1f1cee7023.
2019-01-15 18:43:46 +00:00
Jguer 5bcadc58ac
Fix tests and prepare for release 2018-12-01 15:03:46 +00:00
Joe Groocock 52bf777e67
Print errors on stderr
This makes a start on fixing https://github.com/Jguer/yay/issues/715
It is by no means a complete solution, but instead a start
2018-11-20 22:27:30 +00:00
Jguer 2ed7df4f5a
Unexport consts. Make default a literal
Signed-off-by: Jguer <me@jguer.space>
2018-10-22 21:00:16 +01:00
Anna c2aeb4bc4e
Merge pull request #767 from Morganamilo/merge-dep-pool-order
Merge dep pool order and rework inner conflicts
2018-10-18 10:15:40 +01:00
dvejmz d42f737849 Handle libalpm callbacks when checking DB satisfiers for a package
Hide provider menu when checking for the existence of a package in
the repos
2018-10-16 23:55:35 +01:00
morganamilo 4ff36fbd4b
Use depSolver in install 2018-10-13 17:04:21 +01:00
morganamilo 704e8406d1
Merge depOrder with depSolver
merge both dependency resolving parts into depSolver. The name was
choosen simply to not colide with the current code.

depSolver works but it not implemented in the install process and is
missing conflict checking.
2018-10-13 17:04:21 +01:00
Anna 6ee14d44b8
Merge pull request #738 from Morganamilo/fix#736
Rework cleanafter
2018-10-04 09:18:57 +01:00
Tom Swartz ae7400890d Fix Typos 2018-10-02 16:30:18 -04:00
morganamilo 98e6caefef
Fix dangling src/ directory
Yay first calls 'makepkg --nobuild -fC' to update the pkver. Later on we
call 'makepkg -cf --noectract --noprepare --holdver' to actually build
the package.

Inbetween these two calls we keep the already extracted
sources to save time on the reextract and duplicated call to prepare
(pkgbuilds should not require user input but things such as linux-ck do
and calling prepare twice will actually cause them to promt twice)

We also have two checks. First we see if the package is already
installed and up to date (--needed) and secondly we check if the
package is already built.

If any of these conditions are met we skip building the package. This
leaves a dangling src/ directory as 'makepkg -c' was never ran.

Now if these conditions are met tell makepkg to cleanup and exit.
2018-09-27 15:55:43 +01:00
morganamilo bf0ab3216a
Leave VCS files when using clean after 2018-09-27 15:55:43 +01:00
morganamilo 5c7d6fa3be
Fix --rebuild logic 2018-09-04 20:03:27 +01:00
morganamilo 1beeaaf299
Limit download concurrency to 25 threads 2018-09-04 20:03:23 +01:00
morganamilo 2b6a73041f
Fix redownload logic
--redownload was reversed and redownloaded the deps instead of the
targets.
2018-09-04 19:39:15 +01:00
morganamilo 0454e8918b
Add --aururl 2018-08-19 05:10:24 +01:00
Anna 23ff1e79df
Merge pull request #642 from Morganamilo/needed
skip build when package is up to date and --needed
2018-08-18 21:02:40 +01:00
morganamilo 0f324b37a6
Only print the clean number menu when needed
The input is only asked when needed, but the numbered package list was
still printed either way. This fixes it so the list is not shown unless
needed.
2018-08-18 20:50:20 +01:00
morganamilo aca65e743a
parsePackageList: include pkgrel in version 2018-08-18 17:54:20 +01:00
morganamilo 907bf3a30e
skip build when package is up to date and --needed
Before --needed was left purerly to pacman. The problem with this is
that if a package is not in the cache, it will end up being build just
for pacman to skip over the install.

Now Yay will handle this and skip the build and install if --needed is
used. The inital clone and pkgver bumb is still donw.
2018-08-18 17:54:17 +01:00
morganamilo cba56c3f9e
Use downloadPkgbuilds for -G 2018-08-18 17:12:42 +01:00
morganamilo 40776fa184
implement formatPkgbase as Base.String
Now that Base is its own type, it is much neater to have this as its
stringer function.
2018-08-18 17:05:12 +01:00
morganamilo afee400662
Use formatPkgbase with getIncompatible
There was a possibly that getIncompatible could be broken when working
with split packages. After looking into it, this does not seem to be the
case, as long as we only work with pkgbases.

arch may be overriden inside of a package function. The global arch
array may be 'any' but package_foo could say arch=('x86_64'). If you
were running arm then should yay warn about this?

I have decided the answer is no. This is because makepkg doesn't care.
It would seem makepkg only checks the global arch array. This leads me
to believe that the global array should contain a the required arch.

Therefore the correct way to do the former example would be to declare
the global arch as 'x86_64' and then override package_bar with 'any'.

So all that we should do is properly use formatPkgbase to list all the
packages under the base.
2018-08-18 17:05:12 +01:00
morganamilo cd21298355
Return srcinfos instead of using it as a parameter
Also, we do not do a pre and post pkgverbump pass anymore, so theres no
need to name it stale.
2018-08-18 17:05:12 +01:00
morganamilo 29fdf23f50
Remove unneeded code, consistent function names 2018-08-18 17:05:12 +01:00
morganamilo 43feb12c85
Merge handles.Aur and depOrder.Bases
depOrder.Aur contains the order in which AUR packages are to be
installed. While depOrder.bases contains the actual package data
organized by pkgbase.

deoOrder.AUR is kind of counterintuitive, as it only contains one
package from each package base.

For example if you were to install libc++{,abi,experimental},
depOrder.Aur would only contain one of those packages, which one
actually being quite random. depOrder.Bases[pkg.Pkgbase] will then be
looked up and everything under that slice would be installed.

This means that the only real use depOrder.Aur has, is to give the
pkgbase. So to cut out the middleman, lets merge .Aur and .Bases into
a single field.

Doing this has also heped to spot som subtle bugs:

Fix subtle split package errors.

The number menus now correctly list and respect (installed) for bases
that have atleast one of their packages installed.

Entering package names in number menus now always expects the pkgbase
name instead of the random package which happened to make it into .Aur.

--rebuild and --redownload correctly handles split packages.

formatPkgbase is also used more.
2018-08-18 17:05:12 +01:00
morganamilo 3dc350d3ac
Simplify formatPkgBase
Only pass the packages belonging to the desired pkgbase. Before our
entire list of every pkgbase had to be passed, as well as an example
package from the base we are looking for.

This lets use use formatPkgBase easier in other places outside of
install.

Many of the functions in install could also be simplified in a similar
way, although that has not been done in this commit.
2018-08-15 20:11:19 +01:00
morganamilo 284c87afb6
Parallelize gendb 2018-08-09 16:25:14 +01:00
morganamilo ff5ed12181
Parallelize pkgbuild download 2018-08-09 16:25:14 +01:00
morganamilo 08ac9036ad
Ensure AUR upgrades actually use the AUR
Yay's dependency resolving takes provides into account. When upgrading
AUR package 'foo', if a repo package provides 'foo' then yay would get
confused and pull in the package providing 'foo' instead of the AUR
package.

This commit ensures AUR upgrades always exclusively check the AUR.
2018-08-03 23:15:01 +01:00
morganamilo 4a254303c5
Don't show .SRCINFO in diffs 2018-08-02 15:21:01 +01:00
morganamilo 2a60dd7052
Remove unneeded variables 2018-07-30 14:14:16 +01:00
morganamilo 9c882614a3
Rework completion
Bash seperates on whitespace, so the fish completion file
actually works for bash and zsh. So remove the concept of shells
entirley and just use the singular aur_sh.cache file.

If for some reason output without the repository data is needed, the
user could always just pipe it into awk like so
`yay -Pc | awk '{print $1}'`. Or perhaps a --quiet option could be added
where yay will strip the output itself.

The completion cache now updates when installing AUR packages. This is
done as a goroutine with no wait groups. This ensures the program will
never hang if there is a problem.

The completion is stil updated during -Pc but as long as an AUR package
has been installed recently it should not need to update.

The cache will now also wait 7 days instead of 2 before refreshing.
A refresh can be forced using -Pcc.
2018-07-26 13:54:10 +01:00
morganamilo 0ebaa8a750
Don't print nothing to do every time
When using nocombinedupgrade "there is nothing to do" is printed when
insinstalling repo packages. This is because as far as AUR
installer is concerned, there is nothing to do. Instead only print that
when doing a sysupgrade.
2018-07-24 00:13:34 +01:00
morganamilo e28f4f3431
Refactor continueTask()
The main reason behind this is for future localisation. yes and no can
be set to the localized equivalent and it should just work.

This Refactor also changes the function in ways which make it much less
confusing.

The param is no longer reversed and changed to a boolean. Before you had
to pass in Yy to get a default of no and vice versa.

The function now retuens false for no and true for yes. Before it would
return true if the default option was choosen.
2018-07-23 13:49:45 +01:00
morganamilo ec48698f35
Add --{no,ask}removemake 2018-07-21 14:20:00 +01:00
Anna 23e0064382
Merge pull request #569 from AlexWayfer/unify_output_with_pacman
Make output more similar to `pacman`s
2018-07-19 23:02:59 +01:00
Alexander Popov 900dfd1851
Make output more similar to pacmans
Before:

* Empty line after `Searching AUR`
* `There is` starts with capital letter without space before

```
> yay --combinedupgrade -Syu
:: Synchronizing package databases...
 core is up to date
 extra is up to date
 community is up to date
 multilib is up to date
:: Searching databases for updates...
:: Searching AUR for updates...

:: Starting full system upgrade...
 there is nothing to do

> yay --nocombinedupgrade -Syu
:: Synchronizing package databases...
 core is up to date
 extra is up to date
 community is up to date
 multilib is up to date
:: Starting full system upgrade...
 there is nothing to do
:: Searching databases for updates...
:: Searching AUR for updates...

There is nothing to do
```

After:

```
> yay --combinedupgrade -Syu
:: Synchronizing package databases...
 core is up to date
 extra is up to date
 community is up to date
 multilib is up to date
:: Searching databases for updates...
:: Searching AUR for updates...
:: Starting full system upgrade...
 there is nothing to do

> yay --nocombinedupgrade -Syu
:: Synchronizing package databases...
 core is up to date
 extra is up to date
 community is up to date
 multilib is up to date
:: Starting full system upgrade...
 there is nothing to do
:: Searching databases for updates...
:: Searching AUR for updates...
 there is nothing to do
```
2018-07-20 00:36:06 +03:00
morganamilo d1146de6d5
Show tar diffs as diffs instead of editing
When looking at diffs of packages downloaded as tar achives actually
show a diff instead of opening the files in the ediror. This diff
is against /var/empty so it is not that useful. In realiy this is an
excuse to move the srcinfo parsing back down to after the git merge.

Viewing the build files in the editor requires the .srcinfos to be
parsed to know what .install files are used. Now viewing diffs does not
need the srcinfos so they can be moved to after we git merge.

Before now the srcinfo would have been of the previous version. This is
not much of a problem because we don't really use the srcinfo for much.
Checking the arch and pgpkeys which never really change.

Recently libc++ changed their pgp keys and yay missed that because it
parsed the old srcinfo without the new keys.

Viewing a proper diff for tars can be tossed on the todo by doing
something along the lines of:
	mv pkg{,.old}
	diff pkg{,.old}
	rm -rf pkg.old

But I doubt there are many people out there using tar so it's not much
of an issue.
2018-07-19 22:19:24 +01:00
morganamilo 0196a47ad2
Refactor combinedupgrade code 2018-07-19 20:43:03 +01:00
morganamilo 8427dc3804
Move passToFoo() functions to their own file 2018-07-19 18:48:46 +01:00
morganamilo 473a2de225
Refactor pssToFoo() functions
Previously each call to an external command had two functions.
PassToFoo() and PassToFooCapture(). These functions are always similar
and end up with duplicated code.

So instead have the passToFoo() functions return the cmd itself and
create small helper functions show() and capture() which will run the
command and either forward it to std{out,err,in} or capture the output

Also the saveVCSInfo() function which was called after every makepkg
call is now only called after the pacman -U succeeds.
2018-07-19 18:37:28 +01:00
morganamilo d4d36397fe
Show .install files with pkgbuilds when editing 2018-07-18 09:24:57 +01:00
morganamilo f3635cd14d
Fix group installs for --nocombinedupgrade 2018-07-16 17:03:39 +01:00
Anna d6b862357d Replace gopkgbuild with go-srcinfo (#528)
* Prefer vercmp over gopkgbuild

* Replace gopkgbuild with go-srcinfo
2018-07-16 15:28:18 +01:00