├── .gitattributes ├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md ├── PULL_REQUEST_TEMPLATE.md └── workflows │ ├── codeql-analysis.yml │ └── create-release.yml ├── .gitignore ├── .gitmodules ├── .pyup.yml ├── .travis.yaml ├── .vscode └── settings.json ├── AUTHORS.md ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── MANIFEST.in ├── Makefile ├── Pipfile ├── README.rst ├── TODO ├── config ├── askpass.applescript ├── com.macdaily.askpass.plist ├── com.macdaily.{MODE}.plist ├── confirm.applescript ├── daemon.applescript └── dailyrc.ini ├── doc ├── archive.rst ├── bundle.rst ├── cleanup.rst ├── config.rst ├── dependency.rst ├── help.rst ├── img │ ├── Python.png │ ├── askpass.png │ └── confirm.png ├── install.rst ├── launch.rst ├── logging.rst ├── miscellaneous.rst ├── postinstall.rst ├── reinstall.rst ├── rst │ ├── macdaily-archive.rst │ ├── macdaily-cleanup-brew.rst │ ├── macdaily-cleanup-cask.rst │ ├── macdaily-cleanup-npm.rst │ ├── macdaily-cleanup-pip.rst │ ├── macdaily-cleanup.rst │ ├── macdaily-config.rst │ ├── macdaily-dependency-brew.rst │ ├── macdaily-dependency-pip.rst │ ├── macdaily-dependency.rst │ ├── macdaily-help.rst │ ├── macdaily-install-apm.rst │ ├── macdaily-install-brew.rst │ ├── macdaily-install-cask.rst │ ├── macdaily-install-gem.rst │ ├── macdaily-install-mas.rst │ ├── macdaily-install-npm.rst │ ├── macdaily-install-pip.rst │ ├── macdaily-install-system.rst │ ├── macdaily-install.rst │ ├── macdaily-launch.rst │ ├── macdaily-logging-apm.rst │ ├── macdaily-logging-app.rst │ ├── macdaily-logging-brew.rst │ ├── macdaily-logging-cask.rst │ ├── macdaily-logging-gem.rst │ ├── macdaily-logging-mas.rst │ ├── macdaily-logging-npm.rst │ ├── macdaily-logging-pip.rst │ ├── macdaily-logging-tap.rst │ ├── macdaily-logging.rst │ ├── macdaily-postinstall.rst │ ├── macdaily-reinstall-brew.rst │ ├── macdaily-reinstall-cask.rst │ ├── macdaily-reinstall.rst │ ├── macdaily-uninstall-brew.rst │ ├── macdaily-uninstall-cask.rst │ ├── macdaily-uninstall-pip.rst │ ├── macdaily-uninstall.rst │ ├── macdaily-update-apm.rst │ ├── macdaily-update-brew.rst │ ├── macdaily-update-cask.rst │ ├── macdaily-update-gem.rst │ ├── macdaily-update-mas.rst │ ├── macdaily-update-npm.rst │ ├── macdaily-update-pip.rst │ ├── macdaily-update-system.rst │ ├── macdaily-update.rst │ └── macdaily.rst ├── uninstall.rst └── update.rst ├── macdaily ├── __init__.py ├── __main__.py ├── api │ ├── archive.py │ ├── bundle.py │ ├── cleanup.py │ ├── config.py │ ├── dependency.py │ ├── help.py │ ├── install.py │ ├── launch.py │ ├── logging.py │ ├── postinstall.py │ ├── reinstall.py │ ├── uninstall.py │ └── update.py ├── cli │ ├── archive.py │ ├── bundle.py │ ├── cleanup.py │ ├── config.py │ ├── dependency.py │ ├── help.py │ ├── install.py │ ├── launch.py │ ├── logging.py │ ├── postinstall.py │ ├── reinstall.py │ ├── uninstall.py │ └── update.py ├── cls │ ├── bundle │ │ ├── dump.py │ │ └── load.py │ ├── cleanup │ │ ├── brew.py │ │ ├── cask.py │ │ ├── npm.py │ │ └── pip.py │ ├── command.py │ ├── dependency │ │ ├── brew.py │ │ └── pip.py │ ├── install │ │ ├── apm.py │ │ ├── brew.py │ │ ├── cask.py │ │ ├── gem.py │ │ ├── mas.py │ │ ├── npm.py │ │ ├── pip.py │ │ └── system.py │ ├── logging │ │ ├── apm.py │ │ ├── app.py │ │ ├── brew.py │ │ ├── cask.py │ │ ├── gem.py │ │ ├── mas.py │ │ ├── npm.py │ │ ├── pip.py │ │ └── tap.py │ ├── reinstall │ │ ├── brew.py │ │ └── cask.py │ ├── uninstall │ │ ├── brew.py │ │ ├── cask.py │ │ └── pip.py │ └── update │ │ ├── apm.py │ │ ├── brew.py │ │ ├── cask.py │ │ ├── gem.py │ │ ├── mas.py │ │ ├── npm.py │ │ ├── pip.py │ │ └── system.py ├── cmd │ ├── archive.py │ ├── bundle.py │ ├── cleanup.py │ ├── config.py │ ├── dependency.py │ ├── install.py │ ├── launch.py │ ├── logging.py │ ├── postinstall.py │ ├── reinstall.py │ ├── uninstall.py │ └── update.py ├── comp │ └── macdaily.bash-completion ├── core │ ├── apm.py │ ├── brew.py │ ├── cask.py │ ├── gem.py │ ├── mas.py │ ├── npm.py │ ├── pip.py │ └── system.py ├── img │ ├── askpass.icns │ └── confirm.icns ├── man │ ├── macdaily-archive.8 │ ├── macdaily-cleanup-brew.8 │ ├── macdaily-cleanup-cask.8 │ ├── macdaily-cleanup-npm.8 │ ├── macdaily-cleanup-pip.8 │ ├── macdaily-cleanup.8 │ ├── macdaily-config.8 │ ├── macdaily-dependency-brew.8 │ ├── macdaily-dependency-pip.8 │ ├── macdaily-dependency.8 │ ├── macdaily-help.8 │ ├── macdaily-install-apm.8 │ ├── macdaily-install-brew.8 │ ├── macdaily-install-cask.8 │ ├── macdaily-install-gem.8 │ ├── macdaily-install-mas.8 │ ├── macdaily-install-npm.8 │ ├── macdaily-install-pip.8 │ ├── macdaily-install-system.8 │ ├── macdaily-install.8 │ ├── macdaily-launch.8 │ ├── macdaily-logging-apm.8 │ ├── macdaily-logging-app.8 │ ├── macdaily-logging-brew.8 │ ├── macdaily-logging-cask.8 │ ├── macdaily-logging-gem.8 │ ├── macdaily-logging-mas.8 │ ├── macdaily-logging-npm.8 │ ├── macdaily-logging-pip.8 │ ├── macdaily-logging-tap.8 │ ├── macdaily-logging.8 │ ├── macdaily-postinstall.8 │ ├── macdaily-reinstall-brew.8 │ ├── macdaily-reinstall-cask.8 │ ├── macdaily-reinstall.8 │ ├── macdaily-uninstall-brew.8 │ ├── macdaily-uninstall-cask.8 │ ├── macdaily-uninstall-pip.8 │ ├── macdaily-uninstall.8 │ ├── macdaily-update-apm.8 │ ├── macdaily-update-brew.8 │ ├── macdaily-update-cask.8 │ ├── macdaily-update-gem.8 │ ├── macdaily-update-mas.8 │ ├── macdaily-update-npm.8 │ ├── macdaily-update-pip.8 │ ├── macdaily-update-system.8 │ ├── macdaily-update.8 │ └── macdaily.8 ├── res │ ├── askpass.applescript │ ├── confirm.applescript │ ├── find.py │ └── magic.py └── util │ ├── compat.py │ ├── const │ ├── macro.py │ ├── string.py │ └── term.py │ ├── exceptions.py │ ├── globals.py │ └── tools │ ├── decorators.py │ ├── get.py │ ├── make.py │ ├── misc.py │ ├── print.py │ └── script.py ├── setup-emoji.py ├── setup-version.py ├── setup.cfg └── setup.py /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] 4 | patreon: jarryshaw # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: pypi/macdaily # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 13 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | 5 | --- 6 | 7 | **Describe the bug** 8 | A clear and concise description of what the bug is. 9 | 10 | **System information** 11 | A clear and concise description of your system information. 12 | - macOS Version: [e.g. Mojave 10.14.4] 13 | - Python Version: [e.g 3.7, 3.6, 3.5, 3.4] 14 | - Python Implementation: [e.g. CPython, PyPy] 15 | 16 | **Traceback stack** 17 | Run MacDaily again with `MACDAILY_DEVMODE=true` set to provide the traceback stack. 18 | 19 | **Expected behavior** 20 | A clear and concise description of what you expected to happen. 21 | 22 | **Additional context** 23 | Add any other context about the problem here. 24 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | 5 | --- 6 | 7 | **Is your feature request related to a problem? Please describe.** 8 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 9 | 10 | **Describe the solution you'd like** 11 | A clear and concise description of what you want to happen. 12 | 13 | **Describe alternatives you've considered** 14 | A clear and concise description of any alternative solutions or features you've considered. 15 | 16 | **Additional context** 17 | Add any other context or screenshots about the feature request here. 18 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ## Please follow the guide below 2 | 3 | - You will be asked some questions, please read them **carefully** and answer honestly 4 | - Put an `x` into all the boxes [ ] relevant to your *pull request* (like that [x]) 5 | - Use *Preview* tab to see how your *pull request* will actually look like 6 | 7 | - [ ] [Searched](https://github.com/JarryShaw/MacDaily/search?q=is%3Apr&type=Issues) for similar pull requests 8 | - [ ] Followed PEP8 coding style 9 | - [ ] Tested with proper test samples 10 | 11 | ### What is the purpose of your *pull request*? 12 | - [ ] Bug fix 13 | - [ ] Improvement 14 | - [ ] New feature 15 | 16 | --- 17 | 18 | ### Description of your *pull request* and other information 19 | 20 |   Explanation of your *pull request* in arbitrary form goes here. Please make sure the description explains the purpose and effect of your *pull request* and is worded well enough to be understood. Provide as much context and examples as possible. 21 | -------------------------------------------------------------------------------- /.github/workflows/codeql-analysis.yml: -------------------------------------------------------------------------------- 1 | name: "CodeQL" 2 | 3 | on: 4 | push: 5 | branches: [master, ] 6 | pull_request: 7 | # The branches below must be a subset of the branches above 8 | branches: [master] 9 | schedule: 10 | - cron: '0 2 * * 6' 11 | 12 | jobs: 13 | analyze: 14 | name: Analyze 15 | runs-on: ubuntu-latest 16 | 17 | steps: 18 | - name: Checkout repository 19 | uses: actions/checkout@v2 20 | with: 21 | # We must fetch at least the immediate parents so that if this is 22 | # a pull request then we can checkout the head. 23 | fetch-depth: 2 24 | 25 | # If this run was triggered by a pull request event, then checkout 26 | # the head of the pull request instead of the merge commit. 27 | - run: git checkout HEAD^2 28 | if: ${{ github.event_name == 'pull_request' }} 29 | 30 | # Initializes the CodeQL tools for scanning. 31 | - name: Initialize CodeQL 32 | uses: github/codeql-action/init@v1 33 | # Override language selection by uncommenting this and choosing your languages 34 | # with: 35 | # languages: go, javascript, csharp, python, cpp, java 36 | 37 | # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). 38 | # If this step fails, then you should remove it and run the build manually (see below) 39 | - name: Autobuild 40 | uses: github/codeql-action/autobuild@v1 41 | 42 | # ℹ️ Command-line programs to run using the OS shell. 43 | # 📚 https://git.io/JvXDl 44 | 45 | # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines 46 | # and modify them (or add more) to build your code if your project 47 | # uses a compiled language 48 | 49 | #- run: | 50 | # make bootstrap 51 | # make release 52 | 53 | - name: Perform CodeQL Analysis 54 | uses: github/codeql-action/analyze@v1 55 | -------------------------------------------------------------------------------- /.github/workflows/create-release.yml: -------------------------------------------------------------------------------- 1 | on: 2 | push: 3 | # Sequence of patterns matched against refs/tags 4 | tags: 5 | - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10 6 | 7 | name: Create Release 8 | 9 | jobs: 10 | build: 11 | name: Create Release 12 | runs-on: ubuntu-latest 13 | steps: 14 | - name: Checkout code 15 | uses: actions/checkout@v2 16 | - name: Create Release 17 | id: create_release 18 | uses: actions/create-release@v1 19 | env: 20 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token 21 | with: 22 | tag_name: ${{ github.ref }} 23 | release_name: MacDaily ${{ github.ref }} 24 | body: ${{ join(github.event.commits.*.message, '\n') }} 25 | draft: false 26 | prerelease: false 27 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "release"] 2 | path = release 3 | url = https://github.com/JarryShaw/MacDaily.git 4 | branch = release 5 | [submodule "util/askpass"] 6 | path = util/askpass 7 | url = https://github.com/JarryShaw/askpass.git 8 | [submodule "util/confirm"] 9 | path = util/confirm 10 | url = https://github.com/JarryShaw/confirm.git 11 | -------------------------------------------------------------------------------- /.pyup.yml: -------------------------------------------------------------------------------- 1 | # autogenerated pyup.io config file 2 | # see https://pyup.io/docs/configuration/ for all available options 3 | 4 | schedule: every week 5 | -------------------------------------------------------------------------------- /.travis.yaml: -------------------------------------------------------------------------------- 1 | language: python 2 | group: travis_latest 3 | 4 | python: 5 | - 3.8-dev 6 | - 3.7 7 | - 3.6 8 | - 3.5 9 | - 3.4 10 | 11 | matrix: 12 | include: 13 | - os: osx 14 | language: minimal 15 | install: pipenv install --dev 16 | 17 | # Homebrew dependencies 18 | addons: 19 | homebrew: 20 | packages: 21 | - pipenv 22 | update: true 23 | 24 | # command to install dependencies 25 | install: 26 | - pipenv install --dev 27 | 28 | # command to run tests 29 | script: 30 | - macdaily --help 31 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "python.pythonPath": "/Users/jarryshaw/GitHub/MacDaily/.venv/bin/python3.7", 3 | "cSpell.words": [ 4 | "Crgle", 5 | "DSKDIR", 6 | "Funj", 7 | "Fureybpx", 8 | "Ornyvfu", 9 | "Oyrffrq", 10 | "Punbf", 11 | "TCSAFLUSH", 12 | "Virtualenv", 13 | "Wneel", 14 | "aktau", 15 | "avpur", 16 | "bdim", 17 | "bpwd", 18 | "chld", 19 | "dailyrc", 20 | "deps", 21 | "distro", 22 | "docutils", 23 | "evtugrbhfarff", 24 | "fhssre", 25 | "gaocegege", 26 | "gubfr", 27 | "gurvef", 28 | "jvyy", 29 | "ladir", 30 | "ntqry", 31 | "pbzr", 32 | "perr", 33 | "pkgs", 34 | "pnhfr", 35 | "pyenv", 36 | "pygments", 37 | "qbar", 38 | "qflag", 39 | "scpt", 40 | "snepr", 41 | "tbody", 42 | "tcgetattr", 43 | "tcsetattr", 44 | "tenivgnf", 45 | "vfa'g", 46 | "vflag", 47 | "xvatqbz", 48 | "ynqqre", 49 | "ynzo", 50 | "zrrx" 51 | ], 52 | "python.linting.enabled": true, 53 | "restructuredtext.confPath": "${workspaceFolder}/docs/conf.py" 54 | } -------------------------------------------------------------------------------- /AUTHORS.md: -------------------------------------------------------------------------------- 1 | # Authors 2 | 3 | This list is sorted by the number of commits per contributor in _descending_ order. 4 | 5 | Avatar|Contributor|Contributions 6 | :-:|---|:-: 7 | @JarryShaw|[@JarryShaw](https://github.com/JarryShaw)|65 8 | 9 | --- 10 | 11 | Auto-generated by [gaocegege/maintainer](https://github.com/gaocegege/maintainer) on 2019-08-08. 12 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # How to contribute 2 | 3 | This document outlines some of the conventions on development workflow, commit message formatting, contact points and other 4 | resources to make it easier to get your contribution accepted. 5 | 6 | ## Getting started 7 | 8 | - Fork the repository on GitHub. 9 | - Read the README.md for build instructions. 10 | - Play with the project, submit bugs, submit patches! 11 | 12 | ## Contribution flow 13 | 14 | This is a rough outline of what a contributor's workflow looks like: 15 | 16 | - Create a topic branch from where you want to base your work. This is usually master. 17 | - Make commits of logical units and add test case if the change fixes a bug or adds new functionality. 18 | - Run tests and make sure all the tests are passed. 19 | - Make sure your commit messages are in the proper format (see below). 20 | - Push your changes to a topic branch in your fork of the repository. 21 | - Submit a pull request to the repo. 22 | 23 | Thanks for your contributions! 24 | 25 | ## Coding Style 26 | 27 | See the [Python style doc](https://www.python.org/dev/peps/pep-0008/) for details. 28 | 29 | ### Format of the Commit Message 30 | 31 | We follow a rough convention for commit messages that is designed to answer two 32 | questions: what changed and why. The subject line should feature the what and 33 | the body of the commit should describe the why. 34 | 35 |

36 | store/localstore: add comment for variable declaration.
37 | 
38 | Improve documentation.
39 | 
40 | 41 | The format can be described more formally as follows: 42 | 43 |

44 | subsystem: what changed
45 | BLANK LINE
46 | why this change was made
47 | BLANK LINE
48 | footer(optional)
49 | 
50 | 51 | The first line is the subject and should be no longer than 70 characters, the 52 | second line is always blank, and other lines should be wrapped at 80 characters. 53 | This allows the message to be easier to read on GitHub as well as in various 54 | git tools. 55 | 56 | If the change affects more than one subsystem, you can use comma to separate them like util/codec,util/types:. 57 | 58 | If the change affects many subsystems, you can use * instead, like *:. 59 | 60 | For the why part, if no specific reason for the change, 61 | you can use one of some generic reasons like "Improve documentation.", 62 | "Improve performance.", "Improve robustness.", "Improve test coverage." 63 | 64 | 65 | --- 66 | 67 | Auto-generated by [gaocegege/maintainer](https://github.com/gaocegege/maintainer) on 2019-08-08. 68 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | BSD 3-Clause License 2 | 3 | Copyright (c) 2018-2020, Jarry Shaw 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are met: 8 | 9 | * Redistributions of source code must retain the above copyright notice, this 10 | list of conditions and the following disclaimer. 11 | 12 | * Redistributions in binary form must reproduce the above copyright notice, 13 | this list of conditions and the following disclaimer in the documentation 14 | and/or other materials provided with the distribution. 15 | 16 | * Neither the name of the copyright holder nor the names of its 17 | contributors may be used to endorse or promote products derived from 18 | this software without specific prior written permission. 19 | 20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 23 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 24 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 26 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 27 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 28 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.s 30 | -------------------------------------------------------------------------------- /MANIFEST.in: -------------------------------------------------------------------------------- 1 | global-exclude .DS_Store 2 | 3 | global-include *.py 4 | 5 | prune .venv 6 | prune Cellar 7 | 8 | include macdaily/comp/macdaily.bash-completion 9 | include macdaily/res/*.applescript 10 | include macdaily/img/*.icns 11 | include macdaily/res/*.py 12 | include macdaily/man/*.1 13 | include README.rst 14 | include LICENSE 15 | -------------------------------------------------------------------------------- /Pipfile: -------------------------------------------------------------------------------- 1 | [[source]] 2 | name = "tuna" 3 | url = "https://pypi.tuna.tsinghua.edu.cn/simple" 4 | verify_ssl = true 5 | 6 | [[source]] 7 | name = "sjtu" 8 | url = "https://mirrors.sjtug.sjtu.edu.cn/pypi/web/simple" 9 | verify_ssl = true 10 | 11 | [[source]] 12 | name = "pypi" 13 | url = "https://pypi.org/simple" 14 | verify_ssl = true 15 | 16 | [packages] 17 | configupdater = "*" 18 | dictdumper = ">=0.7.0.post1" 19 | ptyng = ">=0.3.3" 20 | tbtrim = ">=0.2.1" 21 | 22 | [dev-packages] 23 | macdaily = {path = ".",editable = true} 24 | subprocess32 = ">=3.5.3" 25 | pathlib2 = ">=2.3.2" 26 | psutil = "*" 27 | f2format = "*" 28 | requests = "*" 29 | beautifulsoup4 = {extras = ["html5lib"],version = "*"} 30 | homebrew-pypi-poet = "*" 31 | docutils = "*" 32 | pygments = "*" 33 | ipython = "*" 34 | autopep8 = "*" 35 | pylint = "*" 36 | 37 | [requires] 38 | python_version = "3" 39 | -------------------------------------------------------------------------------- /TODO: -------------------------------------------------------------------------------- 1 | # September 13th, 2019 2 | 3 | - [ ] try Sphinx for documentation 4 | - [ ] add *docstring* for MacDaily 5 | - [ ] revise `macdaily.util.tools.script`, avoid directly echoing password in command line 6 | - [ ] consider using a global namespace like `flask.g` for variables sharing across functions 7 | -------------------------------------------------------------------------------- /config/askpass.applescript: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env osascript 2 | 3 | -- script based on https://github.com/theseal/ssh-askpass 4 | 5 | on run argv 6 | set args to argv as text 7 | if args starts with "--help" or args starts with "-h" then 8 | return "macdaily-askpass [-h|--help] [prompt]" 9 | end if 10 | display dialog args with icon caution default button "OK" default answer "" with hidden answer 11 | return result's text returned 12 | end run 13 | -------------------------------------------------------------------------------- /config/com.macdaily.askpass.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Label 6 | com.macdaily.askpass 7 | ProgramArguments 8 | 9 | /usr/bin/ssh-agent 10 | -l 11 | 12 | EnvironmentVariables 13 | 14 | SSH_ASKPASS 15 | {ASKPASS} 16 | DISPLAY 17 | 0 18 | 19 | Sockets 20 | 21 | Listeners 22 | 23 | SecureSocketWithKey 24 | SSH_AUTH_SOCK 25 | 26 | 27 | EnableTransactions 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /config/com.macdaily.{MODE}.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Label 6 | com.macdaily.{MODE}.plist 7 | Program 8 | /usr/bin/osascript 9 | ProgramArguments 10 | 11 | /usr/bin/osascript 12 | -e 13 | {PATH} 14 | 15 | RunAtLoad 16 | 17 | RootDirectory 18 | ~/ 19 | EnvironmentVariables 20 | 21 | StartCalendarInterval 22 | 23 | StandardOutPath 24 | ~/Library/Logs/MacDaily/{MODE}/stdout.log 25 | StandardErrorPath 26 | ~/Library/Logs/MacDaily/{MODE}/stderr.log 27 | 28 | 29 | -------------------------------------------------------------------------------- /config/confirm.applescript: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env osascript 2 | 3 | on run argv 4 | set args to argv as text 5 | if args starts with "--help" or args starts with "-h" then 6 | return "macdaily-confirm [-h|--help] [prompt]" 7 | end if 8 | display dialog args with icon note default button "Cancel" 9 | return result's button returned 10 | end run 11 | -------------------------------------------------------------------------------- /config/daemon.applescript: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env osascript 2 | 3 | -- show notification 4 | display notification "Running scheduled {mode} scripts..." with title "MacDaily" 5 | 6 | -- run script 7 | do shell script "{sys.executable} -m macdaily {mode} {argv}" 8 | -------------------------------------------------------------------------------- /doc/archive.rst: -------------------------------------------------------------------------------- 1 | :Command Executable: 2 | ``macdaily archive`` | ``md-archive`` 3 | :Supported Commands: 4 | ``archive``, ``cleanup``, ``dependency``, 5 | ``logging``, ``postinstall``, ``reinstall``, 6 | ``uninstall``, ``update``, ``logging/apm``, 7 | ``logging/app``, ``logging/brew``, ``logging/cask``, 8 | ``logging/gem``, ``logging/mas``, ``logging/npm``, 9 | ``logging/pip``, ``logging/tap`` 10 | 11 | ============================ 12 | MacDaily Log Archive Utility 13 | ============================ 14 | 15 | - `About <#about>`__ 16 | - `Usage <#usage>`__ 17 | - `TODO <#todo>`__ 18 | 19 | -------------- 20 | 21 | About 22 | ----- 23 | 24 | MacDaily provides a genuine interface for archiving ancient logs and files. 25 | The ``archive`` command will move all ancient logs to where it belongs 26 | -- 27 | 28 | 1. daily logs from last week (7 days) -- ``${logdir}/arcfile`` with 29 | corresponding modes named as ``YYMMDD.tar.gz`` 30 | 2. weekly archives from last month (approximately 4 weeks) -- 31 | ``${logdir}/tarfile`` with corresponding modes named as 32 | ``YYMMDD-YYMMDD.tar.xz`` 33 | 3. even older logs -- inside ``${arcdir}/archive.zip`` with 34 | corresponding modes and named as ``YYMMDD-YYMMDD.tar.bz`` 35 | 36 | Actual paths of ``${logdir}`` and ``${arcdir}`` are defined in 37 | ``~/.dailyrc``, may vary from your own settings. 38 | 39 | Usage 40 | ----- 41 | 42 | .. code:: man 43 | 44 | usage: macdaily archive [options] ... 45 | 46 | MacDaily Log Archive Utility 47 | 48 | optional arguments: 49 | -h, --help show this help message and exit 50 | -V, --version show program's version number and exit 51 | 52 | specification arguments: 53 | CMD archive logs of specified command, e.g. archive, cleanup, 54 | dependency, logging, postinstall, reinstall, uninstall, 55 | update, logging/apm, logging/app, logging/brew, 56 | logging/cask, logging/gem, logging/mas, logging/npm, 57 | logging/pip and logging/tap 58 | 59 | general arguments: 60 | -a, --all archive all ancient logs 61 | -n, --no-storage do not move ancient logs into external hard disk 62 | -q, --quiet run in quiet mode, with no output information 63 | -v, --verbose run in verbose mode, with detailed output information 64 | -l, --show-log open log in Console.app upon completion of command 65 | 66 | TODO 67 | ---- 68 | 69 | - ✔️ reconstruct archive CLI 70 | - ❌ implement further spec for archive commands 71 | -------------------------------------------------------------------------------- /doc/bundle.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JarryShaw/MacDaily/9bd69fd710c4b00553507b62798532431104abab/doc/bundle.rst -------------------------------------------------------------------------------- /doc/help.rst: -------------------------------------------------------------------------------- 1 | :Command Executable: 2 | ``macdaily help`` | ``md-help`` 3 | :Supported Commands: 4 | all MacDaily commands and subsidiaries 5 | 6 | ================================= 7 | MacDaily Usage Information Manual 8 | ================================= 9 | 10 | - `About <#about>`__ 11 | - `Usage <#usage>`__ 12 | - `TODO <#todo>`__ 13 | 14 | -------------- 15 | 16 | About 17 | ----- 18 | 19 | MacDaily provides a collection of revised manuals to help users dig into. 20 | MacDaily ``help`` command will lead you to these 21 | `man pages `__, which are generated 22 | by ``rst2man.py`` from |docutils|_ and displayed with ``man(1)``. 23 | 24 | .. |docutils| replace:: ``docutils`` 25 | .. _docutils: http://docutils.sourceforge.net 26 | 27 | Usage 28 | ----- 29 | 30 | .. code:: man 31 | 32 | usage: macdaily help [options] ... 33 | 34 | MacDaily Usage Information Manual 35 | 36 | optional arguments: 37 | -h, --help show this help message and exit 38 | -V, --version show program's version number and exit 39 | 40 | specification arguments: 41 | CMD display manual information about such command 42 | 43 | aliases: doc, man 44 | 45 | TODO 46 | ---- 47 | 48 | - ✔️ reconstruct help CLI 49 | - ❌ implement and revise man pages 50 | -------------------------------------------------------------------------------- /doc/img/Python.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JarryShaw/MacDaily/9bd69fd710c4b00553507b62798532431104abab/doc/img/Python.png -------------------------------------------------------------------------------- /doc/img/askpass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JarryShaw/MacDaily/9bd69fd710c4b00553507b62798532431104abab/doc/img/askpass.png -------------------------------------------------------------------------------- /doc/img/confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JarryShaw/MacDaily/9bd69fd710c4b00553507b62798532431104abab/doc/img/confirm.png -------------------------------------------------------------------------------- /doc/rst/macdaily-archive.rst: -------------------------------------------------------------------------------- 1 | ================ 2 | macdaily-archive 3 | ================ 4 | 5 | ---------------------------- 6 | MacDaily Log Archive Utility 7 | ---------------------------- 8 | 9 | :Version: v2019.8.4 10 | :Date: August 07, 2019 11 | :Manual section: 8 12 | :Author: 13 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 14 | of *MacDaily*. Please contact me at *jarryshaw@icloud.com*. 15 | :Copyright: 16 | *MacDaily* is licensed under the **Apple Open Source License**. 17 | 18 | SYNOPSIS 19 | ======== 20 | 21 | macdaily **archive** [*options*] <*path-selection*> ... 22 | 23 | DESCRIPTION 24 | =========== 25 | 26 | *MacDaily* provides a genuine interface for archiving ancient logs and 27 | files. The ``archive`` command will move all ancient logs to where it 28 | belongs -- 29 | 30 | 1. daily logs from last week (7 days) -- ``${logdir}/arcfile`` with 31 | corresponding modes named as ``YYMMDD.tar.gz`` 32 | 2. weekly archives from last month (approximately 4 weeks) -- 33 | ``${logdir}/tarfile`` with corresponding modes named as 34 | ``YYMMDD-YYMMDD.tar.xz`` 35 | 3. even older logs -- inside ``${arcdir}/archive.zip`` with 36 | corresponding modes and named as ``YYMMDD-YYMMDD.tar.bz`` 37 | 38 | Actual paths of ``${logdir}`` and ``${arcdir}`` are defined in 39 | *~/.dailyrc*, may vary from your own settings. 40 | 41 | OPTIONS 42 | ======= 43 | 44 | optional arguments 45 | ------------------ 46 | 47 | -h, --help show this help message and exit 48 | -V, --version show program's version number and exit 49 | 50 | specification arguments 51 | ----------------------- 52 | 53 | :CMD: 54 | archive logs of specified command, e.g. *archive*, *cleanup*, 55 | *dependency*, *logging*, *postinstall*, *reinstall*, *uninstall*, 56 | *update*, *logging/apm*, *logging/app*, *logging/brew*, 57 | *logging/cask*, *logging/gem*, *logging/mas*, *logging/npm*, 58 | *logging/pip* and *logging/tap* 59 | 60 | general arguments 61 | ----------------- 62 | 63 | -a, --all archive all ancient logs 64 | -n, --no-storage do not move ancient logs into external hard disk 65 | -q, --quiet run in quiet mode, with no output information 66 | -v, --verbose run in verbose mode, with detailed output information 67 | -l, --show-log open log in *Console.app* upon completion of command 68 | -------------------------------------------------------------------------------- /doc/rst/macdaily-cleanup-brew.rst: -------------------------------------------------------------------------------- 1 | ===================== 2 | macdaily-cleanup-brew 3 | ===================== 4 | 5 | ------------------------------ 6 | Homebrew Formula Cache Cleanup 7 | ------------------------------ 8 | 9 | :Version: v2019.8.4 10 | :Date: August 07, 2019 11 | :Manual section: 8 12 | :Author: 13 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 14 | of *MacDaily*. Please contact me at *jarryshaw@icloud.com*. 15 | :Copyright: 16 | *MacDaily* is licensed under the **Apple Open Source License**. 17 | 18 | SYNOPSIS 19 | ======== 20 | 21 | macdaily **cleanup** *brew* [*options*] ... 22 | 23 | aliases: **homebrew** 24 | 25 | OPTIONS 26 | ======= 27 | 28 | optional arguments 29 | ------------------ 30 | 31 | -h, --help show this help message and exit 32 | -V, --version show program's version number and exit 33 | 34 | general arguments 35 | ----------------- 36 | 37 | -q, --quiet run in quiet mode, with no output information 38 | -v, --verbose run in verbose mode, with detailed output information 39 | 40 | SEE ALSO 41 | ======== 42 | 43 | * ``brew(1)`` 44 | * ``macdaily-cleanup`` 45 | * ``macdaily-cleanup-cask`` 46 | * ``macdaily-cleanup-npm`` 47 | * ``macdaily-cleanup-pip`` 48 | -------------------------------------------------------------------------------- /doc/rst/macdaily-cleanup-cask.rst: -------------------------------------------------------------------------------- 1 | ===================== 2 | macdaily-cleanup-cask 3 | ===================== 4 | 5 | --------------------------- 6 | Homebrew Cask Cache Cleanup 7 | --------------------------- 8 | 9 | :Version: v2019.8.4 10 | :Date: August 07, 2019 11 | :Manual section: 8 12 | :Author: 13 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 14 | of *MacDaily*. Please contact me at *jarryshaw@icloud.com*. 15 | :Copyright: 16 | *MacDaily* is licensed under the **Apple Open Source License**. 17 | 18 | SYNOPSIS 19 | ======== 20 | 21 | macdaily **cleanup** *cask* [*options*] ... 22 | 23 | aliases: **brew-cask**, **caskroom** 24 | 25 | OPTIONS 26 | ======= 27 | 28 | optional arguments 29 | ------------------ 30 | 31 | -h, --help show this help message and exit 32 | -V, --version show program's version number and exit 33 | 34 | general arguments 35 | ----------------- 36 | 37 | -q, --quiet run in quiet mode, with no output information 38 | -v, --verbose run in verbose mode, with detailed output information 39 | 40 | SEE ALSO 41 | ======== 42 | 43 | * ``brew-cask(1)`` 44 | * ``macdaily-cleanup`` 45 | * ``macdaily-cleanup-brew`` 46 | * ``macdaily-cleanup-npm`` 47 | * ``macdaily-cleanup-pip`` 48 | -------------------------------------------------------------------------------- /doc/rst/macdaily-cleanup-npm.rst: -------------------------------------------------------------------------------- 1 | ==================== 2 | macdaily-cleanup-npm 3 | ==================== 4 | 5 | ---------------------------- 6 | Node.js Module Cache Cleanup 7 | ---------------------------- 8 | 9 | :Version: v2019.8.4 10 | :Date: August 07, 2019 11 | :Manual section: 8 12 | :Author: 13 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 14 | of *MacDaily*. Please contact me at *jarryshaw@icloud.com*. 15 | :Copyright: 16 | *MacDaily* is licensed under the **Apple Open Source License**. 17 | 18 | SYNOPSIS 19 | ======== 20 | 21 | macdaily **cleanup** *npm* [*options*] ... 22 | 23 | aliases: **node**, **node.js** 24 | 25 | OPTIONS 26 | ======= 27 | 28 | optional arguments 29 | ------------------ 30 | 31 | -h, --help show this help message and exit 32 | -V, --version show program's version number and exit 33 | 34 | general arguments 35 | ----------------- 36 | 37 | -q, --quiet run in quiet mode, with no output information 38 | -v, --verbose run in verbose mode, with detailed output information 39 | 40 | SEE ALSO 41 | ======== 42 | 43 | * ``npm(1)`` 44 | * ``macdaily-cleanup`` 45 | * ``macdaily-cleanup-brew`` 46 | * ``macdaily-cleanup-cask`` 47 | * ``macdaily-cleanup-pip`` 48 | -------------------------------------------------------------------------------- /doc/rst/macdaily-cleanup-pip.rst: -------------------------------------------------------------------------------- 1 | ==================== 2 | macdaily-cleanup-pip 3 | ==================== 4 | 5 | ---------------------------- 6 | Python Package Cache Cleanup 7 | ---------------------------- 8 | 9 | :Version: v2019.8.4 10 | :Date: August 07, 2019 11 | :Manual section: 8 12 | :Author: 13 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 14 | of *MacDaily*. Please contact me at *jarryshaw@icloud.com*. 15 | :Copyright: 16 | *MacDaily* is licensed under the **Apple Open Source License**. 17 | 18 | SYNOPSIS 19 | ======== 20 | 21 | macdaily **cleanup** *pip* [*options*] ... 22 | 23 | aliases: **cpython**, **pypy**, **python** 24 | 25 | OPTIONS 26 | ======= 27 | 28 | optional arguments 29 | ------------------ 30 | 31 | -h, --help show this help message and exit 32 | -V, --version show program's version number and exit 33 | 34 | specification arguments 35 | ----------------------- 36 | 37 | -b, --brew cleanup caches of Python installed from Homebrew 38 | -c, --cpython cleanup caches of CPython implementation 39 | 40 | -e *VER* [*VER* ...], --python *VER* [*VER* ...] 41 | indicate packages from which version of Python will 42 | cleanup 43 | 44 | -r, --pypy cleanup caches of PyPy implementation 45 | -s, --system cleanup caches of Python provided by macOS system 46 | 47 | general arguments 48 | ----------------- 49 | 50 | -q, --quiet run in quiet mode, with no output information 51 | -v, --verbose run in verbose mode, with detailed output information 52 | 53 | SEE ALSO 54 | ======== 55 | 56 | * ``macdaily-cleanup`` 57 | * ``macdaily-cleanup-brew`` 58 | * ``macdaily-cleanup-cask`` 59 | * ``macdaily-cleanup-npm`` 60 | -------------------------------------------------------------------------------- /doc/rst/macdaily-cleanup.rst: -------------------------------------------------------------------------------- 1 | ================ 2 | macdaily-cleanup 3 | ================ 4 | 5 | --------------------------- 6 | macOS Package Cache Cleanup 7 | --------------------------- 8 | 9 | :Version: v2019.8.4 10 | :Date: August 07, 2019 11 | :Manual section: 8 12 | :Author: 13 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 14 | of *MacDaily*. Please contact me at *jarryshaw@icloud.com*. 15 | :Copyright: 16 | *MacDaily* is licensed under the **Apple Open Source License**. 17 | 18 | SYNOPSIS 19 | ======== 20 | 21 | macdaily **cleanup** [*options*] <*mode-selection*> ... 22 | 23 | aliases: **clean** 24 | 25 | DESCRIPTION 26 | =========== 27 | 28 | *MacDaily* provides intelligent solution for automate caches cleanup. 29 | *MacDaily* ``cleanup`` command will automatically cleanup all caches of 30 | through -- 31 | 32 | - *brew* -- Homebrew 33 | - *cask* -- Homebrew Casks 34 | - *npm* -- Node.js Package Manager 35 | - *pip* -- Pip Installs Packages 36 | 37 | *MacDaily* ``cleanup`` supports using with multiple commands. Say, you would 38 | like to cleanup Python and Homebrew caches, each with different flags and 39 | options, then simply use the following command. 40 | 41 | .. code:: shell 42 | 43 | macdaily cleanup [global-options] pip [pip-options] brew [brew-options] 44 | 45 | But please note that, global options ``--quiet`` and ``--verbose`` are 46 | **mandatory** for all commands once set to ``True``. That is to say, if you set 47 | these flags in global options, they will overwrite corresponding flags in 48 | command specific options. 49 | 50 | OPTIONS 51 | ======= 52 | 53 | optional arguments 54 | ------------------ 55 | 56 | -h, --help show this help message and exit 57 | -V, --version show program's version number and exit 58 | 59 | general arguments 60 | ----------------- 61 | 62 | -a, --all cleanup caches of all packages installed through Node.js, 63 | Homebrew, Caskroom and Python 64 | -q, --quiet run in quiet mode, with no output information 65 | -v, --verbose run in verbose mode, with detailed output information 66 | -l, --show-log open log in *Console.app* upon completion of command 67 | 68 | control arguments 69 | ----------------- 70 | 71 | options used to disable update of certain mode 72 | 73 | --no-npm do not update Node.js modules 74 | --no-pip do not update Python packages 75 | --no-brew do not update Homebrew formulae 76 | --no-cask do not update Caskroom binaries 77 | 78 | mode selection 79 | -------------- 80 | 81 | cleanup caches of packages installed through a specified method, e.g.: 82 | *npm*, *pip*, *brew*, *cask* 83 | 84 | SEE ALSO 85 | ======== 86 | 87 | * ``macdaily-cleanup-brew`` 88 | * ``macdaily-cleanup-cask`` 89 | * ``macdaily-cleanup-npm`` 90 | * ``macdaily-cleanup-pip`` 91 | -------------------------------------------------------------------------------- /doc/rst/macdaily-dependency-brew.rst: -------------------------------------------------------------------------------- 1 | ======================== 2 | macdaily-dependency-brew 3 | ======================== 4 | 5 | --------------------------------- 6 | Homebrew Formula Dependency Query 7 | --------------------------------- 8 | 9 | :Version: v2019.8.4 10 | :Date: August 07, 2019 11 | :Manual section: 8 12 | :Author: 13 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 14 | of *MacDaily*. Please contact me at *jarryshaw@icloud.com*. 15 | :Copyright: 16 | *MacDaily* is licensed under the **Apple Open Source License**. 17 | 18 | SYNOPSIS 19 | ======== 20 | 21 | macdaily **dependency** *brew* [*options*] <*formulae*> ... 22 | 23 | aliases: **homebrew** 24 | 25 | OPTIONS 26 | ======= 27 | 28 | optional arguments 29 | ------------------ 30 | 31 | -h, --help show this help message and exit 32 | -V, --version show program's version number and exit 33 | 34 | specification arguments 35 | ----------------------- 36 | 37 | -b, --include-build include the *:build* type dependencies 38 | 39 | -o, --include-optional 40 | include *:optional* dependencies 41 | 42 | -t, --include-test include (non-recursive) *:test* dependencies 43 | 44 | -s, --skip-recommended 45 | skip *:recommended* type dependencies 46 | 47 | -r, --include-requirements 48 | include requirements in addition to dependencies 49 | 50 | -p *FORM* [*FORM* ...], --packages *FORM* [*FORM* ...] 51 | name of Homebrew formulae to query 52 | 53 | general arguments 54 | ----------------- 55 | 56 | -a, --all query all Homebrew formulae installed through Homebrew 57 | -q, --quiet run in quiet mode, with no output information 58 | -v, --verbose run in verbose mode, with detailed output information 59 | -n, --no-cleanup do not run cleanup process 60 | -f, --tree show dependencies as a tree [requires *DictDumper*] 61 | -g, --topological show dependencies in topological order 62 | 63 | -d *LEVEL*, --depth *LEVEL* 64 | max display depth of the dependency tree 65 | 66 | SEE ALSO 67 | ======== 68 | 69 | * ``brew(1)`` 70 | * ``macdaily-dependency`` 71 | * ``macdaily-dependency-pip`` 72 | -------------------------------------------------------------------------------- /doc/rst/macdaily-dependency-pip.rst: -------------------------------------------------------------------------------- 1 | ======================= 2 | macdaily-dependency-pip 3 | ======================= 4 | 5 | ------------------------------- 6 | Python Package Dependency Query 7 | ------------------------------- 8 | 9 | :Version: v2019.8.4 10 | :Date: August 07, 2019 11 | :Manual section: 8 12 | :Author: 13 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 14 | of *MacDaily*. Please contact me at *jarryshaw@icloud.com*. 15 | :Copyright: 16 | *MacDaily* is licensed under the **Apple Open Source License**. 17 | 18 | SYNOPSIS 19 | ======== 20 | 21 | macdaily **dependency** *pip* [*options*] <*packages*> ... 22 | 23 | aliases: **cpython**, **pypy**, **python** 24 | 25 | OPTIONS 26 | ======= 27 | 28 | optional arguments 29 | ------------------ 30 | 31 | -h, --help show this help message and exit 32 | -V, --version show program's version number and exit 33 | 34 | specification arguments 35 | ----------------------- 36 | 37 | -b, --brew query packages of Python installed from Homebrew 38 | -c, --cpython query packages of CPython implementation 39 | 40 | -e *VER* [*VER* ...], --python *VER* [*VER* ...] 41 | indicate packages from which version of Python will 42 | query 43 | 44 | -r, --pypy query packages of PyPy implementation 45 | -s, --system query packages of Python provided by macOS system 46 | 47 | -p *PKG* [*PKG* ...], --packages *PKG* [*PKG* ...] 48 | name of Python packages to query 49 | 50 | general arguments 51 | ----------------- 52 | 53 | -a, --all query all Python packages installed through Python 54 | Package Index 55 | -q, --quiet run in quiet mode, with no output information 56 | -v, --verbose run in verbose mode, with detailed output information 57 | -n, --no-cleanup do not run cleanup process 58 | -f, --tree show dependencies as a tree [requires *DictDumper*] 59 | -g, --topological show dependencies in topological order 60 | 61 | -d *LEVEL*, --depth *LEVEL* 62 | max display depth of the dependency tree 63 | 64 | SEE ALSO 65 | ======== 66 | 67 | * ``macdaily-dependency`` 68 | * ``macdaily-dependency-brew`` 69 | -------------------------------------------------------------------------------- /doc/rst/macdaily-help.rst: -------------------------------------------------------------------------------- 1 | ============= 2 | macdaily-help 3 | ============= 4 | 5 | --------------------------------- 6 | MacDaily Usage Information Manual 7 | --------------------------------- 8 | 9 | :Version: v2019.8.4 10 | :Date: August 07, 2019 11 | :Manual section: 8 12 | :Author: 13 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 14 | of *MacDaily*. Please contact me at *jarryshaw@icloud.com*. 15 | :Copyright: 16 | *MacDaily* is licensed under the **Apple Open Source License**. 17 | 18 | SYNOPSIS 19 | ======== 20 | 21 | macdaily **help** [*options*] <*cmd-selection*> ... 22 | 23 | aliases: **doc**, **man** 24 | 25 | DESCRIPTION 26 | =========== 27 | 28 | *MacDaily* provides a collection of revised manuals to help users dig into. 29 | *MacDaily* ``help`` command will lead you to these man pages, which are 30 | generated by *rst2man.py* from *docutils* and displayed with ``man(1)``. 31 | 32 | OPTIONS 33 | ======= 34 | 35 | optional arguments 36 | ------------------ 37 | 38 | -h, --help show this help message and exit 39 | -V, --version show program's version number and exit 40 | 41 | specification arguments 42 | ----------------------- 43 | 44 | :CMD: display manual information about such command 45 | 46 | SEE ALSO 47 | ======== 48 | 49 | - ``man(1)`` 50 | - ``mdoc(7)`` 51 | -------------------------------------------------------------------------------- /doc/rst/macdaily-install-apm.rst: -------------------------------------------------------------------------------- 1 | ==================== 2 | macdaily-install-apm 3 | ==================== 4 | 5 | -------------------------------- 6 | Atom Plug-In Automated Installer 7 | -------------------------------- 8 | 9 | :Version: v2019.8.4 10 | :Date: August 07, 2019 11 | :Manual section: 8 12 | :Author: 13 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 14 | of *MacDaily*. Please contact me at *jarryshaw@icloud.com*. 15 | :Copyright: 16 | *MacDaily* is licensed under the **Apple Open Source License**. 17 | 18 | SYNOPSIS 19 | ======== 20 | 21 | macdaily **install** *apm* [*options*] <*plug-ins*> ... 22 | 23 | aliases: **atom** 24 | 25 | OPTIONS 26 | ======= 27 | 28 | optional arguments 29 | ------------------ 30 | 31 | -h, --help show this help message and exit 32 | -V, --version show program's version number and exit 33 | 34 | specification arguments 35 | ----------------------- 36 | 37 | -b, --beta install Atom Beta plug-ins 38 | 39 | -p *PI* [*PI* ...], --packages *PI* [*PI* ...] 40 | name of Atom plug-ins to install 41 | 42 | general arguments 43 | ----------------- 44 | 45 | -q, --quiet run in quiet mode, with no output information 46 | -v, --verbose run in verbose mode, with detailed output information 47 | -y, --yes yes for all selections 48 | 49 | miscellaneous arguments 50 | ----------------------- 51 | 52 | -I *ARG*, --install *ARG* 53 | options for ``apm install `` command 54 | 55 | SEE ALSO 56 | ======== 57 | 58 | * ``macdaily-install`` 59 | * ``macdaily-install-brew`` 60 | * ``macdaily-install-cask`` 61 | * ``macdaily-install-gem`` 62 | * ``macdaily-install-mas`` 63 | * ``macdaily-install-npm`` 64 | * ``macdaily-install-pip`` 65 | * ``macdaily-install-system`` 66 | -------------------------------------------------------------------------------- /doc/rst/macdaily-install-brew.rst: -------------------------------------------------------------------------------- 1 | ===================== 2 | macdaily-install-brew 3 | ===================== 4 | 5 | ------------------------------------ 6 | Homebrew Formula Automated Installer 7 | ------------------------------------ 8 | 9 | :Version: v2019.8.4 10 | :Date: August 07, 2019 11 | :Manual section: 8 12 | :Author: 13 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 14 | of *MacDaily*. Please contact me at *jarryshaw@icloud.com*. 15 | :Copyright: 16 | *MacDaily* is licensed under the **Apple Open Source License**. 17 | 18 | SYNOPSIS 19 | ======== 20 | 21 | macdaily **install** *brew* [*options*] <*formulae*> ... 22 | 23 | aliases: **homebrew** 24 | 25 | OPTIONS 26 | ======= 27 | 28 | optional arguments 29 | ------------------ 30 | 31 | -h, --help show this help message and exit 32 | -V, --version show program's version number and exit 33 | 34 | specification arguments 35 | ----------------------- 36 | 37 | -p *FORM* [*FORM* ...], --packages *FORM* [*FORM* ...] 38 | name of Homebrew formulae to install 39 | 40 | general arguments 41 | ----------------- 42 | 43 | -q, --quiet run in quiet mode, with no output information 44 | -v, --verbose run in verbose mode, with detailed output information 45 | -y, --yes yes for all selections 46 | -n, --no-cleanup do not run cleanup process 47 | 48 | miscellaneous arguments 49 | ----------------------- 50 | 51 | -I *ARG*, --install *ARG* 52 | options for ``brew install `` command 53 | 54 | SEE ALSO 55 | ======== 56 | 57 | * ``brew(1)`` 58 | * ``macdaily-install`` 59 | * ``macdaily-install-apm`` 60 | * ``macdaily-install-cask`` 61 | * ``macdaily-install-gem`` 62 | * ``macdaily-install-mas`` 63 | * ``macdaily-install-npm`` 64 | * ``macdaily-install-pip`` 65 | * ``macdaily-install-system`` 66 | -------------------------------------------------------------------------------- /doc/rst/macdaily-install-cask.rst: -------------------------------------------------------------------------------- 1 | ===================== 2 | macdaily-install-cask 3 | ===================== 4 | 5 | --------------------------------- 6 | Homebrew Cask Automated Installer 7 | --------------------------------- 8 | 9 | :Version: v2019.8.4 10 | :Date: August 07, 2019 11 | :Manual section: 8 12 | :Author: 13 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 14 | of *MacDaily*. Please contact me at *jarryshaw@icloud.com*. 15 | :Copyright: 16 | *MacDaily* is licensed under the **Apple Open Source License**. 17 | 18 | SYNOPSIS 19 | ======== 20 | 21 | macdaily **install** *cask* [*options*] <*casks*> ... 22 | 23 | aliases: **brew-cask**, **caskroom** 24 | 25 | OPTIONS 26 | ======= 27 | 28 | optional arguments 29 | ------------------ 30 | 31 | -h, --help show this help message and exit 32 | -V, --version show program's version number and exit 33 | 34 | specification arguments 35 | ----------------------- 36 | 37 | -p *CASK* [*CASK* ...], --packages *CASK* [*CASK* ...] 38 | name of Caskroom binaries to install 39 | 40 | general arguments 41 | ----------------- 42 | 43 | -q, --quiet run in quiet mode, with no output information 44 | -v, --verbose run in verbose mode, with detailed output information 45 | -y, --yes yes for all selections 46 | -n, --no-cleanup do not run cleanup process 47 | 48 | miscellaneous arguments 49 | ----------------------- 50 | 51 | -I *ARG*, --install *ARG* 52 | options for ``brew cask install `` command 53 | 54 | SEE ALSO 55 | ======== 56 | 57 | * ``brew-cask(1)`` 58 | * ``macdaily-install`` 59 | * ``macdaily-install-apm`` 60 | * ``macdaily-install-brew`` 61 | * ``macdaily-install-gem`` 62 | * ``macdaily-install-mas`` 63 | * ``macdaily-install-npm`` 64 | * ``macdaily-install-pip`` 65 | * ``macdaily-install-system`` 66 | -------------------------------------------------------------------------------- /doc/rst/macdaily-install-gem.rst: -------------------------------------------------------------------------------- 1 | ==================== 2 | macdaily-install-gem 3 | ==================== 4 | 5 | ---------------------------- 6 | Ruby Gem Automated Installer 7 | ---------------------------- 8 | 9 | :Version: v2019.8.4 10 | :Date: August 07, 2019 11 | :Manual section: 8 12 | :Author: 13 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 14 | of *MacDaily*. Please contact me at *jarryshaw@icloud.com*. 15 | :Copyright: 16 | *MacDaily* is licensed under the **Apple Open Source License**. 17 | 18 | SYNOPSIS 19 | ======== 20 | 21 | macdaily **install** *gem* [*options*] <*gems*> ... 22 | 23 | aliases: **ruby**, **rubygems** 24 | 25 | OPTIONS 26 | ======= 27 | 28 | optional arguments 29 | ------------------ 30 | 31 | -h, --help show this help message and exit 32 | -V, --version show program's version number and exit 33 | 34 | specification arguments 35 | ----------------------- 36 | 37 | -b, --brew install gems by Ruby installed from Homebrew 38 | -s, --system install gems by Ruby provided by macOS system 39 | 40 | -p *GEM* [*GEM* ...], --packages *GEM* [*GEM* ...] 41 | name of Ruby gems to install 42 | 43 | general arguments 44 | ----------------- 45 | 46 | -q, --quiet run in quiet mode, with no output information 47 | -v, --verbose run in verbose mode, with detailed output information 48 | -y, --yes yes for all selections 49 | 50 | miscellaneous arguments 51 | ----------------------- 52 | 53 | -I *ARG*, --install *ARG* 54 | options for ``gem install `` command 55 | 56 | SEE ALSO 57 | ======== 58 | 59 | * ``gem(1)`` 60 | * ``macdaily-install`` 61 | * ``macdaily-install-apm`` 62 | * ``macdaily-install-brew`` 63 | * ``macdaily-install-cask`` 64 | * ``macdaily-install-mas`` 65 | * ``macdaily-install-npm`` 66 | * ``macdaily-install-pip`` 67 | * ``macdaily-install-system`` 68 | -------------------------------------------------------------------------------- /doc/rst/macdaily-install-mas.rst: -------------------------------------------------------------------------------- 1 | ==================== 2 | macdaily-install-mas 3 | ==================== 4 | 5 | ------------------------------------- 6 | macOS Application Automated Installer 7 | ------------------------------------- 8 | 9 | :Version: v2019.8.4 10 | :Date: August 07, 2019 11 | :Manual section: 8 12 | :Author: 13 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 14 | of *MacDaily*. Please contact me at *jarryshaw@icloud.com*. 15 | :Copyright: 16 | *MacDaily* is licensed under the **Apple Open Source License**. 17 | 18 | SYNOPSIS 19 | ======== 20 | 21 | macdaily **install** *mas* [*options*] <*applications*> ... 22 | 23 | aliases: **app-store**, **appstore**, **mac**, **mac-app-store** 24 | 25 | OPTIONS 26 | ======= 27 | 28 | optional arguments 29 | ------------------ 30 | 31 | -h, --help show this help message and exit 32 | -V, --version show program's version number and exit 33 | 34 | specification arguments 35 | ----------------------- 36 | 37 | -f, --force force reinstall 38 | 39 | -p *APP* [*APP* ...], --packages *APP* [*APP* ...] 40 | name of macOS applications to install 41 | 42 | general arguments 43 | ----------------- 44 | 45 | -q, --quiet run in quiet mode, with no output information 46 | -v, --verbose run in verbose mode, with detailed output information 47 | -y, --yes yes for all selections 48 | 49 | miscellaneous arguments 50 | ----------------------- 51 | 52 | -I *ARG*, --install *ARG* 53 | options for ``mas install|lucky `` command 54 | 55 | SEE ALSO 56 | ======== 57 | 58 | * ``macdaily-install`` 59 | * ``macdaily-install-apm`` 60 | * ``macdaily-install-brew`` 61 | * ``macdaily-install-cask`` 62 | * ``macdaily-install-gem`` 63 | * ``macdaily-install-npm`` 64 | * ``macdaily-install-pip`` 65 | * ``macdaily-install-system`` 66 | -------------------------------------------------------------------------------- /doc/rst/macdaily-install-npm.rst: -------------------------------------------------------------------------------- 1 | ==================== 2 | macdaily-install-npm 3 | ==================== 4 | 5 | ---------------------------------- 6 | Node.js Module Automated Installer 7 | ---------------------------------- 8 | 9 | :Version: v2019.8.4 10 | :Date: August 07, 2019 11 | :Manual section: 8 12 | :Author: 13 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 14 | of *MacDaily*. Please contact me at *jarryshaw@icloud.com*. 15 | :Copyright: 16 | *MacDaily* is licensed under the **Apple Open Source License**. 17 | 18 | SYNOPSIS 19 | ======== 20 | 21 | macdaily **install** *npm* [*options*] <*modules*> ... 22 | 23 | aliases: **node**, **node.js** 24 | 25 | OPTIONS 26 | ======= 27 | 28 | optional arguments 29 | ------------------ 30 | 31 | -h, --help show this help message and exit 32 | -V, --version show program's version number and exit 33 | 34 | specification arguments 35 | ----------------------- 36 | 37 | -p *MOD* [*MOD* ...], --packages *MOD* [*MOD* ...] 38 | name of Node.js modules to install 39 | 40 | general arguments 41 | ----------------- 42 | 43 | -q, --quiet run in quiet mode, with no output information 44 | -v, --verbose run in verbose mode, with detailed output information 45 | -y, --yes yes for all selections 46 | -n, --no-cleanup do not run cleanup process 47 | 48 | miscellaneous arguments 49 | ----------------------- 50 | 51 | -I *ARG*, --install *ARG* 52 | options for ``npm install --global `` command 53 | 54 | SEE ALSO 55 | ======== 56 | 57 | * ``npm(1)`` 58 | * ``macdaily-install`` 59 | * ``macdaily-install-apm`` 60 | * ``macdaily-install-brew`` 61 | * ``macdaily-install-cask`` 62 | * ``macdaily-install-gem`` 63 | * ``macdaily-install-mas`` 64 | * ``macdaily-install-pip`` 65 | * ``macdaily-install-system`` 66 | -------------------------------------------------------------------------------- /doc/rst/macdaily-install-pip.rst: -------------------------------------------------------------------------------- 1 | ==================== 2 | macdaily-install-pip 3 | ==================== 4 | 5 | ---------------------------------- 6 | Python Package Automated Installer 7 | ---------------------------------- 8 | 9 | :Version: v2019.8.4 10 | :Date: August 07, 2019 11 | :Manual section: 8 12 | :Author: 13 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 14 | of *MacDaily*. Please contact me at *jarryshaw@icloud.com*. 15 | :Copyright: 16 | *MacDaily* is licensed under the **Apple Open Source License**. 17 | 18 | SYNOPSIS 19 | ======== 20 | 21 | macdaily **install** *pip* [*options*] <*packages*> ... 22 | 23 | aliases: **cpython**, **pypy**, **python** 24 | 25 | OPTIONS 26 | ======= 27 | 28 | optional arguments 29 | ------------------ 30 | 31 | -h, --help show this help message and exit 32 | -V, --version show program's version number and exit 33 | 34 | specification arguments 35 | ----------------------- 36 | 37 | -u, --user install to the Python user install directory for your 38 | platform 39 | -b, --brew install packages of Python installed from Homebrew 40 | -c, --cpython install packages of CPython implementation 41 | -d, --pre include pre-release and development versions 42 | 43 | -e *VER* [*VER* ...], --python *VER* [*VER* ...] 44 | install packages by which version of Python 45 | 46 | -r, --pypy install packages of PyPy implementation 47 | -s, --system install packages of Python provided by macOS system 48 | 49 | -p *PKG* [*PKG* ...], --packages *PKG* [*PKG* ...] 50 | name of Python packages to install 51 | 52 | general arguments 53 | ----------------- 54 | 55 | -q, --quiet run in quiet mode, with no output information 56 | -v, --verbose run in verbose mode, with detailed output information 57 | -y, --yes yes for all selections 58 | -n, --no-cleanup do not run cleanup process 59 | 60 | miscellaneous arguments 61 | ----------------------- 62 | 63 | -I *ARG*, --install *ARG* 64 | options for ``pip install `` command 65 | 66 | SEE ALSO 67 | ======== 68 | 69 | * ``macdaily-install`` 70 | * ``macdaily-install-apm`` 71 | * ``macdaily-install-brew`` 72 | * ``macdaily-install-cask`` 73 | * ``macdaily-install-gem`` 74 | * ``macdaily-install-mas`` 75 | * ``macdaily-install-npm`` 76 | * ``macdaily-install-system`` 77 | -------------------------------------------------------------------------------- /doc/rst/macdaily-install-system.rst: -------------------------------------------------------------------------------- 1 | ======================= 2 | macdaily-install-system 3 | ======================= 4 | 5 | ----------------------------------- 6 | System Software Automated Installer 7 | ----------------------------------- 8 | 9 | :Version: v2019.8.4 10 | :Date: August 07, 2019 11 | :Manual section: 8 12 | :Author: 13 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 14 | of *MacDaily*. Please contact me at *jarryshaw@icloud.com*. 15 | :Copyright: 16 | *MacDaily* is licensed under the **Apple Open Source License**. 17 | 18 | SYNOPSIS 19 | ======== 20 | 21 | macdaily **install** *system* [*options*] <*software*> ... 22 | 23 | aliases: **software**, **softwareupdate** 24 | 25 | OPTIONS 26 | ======= 27 | 28 | optional arguments 29 | ------------------ 30 | 31 | -h, --help show this help message and exit 32 | -V, --version show program's version number and exit 33 | 34 | specification arguments 35 | ----------------------- 36 | 37 | -R, --restart automatically restart (or shut down) if required to 38 | complete installation 39 | 40 | -p *SW* [*SW* ...], --packages *SW* [*SW* ...] 41 | name of system software to install 42 | 43 | general arguments 44 | ----------------- 45 | 46 | -q, --quiet run in quiet mode, with no output information 47 | -v, --verbose run in verbose mode, with detailed output information 48 | -y, --yes yes for all selections 49 | 50 | miscellaneous arguments 51 | ----------------------- 52 | 53 | -I *ARG*, --install *ARG* 54 | options for ``softwareupdate --install 55 | `` command 56 | 57 | SEE ALSO 58 | ======== 59 | 60 | * ``softwareupdate(8)`` 61 | * ``macdaily-install`` 62 | * ``macdaily-install-apm`` 63 | * ``macdaily-install-brew`` 64 | * ``macdaily-install-gem`` 65 | * ``macdaily-install-mas`` 66 | * ``macdaily-install-npm`` 67 | * ``macdaily-install-pip`` 68 | * ``macdaily-install-system`` 69 | -------------------------------------------------------------------------------- /doc/rst/macdaily-launch.rst: -------------------------------------------------------------------------------- 1 | =============== 2 | macdaily-launch 3 | =============== 4 | 5 | --------------------------------- 6 | MacDaily Dependency Launch Helper 7 | --------------------------------- 8 | 9 | :Version: v2019.8.4 10 | :Date: August 07, 2019 11 | :Manual section: 8 12 | :Author: 13 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 14 | of *MacDaily*. Please contact me at *jarryshaw@icloud.com*. 15 | :Copyright: 16 | *MacDaily* is licensed under the **Apple Open Source License**. 17 | 18 | SYNOPSIS 19 | ======== 20 | 21 | macdaily **launch** [*options*] <*prog-selection*> ... 22 | 23 | aliases: **init** 24 | 25 | DESCRIPTION 26 | =========== 27 | 28 | *MacDaily* depends on several homemade helper programs, i.e. *askpass*, 29 | *confirm* and *daemons*. *MacDaily* ``launch`` command will help initialise 30 | and launch these helper programs. 31 | 32 | OPTIONS 33 | ======= 34 | 35 | optional arguments 36 | ------------------ 37 | 38 | -h, --help show this help message and exit 39 | -V, --version show program's version number and exit 40 | 41 | specification arguments 42 | ----------------------- 43 | 44 | :PROG: helper program to launch, choose from *askpass*, 45 | *confirm* and *daemons* 46 | 47 | general arguments 48 | ----------------- 49 | 50 | -a, --all launch all help programs, i.e. *askpass*, 51 | *confirm* and *daemons* 52 | -q, --quiet run in quiet mode, with no output information 53 | -v, --verbose run in verbose mode, with detailed output information 54 | -n, --no-cleanup do not run cleanup process 55 | -l, --show-log open log in *Console.app* upon completion of command 56 | 57 | SEE ALSO 58 | ======== 59 | 60 | * *askpass* helper programs 61 | 62 | * ``sudo(8)`` 63 | * ``sudo.conf(5)`` 64 | 65 | * *confirm* helper programs 66 | 67 | * ``osascript(1)`` 68 | * ``osalang(1)`` 69 | 70 | * *daemons* helper programs 71 | 72 | * ``launchctl(1)`` 73 | * ``launchd.plist(5)`` 74 | -------------------------------------------------------------------------------- /doc/rst/macdaily-logging-apm.rst: -------------------------------------------------------------------------------- 1 | ==================== 2 | macdaily-logging-apm 3 | ==================== 4 | 5 | ------------------------------ 6 | Atom Plug-In Logging Automator 7 | ------------------------------ 8 | 9 | :Version: v2019.8.4 10 | :Date: August 07, 2019 11 | :Manual section: 8 12 | :Author: 13 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 14 | of *MacDaily*. Please contact me at *jarryshaw@icloud.com*. 15 | :Copyright: 16 | *MacDaily* is licensed under the **Apple Open Source License**. 17 | 18 | SYNOPSIS 19 | ======== 20 | 21 | macdaily **logging** *apm* [*options*] ... 22 | 23 | aliases: **atom** 24 | 25 | OPTIONS 26 | ======= 27 | 28 | optional arguments 29 | ------------------ 30 | 31 | -h, --help show this help message and exit 32 | -V, --version show program's version number and exit 33 | 34 | specification arguments 35 | ----------------------- 36 | 37 | -b, --beta log Atom Beta plug-ins 38 | 39 | general arguments 40 | ----------------- 41 | 42 | -q, --quiet run in quiet mode, with no output information 43 | -v, --verbose run in verbose mode, with detailed output information 44 | -n, --no-cleanup do not run cleanup process 45 | -l, --show-log open log in *Console.app* upon completion of command 46 | 47 | SEE ALSO 48 | ======== 49 | 50 | * ``macdaily-logging`` 51 | * ``macdaily-logging-app`` 52 | * ``macdaily-logging-brew`` 53 | * ``macdaily-logging-cask`` 54 | * ``macdaily-logging-gem`` 55 | * ``macdaily-logging-mas`` 56 | * ``macdaily-logging-npm`` 57 | * ``macdaily-logging-pip`` 58 | * ``macdaily-logging-tap`` 59 | -------------------------------------------------------------------------------- /doc/rst/macdaily-logging-app.rst: -------------------------------------------------------------------------------- 1 | ==================== 2 | macdaily-logging-app 3 | ==================== 4 | 5 | --------------------------------- 6 | Mac Application Logging Automator 7 | --------------------------------- 8 | 9 | :Version: v2019.8.4 10 | :Date: August 07, 2019 11 | :Manual section: 8 12 | :Author: 13 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 14 | of *MacDaily*. Please contact me at *jarryshaw@icloud.com*. 15 | :Copyright: 16 | *MacDaily* is licensed under the **Apple Open Source License**. 17 | 18 | SYNOPSIS 19 | ======== 20 | 21 | macdaily **logging** *app* [*options*] ... 22 | 23 | aliases: **application**, **macos** 24 | 25 | OPTIONS 26 | ======= 27 | 28 | optional arguments 29 | ------------------ 30 | 31 | -h, --help show this help message and exit 32 | -V, --version show program's version number and exit 33 | 34 | general arguments 35 | ----------------- 36 | 37 | -q, --quiet run in quiet mode, with no output information 38 | -v, --verbose run in verbose mode, with detailed output information 39 | -n, --no-cleanup do not run cleanup process 40 | -l, --show-log open log in *Console.app* upon completion of command 41 | 42 | SEE ALSO 43 | ======== 44 | 45 | * ``macdaily-logging`` 46 | * ``macdaily-logging-apm`` 47 | * ``macdaily-logging-brew`` 48 | * ``macdaily-logging-cask`` 49 | * ``macdaily-logging-gem`` 50 | * ``macdaily-logging-mas`` 51 | * ``macdaily-logging-npm`` 52 | * ``macdaily-logging-pip`` 53 | * ``macdaily-logging-tap`` 54 | -------------------------------------------------------------------------------- /doc/rst/macdaily-logging-brew.rst: -------------------------------------------------------------------------------- 1 | ===================== 2 | macdaily-logging-brew 3 | ===================== 4 | 5 | ---------------------------------- 6 | Homebrew Formula Logging Automator 7 | ---------------------------------- 8 | 9 | :Version: v2019.8.4 10 | :Date: August 07, 2019 11 | :Manual section: 8 12 | :Author: 13 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 14 | of *MacDaily*. Please contact me at *jarryshaw@icloud.com*. 15 | :Copyright: 16 | *MacDaily* is licensed under the **Apple Open Source License**. 17 | 18 | SYNOPSIS 19 | ======== 20 | 21 | macdaily **logging** *brew* [*options*] ... 22 | 23 | aliases: **homebrew** 24 | 25 | OPTIONS 26 | ======= 27 | 28 | optional arguments 29 | ------------------ 30 | 31 | -h, --help show this help message and exit 32 | -V, --version show program's version number and exit 33 | 34 | general arguments 35 | ----------------- 36 | 37 | -q, --quiet run in quiet mode, with no output information 38 | -v, --verbose run in verbose mode, with detailed output information 39 | -n, --no-cleanup do not run cleanup process 40 | -l, --show-log open log in *Console.app* upon completion of command 41 | 42 | SEE ALSO 43 | ======== 44 | 45 | * ``brew(1)`` 46 | * ``macdaily-logging`` 47 | * ``macdaily-logging-apm`` 48 | * ``macdaily-logging-app`` 49 | * ``macdaily-logging-cask`` 50 | * ``macdaily-logging-gem`` 51 | * ``macdaily-logging-mas`` 52 | * ``macdaily-logging-npm`` 53 | * ``macdaily-logging-pip`` 54 | * ``macdaily-logging-tap`` 55 | -------------------------------------------------------------------------------- /doc/rst/macdaily-logging-cask.rst: -------------------------------------------------------------------------------- 1 | ===================== 2 | macdaily-logging-cask 3 | ===================== 4 | 5 | ------------------------------- 6 | Homebrew Cask Logging Automator 7 | ------------------------------- 8 | 9 | :Version: v2019.8.4 10 | :Date: August 07, 2019 11 | :Manual section: 8 12 | :Author: 13 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 14 | of *MacDaily*. Please contact me at *jarryshaw@icloud.com*. 15 | :Copyright: 16 | *MacDaily* is licensed under the **Apple Open Source License**. 17 | 18 | SYNOPSIS 19 | ======== 20 | 21 | macdaily **logging** *cask* [*options*] ... 22 | 23 | aliases: **brew-cask**, **caskroom** 24 | 25 | OPTIONS 26 | ======= 27 | 28 | optional arguments 29 | ------------------ 30 | 31 | -h, --help show this help message and exit 32 | -V, --version show program's version number and exit 33 | 34 | general arguments 35 | ----------------- 36 | 37 | -q, --quiet run in quiet mode, with no output information 38 | -v, --verbose run in verbose mode, with detailed output information 39 | -n, --no-cleanup do not run cleanup process 40 | -l, --show-log open log in *Console.app* upon completion of command 41 | 42 | SEE ALSO 43 | ======== 44 | 45 | * ``brew-cask(1)`` 46 | * ``macdaily-logging`` 47 | * ``macdaily-logging-apm`` 48 | * ``macdaily-logging-app`` 49 | * ``macdaily-logging-brew`` 50 | * ``macdaily-logging-gem`` 51 | * ``macdaily-logging-mas`` 52 | * ``macdaily-logging-npm`` 53 | * ``macdaily-logging-pip`` 54 | * ``macdaily-logging-tap`` 55 | -------------------------------------------------------------------------------- /doc/rst/macdaily-logging-gem.rst: -------------------------------------------------------------------------------- 1 | ==================== 2 | macdaily-logging-gem 3 | ==================== 4 | 5 | -------------------------- 6 | Ruby Gem Logging Automator 7 | -------------------------- 8 | 9 | :Version: v2019.8.4 10 | :Date: August 07, 2019 11 | :Manual section: 8 12 | :Author: 13 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 14 | of *MacDaily*. Please contact me at *jarryshaw@icloud.com*. 15 | :Copyright: 16 | *MacDaily* is licensed under the **Apple Open Source License**. 17 | 18 | SYNOPSIS 19 | ======== 20 | 21 | macdaily **logging** *gem* [*options*] ... 22 | 23 | aliases: **ruby**, **rubygems** 24 | 25 | OPTIONS 26 | ======= 27 | 28 | optional arguments 29 | ------------------ 30 | 31 | -h, --help show this help message and exit 32 | -V, --version show program's version number and exit 33 | 34 | specification arguments 35 | ----------------------- 36 | 37 | -b, --brew log gems of Ruby installed from Homebrew 38 | -s, --system log gems of Ruby provided by macOS system 39 | 40 | general arguments 41 | ----------------- 42 | 43 | -q, --quiet run in quiet mode, with no output information 44 | -v, --verbose run in verbose mode, with detailed output information 45 | -n, --no-cleanup do not run cleanup process 46 | -l, --show-log open log in *Console.app* upon completion of command 47 | 48 | SEE ALSO 49 | ======== 50 | 51 | * ``gem(1)`` 52 | * ``macdaily-logging`` 53 | * ``macdaily-logging-apm`` 54 | * ``macdaily-logging-app`` 55 | * ``macdaily-logging-brew`` 56 | * ``macdaily-logging-cask`` 57 | * ``macdaily-logging-mas`` 58 | * ``macdaily-logging-npm`` 59 | * ``macdaily-logging-pip`` 60 | * ``macdaily-logging-tap`` 61 | -------------------------------------------------------------------------------- /doc/rst/macdaily-logging-mas.rst: -------------------------------------------------------------------------------- 1 | ==================== 2 | macdaily-logging-mas 3 | ==================== 4 | 5 | ----------------------------------- 6 | macOS Application Logging Automator 7 | ----------------------------------- 8 | 9 | :Version: v2019.8.4 10 | :Date: August 07, 2019 11 | :Manual section: 8 12 | :Author: 13 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 14 | of *MacDaily*. Please contact me at *jarryshaw@icloud.com*. 15 | :Copyright: 16 | *MacDaily* is licensed under the **Apple Open Source License**. 17 | 18 | SYNOPSIS 19 | ======== 20 | 21 | macdaily **logging** *mas* [*options*] ... 22 | 23 | aliases: **app-store**, **appstore**, **mac**, **mac-app-store** 24 | 25 | OPTIONS 26 | ======= 27 | 28 | optional arguments 29 | ------------------ 30 | 31 | -h, --help show this help message and exit 32 | -V, --version show program's version number and exit 33 | 34 | general arguments 35 | ----------------- 36 | 37 | -q, --quiet run in quiet mode, with no output information 38 | -v, --verbose run in verbose mode, with detailed output information 39 | -n, --no-cleanup do not run cleanup process 40 | -l, --show-log open log in *Console.app* upon completion of command 41 | 42 | SEE ALSO 43 | ======== 44 | 45 | * ``macdaily-logging`` 46 | * ``macdaily-logging-apm`` 47 | * ``macdaily-logging-app`` 48 | * ``macdaily-logging-brew`` 49 | * ``macdaily-logging-cask`` 50 | * ``macdaily-logging-gem`` 51 | * ``macdaily-logging-npm`` 52 | * ``macdaily-logging-pip`` 53 | * ``macdaily-logging-tap`` 54 | -------------------------------------------------------------------------------- /doc/rst/macdaily-logging-npm.rst: -------------------------------------------------------------------------------- 1 | ==================== 2 | macdaily-logging-npm 3 | ==================== 4 | 5 | -------------------------------- 6 | Node.js Module Logging Automator 7 | -------------------------------- 8 | 9 | :Version: v2019.8.4 10 | :Date: August 07, 2019 11 | :Manual section: 8 12 | :Author: 13 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 14 | of *MacDaily*. Please contact me at *jarryshaw@icloud.com*. 15 | :Copyright: 16 | *MacDaily* is licensed under the **Apple Open Source License**. 17 | 18 | SYNOPSIS 19 | ======== 20 | 21 | macdaily **logging** *npm* [*options*] ... 22 | 23 | aliases: **node**, **node.js** 24 | 25 | OPTIONS 26 | ======= 27 | 28 | optional arguments 29 | ------------------ 30 | 31 | -h, --help show this help message and exit 32 | -V, --version show program's version number and exit 33 | 34 | specification arguments 35 | ----------------------- 36 | 37 | -i, --long show extended information 38 | 39 | general arguments 40 | ----------------- 41 | 42 | -q, --quiet run in quiet mode, with no output information 43 | -v, --verbose run in verbose mode, with detailed output information 44 | -n, --no-cleanup do not run cleanup process 45 | -l, --show-log open log in *Console.app* upon completion of command 46 | 47 | SEE ALSO 48 | ======== 49 | 50 | * ``gem(1)`` 51 | * ``macdaily-logging`` 52 | * ``macdaily-logging-apm`` 53 | * ``macdaily-logging-app`` 54 | * ``macdaily-logging-brew`` 55 | * ``macdaily-logging-cask`` 56 | * ``macdaily-logging-gem`` 57 | * ``macdaily-logging-mas`` 58 | * ``macdaily-logging-pip`` 59 | * ``macdaily-logging-tap`` 60 | -------------------------------------------------------------------------------- /doc/rst/macdaily-logging-pip.rst: -------------------------------------------------------------------------------- 1 | ==================== 2 | macdaily-logging-pip 3 | ==================== 4 | 5 | -------------------------------- 6 | Python Package Logging Automator 7 | -------------------------------- 8 | 9 | :Version: v2019.8.4 10 | :Date: August 07, 2019 11 | :Manual section: 8 12 | :Author: 13 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 14 | of *MacDaily*. Please contact me at *jarryshaw@icloud.com*. 15 | :Copyright: 16 | *MacDaily* is licensed under the **Apple Open Source License**. 17 | 18 | SYNOPSIS 19 | ======== 20 | 21 | macdaily **logging** *pip* [*options*] ... 22 | 23 | aliases: **cpython**, **pypy**, **python** 24 | 25 | OPTIONS 26 | ======= 27 | 28 | optional arguments 29 | ------------------ 30 | 31 | -h, --help show this help message and exit 32 | -V, --version show program's version number and exit 33 | 34 | specification arguments 35 | ----------------------- 36 | 37 | -x, --exclude-editable 38 | exclude editable package from output 39 | 40 | -b, --brew log packages of Python installed from Homebrew 41 | -c, --cpython log packages of CPython implementation 42 | 43 | -e *VER* [*VER* ...], --python *VER* [*VER* ...] 44 | indicate packages from which version of Python will be 45 | logged 46 | 47 | -r, --pypy log packages of PyPy implementation 48 | -s, --system log packages of Python provided by macOS system 49 | 50 | general arguments 51 | ----------------- 52 | 53 | -q, --quiet run in quiet mode, with no output information 54 | -v, --verbose run in verbose mode, with detailed output information 55 | -n, --no-cleanup do not run cleanup process 56 | -l, --show-log open log in *Console.app* upon completion of command 57 | 58 | SEE ALSO 59 | ======== 60 | 61 | * ``macdaily-logging`` 62 | * ``macdaily-logging-apm`` 63 | * ``macdaily-logging-app`` 64 | * ``macdaily-logging-brew`` 65 | * ``macdaily-logging-cask`` 66 | * ``macdaily-logging-gem`` 67 | * ``macdaily-logging-mas`` 68 | * ``macdaily-logging-npm`` 69 | * ``macdaily-logging-tap`` 70 | -------------------------------------------------------------------------------- /doc/rst/macdaily-logging-tap.rst: -------------------------------------------------------------------------------- 1 | ==================== 2 | macdaily-logging-tap 3 | ==================== 4 | 5 | ------------------------------ 6 | Homebrew Tap Logging Automator 7 | ------------------------------ 8 | 9 | :Version: v2019.8.4 10 | :Date: August 07, 2019 11 | :Manual section: 8 12 | :Author: 13 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 14 | of *MacDaily*. Please contact me at *jarryshaw@icloud.com*. 15 | :Copyright: 16 | *MacDaily* is licensed under the **Apple Open Source License**. 17 | 18 | SYNOPSIS 19 | ======== 20 | 21 | macdaily **logging** *tap* [*options*] ... 22 | 23 | aliases: **brew-tap** 24 | 25 | OPTIONS 26 | ======= 27 | 28 | optional arguments 29 | ------------------ 30 | 31 | -h, --help show this help message and exit 32 | -V, --version show program's version number and exit 33 | 34 | general arguments 35 | ----------------- 36 | 37 | -q, --quiet run in quiet mode, with no output information 38 | -v, --verbose run in verbose mode, with detailed output information 39 | -n, --no-cleanup do not run cleanup process 40 | -l, --show-log open log in *Console.app* upon completion of command 41 | 42 | SEE ALSO 43 | ======== 44 | 45 | * ``brew(1)`` 46 | * ``macdaily-logging`` 47 | * ``macdaily-logging-apm`` 48 | * ``macdaily-logging-app`` 49 | * ``macdaily-logging-brew`` 50 | * ``macdaily-logging-cask`` 51 | * ``macdaily-logging-gem`` 52 | * ``macdaily-logging-mas`` 53 | * ``macdaily-logging-npm`` 54 | * ``macdaily-logging-pip`` 55 | -------------------------------------------------------------------------------- /doc/rst/macdaily-reinstall-brew.rst: -------------------------------------------------------------------------------- 1 | ======================= 2 | macdaily-reinstall-brew 3 | ======================= 4 | 5 | -------------------------------------- 6 | Automated Homebrew Formula Reinstaller 7 | -------------------------------------- 8 | 9 | :Version: v2019.8.4 10 | :Date: August 07, 2019 11 | :Manual section: 8 12 | :Author: 13 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 14 | of *MacDaily*. Please contact me at *jarryshaw@icloud.com*. 15 | :Copyright: 16 | *MacDaily* is licensed under the **Apple Open Source License**. 17 | 18 | SYNOPSIS 19 | ======== 20 | 21 | macdaily **reinstall** *brew* [*options*] <*formulae*> ... 22 | 23 | aliases: **homebrew** 24 | 25 | OPTIONS 26 | ======= 27 | 28 | optional arguments 29 | ------------------ 30 | 31 | -h, --help show this help message and exit 32 | -V, --version show program's version number and exit 33 | 34 | specification arguments 35 | ----------------------- 36 | 37 | -s *PREFIX*, --startswith *PREFIX* 38 | reinstall procedure starts from such formula, sort in 39 | initial alphabets 40 | 41 | -e *SUFFIX*, --endswith *SUFFIX* 42 | reinstall procedure ends after such formula, sort in 43 | initial alphabets 44 | 45 | -p *FORM* [*FORM* ...], --packages *FORM* [*FORM* ...] 46 | name of Homebrew formulae to reinstall 47 | 48 | general arguments 49 | ----------------- 50 | 51 | -a, --all reinstall all Homebrew formulae installed through 52 | Homebrew 53 | -q, --quiet run in quiet mode, with no output information 54 | -v, --verbose run in verbose mode, with detailed output information 55 | -y, --yes yes for all selections 56 | -n, --no-cleanup do not run cleanup process 57 | 58 | miscellaneous arguments 59 | ----------------------- 60 | 61 | -L *ARG*, --logging *ARG* 62 | options for ``brew list`` command 63 | 64 | -R *ARG*, --reinstall *ARG* 65 | options for ``brew reinstall `` command 66 | 67 | SEE ALSO 68 | ======== 69 | 70 | * ``brew(1)`` 71 | * ``macdaily-reinstall`` 72 | * ``macdaily-reinstall-cask`` 73 | -------------------------------------------------------------------------------- /doc/rst/macdaily-reinstall-cask.rst: -------------------------------------------------------------------------------- 1 | ======================= 2 | macdaily-reinstall-cask 3 | ======================= 4 | 5 | ----------------------------------- 6 | Automated Homebrew Cask Reinstaller 7 | ----------------------------------- 8 | 9 | :Version: v2019.8.4 10 | :Date: August 07, 2019 11 | :Manual section: 8 12 | :Author: 13 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 14 | of *MacDaily*. Please contact me at *jarryshaw@icloud.com*. 15 | :Copyright: 16 | *MacDaily* is licensed under the **Apple Open Source License**. 17 | 18 | SYNOPSIS 19 | ======== 20 | 21 | macdaily **reinstall** *cask* [*options*] <*casks*> ... 22 | 23 | aliases: **brew-cask**, **caskroom** 24 | 25 | OPTIONS 26 | ======= 27 | 28 | optional arguments 29 | ------------------ 30 | 31 | -h, --help show this help message and exit 32 | -V, --version show program's version number and exit 33 | 34 | specification arguments 35 | ----------------------- 36 | 37 | -s *PREFIX*, --startswith *PREFIX* 38 | reinstall procedure starts from such binary, sort in 39 | initial alphabets 40 | 41 | -e *SUFFIX*, --endswith *SUFFIX* 42 | reinstall procedure ends after such binary, sort in 43 | initial alphabets 44 | 45 | -f, --force reinstall even if the Cask does not appear to be 46 | present 47 | -t, --no-quarantine prevent Gatekeeper from enforcing its security 48 | 49 | -p *CASK* [*CASK* ...], --packages *CASK* [*CASK* ...] 50 | name of Caskroom binaries to reinstall 51 | 52 | general arguments 53 | ----------------- 54 | 55 | -a, --all reinstall all Homebrew formulae installed through 56 | Homebrew 57 | -q, --quiet run in quiet mode, with no output information 58 | -v, --verbose run in verbose mode, with detailed output information 59 | -y, --yes yes for all selections 60 | -n, --no-cleanup do not run cleanup process 61 | 62 | miscellaneous arguments 63 | ----------------------- 64 | 65 | -L *ARG*, --logging *ARG* 66 | options for ``brew cask list`` command 67 | 68 | -R *ARG*, --reinstall *ARG* 69 | options for ``brew cask reinstall `` command 70 | 71 | SEE ALSO 72 | ======== 73 | 74 | * ``brew-cask(1)`` 75 | * ``macdaily-reinstall`` 76 | * ``macdaily-reinstall-brew`` 77 | -------------------------------------------------------------------------------- /doc/rst/macdaily-uninstall-brew.rst: -------------------------------------------------------------------------------- 1 | ======================= 2 | macdaily-uninstall-brew 3 | ======================= 4 | 5 | -------------------------------------- 6 | Automated Homebrew Formula Uninstaller 7 | -------------------------------------- 8 | 9 | :Version: v2019.8.4 10 | :Date: August 07, 2019 11 | :Manual section: 8 12 | :Author: 13 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 14 | of *MacDaily*. Please contact me at *jarryshaw@icloud.com*. 15 | :Copyright: 16 | *MacDaily* is licensed under the **Apple Open Source License**. 17 | 18 | SYNOPSIS 19 | ======== 20 | 21 | macdaily **uninstall** *brew* [*options*] <*formulae*> ... 22 | 23 | aliases: **homebrew** 24 | 25 | OPTIONS 26 | ======= 27 | 28 | optional arguments 29 | ------------------ 30 | 31 | -h, --help show this help message and exit 32 | -V, --version show program's version number and exit 33 | 34 | specification arguments 35 | ----------------------- 36 | 37 | -f, --force delete all installed versions 38 | -b, --include-build include the *:build* type dependencies 39 | 40 | -o, --include-optional 41 | include *:optional* dependencies 42 | 43 | -t, --include-test include (non-recursive) *:test* dependencies 44 | 45 | -s, --skip-recommended 46 | skip *:recommended* type dependencies 47 | 48 | -r, --include-requirements 49 | include requirements in addition to dependencies 50 | 51 | -p *FORM* [*FORM* ...], --packages *FORM* [*FORM* ...] 52 | name of Homebrew formulae to uninstall 53 | 54 | general arguments 55 | ----------------- 56 | 57 | -a, --all uninstall all Homebrew formulae installed through 58 | Homebrew 59 | -k, --dry-run list all Homebrew formulae which would be removed, but 60 | will not actually delete any Homebrew formulae 61 | 62 | -i, --ignore-dependencies 63 | run in non-recursive mode, i.e. ignore dependencies 64 | packages 65 | 66 | -q, --quiet run in quiet mode, with no output information 67 | -v, --verbose run in verbose mode, with detailed output information 68 | -y, --yes yes for all selections 69 | -n, --no-cleanup do not run cleanup process 70 | 71 | miscellaneous arguments 72 | ----------------------- 73 | 74 | -L *ARG*, --logging *ARG* 75 | options for ``brew list`` command 76 | 77 | -U *ARG*, --uninstall *ARG* 78 | options for ``brew uninstall `` command 79 | 80 | SEE ALSO 81 | ======== 82 | 83 | * ``brew(1)`` 84 | * ``macdaily-uninstall`` 85 | * ``macdaily-uninstall-cask`` 86 | * ``macdaily-uninstall-pip`` 87 | -------------------------------------------------------------------------------- /doc/rst/macdaily-uninstall-cask.rst: -------------------------------------------------------------------------------- 1 | ======================= 2 | macdaily-uninstall-cask 3 | ======================= 4 | 5 | ----------------------------------- 6 | Automated Homebrew Cask Uninstaller 7 | ----------------------------------- 8 | 9 | :Version: v2019.8.4 10 | :Date: August 07, 2019 11 | :Manual section: 8 12 | :Author: 13 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 14 | of *MacDaily*. Please contact me at *jarryshaw@icloud.com*. 15 | :Copyright: 16 | *MacDaily* is licensed under the **Apple Open Source License**. 17 | 18 | SYNOPSIS 19 | ======== 20 | 21 | macdaily **uninstall** *cask* [*options*] <*casks*> ... 22 | 23 | aliases: **brew-cask**, **caskroom** 24 | 25 | OPTIONS 26 | ======= 27 | 28 | optional arguments 29 | ------------------ 30 | 31 | -h, --help show this help message and exit 32 | -V, --version show program's version number and exit 33 | 34 | specification arguments 35 | ----------------------- 36 | 37 | -f, --force uninstall even if the Cask does not appear to be 38 | present 39 | 40 | -p *CASK* [*CASK* ...], --packages *CASK* [*CASK* ...] 41 | name of Caskroom binaries to uninstall 42 | 43 | general arguments 44 | ----------------- 45 | 46 | -a, --all uninstall all Caskroom binaries installed through 47 | Homebrew 48 | -k, --dry-run list all Caskroom binaries which would be removed, but 49 | will not actually delete any Caskroom binaries 50 | -q, --quiet run in quiet mode, with no output information 51 | -v, --verbose run in verbose mode, with detailed output information 52 | -y, --yes yes for all selections 53 | -n, --no-cleanup do not run cleanup process 54 | 55 | miscellaneous arguments 56 | ----------------------- 57 | 58 | -L *ARG*, --logging *ARG* 59 | options for ``brew cask list`` command 60 | 61 | -U *ARG*, --uninstall *ARG* 62 | options for ``brew cask uninstall `` command 63 | 64 | SEE ALSO 65 | ======== 66 | 67 | * ``brew-cask(1)`` 68 | * ``macdaily-uninstall`` 69 | * ``macdaily-uninstall-brew`` 70 | * ``macdaily-uninstall-pip`` 71 | -------------------------------------------------------------------------------- /doc/rst/macdaily-uninstall-pip.rst: -------------------------------------------------------------------------------- 1 | ====================== 2 | macdaily-uninstall-pip 3 | ====================== 4 | 5 | ------------------------------------ 6 | Automated Python Package Uninstaller 7 | ------------------------------------ 8 | 9 | :Version: v2019.8.4 10 | :Date: August 07, 2019 11 | :Manual section: 8 12 | :Author: 13 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 14 | of *MacDaily*. Please contact me at *jarryshaw@icloud.com*. 15 | :Copyright: 16 | *MacDaily* is licensed under the **Apple Open Source License**. 17 | 18 | SYNOPSIS 19 | ======== 20 | 21 | macdaily **uninstall** *pip* [*options*] <*packages*> ... 22 | 23 | aliases: **cpython**, **pypy**, **python** 24 | 25 | OPTIONS 26 | ======= 27 | 28 | optional arguments 29 | ------------------ 30 | 31 | -h, --help show this help message and exit 32 | -V, --version show program's version number and exit 33 | 34 | specification arguments 35 | ----------------------- 36 | 37 | -b, --brew uninstall packages of Python installed from Homebrew 38 | -c, --cpython uninstall packages of CPython implementation 39 | -d, --pre include pre-release and development versions 40 | 41 | -e *VER* [*VER* ...], --python *VER* [*VER* ...] 42 | indicate packages from which version of Python will be 43 | uninstalled 44 | 45 | -r, --pypy uninstall packages of PyPy implementation 46 | -s, --system uninstall packages of Python provided by macOS system 47 | 48 | -p *PKG* [*PKG* ...], --packages *PKG* [*PKG* ...] 49 | name of Python packages to uninstall 50 | 51 | general arguments 52 | ----------------- 53 | 54 | -a, --all uninstall all Python packages installed through 55 | Homebrew 56 | -k, --dry-run list all Python packages which would be removed, but 57 | will not actually delete any Python packages 58 | 59 | -i, --ignore-dependencies 60 | run in non-recursive mode, i.e. ignore dependencies 61 | packages 62 | 63 | -q, --quiet run in quiet mode, with no output information 64 | -v, --verbose run in verbose mode, with detailed output information 65 | -y, --yes yes for all selections 66 | -n, --no-cleanup do not run cleanup process 67 | 68 | miscellaneous arguments 69 | ----------------------- 70 | 71 | -L *ARG*, --logging *ARG* 72 | options for ``pip freeze`` command 73 | 74 | -U *ARG*, --uninstall *ARG* 75 | options for ``pip uninstall `` command 76 | 77 | SEE ALSO 78 | ======== 79 | 80 | * ``macdaily-uninstall`` 81 | * ``macdaily-uninstall-brew`` 82 | * ``macdaily-uninstall-cask`` 83 | -------------------------------------------------------------------------------- /doc/rst/macdaily-update-apm.rst: -------------------------------------------------------------------------------- 1 | =================== 2 | macdaily-update-apm 3 | =================== 4 | 5 | ----------------------------- 6 | Atom Plug-In Update Automator 7 | ----------------------------- 8 | 9 | :Version: v2019.8.4 10 | :Date: August 07, 2019 11 | :Manual section: 8 12 | :Author: 13 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 14 | of *MacDaily*. Please contact me at *jarryshaw@icloud.com*. 15 | :Copyright: 16 | *MacDaily* is licensed under the **Apple Open Source License**. 17 | 18 | SYNOPSIS 19 | ======== 20 | 21 | macdaily **update** *apm* [*options*] <*plug-ins*> ... 22 | 23 | aliases: **atom** 24 | 25 | OPTIONS 26 | ======= 27 | 28 | optional arguments 29 | ------------------ 30 | 31 | -h, --help show this help message and exit 32 | -V, --version show program's version number and exit 33 | 34 | specification arguments 35 | ----------------------- 36 | 37 | -b, --beta update Atom Beta plug-ins 38 | 39 | -p *PI* [*PI* ...], --packages *PI* [*PI* ...] 40 | name of Atom plug-ins to update 41 | 42 | general arguments 43 | ----------------- 44 | 45 | -a, --all update all plug-ins installed through Atom Package 46 | Manager 47 | -q, --quiet run in quiet mode, with no output information 48 | -v, --verbose run in verbose mode, with detailed output information 49 | -y, --yes yes for all selections 50 | 51 | miscellaneous arguments 52 | ----------------------- 53 | 54 | -L *ARG*, --logging *ARG* 55 | options for ``apm upgrade --list`` command 56 | 57 | -U *ARG*, --update *ARG* 58 | options for ``apm upgrade `` command 59 | 60 | SEE ALSO 61 | ======== 62 | 63 | * ``macdaily-update`` 64 | * ``macdaily-update-brew`` 65 | * ``macdaily-update-cask`` 66 | * ``macdaily-update-gem`` 67 | * ``macdaily-update-mas`` 68 | * ``macdaily-update-npm`` 69 | * ``macdaily-update-pip`` 70 | * ``macdaily-update-system`` 71 | -------------------------------------------------------------------------------- /doc/rst/macdaily-update-brew.rst: -------------------------------------------------------------------------------- 1 | ==================== 2 | macdaily-update-brew 3 | ==================== 4 | 5 | --------------------------------- 6 | Homebrew Formula Update Automator 7 | --------------------------------- 8 | 9 | :Version: v2019.8.4 10 | :Date: August 07, 2019 11 | :Manual section: 8 12 | :Author: 13 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 14 | of *MacDaily*. Please contact me at *jarryshaw@icloud.com*. 15 | :Copyright: 16 | *MacDaily* is licensed under the **Apple Open Source License**. 17 | 18 | SYNOPSIS 19 | ======== 20 | 21 | macdaily **update** *brew* [*options*] <*formulae*> ... 22 | 23 | aliases: **homebrew** 24 | 25 | OPTIONS 26 | ======= 27 | 28 | optional arguments 29 | ------------------ 30 | 31 | -h, --help show this help message and exit 32 | -V, --version show program's version number and exit 33 | 34 | specification arguments 35 | ----------------------- 36 | 37 | -f, --force always do a slower, full update check even if 38 | unnecessary 39 | -m, --merge ``git merge`` is used to include updates (rather 40 | than ``git rebase``) 41 | 42 | -p *FORM* [*FORM* ...], --packages *FORM* [*FORM* ...] 43 | name of Homebrew formulae to update 44 | 45 | general arguments 46 | ----------------- 47 | 48 | -a, --all update all Homebrew formulae installed through 49 | Homebrew 50 | -q, --quiet run in quiet mode, with no output information 51 | -v, --verbose run in verbose mode, with detailed output information 52 | -y, --yes yes for all selections 53 | -n, --no-cleanup do not run cleanup process 54 | 55 | miscellaneous arguments 56 | ----------------------- 57 | 58 | -L *ARG*, --logging *ARG* 59 | options for ``brew outdated`` command 60 | 61 | -U *ARG*, --update *ARG* 62 | options for ``brew upgrade `` command 63 | 64 | SEE ALSO 65 | ======== 66 | 67 | * ``brew(1)`` 68 | * ``macdaily-update`` 69 | * ``macdaily-update-apm`` 70 | * ``macdaily-update-cask`` 71 | * ``macdaily-update-gem`` 72 | * ``macdaily-update-mas`` 73 | * ``macdaily-update-npm`` 74 | * ``macdaily-update-pip`` 75 | * ``macdaily-update-system`` 76 | -------------------------------------------------------------------------------- /doc/rst/macdaily-update-cask.rst: -------------------------------------------------------------------------------- 1 | ==================== 2 | macdaily-update-cask 3 | ==================== 4 | 5 | ------------------------------ 6 | Homebrew Cask Update Automator 7 | ------------------------------ 8 | 9 | :Version: v2019.8.4 10 | :Date: August 07, 2019 11 | :Manual section: 8 12 | :Author: 13 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 14 | of *MacDaily*. Please contact me at *jarryshaw@icloud.com*. 15 | :Copyright: 16 | *MacDaily* is licensed under the **Apple Open Source License**. 17 | 18 | SYNOPSIS 19 | ======== 20 | 21 | macdaily **update** *cask* [*options*] <*casks*> ... 22 | 23 | aliases: **brew-cask**, **caskroom** 24 | 25 | OPTIONS 26 | ======= 27 | 28 | optional arguments 29 | ------------------ 30 | 31 | -h, --help show this help message and exit 32 | -V, --version show program's version number and exit 33 | 34 | specification arguments 35 | ----------------------- 36 | 37 | -f, --force use ``--force`` when running ``brew cask 38 | upgrade `` command 39 | -g, --greedy use ``--greedy`` when running ``brew cask 40 | upgrade `` command 41 | -m, --merge ``git merge`` is used to include updates (rather 42 | than ``git rebase``) 43 | -x, --exhaust exhaustively check Caskroom for outdated Homebrew 44 | Casks 45 | 46 | -p *CASK* [*CASK* ...], --packages *CASK* [*CASK* ...] 47 | name of Caskroom binaries to update 48 | 49 | general arguments 50 | ----------------- 51 | 52 | -a, --all update all Caskroom binaries installed through 53 | Homebrew 54 | -q, --quiet run in quiet mode, with no output information 55 | -v, --verbose run in verbose mode, with detailed output information 56 | -y, --yes yes for all selections 57 | -n, --no-cleanup do not run cleanup process 58 | 59 | miscellaneous arguments 60 | ----------------------- 61 | 62 | -L *ARG*, --logging *ARG* 63 | options for ``brew cask outdated`` command 64 | 65 | -U *ARG*, --update *ARG* 66 | options for ``brew cask upgrade `` command 67 | 68 | SEE ALSO 69 | ======== 70 | 71 | * ``brew-cask(1)`` 72 | * ``macdaily-update`` 73 | * ``macdaily-update-apm`` 74 | * ``macdaily-update-brew`` 75 | * ``macdaily-update-gem`` 76 | * ``macdaily-update-mas`` 77 | * ``macdaily-update-npm`` 78 | * ``macdaily-update-pip`` 79 | * ``macdaily-update-system`` 80 | -------------------------------------------------------------------------------- /doc/rst/macdaily-update-gem.rst: -------------------------------------------------------------------------------- 1 | =================== 2 | macdaily-update-gem 3 | =================== 4 | 5 | ------------------------- 6 | Ruby Gem Update Automator 7 | ------------------------- 8 | 9 | :Version: v2019.8.4 10 | :Date: August 07, 2019 11 | :Manual section: 8 12 | :Author: 13 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 14 | of *MacDaily*. Please contact me at *jarryshaw@icloud.com*. 15 | :Copyright: 16 | *MacDaily* is licensed under the **Apple Open Source License**. 17 | 18 | SYNOPSIS 19 | ======== 20 | 21 | macdaily **update** *gem* [*options*] <*gems*> ... 22 | 23 | aliases: **ruby**, **rubygems** 24 | 25 | OPTIONS 26 | ======= 27 | 28 | optional arguments 29 | ------------------ 30 | 31 | -h, --help show this help message and exit 32 | -V, --version show program's version number and exit 33 | 34 | specification arguments 35 | ----------------------- 36 | 37 | -b, --brew update gems of Ruby installed from Homebrew 38 | -s, --system update gems of Ruby provided by macOS system 39 | 40 | -p *GEM* [*GEM* ...], --packages *GEM* [*GEM* ...] 41 | name of Ruby gems to update 42 | 43 | general arguments 44 | ----------------- 45 | 46 | -a, --all update all gems installed through RubyGems 47 | -q, --quiet run in quiet mode, with no output information 48 | -v, --verbose run in verbose mode, with detailed output information 49 | -y, --yes yes for all selections 50 | 51 | miscellaneous arguments 52 | ----------------------- 53 | 54 | -L *ARG*, --logging *ARG* 55 | options for ``gem outdated`` command 56 | 57 | -U *ARG*, --update *ARG* 58 | options for ``gem update `` command 59 | 60 | SEE ALSO 61 | ======== 62 | 63 | * ``gem(1)`` 64 | * ``macdaily-update`` 65 | * ``macdaily-update-apm`` 66 | * ``macdaily-update-brew`` 67 | * ``macdaily-update-cask`` 68 | * ``macdaily-update-mas`` 69 | * ``macdaily-update-npm`` 70 | * ``macdaily-update-pip`` 71 | * ``macdaily-update-system`` 72 | -------------------------------------------------------------------------------- /doc/rst/macdaily-update-mas.rst: -------------------------------------------------------------------------------- 1 | =================== 2 | macdaily-update-mas 3 | =================== 4 | 5 | ---------------------------------- 6 | macOS Application Update Automator 7 | ---------------------------------- 8 | 9 | :Version: v2019.8.4 10 | :Date: August 07, 2019 11 | :Manual section: 8 12 | :Author: 13 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 14 | of *MacDaily*. Please contact me at *jarryshaw@icloud.com*. 15 | :Copyright: 16 | *MacDaily* is licensed under the **Apple Open Source License**. 17 | 18 | SYNOPSIS 19 | ======== 20 | 21 | macdaily **update** *mas* [*options*] <*applications*> ... 22 | 23 | aliases: **app-store**, **appstore**, **mac**, **mac-app-store** 24 | 25 | OPTIONS 26 | ======= 27 | 28 | optional arguments 29 | ------------------ 30 | 31 | -h, --help show this help message and exit 32 | -V, --version show program's version number and exit 33 | 34 | specification arguments 35 | ----------------------- 36 | 37 | -p *APP* [*APP* ...], --packages *APP* [*APP* ...] 38 | name of macOS applications to update 39 | 40 | general arguments 41 | ----------------- 42 | 43 | -a, --all update all macOS applications installed through Mac 44 | App Store 45 | -q, --quiet run in quiet mode, with no output information 46 | -v, --verbose run in verbose mode, with detailed output information 47 | -y, --yes yes for all selections 48 | 49 | miscellaneous arguments 50 | ----------------------- 51 | 52 | -L *ARG*, --logging *ARG* 53 | options for ``mas outdated`` command 54 | 55 | -U *ARG*, --update *ARG* 56 | options for ``mas upgrade `` command 57 | 58 | SEE ALSO 59 | ======== 60 | 61 | * ``macdaily-update`` 62 | * ``macdaily-update-apm`` 63 | * ``macdaily-update-brew`` 64 | * ``macdaily-update-cask`` 65 | * ``macdaily-update-gem`` 66 | * ``macdaily-update-npm`` 67 | * ``macdaily-update-pip`` 68 | * ``macdaily-update-system`` 69 | -------------------------------------------------------------------------------- /doc/rst/macdaily-update-npm.rst: -------------------------------------------------------------------------------- 1 | =================== 2 | macdaily-update-npm 3 | =================== 4 | 5 | ------------------------------- 6 | Node.js Module Update Automator 7 | ------------------------------- 8 | 9 | :Version: v2019.8.4 10 | :Date: August 07, 2019 11 | :Manual section: 8 12 | :Author: 13 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 14 | of *MacDaily*. Please contact me at *jarryshaw@icloud.com*. 15 | :Copyright: 16 | *MacDaily* is licensed under the **Apple Open Source License**. 17 | 18 | SYNOPSIS 19 | ======== 20 | 21 | macdaily **update** *npm* [*options*] <*modules*> ... 22 | 23 | aliases: **node**, **node.js** 24 | 25 | OPTIONS 26 | ======= 27 | 28 | optional arguments 29 | ------------------ 30 | 31 | -h, --help show this help message and exit 32 | -V, --version show program's version number and exit 33 | 34 | specification arguments 35 | ----------------------- 36 | 37 | -p *MOD* [*MOD* ...], --packages *MOD* [*MOD* ...] 38 | name of Node.js modules to update 39 | 40 | general arguments 41 | ----------------- 42 | 43 | -a, --all update all Node.js modules installed through Node.js 44 | Package Manager 45 | -q, --quiet run in quiet mode, with no output information 46 | -v, --verbose run in verbose mode, with detailed output information 47 | -y, --yes yes for all selections 48 | -n, --no-cleanup do not run cleanup process 49 | 50 | miscellaneous arguments 51 | ----------------------- 52 | 53 | -L *ARG*, --logging *ARG* 54 | options for ``npm outdated --global`` command 55 | 56 | -U *ARG*, --update *ARG* 57 | options for ``npm upgrade --global `` command 58 | 59 | SEE ALSO 60 | ======== 61 | 62 | * ``npm(1)`` 63 | * ``macdaily-update`` 64 | * ``macdaily-update-apm`` 65 | * ``macdaily-update-brew`` 66 | * ``macdaily-update-cask`` 67 | * ``macdaily-update-gem`` 68 | * ``macdaily-update-mas`` 69 | * ``macdaily-update-pip`` 70 | * ``macdaily-update-system`` 71 | -------------------------------------------------------------------------------- /doc/rst/macdaily-update-pip.rst: -------------------------------------------------------------------------------- 1 | =================== 2 | macdaily-update-pip 3 | =================== 4 | 5 | ------------------------------- 6 | Python Package Update Automator 7 | ------------------------------- 8 | 9 | :Version: v2019.8.4 10 | :Date: August 07, 2019 11 | :Manual section: 8 12 | :Author: 13 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 14 | of *MacDaily*. Please contact me at *jarryshaw@icloud.com*. 15 | :Copyright: 16 | *MacDaily* is licensed under the **Apple Open Source License**. 17 | 18 | SYNOPSIS 19 | ======== 20 | 21 | macdaily **update** *pip* [*options*] <*packages*> ... 22 | 23 | aliases: **cpython**, **pypy**, **python** 24 | 25 | OPTIONS 26 | ======= 27 | 28 | optional arguments 29 | ------------------ 30 | 31 | -h, --help show this help message and exit 32 | -V, --version show program's version number and exit 33 | 34 | specification arguments 35 | ----------------------- 36 | 37 | -u, --user install to the Python user install directory for your 38 | platform 39 | -b, --brew update packages of Python installed from Homebrew 40 | -c, --cpython update packages of CPython implementation 41 | -d, --pre include pre-release and development versions 42 | 43 | -e *VER* [*VER* ...], --python *VER* [*VER* ...] 44 | indicate packages from which version of Python will 45 | update 46 | 47 | -r, --pypy update packages of PyPy implementation 48 | -s, --system update packages of Python provided by macOS system 49 | 50 | -p *PKG* [*PKG* ...], --packages *PKG* [*PKG* ...] 51 | name of Python packages to update 52 | 53 | general arguments 54 | ----------------- 55 | 56 | -a, --all update all Python packages installed through Python 57 | Package Index 58 | -q, --quiet run in quiet mode, with no output information 59 | -v, --verbose run in verbose mode, with detailed output information 60 | -y, --yes yes for all selections 61 | -n, --no-cleanup do not run cleanup process 62 | 63 | miscellaneous arguments 64 | ----------------------- 65 | 66 | -L *ARG*, --logging *ARG* 67 | options for ``pip list --outdated`` command 68 | 69 | -U *ARG*, --update *ARG* 70 | options for ``pip install --upgrade `` command 71 | 72 | SEE ALSO 73 | ======== 74 | 75 | * ``macdaily-update`` 76 | * ``macdaily-update-apm`` 77 | * ``macdaily-update-brew`` 78 | * ``macdaily-update-cask`` 79 | * ``macdaily-update-gem`` 80 | * ``macdaily-update-mas`` 81 | * ``macdaily-update-npm`` 82 | * ``macdaily-update-system`` 83 | -------------------------------------------------------------------------------- /doc/rst/macdaily-update-system.rst: -------------------------------------------------------------------------------- 1 | ====================== 2 | macdaily-update-system 3 | ====================== 4 | 5 | -------------------------------- 6 | System Software Update Automator 7 | -------------------------------- 8 | 9 | :Version: v2019.8.4 10 | :Date: August 07, 2019 11 | :Manual section: 8 12 | :Author: 13 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 14 | of *MacDaily*. Please contact me at *jarryshaw@icloud.com*. 15 | :Copyright: 16 | *MacDaily* is licensed under the **Apple Open Source License**. 17 | 18 | SYNOPSIS 19 | ======== 20 | 21 | macdaily **update** *system* [*options*] <*software*> ... 22 | 23 | aliases: **software**, **softwareupdate** 24 | 25 | OPTIONS 26 | ======= 27 | 28 | optional arguments 29 | ------------------ 30 | 31 | -h, --help show this help message and exit 32 | -V, --version show program's version number and exit 33 | 34 | specification arguments 35 | ----------------------- 36 | 37 | -R, --restart automatically restart (or shut down) if required to 38 | complete installation 39 | -r, --recommended only update software that is recommended for your 40 | system 41 | 42 | -p *SW* [*SW* ...], --packages *SW* [*SW* ...] 43 | name of system software to update 44 | 45 | general arguments 46 | ----------------- 47 | 48 | -a, --all update all system software installed through 49 | ``softwareupdate(8)`` 50 | -q, --quiet run in quiet mode, with no output information 51 | -v, --verbose run in verbose mode, with detailed output information 52 | -y, --yes yes for all selections 53 | 54 | miscellaneous arguments 55 | ----------------------- 56 | 57 | -L *ARG*, --logging *ARG* 58 | options for ``softwareupdate --list`` command 59 | 60 | -U *ARG*, --update *ARG* 61 | options for ``softwareupdate --install 62 | `` command 63 | 64 | SEE ALSO 65 | ======== 66 | 67 | * ``softwareupdate(8)`` 68 | * ``macdaily-update`` 69 | * ``macdaily-update-apm`` 70 | * ``macdaily-update-brew`` 71 | * ``macdaily-update-cask`` 72 | * ``macdaily-update-gem`` 73 | * ``macdaily-update-mas`` 74 | * ``macdaily-update-npm`` 75 | * ``macdaily-update-pip`` 76 | -------------------------------------------------------------------------------- /macdaily/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | import importlib 4 | import os 5 | import platform 6 | import warnings 7 | import sys 8 | 9 | import tbtrim 10 | 11 | from macdaily.util.const.macro import DEVMODE 12 | from macdaily.util.const.term import red, reset 13 | from macdaily.util.exceptions import Error, UnsupportedOS 14 | from macdaily.util.tools.misc import predicate 15 | 16 | # set up sys.excepthook 17 | if DEVMODE: 18 | warnings.showwarning(f'development mode enabled', RuntimeWarning, 19 | filename=__file__, lineno=0, 20 | line=f"MACDAILY_DEVMODE={os.environ['MACDAILY_DEVMODE']}") 21 | else: 22 | tbtrim.set_trim_rule(predicate, strict=False, 23 | target=(Error, KeyboardInterrupt)) 24 | 25 | # check platform 26 | if platform.system() != 'Darwin': 27 | raise UnsupportedOS('macdaily: error: script runs only on macOS') 28 | 29 | # check dependencies 30 | if sys.version_info[:2] <= (3, 4): 31 | 32 | def test_import(module): 33 | try: 34 | importlib.import_module(module) 35 | except ImportError: 36 | print(f'macdaily: {red}error{reset}: broken dependency', file=sys.stderr) 37 | raise 38 | 39 | test_import('pathlib2') 40 | test_import('subprocess32') 41 | -------------------------------------------------------------------------------- /macdaily/api/bundle.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JarryShaw/MacDaily/9bd69fd710c4b00553507b62798532431104abab/macdaily/api/bundle.py -------------------------------------------------------------------------------- /macdaily/cli/archive.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | import argparse 4 | import sys 5 | 6 | from macdaily.util.const.macro import STR_ARCHIVE 7 | from macdaily.util.const.macro import VERSION as __version__ 8 | 9 | 10 | def get_archive_parser(): 11 | ####################################################### 12 | # Archive CLI 13 | # * options 14 | # - optional arguments 15 | # - specification arguments 16 | # - general arguments 17 | # - miscellaneous arguments 18 | # * packages 19 | ####################################################### 20 | 21 | parser = argparse.ArgumentParser(prog='macdaily-archive', 22 | description='MacDaily Log Archive Utility', 23 | usage='macdaily archive [options] ...', 24 | epilog=STR_ARCHIVE) 25 | parser.add_argument('-V', '--version', action='version', version=__version__) 26 | 27 | spec_group = parser.add_argument_group(title='specification arguments') 28 | spec_group.add_argument('path', nargs='*', metavar='CMD', 29 | help=('archive logs of specified command, e.g. archive, cleanup, ' 30 | 'dependency, logging, postinstall, reinstall, uninstall, update, ' 31 | 'logging/apm, logging/app, logging/brew, logging/cask, logging/gem, ' 32 | 'logging/mas, logging/npm, logging/pip and logging/tap')) 33 | 34 | genl_group = parser.add_argument_group(title='general arguments') 35 | genl_group.add_argument('-a', '--all', action='store_true', 36 | help='archive all ancient logs') 37 | genl_group.add_argument('-n', '--no-storage', action='store_true', 38 | help='do not move ancient logs into external hard disk') 39 | genl_group.add_argument('-q', '--quiet', action='store_true', 40 | help='run in quiet mode, with no output information') 41 | genl_group.add_argument('-v', '--verbose', action='store_true', 42 | help='run in verbose mode, with detailed output information') 43 | genl_group.add_argument('-l', '--show-log', action='store_true', 44 | help='open log in Console.app upon completion of command') 45 | 46 | return parser 47 | 48 | 49 | def parse_args(argv=None): 50 | if argv is None: 51 | argv = sys.argv[1:] 52 | 53 | # main parser process 54 | main_parser = get_archive_parser() 55 | main_args = main_parser.parse_args(argv or ['--help']) 56 | 57 | return main_args 58 | -------------------------------------------------------------------------------- /macdaily/cli/bundle.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JarryShaw/MacDaily/9bd69fd710c4b00553507b62798532431104abab/macdaily/cli/bundle.py -------------------------------------------------------------------------------- /macdaily/cli/help.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | import argparse 4 | import sys 5 | 6 | from macdaily.util.const.macro import STR_HELP 7 | from macdaily.util.const.macro import VERSION as __version__ 8 | 9 | 10 | def get_help_parser(): 11 | ####################################################### 12 | # Help CLI 13 | # * options 14 | # - optional arguments 15 | # - specification arguments 16 | # - general arguments 17 | # - miscellaneous arguments 18 | # * packages 19 | ####################################################### 20 | 21 | parser = argparse.ArgumentParser(prog='macdaily-help', 22 | description='MacDaily Usage Information Manual', 23 | usage='macdaily help [options] ...', 24 | epilog=STR_HELP) 25 | parser.add_argument('-V', '--version', action='version', version=__version__) 26 | 27 | spec_group = parser.add_argument_group(title='specification arguments') 28 | spec_group.add_argument('command', action='store', nargs='?', metavar='CMD', 29 | help=(f"display manual information about such command")) 30 | 31 | return parser 32 | 33 | 34 | def parse_args(argv=None): 35 | if argv is None: 36 | argv = sys.argv[1:] or ['--help'] 37 | 38 | # main parser process 39 | main_parser = get_help_parser() 40 | main_args = main_parser.parse_args(argv) 41 | 42 | return main_args 43 | -------------------------------------------------------------------------------- /macdaily/cli/launch.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | import argparse 4 | import sys 5 | 6 | from macdaily.util.const.macro import STR_LAUNCH 7 | from macdaily.util.const.macro import VERSION as __version__ 8 | from macdaily.util.const.term import bold, reset 9 | 10 | 11 | def get_launch_parser(): 12 | ####################################################### 13 | # Launch CLI 14 | # * options 15 | # - optional arguments 16 | # - specification arguments 17 | # - general arguments 18 | # - miscellaneous arguments 19 | # * packages 20 | ####################################################### 21 | 22 | parser = argparse.ArgumentParser(prog='macdaily-launch', 23 | description='MacDaily Dependency Launch Helper', 24 | usage='macdaily launch [options] ...', 25 | epilog=STR_LAUNCH) 26 | parser.add_argument('-V', '--version', action='version', version=__version__) 27 | 28 | spec_group = parser.add_argument_group(title='specification arguments') 29 | spec_group.add_argument('program', nargs='*', metavar='PROG', 30 | help=(f"helper program to launch, choose from `{bold}askpass{reset}', " 31 | f"`{bold}confirm{reset}' and `{bold}daemons{reset}'")) 32 | 33 | genl_group = parser.add_argument_group(title='general arguments') 34 | genl_group.add_argument('-a', '--all', action='store_true', 35 | help=(f"launch all help programs, i.e. `{bold}askpass{reset}', " 36 | f"`{bold}confirm{reset}' and `{bold}daemons{reset}'")) 37 | genl_group.add_argument('-q', '--quiet', action='store_true', 38 | help='run in quiet mode, with no output information') 39 | genl_group.add_argument('-v', '--verbose', action='store_true', 40 | help='run in verbose mode, with detailed output information') 41 | genl_group.add_argument('-n', '--no-cleanup', action='store_true', 42 | help='do not run cleanup process') 43 | genl_group.add_argument('-l', '--show-log', action='store_true', 44 | help='open log in Console.app upon completion of command') 45 | 46 | return parser 47 | 48 | 49 | def parse_args(argv=None): 50 | if argv is None: 51 | argv = sys.argv[1:] 52 | 53 | # main parser process 54 | main_parser = get_launch_parser() 55 | main_args = main_parser.parse_args(argv or ['--help']) 56 | 57 | return main_args 58 | -------------------------------------------------------------------------------- /macdaily/cls/bundle/dump.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JarryShaw/MacDaily/9bd69fd710c4b00553507b62798532431104abab/macdaily/cls/bundle/dump.py -------------------------------------------------------------------------------- /macdaily/cls/bundle/load.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JarryShaw/MacDaily/9bd69fd710c4b00553507b62798532431104abab/macdaily/cls/bundle/load.py -------------------------------------------------------------------------------- /macdaily/cls/cleanup/brew.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | from macdaily.cmd.cleanup import CleanupCommand 4 | from macdaily.core.brew import BrewCommand 5 | 6 | 7 | class BrewCleanup(BrewCommand, CleanupCommand): 8 | 9 | def _parse_args(self, namespace): 10 | self._quiet = namespace.get('quiet', False) # pylint: disable=attribute-defined-outside-init 11 | self._verbose = namespace.get('verbose', False) # pylint: disable=attribute-defined-outside-init 12 | -------------------------------------------------------------------------------- /macdaily/cls/cleanup/cask.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | from macdaily.cmd.cleanup import CleanupCommand 4 | from macdaily.core.cask import CaskCommand 5 | 6 | 7 | class CaskCleanup(CaskCommand, CleanupCommand): 8 | 9 | def _parse_args(self, namespace): 10 | self._quiet = namespace.get('quiet', False) # pylint: disable=attribute-defined-outside-init 11 | self._verbose = namespace.get('verbose', False) # pylint: disable=attribute-defined-outside-init 12 | -------------------------------------------------------------------------------- /macdaily/cls/cleanup/npm.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | from macdaily.cmd.cleanup import CleanupCommand 4 | from macdaily.core.npm import NpmCommand 5 | 6 | 7 | class NpmCleanup(NpmCommand, CleanupCommand): 8 | 9 | def _parse_args(self, namespace): 10 | self._quiet = namespace.get('quiet', False) # pylint: disable=attribute-defined-outside-init 11 | self._verbose = namespace.get('verbose', False) # pylint: disable=attribute-defined-outside-init 12 | -------------------------------------------------------------------------------- /macdaily/cls/cleanup/pip.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | from macdaily.cmd.cleanup import CleanupCommand 4 | from macdaily.core.pip import PipCommand 5 | 6 | 7 | class PipCleanup(PipCommand, CleanupCommand): 8 | 9 | def _parse_args(self, namespace): 10 | self._brew = namespace.get('brew', False) # pylint: disable=attribute-defined-outside-init 11 | self._cpython = namespace.get('cpython', False) # pylint: disable=attribute-defined-outside-init 12 | self._pypy = namespace.get('pypy', False) # pylint: disable=attribute-defined-outside-init 13 | self._system = namespace.get('system', False) # pylint: disable=attribute-defined-outside-init 14 | 15 | self._quiet = namespace.get('quiet', False) # pylint: disable=attribute-defined-outside-init 16 | self._verbose = namespace.get('verbose', False) # pylint: disable=attribute-defined-outside-init 17 | -------------------------------------------------------------------------------- /macdaily/cls/install/apm.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | from macdaily.cmd.install import InstallCommand 4 | from macdaily.core.apm import ApmCommand 5 | from macdaily.util.tools.print import print_info, print_scpt 6 | from macdaily.util.tools.script import run 7 | 8 | 9 | class ApmInstall(ApmCommand, InstallCommand): 10 | 11 | def _parse_args(self, namespace): 12 | self._beta = namespace.get('beta', False) # pylint: disable=attribute-defined-outside-init 13 | 14 | self._quiet = namespace.get('quiet', False) # pylint: disable=attribute-defined-outside-init 15 | self._verbose = namespace.get('verbose', False) # pylint: disable=attribute-defined-outside-init 16 | self._yes = namespace.get('yes', False) # pylint: disable=attribute-defined-outside-init 17 | 18 | self._install_opts = namespace.get('install', str()).split() # pylint: disable=attribute-defined-outside-init 19 | 20 | def _proc_install(self, path): 21 | text = f'Installing specified {self.desc[1]}' 22 | print_info(text, self._file, redirect=self._qflag) 23 | 24 | argv = [path, 'install'] 25 | if self._quiet: 26 | argv.append('--quiet') 27 | if self._verbose: 28 | argv.append('--verbose') 29 | argv.extend(self._install_opts) 30 | argv.append('') 31 | 32 | for package in self._var__temp_pkgs: 33 | argv[-1] = package 34 | print_scpt(argv, self._file, redirect=self._qflag) 35 | if run(argv, self._file, timeout=self._timeout, 36 | redirect=self._qflag, verbose=self._vflag): 37 | self._fail.append(package) 38 | else: 39 | self._pkgs.append(package) 40 | del self._var__temp_pkgs 41 | -------------------------------------------------------------------------------- /macdaily/cls/install/brew.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | from macdaily.cmd.install import InstallCommand 4 | from macdaily.core.brew import BrewCommand 5 | from macdaily.util.tools.print import print_info, print_scpt 6 | from macdaily.util.tools.script import run 7 | 8 | 9 | class BrewInstall(BrewCommand, InstallCommand): 10 | 11 | def _parse_args(self, namespace): 12 | self._no_cleanup = namespace.get('no_cleanup', False) # pylint: disable=attribute-defined-outside-init 13 | 14 | self._quiet = namespace.get('quiet', False) # pylint: disable=attribute-defined-outside-init 15 | self._verbose = namespace.get('verbose', False) # pylint: disable=attribute-defined-outside-init 16 | self._yes = namespace.get('yes', False) # pylint: disable=attribute-defined-outside-init 17 | 18 | self._install_opts = namespace.get('install', str()).split() # pylint: disable=attribute-defined-outside-init 19 | 20 | def _proc_install(self, path): 21 | text = f'Installing specified {self.desc[1]}' 22 | print_info(text, self._file, redirect=self._qflag) 23 | 24 | argv = [path, 'install'] 25 | if self._quiet: 26 | argv.append('--quiet') 27 | if self._verbose: 28 | argv.append('--verbose') 29 | argv.extend(self._install_opts) 30 | argv.append('') 31 | 32 | for package in self._var__temp_pkgs: 33 | argv[-1] = package 34 | print_scpt(argv, self._file, redirect=self._qflag) 35 | if run(argv, self._file, timeout=self._timeout, 36 | redirect=self._qflag, verbose=self._vflag): 37 | self._fail.append(package) 38 | else: 39 | self._pkgs.append(package) 40 | del self._var__temp_pkgs 41 | -------------------------------------------------------------------------------- /macdaily/cls/install/cask.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | from macdaily.cmd.install import InstallCommand 4 | from macdaily.core.cask import CaskCommand 5 | from macdaily.util.tools.print import print_info, print_scpt 6 | from macdaily.util.tools.script import run 7 | 8 | 9 | class CaskInstall(CaskCommand, InstallCommand): 10 | 11 | def _parse_args(self, namespace): 12 | self._force = namespace.get('force', False) # pylint: disable=attribute-defined-outside-init 13 | self._no_cleanup = namespace.get('no_cleanup', False) # pylint: disable=attribute-defined-outside-init 14 | 15 | self._quiet = namespace.get('quiet', False) # pylint: disable=attribute-defined-outside-init 16 | self._verbose = namespace.get('verbose', False) # pylint: disable=attribute-defined-outside-init 17 | self._yes = namespace.get('yes', False) # pylint: disable=attribute-defined-outside-init 18 | 19 | self._install_opts = namespace.get('install', str()).split() # pylint: disable=attribute-defined-outside-init 20 | 21 | def _proc_install(self, path): 22 | text = f'Installing specified {self.desc[1]}' 23 | print_info(text, self._file, redirect=self._qflag) 24 | 25 | argv = [path, 'cask', 'install'] 26 | if self._force: 27 | argv.append('--force') 28 | if self._quiet: 29 | argv.append('--quiet') 30 | if self._verbose: 31 | argv.append('--verbose') 32 | argv.extend(self._install_opts) 33 | argv.append('') 34 | 35 | askpass = f'SUDO_ASKPASS={self._askpass!r}' 36 | for package in self._var__temp_pkgs: 37 | argv[-1] = package 38 | print_scpt(' '.join(argv), self._file, redirect=self._qflag) 39 | if run(argv, self._file, shell=True, timeout=self._timeout, 40 | redirect=self._qflag, verbose=self._vflag, prefix=askpass): 41 | self._fail.append(package) 42 | else: 43 | self._pkgs.append(package) 44 | del self._var__temp_pkgs 45 | -------------------------------------------------------------------------------- /macdaily/cls/install/gem.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | from macdaily.cmd.install import InstallCommand 4 | from macdaily.core.gem import GemCommand 5 | from macdaily.util.tools.print import print_info, print_scpt 6 | from macdaily.util.tools.script import sudo 7 | 8 | 9 | class GemInstall(GemCommand, InstallCommand): 10 | 11 | def _parse_args(self, namespace): 12 | self._brew = namespace.get('brew', False) # pylint: disable=attribute-defined-outside-init 13 | self._system = namespace.get('system', False) # pylint: disable=attribute-defined-outside-init 14 | 15 | self._quiet = namespace.get('quiet', False) # pylint: disable=attribute-defined-outside-init 16 | self._verbose = namespace.get('verbose', False) # pylint: disable=attribute-defined-outside-init 17 | self._yes = namespace.get('yes', False) # pylint: disable=attribute-defined-outside-init 18 | 19 | self._install_opts = namespace.get('install', str()).split() # pylint: disable=attribute-defined-outside-init 20 | 21 | def _proc_install(self, path): 22 | text = f'Installing specified {self.desc[1]}' 23 | print_info(text, self._file, redirect=self._qflag) 24 | 25 | argv = [path, 'install'] 26 | if self._quiet: 27 | argv.append('--quiet') 28 | if self._verbose: 29 | argv.append('--verbose') 30 | argv.extend(self._install_opts) 31 | 32 | argc = ' '.join(argv) 33 | for package in self._var__temp_pkgs: 34 | args = f'{argc} {package}' 35 | print_scpt(args, self._file, redirect=self._qflag) 36 | yes = 'y' if self._yes else None 37 | if sudo(argv, self._file, self._password, timeout=self._timeout, 38 | redirect=self._qflag, verbose=self._vflag, yes=yes): 39 | self._fail.append(package) 40 | else: 41 | self._pkgs.append(package) 42 | del self._var__temp_pkgs 43 | -------------------------------------------------------------------------------- /macdaily/cls/install/mas.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | import re 4 | 5 | from macdaily.cmd.install import InstallCommand 6 | from macdaily.core.mas import MasCommand 7 | from macdaily.util.tools.print import print_info, print_scpt 8 | from macdaily.util.tools.script import sudo 9 | 10 | 11 | class MasInstall(MasCommand, InstallCommand): 12 | 13 | def _parse_args(self, namespace): 14 | self._force = namespace.get('force', False) # pylint: disable=attribute-defined-outside-init 15 | 16 | self._quiet = namespace.get('quiet', False) # pylint: disable=attribute-defined-outside-init 17 | self._verbose = namespace.get('verbose', False) # pylint: disable=attribute-defined-outside-init 18 | self._yes = namespace.get('yes', False) # pylint: disable=attribute-defined-outside-init 19 | 20 | self._install_opts = namespace.get('install', str()).split() # pylint: disable=attribute-defined-outside-init 21 | 22 | def _proc_install(self, path): 23 | text = f'Installing specified {self.desc[1]}' 24 | print_info(text, self._file, redirect=self._qflag) 25 | 26 | argv = [path, 'install'] 27 | if self._force: 28 | argv.append('--force') 29 | argv.extend(self._install_opts) 30 | argv.append('') 31 | 32 | for package in self._var__temp_pkgs: 33 | if re.match(r'\d{10}', package) is None: 34 | argv[1] = 'lucky' 35 | argv[-1] = package 36 | print_scpt(' '.join(argv), self._file, redirect=self._qflag) 37 | if sudo(argv, self._file, self._password, timeout=self._timeout, 38 | redirect=self._qflag, verbose=self._vflag): 39 | self._fail.append(package) 40 | else: 41 | self._pkgs.append(package) 42 | del self._var__temp_pkgs 43 | -------------------------------------------------------------------------------- /macdaily/cls/install/npm.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | from macdaily.cmd.install import InstallCommand 4 | from macdaily.core.npm import NpmCommand 5 | from macdaily.util.tools.print import print_info, print_scpt 6 | from macdaily.util.tools.script import sudo 7 | 8 | 9 | class NpmInstall(NpmCommand, InstallCommand): 10 | 11 | def _parse_args(self, namespace): 12 | self._no_cleanup = namespace.get('no_cleanup', False) # pylint: disable=attribute-defined-outside-init 13 | 14 | self._quiet = namespace.get('quiet', False) # pylint: disable=attribute-defined-outside-init 15 | self._verbose = namespace.get('verbose', False) # pylint: disable=attribute-defined-outside-init 16 | self._yes = namespace.get('yes', False) # pylint: disable=attribute-defined-outside-init 17 | 18 | self._install_opts = namespace.get('install', str()).split() # pylint: disable=attribute-defined-outside-init 19 | 20 | def _proc_install(self, path): 21 | text = f'Installing specified {self.desc[1]}' 22 | print_info(text, self._file, redirect=self._qflag) 23 | 24 | argv = [path, 'install', '--global'] 25 | if self._quiet: 26 | argv.append('--quiet') 27 | if self._verbose: 28 | argv.append('--verbose') 29 | argv.extend(self._install_opts) 30 | argv.append('') 31 | 32 | for package in self._var__temp_pkgs: 33 | argv[-1] = package 34 | print_scpt(argv, self._file, redirect=self._qflag) 35 | if sudo(argv, self._file, self._password, timeout=self._timeout, 36 | redirect=self._qflag, verbose=self._vflag): 37 | self._fail.append(package) 38 | else: 39 | self._pkgs.append(package) 40 | del self._var__temp_pkgs 41 | -------------------------------------------------------------------------------- /macdaily/cls/install/pip.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | from macdaily.cmd.install import InstallCommand 4 | from macdaily.core.pip import PipCommand 5 | from macdaily.util.tools.print import print_info, print_scpt 6 | from macdaily.util.tools.script import sudo 7 | 8 | 9 | class PipInstall(PipCommand, InstallCommand): 10 | 11 | def _parse_args(self, namespace): 12 | self._brew = namespace.get('brew', False) # pylint: disable=attribute-defined-outside-init 13 | self._cpython = namespace.get('cpython', False) # pylint: disable=attribute-defined-outside-init 14 | self._no_cleanup = namespace.get('no_cleanup', False) # pylint: disable=attribute-defined-outside-init 15 | self._pre = namespace.get('pre', False) # pylint: disable=attribute-defined-outside-init 16 | self._pypy = namespace.get('pypy', False) # pylint: disable=attribute-defined-outside-init 17 | self._system = namespace.get('system', False) # pylint: disable=attribute-defined-outside-init 18 | self._user = namespace.get('user', False) # pylint: disable=attribute-defined-outside-init 19 | 20 | self._quiet = namespace.get('quiet', False) # pylint: disable=attribute-defined-outside-init 21 | self._verbose = namespace.get('verbose', False) # pylint: disable=attribute-defined-outside-init 22 | self._yes = namespace.get('yes', False) # pylint: disable=attribute-defined-outside-init 23 | 24 | self._install_opts = namespace.get('install', str()).split() # pylint: disable=attribute-defined-outside-init 25 | 26 | def _proc_install(self, path): 27 | text = f'Installing specified {self.desc[1]}' 28 | print_info(text, self._file, redirect=self._qflag) 29 | 30 | argv = [path, '-m', 'pip', 'install'] 31 | if self._pre: 32 | argv.append('--pre') 33 | if self._user: 34 | argv.append('--user') 35 | if self._quiet: 36 | argv.append('--quiet') 37 | if self._verbose: 38 | argv.append('--verbose') 39 | argv.extend(self._install_opts) 40 | argv.append('') 41 | 42 | for package in self._var__temp_pkgs: 43 | argv[-1] = package 44 | print_scpt(argv, self._file, redirect=self._qflag) 45 | if sudo(argv, self._file, self._password, timeout=self._timeout, 46 | redirect=self._qflag, verbose=self._vflag, sethome=True): 47 | self._fail.append(package) 48 | else: 49 | self._pkgs.append(package) 50 | del self._var__temp_pkgs 51 | -------------------------------------------------------------------------------- /macdaily/cls/install/system.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | from macdaily.cmd.install import InstallCommand 4 | from macdaily.core.system import SystemCommand 5 | from macdaily.util.tools.print import print_info, print_scpt 6 | from macdaily.util.tools.script import sudo 7 | 8 | 9 | class SystemInstall(SystemCommand, InstallCommand): 10 | 11 | def _parse_args(self, namespace): 12 | self._restart = namespace.get('restart', False) # pylint: disable=attribute-defined-outside-init 13 | 14 | self._quiet = namespace.get('quiet', False) # pylint: disable=attribute-defined-outside-init 15 | self._verbose = namespace.get('verbose', False) # pylint: disable=attribute-defined-outside-init 16 | self._yes = namespace.get('yes', False) # pylint: disable=attribute-defined-outside-init 17 | 18 | self._install_opts = namespace.get('install', str()).split() # pylint: disable=attribute-defined-outside-init 19 | 20 | def _proc_install(self, path): 21 | text = f'Installing specified {self.desc[1]}' 22 | print_info(text, self._file, redirect=self._qflag) 23 | 24 | argv = [path, '--install'] 25 | if self._restart: 26 | argv.append('--restart') 27 | if self._quiet: 28 | argv.append('--quiet') 29 | if self._verbose: 30 | argv.append('--verbose') 31 | argv.extend(self._install_opts) 32 | 33 | argc = ' '.join(argv) 34 | for package in self._var__temp_pkgs: 35 | args = f'{argc} {package!r}' 36 | print_scpt(args, self._file, redirect=self._qflag) 37 | if sudo(args, self._file, self._password, timeout=self._timeout, 38 | redirect=self._qflag, verbose=self._vflag): 39 | self._fail.append(package) 40 | else: 41 | self._pkgs.append(package) 42 | del self._var__temp_pkgs 43 | -------------------------------------------------------------------------------- /macdaily/cls/logging/apm.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | import os 4 | import traceback 5 | 6 | from macdaily.cmd.logging import LoggingCommand 7 | from macdaily.core.apm import ApmCommand 8 | from macdaily.util.compat import subprocess 9 | from macdaily.util.tools.make import make_stderr 10 | from macdaily.util.tools.misc import date 11 | from macdaily.util.tools.print import print_info, print_scpt, print_text 12 | 13 | 14 | class ApmLogging(ApmCommand, LoggingCommand): 15 | 16 | @property 17 | def log(self): 18 | return 'packages' 19 | 20 | @property 21 | def ext(self): 22 | return '.txt' 23 | 24 | def _parse_args(self, namespace): 25 | self._beta = namespace.get('beta', False) # pylint: disable=attribute-defined-outside-init 26 | 27 | self._quiet = namespace.get('quiet', False) # pylint: disable=attribute-defined-outside-init 28 | self._verbose = namespace.get('verbose', False) # pylint: disable=attribute-defined-outside-init 29 | 30 | def _proc_logging(self, path): 31 | text = f'Listing installed {self.desc[1]}' 32 | print_info(text, self._file, redirect=self._qflag) 33 | 34 | suffix = path.replace('/', ':') 35 | logfile = os.path.join(self._logroot, f'{self.log}-{suffix}{self.ext}') 36 | 37 | argv = [path, 'list', '--installed', '--bare'] 38 | args = ' '.join(argv) 39 | print_scpt(args, self._file, redirect=self._qflag) 40 | with open(self._file, 'a') as file: 41 | file.write(f'Script started on {date()}\n') 42 | file.write(f'command: {args!r}\n') 43 | 44 | try: 45 | proc = subprocess.check_output(argv, stderr=make_stderr(self._vflag)) 46 | except subprocess.CalledProcessError: 47 | print_text(traceback.format_exc(), self._file, redirect=self._vflag) 48 | _real_pkgs = dict() 49 | else: 50 | context = proc.decode() 51 | print_text(context, self._file, redirect=self._vflag) 52 | 53 | with open(logfile, 'w') as file: 54 | file.writelines(filter(None, context.strip().splitlines(True))) # pylint: disable=filter-builtin-not-iterating 55 | finally: 56 | with open(self._file, 'a') as file: 57 | file.write(f'Script done on {date()}\n') 58 | -------------------------------------------------------------------------------- /macdaily/cls/logging/app.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | import os 4 | import sys 5 | import traceback 6 | 7 | from macdaily.cmd.logging import LoggingCommand 8 | from macdaily.util.const.macro import ROOT 9 | from macdaily.util.compat import subprocess 10 | from macdaily.util.tools.make import make_pipe, make_stderr 11 | from macdaily.util.tools.misc import date 12 | from macdaily.util.tools.print import print_info, print_scpt, print_text 13 | 14 | 15 | class AppLogging(LoggingCommand): 16 | 17 | @property 18 | def log(self): 19 | return 'macOS' 20 | 21 | @property 22 | def ext(self): 23 | return '.log' 24 | 25 | @property 26 | def mode(self): 27 | return 'app' 28 | 29 | @property 30 | def name(self): 31 | return 'macOS Application Logging' 32 | 33 | @property 34 | def desc(self): 35 | return ('Mac Application', 'Mac Applications') 36 | 37 | def _check_exec(self): 38 | return True 39 | 40 | def _parse_args(self, namespace): 41 | self._quiet = namespace.get('quiet', False) # pylint: disable=attribute-defined-outside-init 42 | self._verbose = namespace.get('verbose', False) # pylint: disable=attribute-defined-outside-init 43 | 44 | def _loc_exec(self): 45 | self._exec = {sys.executable} 46 | 47 | def _proc_logging(self, path): 48 | text = f'Listing installed {self.desc[1]}' 49 | print_info(text, self._file, redirect=self._qflag) 50 | 51 | suffix = path.replace('/', ':') 52 | logfile = os.path.join(self._logroot, f'{self.log}-{suffix}{self.ext}') 53 | 54 | find = os.path.join(ROOT, 'res', 'find.py') 55 | argv = ['sudo', '--stdin', "--prompt=''", path, find, '/'] 56 | args = ' '.join(argv) 57 | print_scpt(args, self._file, redirect=self._qflag) 58 | with open(self._file, 'a') as file: 59 | file.write(f'Script started on {date()}\n') 60 | file.write(f'command: {args!r}\n') 61 | 62 | try: 63 | with make_pipe(self._password, self._vflag) as pipe: 64 | proc = subprocess.check_output(argv, stdin=pipe.stdout, stderr=make_stderr(self._vflag)) 65 | except subprocess.CalledProcessError: 66 | print_text(traceback.format_exc(), self._file, redirect=self._vflag) 67 | _real_pkgs = dict() 68 | else: 69 | context = proc.decode() 70 | print_text(context, self._file, redirect=self._vflag) 71 | 72 | with open(logfile, 'w') as file: 73 | file.writelines(filter(None, context.strip().splitlines(True))) # pylint: disable=filter-builtin-not-iterating 74 | finally: 75 | with open(self._file, 'a') as file: 76 | file.write(f'Script done on {date()}\n') 77 | -------------------------------------------------------------------------------- /macdaily/cls/logging/npm.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | import json 4 | import os 5 | import traceback 6 | 7 | from macdaily.cmd.logging import LoggingCommand 8 | from macdaily.core.npm import NpmCommand 9 | from macdaily.util.compat import subprocess 10 | from macdaily.util.tools.make import make_stderr 11 | from macdaily.util.tools.misc import date 12 | from macdaily.util.tools.print import print_info, print_scpt, print_text 13 | 14 | 15 | class NpmLogging(NpmCommand, LoggingCommand): 16 | 17 | @property 18 | def log(self): 19 | return 'package' 20 | 21 | @property 22 | def ext(self): 23 | return '.json' 24 | 25 | def _parse_args(self, namespace): 26 | self._long = namespace.get('long', False) # pylint: disable=attribute-defined-outside-init 27 | 28 | self._quiet = namespace.get('quiet', False) # pylint: disable=attribute-defined-outside-init 29 | self._verbose = namespace.get('verbose', False) # pylint: disable=attribute-defined-outside-init 30 | 31 | def _proc_logging(self, path): 32 | text = f'Listing installed {self.desc[1]}' 33 | print_info(text, self._file, redirect=self._qflag) 34 | 35 | suffix = path.replace('/', ':') 36 | logfile = os.path.join(self._logroot, f'{self.log}-{suffix}{self.ext}') 37 | 38 | argv = [path, 'list', '--global', '--json'] 39 | if self._long: 40 | argv.append('--long') 41 | 42 | args = ' '.join(argv) 43 | print_scpt(args, self._file, redirect=self._qflag) 44 | with open(self._file, 'a') as file: 45 | file.write(f'Script started on {date()}\n') 46 | file.write(f'command: {args!r}\n') 47 | 48 | try: 49 | proc = subprocess.check_output(argv, stderr=make_stderr(self._vflag)) 50 | except subprocess.CalledProcessError: 51 | print_text(traceback.format_exc(), self._file, redirect=self._vflag) 52 | _real_pkgs = dict() 53 | else: 54 | context = proc.decode() 55 | print_text(context, self._file, redirect=self._vflag) 56 | 57 | content = json.loads(context.strip()) 58 | with open(logfile, 'w') as file: 59 | json.dump(content, file, indent=2) 60 | finally: 61 | with open(self._file, 'a') as file: 62 | file.write(f'Script done on {date()}\n') 63 | -------------------------------------------------------------------------------- /macdaily/cls/logging/pip.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | import os 4 | import traceback 5 | 6 | from macdaily.cmd.logging import LoggingCommand 7 | from macdaily.core.pip import PipCommand 8 | from macdaily.util.compat import subprocess 9 | from macdaily.util.tools.make import make_stderr 10 | from macdaily.util.tools.misc import date 11 | from macdaily.util.tools.print import print_info, print_scpt, print_text 12 | 13 | 14 | class PipLogging(PipCommand, LoggingCommand): 15 | 16 | @property 17 | def log(self): 18 | return 'requirements' 19 | 20 | @property 21 | def ext(self): 22 | return '.txt' 23 | 24 | def _parse_args(self, namespace): 25 | self._brew = namespace.get('brew', False) # pylint: disable=attribute-defined-outside-init 26 | self._cpython = namespace.get('cpython', False) # pylint: disable=attribute-defined-outside-init 27 | self._exclude_editable = namespace.get('exclude_editable', False) # pylint: disable=attribute-defined-outside-init 28 | self._pypy = namespace.get('pypy', False) # pylint: disable=attribute-defined-outside-init 29 | self._system = namespace.get('system', False) # pylint: disable=attribute-defined-outside-init 30 | 31 | self._quiet = namespace.get('quiet', False) # pylint: disable=attribute-defined-outside-init 32 | self._verbose = namespace.get('verbose', False) # pylint: disable=attribute-defined-outside-init 33 | 34 | def _proc_logging(self, path): 35 | text = f'Listing installed {self.desc[1]}' 36 | print_info(text, self._file, redirect=self._qflag) 37 | 38 | suffix = path.replace('/', ':') 39 | logfile = os.path.join(self._logroot, f'{self.log}-{suffix}{self.ext}') 40 | 41 | argv = [path, '-m', 'pip', 'freeze'] 42 | if self._exclude_editable: 43 | argv.append('--exclude-editable') 44 | 45 | args = ' '.join(argv) 46 | print_scpt(args, self._file, redirect=self._qflag) 47 | with open(self._file, 'a') as file: 48 | file.write(f'Script started on {date()}\n') 49 | file.write(f'command: {args!r}\n') 50 | 51 | try: 52 | proc = subprocess.check_output(argv, stderr=make_stderr(self._vflag)) 53 | except subprocess.CalledProcessError: 54 | print_text(traceback.format_exc(), self._file, redirect=self._vflag) 55 | _real_pkgs = dict() 56 | else: 57 | context = proc.decode() 58 | print_text(context, self._file, redirect=self._vflag) 59 | 60 | with open(logfile, 'w') as file: 61 | file.writelines(filter(None, context.strip().splitlines(True))) # pylint: disable=filter-builtin-not-iterating 62 | finally: 63 | with open(self._file, 'a') as file: 64 | file.write(f'Script done on {date()}\n') 65 | -------------------------------------------------------------------------------- /macdaily/cmd/bundle.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JarryShaw/MacDaily/9bd69fd710c4b00553507b62798532431104abab/macdaily/cmd/bundle.py -------------------------------------------------------------------------------- /macdaily/cmd/cleanup.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | import abc 4 | 5 | from macdaily.cls.command import Command 6 | from macdaily.util.tools.print import print_info 7 | 8 | 9 | class CleanupCommand(Command): 10 | 11 | @property 12 | def cmd(self): 13 | return 'cleanup' 14 | 15 | @property 16 | def act(self): 17 | return ('prune', 'pruned', 'cleanup') 18 | 19 | @property 20 | def job(self): 21 | return ('cleanup', 'cleanup') 22 | 23 | @property 24 | def packages(self): 25 | return NotImplemented 26 | 27 | @property 28 | def ignored(self): 29 | return NotImplemented 30 | 31 | @property 32 | def failed(self): 33 | return NotImplemented 34 | 35 | @property 36 | def notfound(self): 37 | return NotImplemented 38 | 39 | def __init__(self, namespace, filename, timeout, confirm, # pylint: disable=super-init-not-called 40 | askpass, password, disk_dir, brew_renew=None): 41 | self._qflag = namespace.get('quiet', False) 42 | self._vflag = self._qflag or (not namespace.get('verbose', False)) 43 | 44 | text = f'Running {self.cmd} command for {self.mode}' 45 | print_info(text, filename, redirect=self._qflag) 46 | 47 | # assign members 48 | self._file = filename 49 | self._timeout = timeout 50 | self._confirm = confirm 51 | self._askpass = askpass 52 | self._password = password 53 | self._disk_dir = disk_dir 54 | self._brew_renew = brew_renew 55 | self._no_cleanup = False 56 | 57 | # exit if no executable found 58 | if self._check_exec(): 59 | # mainloop process 60 | self._pkg_args(namespace) 61 | self._loc_exec() 62 | self._run_proc() 63 | 64 | # remove temp vars 65 | [delattr(self, attr) for attr in filter(lambda s: s.startswith('_var_'), dir(self))] # pylint: disable=expression-not-assigned 66 | 67 | def _pkg_args(self, namespace): 68 | return self._parse_args(namespace) 69 | 70 | def _run_proc(self): 71 | self._proc_cleanup() 72 | 73 | @abc.abstractmethod 74 | def _proc_cleanup(self): 75 | pass 76 | -------------------------------------------------------------------------------- /macdaily/cmd/dependency.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | import abc 4 | 5 | from macdaily.cls.command import Command 6 | from macdaily.util.tools.print import print_info 7 | 8 | 9 | class DependencyCommand(Command): 10 | 11 | @property 12 | def cmd(self): 13 | return 'dependency' 14 | 15 | @property 16 | def act(self): 17 | return ('query', 'queried', 'displayed') 18 | 19 | @property 20 | def job(self): 21 | return ('dependency', 'dependencies') 22 | 23 | def _run_proc(self): 24 | self._pkgs = list() 25 | self._fail = list() 26 | self._lost = list() 27 | for path in self._exec: 28 | text = f'Using {self.name} executable {path!r}' 29 | print_info(text, self._file, redirect=self._qflag) 30 | if self._proc_logging(path): 31 | self._proc_dependency(path) 32 | else: 33 | text = f'No {self.desc[1]} to query for executable {path!r}' 34 | print_info(text, self._file, redirect=self._qflag) 35 | 36 | def _proc_logging(self, path): 37 | if self._packages: 38 | self._check_pkgs(path) 39 | self._did_you_mean() 40 | else: 41 | self._check_list(path) 42 | return bool(self._var__temp_pkgs) 43 | 44 | @abc.abstractmethod 45 | def _check_pkgs(self, path): 46 | self._var__temp_pkgs = self._packages # pylint: disable=attribute-defined-outside-init 47 | 48 | @abc.abstractmethod 49 | def _check_list(self, path): 50 | self._var__temp_pkgs = set() # pylint: disable=attribute-defined-outside-init 51 | 52 | @abc.abstractmethod 53 | def _proc_dependency(self, path): 54 | pass 55 | -------------------------------------------------------------------------------- /macdaily/cmd/install.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | import abc 4 | 5 | from macdaily.cls.command import Command 6 | from macdaily.util.tools.print import print_info 7 | 8 | 9 | class InstallCommand(Command): 10 | 11 | @property 12 | def cmd(self): 13 | return 'install' 14 | 15 | @property 16 | def act(self): 17 | return ('install', 'installed', 'installed') 18 | 19 | @property 20 | def job(self): 21 | return ('installation', 'installation') 22 | 23 | @property 24 | def ignored(self): 25 | return NotImplemented 26 | 27 | @property 28 | def notfound(self): 29 | return NotImplemented 30 | 31 | def _pkg_args(self, namespace): 32 | """Return if there's packages for main process.""" 33 | self._merge_packages(namespace) 34 | self._parse_args(namespace) 35 | 36 | self._pkgs = list() 37 | self._fail = list() 38 | 39 | return bool(self._packages) 40 | 41 | def _run_proc(self): 42 | self._pkgs = list() 43 | self._fail = list() 44 | for path in self._exec: 45 | text = f'Using {self.name} executable {path!r}' 46 | print_info(text, self._file, redirect=self._qflag) 47 | 48 | self._var__temp_pkgs = self._packages # pylint: disable=attribute-defined-outside-init 49 | if self._check_confirm(path): 50 | self._proc_install(path) 51 | else: 52 | text = f'No {self.desc[1]} to install for executable {path!r}' 53 | print_info(text, self._file, redirect=self._qflag) 54 | self._proc_fixmissing(path) 55 | self._proc_cleanup() 56 | 57 | @abc.abstractmethod 58 | def _proc_install(self, path): 59 | pass 60 | -------------------------------------------------------------------------------- /macdaily/cmd/logging.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | import abc 4 | import os 5 | 6 | from macdaily.cls.command import Command 7 | from macdaily.util.compat import pathlib 8 | from macdaily.util.tools.print import print_info 9 | 10 | 11 | class LoggingCommand(Command): 12 | 13 | @property 14 | @abc.abstractmethod 15 | def log(self): 16 | return NotImplemented 17 | 18 | @property 19 | @abc.abstractmethod 20 | def ext(self): 21 | return NotImplemented 22 | 23 | @property 24 | def cmd(self): 25 | return 'logging' 26 | 27 | @property 28 | def act(self): 29 | return ('log', 'logged', 'recorded') 30 | 31 | @property 32 | def job(self): 33 | return ('logging', 'logging') 34 | 35 | @property 36 | def sample(self): 37 | return os.path.join(self._logroot, f'{self.log}{self.ext}') 38 | 39 | @property 40 | def packages(self): 41 | return NotImplemented 42 | 43 | @property 44 | def ignored(self): 45 | return NotImplemented 46 | 47 | @property 48 | def failed(self): 49 | return NotImplemented 50 | 51 | @property 52 | def notfound(self): 53 | return NotImplemented 54 | 55 | def __init__(self, namespace, filename, timeout, confirm, # pylint: disable=super-init-not-called 56 | askpass, password, disk_dir, brew_renew=None): 57 | self._qflag = namespace.get('quiet', False) 58 | self._vflag = self._qflag or (not namespace.get('verbose', False)) 59 | 60 | text = f'Running {self.cmd} command for {self.mode}' 61 | print_info(text, filename, redirect=self._qflag) 62 | 63 | # assign members 64 | self._file = filename 65 | self._timeout = timeout 66 | self._confirm = confirm 67 | self._askpass = askpass 68 | self._password = password 69 | self._disk_dir = disk_dir 70 | self._brew_renew = brew_renew 71 | self._logroot = str(pathlib.Path(filename).resolve().parents[1]) 72 | 73 | # exit if no executable found 74 | if self._check_exec(): 75 | # mainloop process 76 | self._pkg_args(namespace) 77 | self._loc_exec() 78 | self._run_proc() 79 | 80 | # remove temp vars 81 | [delattr(self, attr) for attr in filter(lambda s: s.startswith('_var_'), dir(self))] # pylint: disable=expression-not-assigned 82 | 83 | def _pkg_args(self, namespace): 84 | return self._parse_args(namespace) 85 | 86 | def _run_proc(self): 87 | for path in self._exec: 88 | text = f'Using {self.name} executable {path!r}' 89 | print_info(text, self._file, redirect=self._qflag) 90 | self._proc_logging(path) 91 | 92 | @abc.abstractmethod 93 | def _proc_logging(self, path): 94 | pass 95 | -------------------------------------------------------------------------------- /macdaily/cmd/reinstall.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | import abc 4 | 5 | from macdaily.cls.command import Command 6 | from macdaily.util.tools.print import print_info 7 | 8 | 9 | class ReinstallCommand(Command): 10 | 11 | @property 12 | def cmd(self): 13 | return 'reinstall' 14 | 15 | @property 16 | def act(self): 17 | return ('reinstall', 'reinstalled', 'reinstalled') 18 | 19 | @property 20 | def job(self): 21 | return ('reinstallation', 'reinstallation') 22 | 23 | def _run_proc(self): 24 | self._pkgs = list() 25 | self._fail = list() 26 | self._lost = list() 27 | for path in self._exec: 28 | text = f'Using {self.name} executable {path!r}' 29 | print_info(text, self._file, redirect=self._qflag) 30 | if self._proc_logging(path): 31 | self._proc_reinstall(path) 32 | else: 33 | text = f'No {self.desc[1]} to reinstall for executable {path!r}' 34 | print_info(text, self._file, redirect=self._qflag) 35 | self._proc_fixmissing(path) 36 | self._proc_cleanup() 37 | 38 | def _proc_logging(self, path): 39 | if self._packages: 40 | self._check_pkgs(path) 41 | self._did_you_mean() 42 | else: 43 | self._check_list(path) 44 | return self._check_confirm(path) 45 | 46 | @abc.abstractmethod 47 | def _check_pkgs(self, path): 48 | self._var__temp_pkgs = self._packages # pylint: disable=attribute-defined-outside-init 49 | 50 | @abc.abstractmethod 51 | def _check_list(self, path): 52 | self._var__temp_pkgs = set() # pylint: disable=attribute-defined-outside-init 53 | 54 | @abc.abstractmethod 55 | def _proc_reinstall(self, path): 56 | pass 57 | -------------------------------------------------------------------------------- /macdaily/cmd/uninstall.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | import abc 4 | 5 | from macdaily.cls.command import Command 6 | from macdaily.util.tools.print import print_info 7 | 8 | 9 | class UninstallCommand(Command): 10 | 11 | @property 12 | def cmd(self): 13 | return 'uninstall' 14 | 15 | @property 16 | def act(self): 17 | return ('uninstall', 'uninstalled', 'removed') 18 | 19 | @property 20 | def job(self): 21 | return ('uninstallation', 'uninstallation') 22 | 23 | def _run_proc(self): 24 | self._pkgs = list() 25 | self._fail = list() 26 | self._lost = list() 27 | for path in self._exec: 28 | text = f'Using {self.name} executable {path!r}' 29 | print_info(text, self._file, redirect=self._qflag) 30 | if self._proc_logging(path): 31 | self._proc_uninstall(path) 32 | else: 33 | text = f'No {self.desc[1]} to uninstall for executable {path!r}' 34 | print_info(text, self._file, redirect=self._qflag) 35 | self._proc_fixmissing(path) 36 | self._proc_cleanup() 37 | 38 | def _proc_logging(self, path): 39 | if self._packages: 40 | self._check_pkgs(path) 41 | self._did_you_mean() 42 | else: 43 | self._check_list(path) 44 | return self._check_confirm(path) 45 | 46 | @abc.abstractmethod 47 | def _check_pkgs(self, path): 48 | self._var__temp_pkgs = self._packages # pylint: disable=attribute-defined-outside-init 49 | 50 | @abc.abstractmethod 51 | def _check_list(self, path): 52 | self._var__temp_pkgs = set() # pylint: disable=attribute-defined-outside-init 53 | 54 | @abc.abstractmethod 55 | def _proc_uninstall(self, path): 56 | pass 57 | -------------------------------------------------------------------------------- /macdaily/cmd/update.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | import abc 4 | 5 | from macdaily.cls.command import Command 6 | from macdaily.util.tools.print import print_info 7 | 8 | 9 | class UpdateCommand(Command): 10 | 11 | @property 12 | def cmd(self): 13 | return 'update' 14 | 15 | @property 16 | def act(self): 17 | return ('upgrade', 'upgraded', 'up-to-date') 18 | 19 | @property 20 | def job(self): 21 | return ('update', 'updates') 22 | 23 | def _run_proc(self): 24 | self._pkgs = list() 25 | self._fail = list() 26 | self._lost = list() 27 | for path in self._exec: 28 | text = f'Using {self.name} executable {path!r}' 29 | print_info(text, self._file, redirect=self._qflag) 30 | if self._proc_logging(path): 31 | self._proc_update(path) 32 | else: 33 | text = f'No {self.desc[1]} to upgrade for executable {path!r}' 34 | print_info(text, self._file, redirect=self._qflag) 35 | self._proc_fixmissing(path) 36 | self._proc_cleanup() 37 | 38 | def _proc_logging(self, path): 39 | if self._packages: 40 | self._check_pkgs(path) 41 | self._did_you_mean() 42 | else: 43 | self._check_list(path) 44 | return self._check_confirm(path) 45 | 46 | @abc.abstractmethod 47 | def _check_pkgs(self, path): 48 | self._var__temp_pkgs = self._packages # pylint: disable=attribute-defined-outside-init 49 | 50 | @abc.abstractmethod 51 | def _check_list(self, path): 52 | self._var__temp_pkgs = set() # pylint: disable=attribute-defined-outside-init 53 | 54 | @abc.abstractmethod 55 | def _proc_update(self, path): 56 | pass 57 | -------------------------------------------------------------------------------- /macdaily/core/system.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | import abc 4 | import shutil 5 | import sys 6 | 7 | from macdaily.cls.command import Command 8 | from macdaily.util.const.term import bold, flash, red, red_bg, reset 9 | from macdaily.util.tools.print import print_info, print_term 10 | 11 | 12 | class SystemCommand(Command): 13 | 14 | @property 15 | def mode(self): 16 | return 'system' 17 | 18 | @property 19 | def name(self): 20 | return 'macOS Software Update' 21 | 22 | @property 23 | def desc(self): 24 | return ('system software', 'system software') 25 | 26 | def _check_exec(self): 27 | self._var__exec_path = shutil.which('softwareupdate') 28 | flag = (self._var__exec_path is not None) 29 | if not flag: 30 | print(f'macdaily-{self.cmd}: {red_bg}{flash}system{reset}: command not found', file=sys.stderr) 31 | text = (f'macdaily-{self.cmd}: {red}system{reset}: ' 32 | "you may add `softwareupdate' to PATH through the following command -- " 33 | f"""`{bold}echo 'export PATH="/usr/sbin:$PATH"' >> ~/.bash_profile{reset}'""") 34 | print_term(text, self._file, redirect=self._qflag) 35 | return flag 36 | 37 | def _loc_exec(self): 38 | self._exec = {self._var__exec_path} 39 | del self._var__exec_path 40 | 41 | @abc.abstractmethod 42 | def _check_list(self, path): 43 | self._var__rcmd_pkgs = set() # pylint: disable=attribute-defined-outside-init 44 | self._var__norm_pkgs = set() # pylint: disable=attribute-defined-outside-init 45 | 46 | def _check_pkgs(self, path): 47 | self._check_list(path) 48 | text = 'Checking existence of specified packages' 49 | print_info(text, self._file, redirect=self._vflag) 50 | 51 | _rcmd_pkgs = list() 52 | _norm_pkgs = list() 53 | _lost_pkgs = list() 54 | for package in self._packages: 55 | if package in self._var__rcmd_pkgs: 56 | _rcmd_pkgs.append(package) 57 | elif package in self._var__norm_pkgs: 58 | _norm_pkgs.append(package) 59 | else: 60 | _lost_pkgs.append(package) 61 | self._lost.extend(_lost_pkgs) 62 | 63 | self._var__real_pkgs = self._var__rcmd_pkgs | self._var__norm_pkgs # pylint: disable=attribute-defined-outside-init 64 | self._var__lost_pkgs = set(_lost_pkgs) # pylint: disable=attribute-defined-outside-init 65 | self._var__rcmd_pkgs = set(_rcmd_pkgs) # pylint: disable=attribute-defined-outside-init 66 | self._var__norm_pkgs = set(_norm_pkgs) # pylint: disable=attribute-defined-outside-init 67 | self._var__temp_pkgs = self._var__rcmd_pkgs | self._var__norm_pkgs # pylint: disable=attribute-defined-outside-init 68 | -------------------------------------------------------------------------------- /macdaily/img/askpass.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JarryShaw/MacDaily/9bd69fd710c4b00553507b62798532431104abab/macdaily/img/askpass.icns -------------------------------------------------------------------------------- /macdaily/img/confirm.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JarryShaw/MacDaily/9bd69fd710c4b00553507b62798532431104abab/macdaily/img/confirm.icns -------------------------------------------------------------------------------- /macdaily/man/macdaily-cleanup-brew.8: -------------------------------------------------------------------------------- 1 | .\" Man page generated from reStructuredText. 2 | . 3 | .TH MACDAILY-CLEANUP-BREW 8 "August 07, 2019" "v2019.8.4" "" 4 | .SH NAME 5 | macdaily-cleanup-brew \- Homebrew Formula Cache Cleanup 6 | . 7 | .nr rst2man-indent-level 0 8 | . 9 | .de1 rstReportMargin 10 | \\$1 \\n[an-margin] 11 | level \\n[rst2man-indent-level] 12 | level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] 13 | - 14 | \\n[rst2man-indent0] 15 | \\n[rst2man-indent1] 16 | \\n[rst2man-indent2] 17 | .. 18 | .de1 INDENT 19 | .\" .rstReportMargin pre: 20 | . RS \\$1 21 | . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] 22 | . nr rst2man-indent-level +1 23 | .\" .rstReportMargin post: 24 | .. 25 | .de UNINDENT 26 | . RE 27 | .\" indent \\n[an-margin] 28 | .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] 29 | .nr rst2man-indent-level -1 30 | .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] 31 | .in \\n[rst2man-indent\\n[rst2man-indent-level]]u 32 | .. 33 | .SH SYNOPSIS 34 | .sp 35 | macdaily \fBcleanup\fP \fIbrew\fP [\fIoptions\fP] ... 36 | .sp 37 | aliases: \fBhomebrew\fP 38 | .SH OPTIONS 39 | .SS optional arguments 40 | .INDENT 0.0 41 | .TP 42 | .B \-h\fP,\fB \-\-help 43 | show this help message and exit 44 | .TP 45 | .B \-V\fP,\fB \-\-version 46 | show program\(aqs version number and exit 47 | .UNINDENT 48 | .SS general arguments 49 | .INDENT 0.0 50 | .TP 51 | .B \-q\fP,\fB \-\-quiet 52 | run in quiet mode, with no output information 53 | .TP 54 | .B \-v\fP,\fB \-\-verbose 55 | run in verbose mode, with detailed output information 56 | .UNINDENT 57 | .SH SEE ALSO 58 | .INDENT 0.0 59 | .IP \(bu 2 60 | \fBbrew(1)\fP 61 | .IP \(bu 2 62 | \fBmacdaily\-cleanup\fP 63 | .IP \(bu 2 64 | \fBmacdaily\-cleanup\-cask\fP 65 | .IP \(bu 2 66 | \fBmacdaily\-cleanup\-npm\fP 67 | .IP \(bu 2 68 | \fBmacdaily\-cleanup\-pip\fP 69 | .UNINDENT 70 | .SH AUTHOR 71 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 72 | of MacDaily. Please contact me at jarryshaw@icloud.com. 73 | .SH COPYRIGHT 74 | MacDaily is licensed under the Apple Open Source License. 75 | .\" Generated by docutils manpage writer. 76 | . 77 | -------------------------------------------------------------------------------- /macdaily/man/macdaily-cleanup-cask.8: -------------------------------------------------------------------------------- 1 | .\" Man page generated from reStructuredText. 2 | . 3 | .TH MACDAILY-CLEANUP-CASK 8 "August 07, 2019" "v2019.8.4" "" 4 | .SH NAME 5 | macdaily-cleanup-cask \- Homebrew Cask Cache Cleanup 6 | . 7 | .nr rst2man-indent-level 0 8 | . 9 | .de1 rstReportMargin 10 | \\$1 \\n[an-margin] 11 | level \\n[rst2man-indent-level] 12 | level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] 13 | - 14 | \\n[rst2man-indent0] 15 | \\n[rst2man-indent1] 16 | \\n[rst2man-indent2] 17 | .. 18 | .de1 INDENT 19 | .\" .rstReportMargin pre: 20 | . RS \\$1 21 | . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] 22 | . nr rst2man-indent-level +1 23 | .\" .rstReportMargin post: 24 | .. 25 | .de UNINDENT 26 | . RE 27 | .\" indent \\n[an-margin] 28 | .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] 29 | .nr rst2man-indent-level -1 30 | .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] 31 | .in \\n[rst2man-indent\\n[rst2man-indent-level]]u 32 | .. 33 | .SH SYNOPSIS 34 | .sp 35 | macdaily \fBcleanup\fP \fIcask\fP [\fIoptions\fP] ... 36 | .sp 37 | aliases: \fBbrew\-cask\fP, \fBcaskroom\fP 38 | .SH OPTIONS 39 | .SS optional arguments 40 | .INDENT 0.0 41 | .TP 42 | .B \-h\fP,\fB \-\-help 43 | show this help message and exit 44 | .TP 45 | .B \-V\fP,\fB \-\-version 46 | show program\(aqs version number and exit 47 | .UNINDENT 48 | .SS general arguments 49 | .INDENT 0.0 50 | .TP 51 | .B \-q\fP,\fB \-\-quiet 52 | run in quiet mode, with no output information 53 | .TP 54 | .B \-v\fP,\fB \-\-verbose 55 | run in verbose mode, with detailed output information 56 | .UNINDENT 57 | .SH SEE ALSO 58 | .INDENT 0.0 59 | .IP \(bu 2 60 | \fBbrew\-cask(1)\fP 61 | .IP \(bu 2 62 | \fBmacdaily\-cleanup\fP 63 | .IP \(bu 2 64 | \fBmacdaily\-cleanup\-brew\fP 65 | .IP \(bu 2 66 | \fBmacdaily\-cleanup\-npm\fP 67 | .IP \(bu 2 68 | \fBmacdaily\-cleanup\-pip\fP 69 | .UNINDENT 70 | .SH AUTHOR 71 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 72 | of MacDaily. Please contact me at jarryshaw@icloud.com. 73 | .SH COPYRIGHT 74 | MacDaily is licensed under the Apple Open Source License. 75 | .\" Generated by docutils manpage writer. 76 | . 77 | -------------------------------------------------------------------------------- /macdaily/man/macdaily-cleanup-npm.8: -------------------------------------------------------------------------------- 1 | .\" Man page generated from reStructuredText. 2 | . 3 | .TH MACDAILY-CLEANUP-NPM 8 "August 07, 2019" "v2019.8.4" "" 4 | .SH NAME 5 | macdaily-cleanup-npm \- Node.js Module Cache Cleanup 6 | . 7 | .nr rst2man-indent-level 0 8 | . 9 | .de1 rstReportMargin 10 | \\$1 \\n[an-margin] 11 | level \\n[rst2man-indent-level] 12 | level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] 13 | - 14 | \\n[rst2man-indent0] 15 | \\n[rst2man-indent1] 16 | \\n[rst2man-indent2] 17 | .. 18 | .de1 INDENT 19 | .\" .rstReportMargin pre: 20 | . RS \\$1 21 | . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] 22 | . nr rst2man-indent-level +1 23 | .\" .rstReportMargin post: 24 | .. 25 | .de UNINDENT 26 | . RE 27 | .\" indent \\n[an-margin] 28 | .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] 29 | .nr rst2man-indent-level -1 30 | .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] 31 | .in \\n[rst2man-indent\\n[rst2man-indent-level]]u 32 | .. 33 | .SH SYNOPSIS 34 | .sp 35 | macdaily \fBcleanup\fP \fInpm\fP [\fIoptions\fP] ... 36 | .sp 37 | aliases: \fBnode\fP, \fBnode.js\fP 38 | .SH OPTIONS 39 | .SS optional arguments 40 | .INDENT 0.0 41 | .TP 42 | .B \-h\fP,\fB \-\-help 43 | show this help message and exit 44 | .TP 45 | .B \-V\fP,\fB \-\-version 46 | show program\(aqs version number and exit 47 | .UNINDENT 48 | .SS general arguments 49 | .INDENT 0.0 50 | .TP 51 | .B \-q\fP,\fB \-\-quiet 52 | run in quiet mode, with no output information 53 | .TP 54 | .B \-v\fP,\fB \-\-verbose 55 | run in verbose mode, with detailed output information 56 | .UNINDENT 57 | .SH SEE ALSO 58 | .INDENT 0.0 59 | .IP \(bu 2 60 | \fBnpm(1)\fP 61 | .IP \(bu 2 62 | \fBmacdaily\-cleanup\fP 63 | .IP \(bu 2 64 | \fBmacdaily\-cleanup\-brew\fP 65 | .IP \(bu 2 66 | \fBmacdaily\-cleanup\-cask\fP 67 | .IP \(bu 2 68 | \fBmacdaily\-cleanup\-pip\fP 69 | .UNINDENT 70 | .SH AUTHOR 71 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 72 | of MacDaily. Please contact me at jarryshaw@icloud.com. 73 | .SH COPYRIGHT 74 | MacDaily is licensed under the Apple Open Source License. 75 | .\" Generated by docutils manpage writer. 76 | . 77 | -------------------------------------------------------------------------------- /macdaily/man/macdaily-cleanup-pip.8: -------------------------------------------------------------------------------- 1 | .\" Man page generated from reStructuredText. 2 | . 3 | .TH MACDAILY-CLEANUP-PIP 8 "August 07, 2019" "v2019.8.4" "" 4 | .SH NAME 5 | macdaily-cleanup-pip \- Python Package Cache Cleanup 6 | . 7 | .nr rst2man-indent-level 0 8 | . 9 | .de1 rstReportMargin 10 | \\$1 \\n[an-margin] 11 | level \\n[rst2man-indent-level] 12 | level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] 13 | - 14 | \\n[rst2man-indent0] 15 | \\n[rst2man-indent1] 16 | \\n[rst2man-indent2] 17 | .. 18 | .de1 INDENT 19 | .\" .rstReportMargin pre: 20 | . RS \\$1 21 | . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] 22 | . nr rst2man-indent-level +1 23 | .\" .rstReportMargin post: 24 | .. 25 | .de UNINDENT 26 | . RE 27 | .\" indent \\n[an-margin] 28 | .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] 29 | .nr rst2man-indent-level -1 30 | .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] 31 | .in \\n[rst2man-indent\\n[rst2man-indent-level]]u 32 | .. 33 | .SH SYNOPSIS 34 | .sp 35 | macdaily \fBcleanup\fP \fIpip\fP [\fIoptions\fP] ... 36 | .sp 37 | aliases: \fBcpython\fP, \fBpypy\fP, \fBpython\fP 38 | .SH OPTIONS 39 | .SS optional arguments 40 | .INDENT 0.0 41 | .TP 42 | .B \-h\fP,\fB \-\-help 43 | show this help message and exit 44 | .TP 45 | .B \-V\fP,\fB \-\-version 46 | show program\(aqs version number and exit 47 | .UNINDENT 48 | .SS specification arguments 49 | .INDENT 0.0 50 | .TP 51 | .B \-b\fP,\fB \-\-brew 52 | cleanup caches of Python installed from Homebrew 53 | .TP 54 | .B \-c\fP,\fB \-\-cpython 55 | cleanup caches of CPython implementation 56 | .UNINDENT 57 | .INDENT 0.0 58 | .TP 59 | .B \-e \fIVER\fP [\fIVER\fP ...], \-\-python \fIVER\fP [\fIVER\fP ...] 60 | indicate packages from which version of Python will 61 | cleanup 62 | .UNINDENT 63 | .INDENT 0.0 64 | .TP 65 | .B \-r\fP,\fB \-\-pypy 66 | cleanup caches of PyPy implementation 67 | .TP 68 | .B \-s\fP,\fB \-\-system 69 | cleanup caches of Python provided by macOS system 70 | .UNINDENT 71 | .SS general arguments 72 | .INDENT 0.0 73 | .TP 74 | .B \-q\fP,\fB \-\-quiet 75 | run in quiet mode, with no output information 76 | .TP 77 | .B \-v\fP,\fB \-\-verbose 78 | run in verbose mode, with detailed output information 79 | .UNINDENT 80 | .SH SEE ALSO 81 | .INDENT 0.0 82 | .IP \(bu 2 83 | \fBmacdaily\-cleanup\fP 84 | .IP \(bu 2 85 | \fBmacdaily\-cleanup\-brew\fP 86 | .IP \(bu 2 87 | \fBmacdaily\-cleanup\-cask\fP 88 | .IP \(bu 2 89 | \fBmacdaily\-cleanup\-npm\fP 90 | .UNINDENT 91 | .SH AUTHOR 92 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 93 | of MacDaily. Please contact me at jarryshaw@icloud.com. 94 | .SH COPYRIGHT 95 | MacDaily is licensed under the Apple Open Source License. 96 | .\" Generated by docutils manpage writer. 97 | . 98 | -------------------------------------------------------------------------------- /macdaily/man/macdaily-help.8: -------------------------------------------------------------------------------- 1 | .\" Man page generated from reStructuredText. 2 | . 3 | .TH MACDAILY-HELP 8 "August 07, 2019" "v2019.8.4" "" 4 | .SH NAME 5 | macdaily-help \- MacDaily Usage Information Manual 6 | . 7 | .nr rst2man-indent-level 0 8 | . 9 | .de1 rstReportMargin 10 | \\$1 \\n[an-margin] 11 | level \\n[rst2man-indent-level] 12 | level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] 13 | - 14 | \\n[rst2man-indent0] 15 | \\n[rst2man-indent1] 16 | \\n[rst2man-indent2] 17 | .. 18 | .de1 INDENT 19 | .\" .rstReportMargin pre: 20 | . RS \\$1 21 | . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] 22 | . nr rst2man-indent-level +1 23 | .\" .rstReportMargin post: 24 | .. 25 | .de UNINDENT 26 | . RE 27 | .\" indent \\n[an-margin] 28 | .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] 29 | .nr rst2man-indent-level -1 30 | .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] 31 | .in \\n[rst2man-indent\\n[rst2man-indent-level]]u 32 | .. 33 | .SH SYNOPSIS 34 | .sp 35 | macdaily \fBhelp\fP [\fIoptions\fP] <\fIcmd\-selection\fP> ... 36 | .sp 37 | aliases: \fBdoc\fP, \fBman\fP 38 | .SH DESCRIPTION 39 | .sp 40 | \fIMacDaily\fP provides a collection of revised manuals to help users dig into. 41 | \fIMacDaily\fP \fBhelp\fP command will lead you to these man pages, which are 42 | generated by \fIrst2man.py\fP from \fIdocutils\fP and displayed with \fBman(1)\fP\&. 43 | .SH OPTIONS 44 | .SS optional arguments 45 | .INDENT 0.0 46 | .TP 47 | .B \-h\fP,\fB \-\-help 48 | show this help message and exit 49 | .TP 50 | .B \-V\fP,\fB \-\-version 51 | show program\(aqs version number and exit 52 | .UNINDENT 53 | .SS specification arguments 54 | .INDENT 0.0 55 | .TP 56 | .B CMD 57 | display manual information about such command 58 | .UNINDENT 59 | .SH SEE ALSO 60 | .INDENT 0.0 61 | .IP \(bu 2 62 | \fBman(1)\fP 63 | .IP \(bu 2 64 | \fBmdoc(7)\fP 65 | .UNINDENT 66 | .SH AUTHOR 67 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 68 | of MacDaily. Please contact me at jarryshaw@icloud.com. 69 | .SH COPYRIGHT 70 | MacDaily is licensed under the Apple Open Source License. 71 | .\" Generated by docutils manpage writer. 72 | . 73 | -------------------------------------------------------------------------------- /macdaily/man/macdaily-install-apm.8: -------------------------------------------------------------------------------- 1 | .\" Man page generated from reStructuredText. 2 | . 3 | .TH MACDAILY-INSTALL-APM 8 "August 07, 2019" "v2019.8.4" "" 4 | .SH NAME 5 | macdaily-install-apm \- Atom Plug-In Automated Installer 6 | . 7 | .nr rst2man-indent-level 0 8 | . 9 | .de1 rstReportMargin 10 | \\$1 \\n[an-margin] 11 | level \\n[rst2man-indent-level] 12 | level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] 13 | - 14 | \\n[rst2man-indent0] 15 | \\n[rst2man-indent1] 16 | \\n[rst2man-indent2] 17 | .. 18 | .de1 INDENT 19 | .\" .rstReportMargin pre: 20 | . RS \\$1 21 | . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] 22 | . nr rst2man-indent-level +1 23 | .\" .rstReportMargin post: 24 | .. 25 | .de UNINDENT 26 | . RE 27 | .\" indent \\n[an-margin] 28 | .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] 29 | .nr rst2man-indent-level -1 30 | .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] 31 | .in \\n[rst2man-indent\\n[rst2man-indent-level]]u 32 | .. 33 | .SH SYNOPSIS 34 | .sp 35 | macdaily \fBinstall\fP \fIapm\fP [\fIoptions\fP] <\fIplug\-ins\fP> ... 36 | .sp 37 | aliases: \fBatom\fP 38 | .SH OPTIONS 39 | .SS optional arguments 40 | .INDENT 0.0 41 | .TP 42 | .B \-h\fP,\fB \-\-help 43 | show this help message and exit 44 | .TP 45 | .B \-V\fP,\fB \-\-version 46 | show program\(aqs version number and exit 47 | .UNINDENT 48 | .SS specification arguments 49 | .INDENT 0.0 50 | .TP 51 | .B \-b\fP,\fB \-\-beta 52 | install Atom Beta plug\-ins 53 | .UNINDENT 54 | .INDENT 0.0 55 | .TP 56 | .B \-p \fIPI\fP [\fIPI\fP ...], \-\-packages \fIPI\fP [\fIPI\fP ...] 57 | name of Atom plug\-ins to install 58 | .UNINDENT 59 | .SS general arguments 60 | .INDENT 0.0 61 | .TP 62 | .B \-q\fP,\fB \-\-quiet 63 | run in quiet mode, with no output information 64 | .TP 65 | .B \-v\fP,\fB \-\-verbose 66 | run in verbose mode, with detailed output information 67 | .TP 68 | .B \-y\fP,\fB \-\-yes 69 | yes for all selections 70 | .UNINDENT 71 | .SS miscellaneous arguments 72 | .INDENT 0.0 73 | .TP 74 | .B \-I \fIARG\fP, \-\-install \fIARG\fP 75 | options for \fBapm install \fP command 76 | .UNINDENT 77 | .SH SEE ALSO 78 | .INDENT 0.0 79 | .IP \(bu 2 80 | \fBmacdaily\-install\fP 81 | .IP \(bu 2 82 | \fBmacdaily\-install\-brew\fP 83 | .IP \(bu 2 84 | \fBmacdaily\-install\-cask\fP 85 | .IP \(bu 2 86 | \fBmacdaily\-install\-gem\fP 87 | .IP \(bu 2 88 | \fBmacdaily\-install\-mas\fP 89 | .IP \(bu 2 90 | \fBmacdaily\-install\-npm\fP 91 | .IP \(bu 2 92 | \fBmacdaily\-install\-pip\fP 93 | .IP \(bu 2 94 | \fBmacdaily\-install\-system\fP 95 | .UNINDENT 96 | .SH AUTHOR 97 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 98 | of MacDaily. Please contact me at jarryshaw@icloud.com. 99 | .SH COPYRIGHT 100 | MacDaily is licensed under the Apple Open Source License. 101 | .\" Generated by docutils manpage writer. 102 | . 103 | -------------------------------------------------------------------------------- /macdaily/man/macdaily-install-brew.8: -------------------------------------------------------------------------------- 1 | .\" Man page generated from reStructuredText. 2 | . 3 | .TH MACDAILY-INSTALL-BREW 8 "August 07, 2019" "v2019.8.4" "" 4 | .SH NAME 5 | macdaily-install-brew \- Homebrew Formula Automated Installer 6 | . 7 | .nr rst2man-indent-level 0 8 | . 9 | .de1 rstReportMargin 10 | \\$1 \\n[an-margin] 11 | level \\n[rst2man-indent-level] 12 | level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] 13 | - 14 | \\n[rst2man-indent0] 15 | \\n[rst2man-indent1] 16 | \\n[rst2man-indent2] 17 | .. 18 | .de1 INDENT 19 | .\" .rstReportMargin pre: 20 | . RS \\$1 21 | . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] 22 | . nr rst2man-indent-level +1 23 | .\" .rstReportMargin post: 24 | .. 25 | .de UNINDENT 26 | . RE 27 | .\" indent \\n[an-margin] 28 | .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] 29 | .nr rst2man-indent-level -1 30 | .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] 31 | .in \\n[rst2man-indent\\n[rst2man-indent-level]]u 32 | .. 33 | .SH SYNOPSIS 34 | .sp 35 | macdaily \fBinstall\fP \fIbrew\fP [\fIoptions\fP] <\fIformulae\fP> ... 36 | .sp 37 | aliases: \fBhomebrew\fP 38 | .SH OPTIONS 39 | .SS optional arguments 40 | .INDENT 0.0 41 | .TP 42 | .B \-h\fP,\fB \-\-help 43 | show this help message and exit 44 | .TP 45 | .B \-V\fP,\fB \-\-version 46 | show program\(aqs version number and exit 47 | .UNINDENT 48 | .SS specification arguments 49 | .INDENT 0.0 50 | .TP 51 | .B \-p \fIFORM\fP [\fIFORM\fP ...], \-\-packages \fIFORM\fP [\fIFORM\fP ...] 52 | name of Homebrew formulae to install 53 | .UNINDENT 54 | .SS general arguments 55 | .INDENT 0.0 56 | .TP 57 | .B \-q\fP,\fB \-\-quiet 58 | run in quiet mode, with no output information 59 | .TP 60 | .B \-v\fP,\fB \-\-verbose 61 | run in verbose mode, with detailed output information 62 | .TP 63 | .B \-y\fP,\fB \-\-yes 64 | yes for all selections 65 | .TP 66 | .B \-n\fP,\fB \-\-no\-cleanup 67 | do not run cleanup process 68 | .UNINDENT 69 | .SS miscellaneous arguments 70 | .INDENT 0.0 71 | .TP 72 | .B \-I \fIARG\fP, \-\-install \fIARG\fP 73 | options for \fBbrew install \fP command 74 | .UNINDENT 75 | .SH SEE ALSO 76 | .INDENT 0.0 77 | .IP \(bu 2 78 | \fBbrew(1)\fP 79 | .IP \(bu 2 80 | \fBmacdaily\-install\fP 81 | .IP \(bu 2 82 | \fBmacdaily\-install\-apm\fP 83 | .IP \(bu 2 84 | \fBmacdaily\-install\-cask\fP 85 | .IP \(bu 2 86 | \fBmacdaily\-install\-gem\fP 87 | .IP \(bu 2 88 | \fBmacdaily\-install\-mas\fP 89 | .IP \(bu 2 90 | \fBmacdaily\-install\-npm\fP 91 | .IP \(bu 2 92 | \fBmacdaily\-install\-pip\fP 93 | .IP \(bu 2 94 | \fBmacdaily\-install\-system\fP 95 | .UNINDENT 96 | .SH AUTHOR 97 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 98 | of MacDaily. Please contact me at jarryshaw@icloud.com. 99 | .SH COPYRIGHT 100 | MacDaily is licensed under the Apple Open Source License. 101 | .\" Generated by docutils manpage writer. 102 | . 103 | -------------------------------------------------------------------------------- /macdaily/man/macdaily-install-cask.8: -------------------------------------------------------------------------------- 1 | .\" Man page generated from reStructuredText. 2 | . 3 | .TH MACDAILY-INSTALL-CASK 8 "August 07, 2019" "v2019.8.4" "" 4 | .SH NAME 5 | macdaily-install-cask \- Homebrew Cask Automated Installer 6 | . 7 | .nr rst2man-indent-level 0 8 | . 9 | .de1 rstReportMargin 10 | \\$1 \\n[an-margin] 11 | level \\n[rst2man-indent-level] 12 | level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] 13 | - 14 | \\n[rst2man-indent0] 15 | \\n[rst2man-indent1] 16 | \\n[rst2man-indent2] 17 | .. 18 | .de1 INDENT 19 | .\" .rstReportMargin pre: 20 | . RS \\$1 21 | . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] 22 | . nr rst2man-indent-level +1 23 | .\" .rstReportMargin post: 24 | .. 25 | .de UNINDENT 26 | . RE 27 | .\" indent \\n[an-margin] 28 | .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] 29 | .nr rst2man-indent-level -1 30 | .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] 31 | .in \\n[rst2man-indent\\n[rst2man-indent-level]]u 32 | .. 33 | .SH SYNOPSIS 34 | .sp 35 | macdaily \fBinstall\fP \fIcask\fP [\fIoptions\fP] <\fIcasks\fP> ... 36 | .sp 37 | aliases: \fBbrew\-cask\fP, \fBcaskroom\fP 38 | .SH OPTIONS 39 | .SS optional arguments 40 | .INDENT 0.0 41 | .TP 42 | .B \-h\fP,\fB \-\-help 43 | show this help message and exit 44 | .TP 45 | .B \-V\fP,\fB \-\-version 46 | show program\(aqs version number and exit 47 | .UNINDENT 48 | .SS specification arguments 49 | .INDENT 0.0 50 | .TP 51 | .B \-p \fICASK\fP [\fICASK\fP ...], \-\-packages \fICASK\fP [\fICASK\fP ...] 52 | name of Caskroom binaries to install 53 | .UNINDENT 54 | .SS general arguments 55 | .INDENT 0.0 56 | .TP 57 | .B \-q\fP,\fB \-\-quiet 58 | run in quiet mode, with no output information 59 | .TP 60 | .B \-v\fP,\fB \-\-verbose 61 | run in verbose mode, with detailed output information 62 | .TP 63 | .B \-y\fP,\fB \-\-yes 64 | yes for all selections 65 | .TP 66 | .B \-n\fP,\fB \-\-no\-cleanup 67 | do not run cleanup process 68 | .UNINDENT 69 | .SS miscellaneous arguments 70 | .INDENT 0.0 71 | .TP 72 | .B \-I \fIARG\fP, \-\-install \fIARG\fP 73 | options for \fBbrew cask install \fP command 74 | .UNINDENT 75 | .SH SEE ALSO 76 | .INDENT 0.0 77 | .IP \(bu 2 78 | \fBbrew\-cask(1)\fP 79 | .IP \(bu 2 80 | \fBmacdaily\-install\fP 81 | .IP \(bu 2 82 | \fBmacdaily\-install\-apm\fP 83 | .IP \(bu 2 84 | \fBmacdaily\-install\-brew\fP 85 | .IP \(bu 2 86 | \fBmacdaily\-install\-gem\fP 87 | .IP \(bu 2 88 | \fBmacdaily\-install\-mas\fP 89 | .IP \(bu 2 90 | \fBmacdaily\-install\-npm\fP 91 | .IP \(bu 2 92 | \fBmacdaily\-install\-pip\fP 93 | .IP \(bu 2 94 | \fBmacdaily\-install\-system\fP 95 | .UNINDENT 96 | .SH AUTHOR 97 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 98 | of MacDaily. Please contact me at jarryshaw@icloud.com. 99 | .SH COPYRIGHT 100 | MacDaily is licensed under the Apple Open Source License. 101 | .\" Generated by docutils manpage writer. 102 | . 103 | -------------------------------------------------------------------------------- /macdaily/man/macdaily-install-gem.8: -------------------------------------------------------------------------------- 1 | .\" Man page generated from reStructuredText. 2 | . 3 | .TH MACDAILY-INSTALL-GEM 8 "August 07, 2019" "v2019.8.4" "" 4 | .SH NAME 5 | macdaily-install-gem \- Ruby Gem Automated Installer 6 | . 7 | .nr rst2man-indent-level 0 8 | . 9 | .de1 rstReportMargin 10 | \\$1 \\n[an-margin] 11 | level \\n[rst2man-indent-level] 12 | level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] 13 | - 14 | \\n[rst2man-indent0] 15 | \\n[rst2man-indent1] 16 | \\n[rst2man-indent2] 17 | .. 18 | .de1 INDENT 19 | .\" .rstReportMargin pre: 20 | . RS \\$1 21 | . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] 22 | . nr rst2man-indent-level +1 23 | .\" .rstReportMargin post: 24 | .. 25 | .de UNINDENT 26 | . RE 27 | .\" indent \\n[an-margin] 28 | .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] 29 | .nr rst2man-indent-level -1 30 | .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] 31 | .in \\n[rst2man-indent\\n[rst2man-indent-level]]u 32 | .. 33 | .SH SYNOPSIS 34 | .sp 35 | macdaily \fBinstall\fP \fIgem\fP [\fIoptions\fP] <\fIgems\fP> ... 36 | .sp 37 | aliases: \fBruby\fP, \fBrubygems\fP 38 | .SH OPTIONS 39 | .SS optional arguments 40 | .INDENT 0.0 41 | .TP 42 | .B \-h\fP,\fB \-\-help 43 | show this help message and exit 44 | .TP 45 | .B \-V\fP,\fB \-\-version 46 | show program\(aqs version number and exit 47 | .UNINDENT 48 | .SS specification arguments 49 | .INDENT 0.0 50 | .TP 51 | .B \-b\fP,\fB \-\-brew 52 | install gems by Ruby installed from Homebrew 53 | .TP 54 | .B \-s\fP,\fB \-\-system 55 | install gems by Ruby provided by macOS system 56 | .UNINDENT 57 | .INDENT 0.0 58 | .TP 59 | .B \-p \fIGEM\fP [\fIGEM\fP ...], \-\-packages \fIGEM\fP [\fIGEM\fP ...] 60 | name of Ruby gems to install 61 | .UNINDENT 62 | .SS general arguments 63 | .INDENT 0.0 64 | .TP 65 | .B \-q\fP,\fB \-\-quiet 66 | run in quiet mode, with no output information 67 | .TP 68 | .B \-v\fP,\fB \-\-verbose 69 | run in verbose mode, with detailed output information 70 | .TP 71 | .B \-y\fP,\fB \-\-yes 72 | yes for all selections 73 | .UNINDENT 74 | .SS miscellaneous arguments 75 | .INDENT 0.0 76 | .TP 77 | .B \-I \fIARG\fP, \-\-install \fIARG\fP 78 | options for \fBgem install \fP command 79 | .UNINDENT 80 | .SH SEE ALSO 81 | .INDENT 0.0 82 | .IP \(bu 2 83 | \fBgem(1)\fP 84 | .IP \(bu 2 85 | \fBmacdaily\-install\fP 86 | .IP \(bu 2 87 | \fBmacdaily\-install\-apm\fP 88 | .IP \(bu 2 89 | \fBmacdaily\-install\-brew\fP 90 | .IP \(bu 2 91 | \fBmacdaily\-install\-cask\fP 92 | .IP \(bu 2 93 | \fBmacdaily\-install\-mas\fP 94 | .IP \(bu 2 95 | \fBmacdaily\-install\-npm\fP 96 | .IP \(bu 2 97 | \fBmacdaily\-install\-pip\fP 98 | .IP \(bu 2 99 | \fBmacdaily\-install\-system\fP 100 | .UNINDENT 101 | .SH AUTHOR 102 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 103 | of MacDaily. Please contact me at jarryshaw@icloud.com. 104 | .SH COPYRIGHT 105 | MacDaily is licensed under the Apple Open Source License. 106 | .\" Generated by docutils manpage writer. 107 | . 108 | -------------------------------------------------------------------------------- /macdaily/man/macdaily-install-mas.8: -------------------------------------------------------------------------------- 1 | .\" Man page generated from reStructuredText. 2 | . 3 | .TH MACDAILY-INSTALL-MAS 8 "August 07, 2019" "v2019.8.4" "" 4 | .SH NAME 5 | macdaily-install-mas \- macOS Application Automated Installer 6 | . 7 | .nr rst2man-indent-level 0 8 | . 9 | .de1 rstReportMargin 10 | \\$1 \\n[an-margin] 11 | level \\n[rst2man-indent-level] 12 | level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] 13 | - 14 | \\n[rst2man-indent0] 15 | \\n[rst2man-indent1] 16 | \\n[rst2man-indent2] 17 | .. 18 | .de1 INDENT 19 | .\" .rstReportMargin pre: 20 | . RS \\$1 21 | . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] 22 | . nr rst2man-indent-level +1 23 | .\" .rstReportMargin post: 24 | .. 25 | .de UNINDENT 26 | . RE 27 | .\" indent \\n[an-margin] 28 | .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] 29 | .nr rst2man-indent-level -1 30 | .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] 31 | .in \\n[rst2man-indent\\n[rst2man-indent-level]]u 32 | .. 33 | .SH SYNOPSIS 34 | .sp 35 | macdaily \fBinstall\fP \fImas\fP [\fIoptions\fP] <\fIapplications\fP> ... 36 | .sp 37 | aliases: \fBapp\-store\fP, \fBappstore\fP, \fBmac\fP, \fBmac\-app\-store\fP 38 | .SH OPTIONS 39 | .SS optional arguments 40 | .INDENT 0.0 41 | .TP 42 | .B \-h\fP,\fB \-\-help 43 | show this help message and exit 44 | .TP 45 | .B \-V\fP,\fB \-\-version 46 | show program\(aqs version number and exit 47 | .UNINDENT 48 | .SS specification arguments 49 | .INDENT 0.0 50 | .TP 51 | .B \-f\fP,\fB \-\-force 52 | force reinstall 53 | .UNINDENT 54 | .INDENT 0.0 55 | .TP 56 | .B \-p \fIAPP\fP [\fIAPP\fP ...], \-\-packages \fIAPP\fP [\fIAPP\fP ...] 57 | name of macOS applications to install 58 | .UNINDENT 59 | .SS general arguments 60 | .INDENT 0.0 61 | .TP 62 | .B \-q\fP,\fB \-\-quiet 63 | run in quiet mode, with no output information 64 | .TP 65 | .B \-v\fP,\fB \-\-verbose 66 | run in verbose mode, with detailed output information 67 | .TP 68 | .B \-y\fP,\fB \-\-yes 69 | yes for all selections 70 | .UNINDENT 71 | .SS miscellaneous arguments 72 | .INDENT 0.0 73 | .TP 74 | .B \-I \fIARG\fP, \-\-install \fIARG\fP 75 | options for \fBmas install|lucky \fP command 76 | .UNINDENT 77 | .SH SEE ALSO 78 | .INDENT 0.0 79 | .IP \(bu 2 80 | \fBmacdaily\-install\fP 81 | .IP \(bu 2 82 | \fBmacdaily\-install\-apm\fP 83 | .IP \(bu 2 84 | \fBmacdaily\-install\-brew\fP 85 | .IP \(bu 2 86 | \fBmacdaily\-install\-cask\fP 87 | .IP \(bu 2 88 | \fBmacdaily\-install\-gem\fP 89 | .IP \(bu 2 90 | \fBmacdaily\-install\-npm\fP 91 | .IP \(bu 2 92 | \fBmacdaily\-install\-pip\fP 93 | .IP \(bu 2 94 | \fBmacdaily\-install\-system\fP 95 | .UNINDENT 96 | .SH AUTHOR 97 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 98 | of MacDaily. Please contact me at jarryshaw@icloud.com. 99 | .SH COPYRIGHT 100 | MacDaily is licensed under the Apple Open Source License. 101 | .\" Generated by docutils manpage writer. 102 | . 103 | -------------------------------------------------------------------------------- /macdaily/man/macdaily-install-npm.8: -------------------------------------------------------------------------------- 1 | .\" Man page generated from reStructuredText. 2 | . 3 | .TH MACDAILY-INSTALL-NPM 8 "August 07, 2019" "v2019.8.4" "" 4 | .SH NAME 5 | macdaily-install-npm \- Node.js Module Automated Installer 6 | . 7 | .nr rst2man-indent-level 0 8 | . 9 | .de1 rstReportMargin 10 | \\$1 \\n[an-margin] 11 | level \\n[rst2man-indent-level] 12 | level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] 13 | - 14 | \\n[rst2man-indent0] 15 | \\n[rst2man-indent1] 16 | \\n[rst2man-indent2] 17 | .. 18 | .de1 INDENT 19 | .\" .rstReportMargin pre: 20 | . RS \\$1 21 | . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] 22 | . nr rst2man-indent-level +1 23 | .\" .rstReportMargin post: 24 | .. 25 | .de UNINDENT 26 | . RE 27 | .\" indent \\n[an-margin] 28 | .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] 29 | .nr rst2man-indent-level -1 30 | .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] 31 | .in \\n[rst2man-indent\\n[rst2man-indent-level]]u 32 | .. 33 | .SH SYNOPSIS 34 | .sp 35 | macdaily \fBinstall\fP \fInpm\fP [\fIoptions\fP] <\fImodules\fP> ... 36 | .sp 37 | aliases: \fBnode\fP, \fBnode.js\fP 38 | .SH OPTIONS 39 | .SS optional arguments 40 | .INDENT 0.0 41 | .TP 42 | .B \-h\fP,\fB \-\-help 43 | show this help message and exit 44 | .TP 45 | .B \-V\fP,\fB \-\-version 46 | show program\(aqs version number and exit 47 | .UNINDENT 48 | .SS specification arguments 49 | .INDENT 0.0 50 | .TP 51 | .B \-p \fIMOD\fP [\fIMOD\fP ...], \-\-packages \fIMOD\fP [\fIMOD\fP ...] 52 | name of Node.js modules to install 53 | .UNINDENT 54 | .SS general arguments 55 | .INDENT 0.0 56 | .TP 57 | .B \-q\fP,\fB \-\-quiet 58 | run in quiet mode, with no output information 59 | .TP 60 | .B \-v\fP,\fB \-\-verbose 61 | run in verbose mode, with detailed output information 62 | .TP 63 | .B \-y\fP,\fB \-\-yes 64 | yes for all selections 65 | .TP 66 | .B \-n\fP,\fB \-\-no\-cleanup 67 | do not run cleanup process 68 | .UNINDENT 69 | .SS miscellaneous arguments 70 | .INDENT 0.0 71 | .TP 72 | .B \-I \fIARG\fP, \-\-install \fIARG\fP 73 | options for \fBnpm install \-\-global \fP command 74 | .UNINDENT 75 | .SH SEE ALSO 76 | .INDENT 0.0 77 | .IP \(bu 2 78 | \fBnpm(1)\fP 79 | .IP \(bu 2 80 | \fBmacdaily\-install\fP 81 | .IP \(bu 2 82 | \fBmacdaily\-install\-apm\fP 83 | .IP \(bu 2 84 | \fBmacdaily\-install\-brew\fP 85 | .IP \(bu 2 86 | \fBmacdaily\-install\-cask\fP 87 | .IP \(bu 2 88 | \fBmacdaily\-install\-gem\fP 89 | .IP \(bu 2 90 | \fBmacdaily\-install\-mas\fP 91 | .IP \(bu 2 92 | \fBmacdaily\-install\-pip\fP 93 | .IP \(bu 2 94 | \fBmacdaily\-install\-system\fP 95 | .UNINDENT 96 | .SH AUTHOR 97 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 98 | of MacDaily. Please contact me at jarryshaw@icloud.com. 99 | .SH COPYRIGHT 100 | MacDaily is licensed under the Apple Open Source License. 101 | .\" Generated by docutils manpage writer. 102 | . 103 | -------------------------------------------------------------------------------- /macdaily/man/macdaily-install-system.8: -------------------------------------------------------------------------------- 1 | .\" Man page generated from reStructuredText. 2 | . 3 | .TH MACDAILY-INSTALL-SYSTEM 8 "August 07, 2019" "v2019.8.4" "" 4 | .SH NAME 5 | macdaily-install-system \- System Software Automated Installer 6 | . 7 | .nr rst2man-indent-level 0 8 | . 9 | .de1 rstReportMargin 10 | \\$1 \\n[an-margin] 11 | level \\n[rst2man-indent-level] 12 | level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] 13 | - 14 | \\n[rst2man-indent0] 15 | \\n[rst2man-indent1] 16 | \\n[rst2man-indent2] 17 | .. 18 | .de1 INDENT 19 | .\" .rstReportMargin pre: 20 | . RS \\$1 21 | . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] 22 | . nr rst2man-indent-level +1 23 | .\" .rstReportMargin post: 24 | .. 25 | .de UNINDENT 26 | . RE 27 | .\" indent \\n[an-margin] 28 | .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] 29 | .nr rst2man-indent-level -1 30 | .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] 31 | .in \\n[rst2man-indent\\n[rst2man-indent-level]]u 32 | .. 33 | .SH SYNOPSIS 34 | .sp 35 | macdaily \fBinstall\fP \fIsystem\fP [\fIoptions\fP] <\fIsoftware\fP> ... 36 | .sp 37 | aliases: \fBsoftware\fP, \fBsoftwareupdate\fP 38 | .SH OPTIONS 39 | .SS optional arguments 40 | .INDENT 0.0 41 | .TP 42 | .B \-h\fP,\fB \-\-help 43 | show this help message and exit 44 | .TP 45 | .B \-V\fP,\fB \-\-version 46 | show program\(aqs version number and exit 47 | .UNINDENT 48 | .SS specification arguments 49 | .INDENT 0.0 50 | .TP 51 | .B \-R\fP,\fB \-\-restart 52 | automatically restart (or shut down) if required to 53 | complete installation 54 | .UNINDENT 55 | .INDENT 0.0 56 | .TP 57 | .B \-p \fISW\fP [\fISW\fP ...], \-\-packages \fISW\fP [\fISW\fP ...] 58 | name of system software to install 59 | .UNINDENT 60 | .SS general arguments 61 | .INDENT 0.0 62 | .TP 63 | .B \-q\fP,\fB \-\-quiet 64 | run in quiet mode, with no output information 65 | .TP 66 | .B \-v\fP,\fB \-\-verbose 67 | run in verbose mode, with detailed output information 68 | .TP 69 | .B \-y\fP,\fB \-\-yes 70 | yes for all selections 71 | .UNINDENT 72 | .SS miscellaneous arguments 73 | .INDENT 0.0 74 | .TP 75 | .B \-I \fIARG\fP, \-\-install \fIARG\fP 76 | options for \fBsoftwareupdate \-\-install 77 | \fP command 78 | .UNINDENT 79 | .SH SEE ALSO 80 | .INDENT 0.0 81 | .IP \(bu 2 82 | \fBsoftwareupdate(8)\fP 83 | .IP \(bu 2 84 | \fBmacdaily\-install\fP 85 | .IP \(bu 2 86 | \fBmacdaily\-install\-apm\fP 87 | .IP \(bu 2 88 | \fBmacdaily\-install\-brew\fP 89 | .IP \(bu 2 90 | \fBmacdaily\-install\-gem\fP 91 | .IP \(bu 2 92 | \fBmacdaily\-install\-mas\fP 93 | .IP \(bu 2 94 | \fBmacdaily\-install\-npm\fP 95 | .IP \(bu 2 96 | \fBmacdaily\-install\-pip\fP 97 | .IP \(bu 2 98 | \fBmacdaily\-install\-system\fP 99 | .UNINDENT 100 | .SH AUTHOR 101 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 102 | of MacDaily. Please contact me at jarryshaw@icloud.com. 103 | .SH COPYRIGHT 104 | MacDaily is licensed under the Apple Open Source License. 105 | .\" Generated by docutils manpage writer. 106 | . 107 | -------------------------------------------------------------------------------- /macdaily/man/macdaily-logging-apm.8: -------------------------------------------------------------------------------- 1 | .\" Man page generated from reStructuredText. 2 | . 3 | .TH MACDAILY-LOGGING-APM 8 "August 07, 2019" "v2019.8.4" "" 4 | .SH NAME 5 | macdaily-logging-apm \- Atom Plug-In Logging Automator 6 | . 7 | .nr rst2man-indent-level 0 8 | . 9 | .de1 rstReportMargin 10 | \\$1 \\n[an-margin] 11 | level \\n[rst2man-indent-level] 12 | level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] 13 | - 14 | \\n[rst2man-indent0] 15 | \\n[rst2man-indent1] 16 | \\n[rst2man-indent2] 17 | .. 18 | .de1 INDENT 19 | .\" .rstReportMargin pre: 20 | . RS \\$1 21 | . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] 22 | . nr rst2man-indent-level +1 23 | .\" .rstReportMargin post: 24 | .. 25 | .de UNINDENT 26 | . RE 27 | .\" indent \\n[an-margin] 28 | .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] 29 | .nr rst2man-indent-level -1 30 | .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] 31 | .in \\n[rst2man-indent\\n[rst2man-indent-level]]u 32 | .. 33 | .SH SYNOPSIS 34 | .sp 35 | macdaily \fBlogging\fP \fIapm\fP [\fIoptions\fP] ... 36 | .sp 37 | aliases: \fBatom\fP 38 | .SH OPTIONS 39 | .SS optional arguments 40 | .INDENT 0.0 41 | .TP 42 | .B \-h\fP,\fB \-\-help 43 | show this help message and exit 44 | .TP 45 | .B \-V\fP,\fB \-\-version 46 | show program\(aqs version number and exit 47 | .UNINDENT 48 | .SS specification arguments 49 | .INDENT 0.0 50 | .TP 51 | .B \-b\fP,\fB \-\-beta 52 | log Atom Beta plug\-ins 53 | .UNINDENT 54 | .SS general arguments 55 | .INDENT 0.0 56 | .TP 57 | .B \-q\fP,\fB \-\-quiet 58 | run in quiet mode, with no output information 59 | .TP 60 | .B \-v\fP,\fB \-\-verbose 61 | run in verbose mode, with detailed output information 62 | .TP 63 | .B \-n\fP,\fB \-\-no\-cleanup 64 | do not run cleanup process 65 | .TP 66 | .B \-l\fP,\fB \-\-show\-log 67 | open log in \fIConsole.app\fP upon completion of command 68 | .UNINDENT 69 | .SH SEE ALSO 70 | .INDENT 0.0 71 | .IP \(bu 2 72 | \fBmacdaily\-logging\fP 73 | .IP \(bu 2 74 | \fBmacdaily\-logging\-app\fP 75 | .IP \(bu 2 76 | \fBmacdaily\-logging\-brew\fP 77 | .IP \(bu 2 78 | \fBmacdaily\-logging\-cask\fP 79 | .IP \(bu 2 80 | \fBmacdaily\-logging\-gem\fP 81 | .IP \(bu 2 82 | \fBmacdaily\-logging\-mas\fP 83 | .IP \(bu 2 84 | \fBmacdaily\-logging\-npm\fP 85 | .IP \(bu 2 86 | \fBmacdaily\-logging\-pip\fP 87 | .IP \(bu 2 88 | \fBmacdaily\-logging\-tap\fP 89 | .UNINDENT 90 | .SH AUTHOR 91 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 92 | of MacDaily. Please contact me at jarryshaw@icloud.com. 93 | .SH COPYRIGHT 94 | MacDaily is licensed under the Apple Open Source License. 95 | .\" Generated by docutils manpage writer. 96 | . 97 | -------------------------------------------------------------------------------- /macdaily/man/macdaily-logging-app.8: -------------------------------------------------------------------------------- 1 | .\" Man page generated from reStructuredText. 2 | . 3 | .TH MACDAILY-LOGGING-APP 8 "August 07, 2019" "v2019.8.4" "" 4 | .SH NAME 5 | macdaily-logging-app \- Mac Application Logging Automator 6 | . 7 | .nr rst2man-indent-level 0 8 | . 9 | .de1 rstReportMargin 10 | \\$1 \\n[an-margin] 11 | level \\n[rst2man-indent-level] 12 | level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] 13 | - 14 | \\n[rst2man-indent0] 15 | \\n[rst2man-indent1] 16 | \\n[rst2man-indent2] 17 | .. 18 | .de1 INDENT 19 | .\" .rstReportMargin pre: 20 | . RS \\$1 21 | . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] 22 | . nr rst2man-indent-level +1 23 | .\" .rstReportMargin post: 24 | .. 25 | .de UNINDENT 26 | . RE 27 | .\" indent \\n[an-margin] 28 | .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] 29 | .nr rst2man-indent-level -1 30 | .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] 31 | .in \\n[rst2man-indent\\n[rst2man-indent-level]]u 32 | .. 33 | .SH SYNOPSIS 34 | .sp 35 | macdaily \fBlogging\fP \fIapp\fP [\fIoptions\fP] ... 36 | .sp 37 | aliases: \fBapplication\fP, \fBmacos\fP 38 | .SH OPTIONS 39 | .SS optional arguments 40 | .INDENT 0.0 41 | .TP 42 | .B \-h\fP,\fB \-\-help 43 | show this help message and exit 44 | .TP 45 | .B \-V\fP,\fB \-\-version 46 | show program\(aqs version number and exit 47 | .UNINDENT 48 | .SS general arguments 49 | .INDENT 0.0 50 | .TP 51 | .B \-q\fP,\fB \-\-quiet 52 | run in quiet mode, with no output information 53 | .TP 54 | .B \-v\fP,\fB \-\-verbose 55 | run in verbose mode, with detailed output information 56 | .TP 57 | .B \-n\fP,\fB \-\-no\-cleanup 58 | do not run cleanup process 59 | .TP 60 | .B \-l\fP,\fB \-\-show\-log 61 | open log in \fIConsole.app\fP upon completion of command 62 | .UNINDENT 63 | .SH SEE ALSO 64 | .INDENT 0.0 65 | .IP \(bu 2 66 | \fBmacdaily\-logging\fP 67 | .IP \(bu 2 68 | \fBmacdaily\-logging\-apm\fP 69 | .IP \(bu 2 70 | \fBmacdaily\-logging\-brew\fP 71 | .IP \(bu 2 72 | \fBmacdaily\-logging\-cask\fP 73 | .IP \(bu 2 74 | \fBmacdaily\-logging\-gem\fP 75 | .IP \(bu 2 76 | \fBmacdaily\-logging\-mas\fP 77 | .IP \(bu 2 78 | \fBmacdaily\-logging\-npm\fP 79 | .IP \(bu 2 80 | \fBmacdaily\-logging\-pip\fP 81 | .IP \(bu 2 82 | \fBmacdaily\-logging\-tap\fP 83 | .UNINDENT 84 | .SH AUTHOR 85 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 86 | of MacDaily. Please contact me at jarryshaw@icloud.com. 87 | .SH COPYRIGHT 88 | MacDaily is licensed under the Apple Open Source License. 89 | .\" Generated by docutils manpage writer. 90 | . 91 | -------------------------------------------------------------------------------- /macdaily/man/macdaily-logging-brew.8: -------------------------------------------------------------------------------- 1 | .\" Man page generated from reStructuredText. 2 | . 3 | .TH MACDAILY-LOGGING-BREW 8 "August 07, 2019" "v2019.8.4" "" 4 | .SH NAME 5 | macdaily-logging-brew \- Homebrew Formula Logging Automator 6 | . 7 | .nr rst2man-indent-level 0 8 | . 9 | .de1 rstReportMargin 10 | \\$1 \\n[an-margin] 11 | level \\n[rst2man-indent-level] 12 | level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] 13 | - 14 | \\n[rst2man-indent0] 15 | \\n[rst2man-indent1] 16 | \\n[rst2man-indent2] 17 | .. 18 | .de1 INDENT 19 | .\" .rstReportMargin pre: 20 | . RS \\$1 21 | . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] 22 | . nr rst2man-indent-level +1 23 | .\" .rstReportMargin post: 24 | .. 25 | .de UNINDENT 26 | . RE 27 | .\" indent \\n[an-margin] 28 | .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] 29 | .nr rst2man-indent-level -1 30 | .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] 31 | .in \\n[rst2man-indent\\n[rst2man-indent-level]]u 32 | .. 33 | .SH SYNOPSIS 34 | .sp 35 | macdaily \fBlogging\fP \fIbrew\fP [\fIoptions\fP] ... 36 | .sp 37 | aliases: \fBhomebrew\fP 38 | .SH OPTIONS 39 | .SS optional arguments 40 | .INDENT 0.0 41 | .TP 42 | .B \-h\fP,\fB \-\-help 43 | show this help message and exit 44 | .TP 45 | .B \-V\fP,\fB \-\-version 46 | show program\(aqs version number and exit 47 | .UNINDENT 48 | .SS general arguments 49 | .INDENT 0.0 50 | .TP 51 | .B \-q\fP,\fB \-\-quiet 52 | run in quiet mode, with no output information 53 | .TP 54 | .B \-v\fP,\fB \-\-verbose 55 | run in verbose mode, with detailed output information 56 | .TP 57 | .B \-n\fP,\fB \-\-no\-cleanup 58 | do not run cleanup process 59 | .TP 60 | .B \-l\fP,\fB \-\-show\-log 61 | open log in \fIConsole.app\fP upon completion of command 62 | .UNINDENT 63 | .SH SEE ALSO 64 | .INDENT 0.0 65 | .IP \(bu 2 66 | \fBbrew(1)\fP 67 | .IP \(bu 2 68 | \fBmacdaily\-logging\fP 69 | .IP \(bu 2 70 | \fBmacdaily\-logging\-apm\fP 71 | .IP \(bu 2 72 | \fBmacdaily\-logging\-app\fP 73 | .IP \(bu 2 74 | \fBmacdaily\-logging\-cask\fP 75 | .IP \(bu 2 76 | \fBmacdaily\-logging\-gem\fP 77 | .IP \(bu 2 78 | \fBmacdaily\-logging\-mas\fP 79 | .IP \(bu 2 80 | \fBmacdaily\-logging\-npm\fP 81 | .IP \(bu 2 82 | \fBmacdaily\-logging\-pip\fP 83 | .IP \(bu 2 84 | \fBmacdaily\-logging\-tap\fP 85 | .UNINDENT 86 | .SH AUTHOR 87 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 88 | of MacDaily. Please contact me at jarryshaw@icloud.com. 89 | .SH COPYRIGHT 90 | MacDaily is licensed under the Apple Open Source License. 91 | .\" Generated by docutils manpage writer. 92 | . 93 | -------------------------------------------------------------------------------- /macdaily/man/macdaily-logging-cask.8: -------------------------------------------------------------------------------- 1 | .\" Man page generated from reStructuredText. 2 | . 3 | .TH MACDAILY-LOGGING-CASK 8 "August 07, 2019" "v2019.8.4" "" 4 | .SH NAME 5 | macdaily-logging-cask \- Homebrew Cask Logging Automator 6 | . 7 | .nr rst2man-indent-level 0 8 | . 9 | .de1 rstReportMargin 10 | \\$1 \\n[an-margin] 11 | level \\n[rst2man-indent-level] 12 | level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] 13 | - 14 | \\n[rst2man-indent0] 15 | \\n[rst2man-indent1] 16 | \\n[rst2man-indent2] 17 | .. 18 | .de1 INDENT 19 | .\" .rstReportMargin pre: 20 | . RS \\$1 21 | . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] 22 | . nr rst2man-indent-level +1 23 | .\" .rstReportMargin post: 24 | .. 25 | .de UNINDENT 26 | . RE 27 | .\" indent \\n[an-margin] 28 | .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] 29 | .nr rst2man-indent-level -1 30 | .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] 31 | .in \\n[rst2man-indent\\n[rst2man-indent-level]]u 32 | .. 33 | .SH SYNOPSIS 34 | .sp 35 | macdaily \fBlogging\fP \fIcask\fP [\fIoptions\fP] ... 36 | .sp 37 | aliases: \fBbrew\-cask\fP, \fBcaskroom\fP 38 | .SH OPTIONS 39 | .SS optional arguments 40 | .INDENT 0.0 41 | .TP 42 | .B \-h\fP,\fB \-\-help 43 | show this help message and exit 44 | .TP 45 | .B \-V\fP,\fB \-\-version 46 | show program\(aqs version number and exit 47 | .UNINDENT 48 | .SS general arguments 49 | .INDENT 0.0 50 | .TP 51 | .B \-q\fP,\fB \-\-quiet 52 | run in quiet mode, with no output information 53 | .TP 54 | .B \-v\fP,\fB \-\-verbose 55 | run in verbose mode, with detailed output information 56 | .TP 57 | .B \-n\fP,\fB \-\-no\-cleanup 58 | do not run cleanup process 59 | .TP 60 | .B \-l\fP,\fB \-\-show\-log 61 | open log in \fIConsole.app\fP upon completion of command 62 | .UNINDENT 63 | .SH SEE ALSO 64 | .INDENT 0.0 65 | .IP \(bu 2 66 | \fBbrew\-cask(1)\fP 67 | .IP \(bu 2 68 | \fBmacdaily\-logging\fP 69 | .IP \(bu 2 70 | \fBmacdaily\-logging\-apm\fP 71 | .IP \(bu 2 72 | \fBmacdaily\-logging\-app\fP 73 | .IP \(bu 2 74 | \fBmacdaily\-logging\-brew\fP 75 | .IP \(bu 2 76 | \fBmacdaily\-logging\-gem\fP 77 | .IP \(bu 2 78 | \fBmacdaily\-logging\-mas\fP 79 | .IP \(bu 2 80 | \fBmacdaily\-logging\-npm\fP 81 | .IP \(bu 2 82 | \fBmacdaily\-logging\-pip\fP 83 | .IP \(bu 2 84 | \fBmacdaily\-logging\-tap\fP 85 | .UNINDENT 86 | .SH AUTHOR 87 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 88 | of MacDaily. Please contact me at jarryshaw@icloud.com. 89 | .SH COPYRIGHT 90 | MacDaily is licensed under the Apple Open Source License. 91 | .\" Generated by docutils manpage writer. 92 | . 93 | -------------------------------------------------------------------------------- /macdaily/man/macdaily-logging-gem.8: -------------------------------------------------------------------------------- 1 | .\" Man page generated from reStructuredText. 2 | . 3 | .TH MACDAILY-LOGGING-GEM 8 "August 07, 2019" "v2019.8.4" "" 4 | .SH NAME 5 | macdaily-logging-gem \- Ruby Gem Logging Automator 6 | . 7 | .nr rst2man-indent-level 0 8 | . 9 | .de1 rstReportMargin 10 | \\$1 \\n[an-margin] 11 | level \\n[rst2man-indent-level] 12 | level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] 13 | - 14 | \\n[rst2man-indent0] 15 | \\n[rst2man-indent1] 16 | \\n[rst2man-indent2] 17 | .. 18 | .de1 INDENT 19 | .\" .rstReportMargin pre: 20 | . RS \\$1 21 | . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] 22 | . nr rst2man-indent-level +1 23 | .\" .rstReportMargin post: 24 | .. 25 | .de UNINDENT 26 | . RE 27 | .\" indent \\n[an-margin] 28 | .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] 29 | .nr rst2man-indent-level -1 30 | .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] 31 | .in \\n[rst2man-indent\\n[rst2man-indent-level]]u 32 | .. 33 | .SH SYNOPSIS 34 | .sp 35 | macdaily \fBlogging\fP \fIgem\fP [\fIoptions\fP] ... 36 | .sp 37 | aliases: \fBruby\fP, \fBrubygems\fP 38 | .SH OPTIONS 39 | .SS optional arguments 40 | .INDENT 0.0 41 | .TP 42 | .B \-h\fP,\fB \-\-help 43 | show this help message and exit 44 | .TP 45 | .B \-V\fP,\fB \-\-version 46 | show program\(aqs version number and exit 47 | .UNINDENT 48 | .SS specification arguments 49 | .INDENT 0.0 50 | .TP 51 | .B \-b\fP,\fB \-\-brew 52 | log gems of Ruby installed from Homebrew 53 | .TP 54 | .B \-s\fP,\fB \-\-system 55 | log gems of Ruby provided by macOS system 56 | .UNINDENT 57 | .SS general arguments 58 | .INDENT 0.0 59 | .TP 60 | .B \-q\fP,\fB \-\-quiet 61 | run in quiet mode, with no output information 62 | .TP 63 | .B \-v\fP,\fB \-\-verbose 64 | run in verbose mode, with detailed output information 65 | .TP 66 | .B \-n\fP,\fB \-\-no\-cleanup 67 | do not run cleanup process 68 | .TP 69 | .B \-l\fP,\fB \-\-show\-log 70 | open log in \fIConsole.app\fP upon completion of command 71 | .UNINDENT 72 | .SH SEE ALSO 73 | .INDENT 0.0 74 | .IP \(bu 2 75 | \fBgem(1)\fP 76 | .IP \(bu 2 77 | \fBmacdaily\-logging\fP 78 | .IP \(bu 2 79 | \fBmacdaily\-logging\-apm\fP 80 | .IP \(bu 2 81 | \fBmacdaily\-logging\-app\fP 82 | .IP \(bu 2 83 | \fBmacdaily\-logging\-brew\fP 84 | .IP \(bu 2 85 | \fBmacdaily\-logging\-cask\fP 86 | .IP \(bu 2 87 | \fBmacdaily\-logging\-mas\fP 88 | .IP \(bu 2 89 | \fBmacdaily\-logging\-npm\fP 90 | .IP \(bu 2 91 | \fBmacdaily\-logging\-pip\fP 92 | .IP \(bu 2 93 | \fBmacdaily\-logging\-tap\fP 94 | .UNINDENT 95 | .SH AUTHOR 96 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 97 | of MacDaily. Please contact me at jarryshaw@icloud.com. 98 | .SH COPYRIGHT 99 | MacDaily is licensed under the Apple Open Source License. 100 | .\" Generated by docutils manpage writer. 101 | . 102 | -------------------------------------------------------------------------------- /macdaily/man/macdaily-logging-mas.8: -------------------------------------------------------------------------------- 1 | .\" Man page generated from reStructuredText. 2 | . 3 | .TH MACDAILY-LOGGING-MAS 8 "August 07, 2019" "v2019.8.4" "" 4 | .SH NAME 5 | macdaily-logging-mas \- macOS Application Logging Automator 6 | . 7 | .nr rst2man-indent-level 0 8 | . 9 | .de1 rstReportMargin 10 | \\$1 \\n[an-margin] 11 | level \\n[rst2man-indent-level] 12 | level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] 13 | - 14 | \\n[rst2man-indent0] 15 | \\n[rst2man-indent1] 16 | \\n[rst2man-indent2] 17 | .. 18 | .de1 INDENT 19 | .\" .rstReportMargin pre: 20 | . RS \\$1 21 | . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] 22 | . nr rst2man-indent-level +1 23 | .\" .rstReportMargin post: 24 | .. 25 | .de UNINDENT 26 | . RE 27 | .\" indent \\n[an-margin] 28 | .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] 29 | .nr rst2man-indent-level -1 30 | .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] 31 | .in \\n[rst2man-indent\\n[rst2man-indent-level]]u 32 | .. 33 | .SH SYNOPSIS 34 | .sp 35 | macdaily \fBlogging\fP \fImas\fP [\fIoptions\fP] ... 36 | .sp 37 | aliases: \fBapp\-store\fP, \fBappstore\fP, \fBmac\fP, \fBmac\-app\-store\fP 38 | .SH OPTIONS 39 | .SS optional arguments 40 | .INDENT 0.0 41 | .TP 42 | .B \-h\fP,\fB \-\-help 43 | show this help message and exit 44 | .TP 45 | .B \-V\fP,\fB \-\-version 46 | show program\(aqs version number and exit 47 | .UNINDENT 48 | .SS general arguments 49 | .INDENT 0.0 50 | .TP 51 | .B \-q\fP,\fB \-\-quiet 52 | run in quiet mode, with no output information 53 | .TP 54 | .B \-v\fP,\fB \-\-verbose 55 | run in verbose mode, with detailed output information 56 | .TP 57 | .B \-n\fP,\fB \-\-no\-cleanup 58 | do not run cleanup process 59 | .TP 60 | .B \-l\fP,\fB \-\-show\-log 61 | open log in \fIConsole.app\fP upon completion of command 62 | .UNINDENT 63 | .SH SEE ALSO 64 | .INDENT 0.0 65 | .IP \(bu 2 66 | \fBmacdaily\-logging\fP 67 | .IP \(bu 2 68 | \fBmacdaily\-logging\-apm\fP 69 | .IP \(bu 2 70 | \fBmacdaily\-logging\-app\fP 71 | .IP \(bu 2 72 | \fBmacdaily\-logging\-brew\fP 73 | .IP \(bu 2 74 | \fBmacdaily\-logging\-cask\fP 75 | .IP \(bu 2 76 | \fBmacdaily\-logging\-gem\fP 77 | .IP \(bu 2 78 | \fBmacdaily\-logging\-npm\fP 79 | .IP \(bu 2 80 | \fBmacdaily\-logging\-pip\fP 81 | .IP \(bu 2 82 | \fBmacdaily\-logging\-tap\fP 83 | .UNINDENT 84 | .SH AUTHOR 85 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 86 | of MacDaily. Please contact me at jarryshaw@icloud.com. 87 | .SH COPYRIGHT 88 | MacDaily is licensed under the Apple Open Source License. 89 | .\" Generated by docutils manpage writer. 90 | . 91 | -------------------------------------------------------------------------------- /macdaily/man/macdaily-logging-npm.8: -------------------------------------------------------------------------------- 1 | .\" Man page generated from reStructuredText. 2 | . 3 | .TH MACDAILY-LOGGING-NPM 8 "August 07, 2019" "v2019.8.4" "" 4 | .SH NAME 5 | macdaily-logging-npm \- Node.js Module Logging Automator 6 | . 7 | .nr rst2man-indent-level 0 8 | . 9 | .de1 rstReportMargin 10 | \\$1 \\n[an-margin] 11 | level \\n[rst2man-indent-level] 12 | level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] 13 | - 14 | \\n[rst2man-indent0] 15 | \\n[rst2man-indent1] 16 | \\n[rst2man-indent2] 17 | .. 18 | .de1 INDENT 19 | .\" .rstReportMargin pre: 20 | . RS \\$1 21 | . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] 22 | . nr rst2man-indent-level +1 23 | .\" .rstReportMargin post: 24 | .. 25 | .de UNINDENT 26 | . RE 27 | .\" indent \\n[an-margin] 28 | .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] 29 | .nr rst2man-indent-level -1 30 | .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] 31 | .in \\n[rst2man-indent\\n[rst2man-indent-level]]u 32 | .. 33 | .SH SYNOPSIS 34 | .sp 35 | macdaily \fBlogging\fP \fInpm\fP [\fIoptions\fP] ... 36 | .sp 37 | aliases: \fBnode\fP, \fBnode.js\fP 38 | .SH OPTIONS 39 | .SS optional arguments 40 | .INDENT 0.0 41 | .TP 42 | .B \-h\fP,\fB \-\-help 43 | show this help message and exit 44 | .TP 45 | .B \-V\fP,\fB \-\-version 46 | show program\(aqs version number and exit 47 | .UNINDENT 48 | .SS specification arguments 49 | .INDENT 0.0 50 | .TP 51 | .B \-i\fP,\fB \-\-long 52 | show extended information 53 | .UNINDENT 54 | .SS general arguments 55 | .INDENT 0.0 56 | .TP 57 | .B \-q\fP,\fB \-\-quiet 58 | run in quiet mode, with no output information 59 | .TP 60 | .B \-v\fP,\fB \-\-verbose 61 | run in verbose mode, with detailed output information 62 | .TP 63 | .B \-n\fP,\fB \-\-no\-cleanup 64 | do not run cleanup process 65 | .TP 66 | .B \-l\fP,\fB \-\-show\-log 67 | open log in \fIConsole.app\fP upon completion of command 68 | .UNINDENT 69 | .SH SEE ALSO 70 | .INDENT 0.0 71 | .IP \(bu 2 72 | \fBgem(1)\fP 73 | .IP \(bu 2 74 | \fBmacdaily\-logging\fP 75 | .IP \(bu 2 76 | \fBmacdaily\-logging\-apm\fP 77 | .IP \(bu 2 78 | \fBmacdaily\-logging\-app\fP 79 | .IP \(bu 2 80 | \fBmacdaily\-logging\-brew\fP 81 | .IP \(bu 2 82 | \fBmacdaily\-logging\-cask\fP 83 | .IP \(bu 2 84 | \fBmacdaily\-logging\-gem\fP 85 | .IP \(bu 2 86 | \fBmacdaily\-logging\-mas\fP 87 | .IP \(bu 2 88 | \fBmacdaily\-logging\-pip\fP 89 | .IP \(bu 2 90 | \fBmacdaily\-logging\-tap\fP 91 | .UNINDENT 92 | .SH AUTHOR 93 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 94 | of MacDaily. Please contact me at jarryshaw@icloud.com. 95 | .SH COPYRIGHT 96 | MacDaily is licensed under the Apple Open Source License. 97 | .\" Generated by docutils manpage writer. 98 | . 99 | -------------------------------------------------------------------------------- /macdaily/man/macdaily-logging-tap.8: -------------------------------------------------------------------------------- 1 | .\" Man page generated from reStructuredText. 2 | . 3 | .TH MACDAILY-LOGGING-TAP 8 "August 07, 2019" "v2019.8.4" "" 4 | .SH NAME 5 | macdaily-logging-tap \- Homebrew Tap Logging Automator 6 | . 7 | .nr rst2man-indent-level 0 8 | . 9 | .de1 rstReportMargin 10 | \\$1 \\n[an-margin] 11 | level \\n[rst2man-indent-level] 12 | level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] 13 | - 14 | \\n[rst2man-indent0] 15 | \\n[rst2man-indent1] 16 | \\n[rst2man-indent2] 17 | .. 18 | .de1 INDENT 19 | .\" .rstReportMargin pre: 20 | . RS \\$1 21 | . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] 22 | . nr rst2man-indent-level +1 23 | .\" .rstReportMargin post: 24 | .. 25 | .de UNINDENT 26 | . RE 27 | .\" indent \\n[an-margin] 28 | .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] 29 | .nr rst2man-indent-level -1 30 | .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] 31 | .in \\n[rst2man-indent\\n[rst2man-indent-level]]u 32 | .. 33 | .SH SYNOPSIS 34 | .sp 35 | macdaily \fBlogging\fP \fItap\fP [\fIoptions\fP] ... 36 | .sp 37 | aliases: \fBbrew\-tap\fP 38 | .SH OPTIONS 39 | .SS optional arguments 40 | .INDENT 0.0 41 | .TP 42 | .B \-h\fP,\fB \-\-help 43 | show this help message and exit 44 | .TP 45 | .B \-V\fP,\fB \-\-version 46 | show program\(aqs version number and exit 47 | .UNINDENT 48 | .SS general arguments 49 | .INDENT 0.0 50 | .TP 51 | .B \-q\fP,\fB \-\-quiet 52 | run in quiet mode, with no output information 53 | .TP 54 | .B \-v\fP,\fB \-\-verbose 55 | run in verbose mode, with detailed output information 56 | .TP 57 | .B \-n\fP,\fB \-\-no\-cleanup 58 | do not run cleanup process 59 | .TP 60 | .B \-l\fP,\fB \-\-show\-log 61 | open log in \fIConsole.app\fP upon completion of command 62 | .UNINDENT 63 | .SH SEE ALSO 64 | .INDENT 0.0 65 | .IP \(bu 2 66 | \fBbrew(1)\fP 67 | .IP \(bu 2 68 | \fBmacdaily\-logging\fP 69 | .IP \(bu 2 70 | \fBmacdaily\-logging\-apm\fP 71 | .IP \(bu 2 72 | \fBmacdaily\-logging\-app\fP 73 | .IP \(bu 2 74 | \fBmacdaily\-logging\-brew\fP 75 | .IP \(bu 2 76 | \fBmacdaily\-logging\-cask\fP 77 | .IP \(bu 2 78 | \fBmacdaily\-logging\-gem\fP 79 | .IP \(bu 2 80 | \fBmacdaily\-logging\-mas\fP 81 | .IP \(bu 2 82 | \fBmacdaily\-logging\-npm\fP 83 | .IP \(bu 2 84 | \fBmacdaily\-logging\-pip\fP 85 | .UNINDENT 86 | .SH AUTHOR 87 | Jarry Shaw, a newbie programmer, is the author, owner and maintainer 88 | of MacDaily. Please contact me at jarryshaw@icloud.com. 89 | .SH COPYRIGHT 90 | MacDaily is licensed under the Apple Open Source License. 91 | .\" Generated by docutils manpage writer. 92 | . 93 | -------------------------------------------------------------------------------- /macdaily/res/askpass.applescript: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env osascript 2 | 3 | -- script based on https://github.com/theseal/ssh-askpass 4 | 5 | on run argv 6 | set args to argv as text 7 | if args starts with "--help" or args starts with "-h" then 8 | return "macdaily-askpass [-h|--help] [prompt]" 9 | end if 10 | display dialog args with icon caution default button "OK" default answer "" with hidden answer 11 | return result's text returned 12 | end run 13 | -------------------------------------------------------------------------------- /macdaily/res/confirm.applescript: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env osascript 2 | 3 | on run argv 4 | set args to argv as text 5 | if args starts with "--help" or args starts with "-h" then 6 | return "macdaily-confirm [-h|--help] [prompt]" 7 | end if 8 | display dialog args with icon note default button "Cancel" 9 | return result's button returned 10 | end run 11 | -------------------------------------------------------------------------------- /macdaily/res/find.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | import contextlib 4 | import functools 5 | import pathlib 6 | import sys 7 | 8 | 9 | @functools.lru_cache(maxsize=128) 10 | def find(root): 11 | with contextlib.suppress(PermissionError): 12 | for path in root.iterdir(): 13 | with contextlib.suppress(OSError): 14 | if path.is_symlink(): 15 | continue 16 | if path.is_dir(): 17 | if path.parts[:2] == ('/', 'Volumes'): 18 | continue 19 | if path.suffix == '.app': 20 | print(path) 21 | find(path) 22 | 23 | 24 | if __name__ == '__main__': 25 | sys.tracebacklimit = 0 26 | sys.exit(find(pathlib.Path(sys.argv[1]).resolve(strict=True))) 27 | -------------------------------------------------------------------------------- /macdaily/util/compat.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | import sys 4 | 5 | # pathlib & subprocess 6 | if sys.version_info[:2] <= (3, 4): 7 | import pathlib2 as pathlib # pylint: disable=unused-import 8 | import subprocess32 as subprocess # pylint: disable=unused-import 9 | else: 10 | import pathlib # pylint: disable=unused-import 11 | import subprocess # pylint: disable=unused-import 12 | 13 | # threading 14 | try: 15 | import threading 16 | except ImportError: 17 | import dummy_threading as threading 18 | 19 | # multiprocessing 20 | try: 21 | import multiprocessing 22 | except ImportError: 23 | multiprocessing = threading 24 | 25 | # make alias for multiprocessing.Process 26 | setattr(multiprocessing, 'Process', threading.Thread) 27 | 28 | # make alias for multiprocessing.Queue 29 | import queue 30 | setattr(multiprocessing, 'Queue', queue.Queue) 31 | -------------------------------------------------------------------------------- /macdaily/util/const/string.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """magic strings""" 3 | 4 | import functools 5 | 6 | 7 | @functools.total_ordering 8 | class minstr: 9 | 10 | def __lt__(self, value): 11 | if isinstance(value, str): 12 | return True 13 | return NotImplemented 14 | 15 | 16 | @functools.total_ordering 17 | class maxstr: 18 | 19 | def __gt__(self, value): 20 | if isinstance(value, str): 21 | return True 22 | return NotImplemented 23 | 24 | 25 | # string boundaries 26 | MIN = minstr() 27 | MAX = maxstr() 28 | -------------------------------------------------------------------------------- /macdaily/util/const/term.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """terminal display""" 3 | 4 | import shutil 5 | 6 | # terminal length 7 | length = shutil.get_terminal_size().columns 8 | 9 | # ANSI colours 10 | reset = '\033[0m' # reset 11 | bold = '\033[1m' # bold 12 | dim = '\033[2m' # dim 13 | under = '\033[4m' # underline 14 | flash = '\033[5m' # flash 15 | 16 | red_dim = '\033[31m' # dim red foreground 17 | green_dim = '\033[32m' # dim green foreground 18 | yellow_dim = '\033[33m' # dim yellow foreground 19 | purple_dim = '\033[34m' # dim purple foreground 20 | pink_dim = '\033[35m' # dim pink foreground 21 | blue_dim = '\033[36m' # dim blue foreground 22 | 23 | red_bg_dim = '\033[41m' # dim red background 24 | green_bg_dim = '\033[42m' # dim green background 25 | yellow_bg_dim = '\033[43m' # dim yellow background 26 | purple_bg_dim = '\033[44m' # dim purple background 27 | pink_bg_dim = '\033[45m' # dim pink background 28 | blue_bg_dim = '\033[46m' # dim blue background 29 | 30 | grey = '\033[90m' # bright grey foreground 31 | red = '\033[91m' # bright red foreground 32 | green = '\033[92m' # bright green foreground 33 | yellow = '\033[93m' # bright yellow foreground 34 | purple = '\033[94m' # bright purple foreground 35 | pink = '\033[95m' # bright pink foreground 36 | blue = '\033[96m' # bright blue foreground 37 | 38 | grey_bg = '\033[100m' # bright grey background 39 | red_bg = '\033[101m' # bright red background 40 | green_bg = '\033[102m' # bright green background 41 | yellow_bg = '\033[103m' # bright yellow background 42 | purple_bg = '\033[104m' # bright purple background 43 | pink_bg = '\033[105m' # bright pink background 44 | blue_bg = '\033[106m' # bright blue background 45 | -------------------------------------------------------------------------------- /macdaily/util/exceptions.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """refined errors""" 3 | 4 | import sys 5 | 6 | from macdaily.util.const.macro import DEVMODE 7 | 8 | 9 | class Error(Exception): 10 | def __init__(self, *args, **kwargs): 11 | if not DEVMODE: 12 | sys.tracebacklimit = 0 13 | super().__init__(*args, **kwargs) 14 | 15 | 16 | class ChildExit(Error, ChildProcessError): 17 | pass 18 | 19 | 20 | class CommandNotImplemented(Error, NotImplementedError): 21 | pass 22 | 23 | 24 | class ConfigNotFoundError(Error, FileNotFoundError): 25 | pass 26 | 27 | 28 | class IncorrectPassword(Error, PermissionError): 29 | pass 30 | 31 | 32 | class TimeExpired(Error, TimeoutError): 33 | pass 34 | 35 | 36 | class UnsupportedOS(Error, RuntimeError): 37 | pass 38 | -------------------------------------------------------------------------------- /macdaily/util/globals.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | -------------------------------------------------------------------------------- /macdaily/util/tools/make.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | import contextlib 4 | import os 5 | 6 | from macdaily.util.compat import subprocess 7 | 8 | 9 | def make_context(redirect=False, devnull=open(os.devnull, 'w')): 10 | if redirect: 11 | return contextlib.redirect_stdout(devnull) 12 | return contextlib.nullcontext() 13 | 14 | 15 | def make_description(command): 16 | def desc(singular): 17 | if singular: # pylint: disable=no-else-return 18 | return command.desc[0] 19 | else: 20 | return command.desc[1] 21 | return desc 22 | 23 | 24 | def make_namespace(args): 25 | if not isinstance(args, dict): 26 | args = vars(args) 27 | namespace = dict() 28 | for key, value in args.items(): 29 | if value is None: 30 | continue 31 | namespace[key] = value 32 | return namespace 33 | 34 | 35 | def make_pipe(password, redirect=False, devnull=subprocess.DEVNULL): 36 | return subprocess.Popen(['yes', password], 37 | stdout=subprocess.PIPE, 38 | stderr=make_stderr(redirect, devnull)) 39 | 40 | 41 | def make_stderr(redirect=False, devnull=subprocess.DEVNULL): 42 | if redirect: 43 | return devnull 44 | return None 45 | -------------------------------------------------------------------------------- /setup-emoji.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | import os 4 | import re 5 | import subprocess 6 | 7 | RESP_BEER = subprocess.check_output(['unbuffer', '-p', 'echo', '🍺']).strip().decode() 8 | 9 | context = list() 10 | with open(os.path.join(os.path.dirname(__file__), 'macdaily/util/const/macro.py')) as file: 11 | for line in file: 12 | match = re.match(r"RESP_BEER = '(.*)'", line) 13 | if match is None: 14 | context.append(line) 15 | else: 16 | context.append(f'RESP_BEER = {RESP_BEER!r}\n') 17 | 18 | with open(os.path.join(os.path.dirname(__file__), 'macdaily/util/const/macro.py'), 'w') as file: 19 | file.writelines(context) 20 | -------------------------------------------------------------------------------- /setup-version.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | import os 4 | import re 5 | import sys 6 | import time 7 | import pkg_resources 8 | 9 | try: 10 | __version__ = str(pkg_resources.parse_version(sys.argv[1])) 11 | except IndexError: 12 | __version__ = str(pkg_resources.parse_version(time.strftime('%Y.%m.%d'))) 13 | 14 | context = list() 15 | with open(os.path.join(os.path.dirname(__file__), 'macdaily/util/const/macro.py')) as file: 16 | for line in file: 17 | match = re.match(r"VERSION = '(.*)'", line) 18 | if match is None: 19 | context.append(line) 20 | else: 21 | context.append(f"VERSION = {__version__!r}\n") 22 | 23 | with open(os.path.join(os.path.dirname(__file__), 'macdaily/util/const/macro.py'), 'w') as file: 24 | file.writelines(context) 25 | 26 | context = list() 27 | with open(os.path.join(os.path.dirname(__file__), 'setup.py')) as file: 28 | for line in file: 29 | match = re.match(r"__version__ = '(.*)'", line) 30 | if match is None: 31 | context.append(line) 32 | else: 33 | context.append(f'__version__ = {__version__!r}\n') 34 | 35 | with open(os.path.join(os.path.dirname(__file__), 'setup.py'), 'w') as file: 36 | file.writelines(context) 37 | 38 | for rst in os.listdir(os.path.join(os.path.dirname(__file__), 'doc', 'rst')): 39 | if os.path.splitext(rst)[1] != '.rst': 40 | continue 41 | 42 | context = list() 43 | with open(os.path.join(os.path.dirname(__file__), 'doc', 'rst', rst)) as file: 44 | for line in file: 45 | match = re.match(r":Version: (.*)", line) 46 | if match is None: 47 | match =re.match(r":Date: (.*)", line) 48 | if match is None: 49 | context.append(line) 50 | else: 51 | context.append(f":Date: {time.strftime('%B %d, %Y')}\n") 52 | else: 53 | context.append(f':Version: v{__version__}\n') 54 | 55 | with open(os.path.join(os.path.dirname(__file__), 'doc', 'rst', rst), 'w') as file: 56 | file.writelines(context) 57 | -------------------------------------------------------------------------------- /setup.cfg: -------------------------------------------------------------------------------- 1 | [bdist_wheel] 2 | universal=0 3 | 4 | [metadata] 5 | description-file=README.rst 6 | license_file=LICENSE 7 | --------------------------------------------------------------------------------