Commit Graph

85 Commits

Author SHA1 Message Date
Steven Penny aea773d829 Fix #29 Fix #30 2015-01-02 12:21:20 -06:00
Steven Penny cc9b2bdf0d functions: download set-cache set-mirror apt-install apt-remove begin charlie
Here are the changes, by line number:

- remove "-c", keep long version
- remove "-f" and "--file". I have never used this, and apt-get does does have
  it
- remove "-m", keep long version
- remove "--help", you can get help by just "apt-cyg"
- lowercase ARCH variable, typically uppercase is for exported variables
- use readonly variables where applicable
- remove setup.ini-save, I see no point in this, and setup.exe does not use it
- go back to using "[" over "[[", more portable
- declare all variables local in "begin" function, this will prevent creation of
  global variables. Child functions still have access to local variables, but
  the only fix to that is running every function in a subshell, which is also
  not ideal
- use "let" over "(("
- stop using awk ENVIRON array. This became a problem because the array is only
  populated with exported variables. We do not want variables being passed to
  child "apt-cyg" processes just to play nice with awk
- use "return" in functions instead of "exit", this will allow proper running of
  "charlie" function
- add "check-packages" to some functions
- stop creating "desc" files, you can parse this information out of setup.ini
  easy enough, and setup.exe does not create them either
- generate md5 file from setup.ini, this way you can use it with md5sum instead
  of stdin
- utilize "wget -rnH" to create directories
- stop running "type -P" when searching for a file with "apt-cyg search".
  apt-get does not do this and it could be confusing
- break "--cache" and "--mirror" out of the case statement and into their own
  functions. this will make the case statement less unwieldy
- write directly to "installed.db" using "awk -i inplace"
- function "charlie": this check for any leaked global variables and prints them
  to stdout just before the script finishes. this should help with debugging
2014-12-29 16:36:17 -06:00
Steven Penny c325aee5a6 modified: apt-cyg 2014-12-27 23:33:20 -06:00
Steven Penny db7bada3d2 refactor remove function
- use one awk command instead of two, to determine if package is not removable
- save comparison files to /etc/setup instead of /tmp
- save as "essential.lst" and "$pkg.lst" respectively
- use warnings where appropriate
- new file list logic
  - extract file list
  - if package is essential, remove file list and exit
  - if package is not essential, remove package, remove file list and continue
- new delete logic
  - remove all files
  - remove empty directories
- utilize awk inplace where appropriate
2014-12-27 22:00:18 -06:00
Steven Penny dcd9b3d56d Fix #12 2014-12-26 04:41:18 -06:00
Steven Penny b1162d9d95 modified: apt-cyg 2014-12-25 13:41:35 -06:00
Steven Penny 61ae91a00a Remove wget dependency
apt-cyg has had a long standing circular dependency with wget. This is because
Base Cygwin does not include wget or curl. I have mentioned before workarounds
to this

41e1d91172

However none were ideal. I have since discovered lynx, which can be used in a
pinch to download files

http://unix.stackexchange.com/a/83987

lynx has these features

- pure command line, unlike setup-x86_64
- works with "https://" URLs, unlike /dev/tcp
- comes with Base Cygwin, unlike wget/curl

If wget is not installed, lynx will be used as a fallback with a warning
printed.
2014-12-20 02:42:40 -06:00
Steven Penny b6cbda6fa5 rdepends: find-like output
e9bea37b95
2014-12-16 00:34:42 -06:00
Steven Penny b6f9d536db minor edit 2014-11-14 19:23:18 -06:00
Steven Penny 23c2db7a28 searchall: fix split lines
http://cygwin.com/ml/cygwin/2014-11/msg00287.html
2014-11-12 18:53:12 -06:00
Steven Penny 9b5de3f26c searchall: account for broken lines
http://cygwin.com/ml/cygwin/2014-11/msg00278.html
2014-11-12 15:18:43 -06:00
Steven Penny e9bea37b95 depends: find-like output
when dealing with package dependency woes, such as

http://cygwin.com/ml/cygwin/2014-10/msg00563.html

The current "depends" tree method fails, because it only shows the packages, not
the dependency paths. These paths are necessary to solve the "shortest path
problem"

http://wikipedia.org/wiki/Shortest_path_problem

Now, every possible dependency path will print from the chosen package. Combined
with category search you can run searches such as

    apt-cyg category Base |
    apt-cyg depends |
    awk '/perl$/ {print length,$0}' |
    sort -n

Solving the path problem in seconds.
2014-11-11 03:15:24 -06:00
Steven Penny 2138f54544 check-packages 2014-11-01 00:30:30 -05:00
Steven Penny 8eb315174e Support standard input
Can now pipe package names to apt-cyg, example

    echo bash | apt-cyg show

If --file is provided as well, it will override stdin

    echo bash | apt-cyg show --file foo.txt

Note the Linux analog "apt-cache show" does not provide this functionality.
2014-10-31 11:38:13 -05:00
Steven Penny 83cac7847e category command
This is similar to the command

    aptitude search '?section(shells)'

http://askubuntu.com/a/473511
2014-10-31 00:06:52 -05:00
Steven Penny 7bee9222bc Never print "No packages found" with apt-cyg list 2014-10-26 20:30:30 -05:00
Steven Penny 7bec32e1d8 Consistent function declarations 2014-08-04 11:14:43 -05:00
Steven Penny 73702ab805 Fix #18 2014-06-28 02:20:26 -05:00
Steven Penny 8c91a53a7e Write to and read from setup.rc
"last-cache" and "last-mirror" will now be written to and read from setup.rc,
instead of the non-standard /etc/setup/last-{cache,mirror}.
2014-06-18 01:34:05 -05:00
Steven Penny 12f39475ab Minor fix 2014-06-16 00:56:06 -05:00
Steven Penny b1ad202938 Refactor download fucntion
Some packages were being downloaded to wrong location. For example "gcc-core" is
supposed to be found at

    release/gcc/gcc-core

However it was being downloaded at

    release/gcc-core

Packages will now be downloaded as directed by "setup.ini"
2014-06-16 00:31:43 -05:00
Steven Penny 72fe905e4e download command
This is similar to the "apt-get --download-only install" command.
2014-06-15 18:53:29 -05:00
Steven Penny 8882af76ca Revise usage 2014-06-15 16:17:50 -05:00
Steven Penny 4af30ccb88 Stop using google search
I discovered today that not all packages have been indexed by Google. For
example the 64-bit "gcc-core" which provides "gcc.exe"

http://cygwin.com/packages/x86_64/gcc-core

This search

http://google.com/search?q=%22installed+binaries%22+%22usr%2Fbin%2Fgcc.exe%22+x86_64

currently only yields the "gcc-debuginfo" package.
2014-06-15 14:17:03 -05:00
Steven Penny 59c523600f Simplify proxy check 2014-06-14 19:44:49 -05:00
Steven Penny 67658a514a Improve JSON parser 2014-06-14 19:07:57 -05:00
Steven Penny a58f4b69ef JSON function 2014-06-14 16:46:18 -05:00
Steven Penny ed6092a005 New proxy logic
1. create proxy file if not exist
2. create array from proxy file if not exist
3. if array is empty download proxy file
4. shift continue unless country is US
5. shift continue if proxy is slow
6. shift continue if proxy is blocked by Google
7. print successful proxy
8. save remaining proxies to file
2014-06-14 13:28:46 -05:00
Steven Penny 062883c89f --version: fix license 2014-06-12 17:12:10 -05:00
Steven Penny 143e7a816f Change proxy list 2014-06-11 22:04:43 -05:00
Steven Penny 71a3ce0cff Prep for new proxy 2014-06-11 22:01:13 -05:00
Steven Penny b11ab2daa5 searchall: filter out "Index of"
"Index of" pages do not contain list of files, only list of packages.
2014-06-09 07:13:53 -05:00
Steven Penny 29cd84482b Stop using cygwin.com for searchall
After reading this message
http://cygwin.com/ml/cygwin/2014-05/msg00482.html

I set out to find a better option. I found a solution here
http://stackoverflow.com/a/10554535

Granted this is a deprecated API, if it actually dies it will be easy enough to
replace with a scraper.
2014-06-09 05:32:02 -05:00
Steven Penny 81c64c992d Golf the ARCH code 2014-06-05 00:36:44 -05:00
Steven Penny e5abc1cc79 Use proper array for packages
I think package names are not allowed to contain spaces anyway, but if they are
it would cause apt-cyg to fail spectacularly. Some unquoted

    $pkg

are still lingering but that is an easy fix.
2014-06-04 21:25:14 -05:00
Steven Penny e989ec917e Minor edit 2014-06-03 23:55:32 -05:00
Steven Penny 6fc1dacd30 Support /dev/clipboard 2014-06-03 23:51:18 -05:00
Steven Penny a6d4d8f709 Minor edit "usage" 2014-06-01 18:35:21 -05:00
Steven Penny 1272ac41bc Use sed to print blocks of text
The array method works fine, but sed method uses less characters and is easier
to read. Also it does support indenting, it would just need to be modified to

    sed '1d;$d;s/  //'

or similar.
2014-06-01 18:30:11 -05:00
Steven Penny 200ce9069d Search "devel" packages unless looking for ".exe"
apt-cyg searchall will now only exclude "devel" packages if you are searching
for ".exe" or similar.
2014-05-31 11:25:12 -05:00
Steven Penny c8fb2604da Improve "depends" function
- function will now print the packages at proper depths
- added newline between each result if called with multiple packages
2014-05-28 23:26:51 -05:00
Steven Penny 390024541d listfiles download if necessary
listfiles was only working on packages that were already installed. You should
be able to list a packages files even if it is not installed, especially if it
has already been downloaded.

The function will now download the package if necessary, without installing, in
order to view the package files.

Other small changes

- conditional echo instead of piping to "head" in certain loops
- download function was exiting upon failure, when really it should just skip to
  next package
- simplified a grep statement
2014-05-27 23:18:48 -05:00
Steven Penny 13a9f583b4 Download function
Package download functionality has been moved into its own private function, to
support future updates.
2014-05-26 00:04:00 -05:00
Steven Penny fbf531e638 Remove case statement
by using functions instead of case statement

- remove level of indentation
- allow use of local variables via "local" keyword
2014-05-24 20:35:41 -05:00
Steven Penny ec36e46faf Change default cache location
apt-get uses /var/cache to store downloaded files

http://askubuntu.com/q/178806/where-do-packages-installed-with-apt-get-stored

This makes sense with Cygwin as well because Cygwin already has a /var/cache
which is almost empty to start, compared to /setup which does not exist outside
of apt-cyg.
2014-05-24 15:00:44 -05:00
Steven Penny 6a62641d94 Revise some awk statements 2014-05-24 14:56:57 -05:00
Steven Penny 73512e40cb Restore noscripts option
This is needed as per @kou1okada comment on 44e89c6
2014-05-21 23:44:30 -05:00
Steven Penny e0f31ae249 Improve "depends" awk statement, part deux 2014-05-21 21:23:28 -05:00
Steven Penny d124c46078 Improve "depends" awk statement
We can save a set of braces by using "continue". Also removed a spurious
variable assignment.
2014-05-20 22:51:36 -05:00
Steven Penny a1cf729b51 depends command
This is similar to the "apt-cache depends" command.
2014-05-20 00:51:37 -05:00