A collection of classes and commands for automated command line scripting using Python.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

264 lines
5.9 KiB

2 years ago
# POSIX
Summary: Work with common POSIX-compliant commands..
## Available Commands
### append
Append content to a file. Argument is the file name.
- `content` (str): The content to be appended.
```ini
[add to the log file]
append: /path/to/file.log
content: This is a test.
```
### archive
Create an archive (tarball). Argument is the target file or directory.
- `absolute` (bool): Don't strip leading slashes from file names. Default `False`
- `exclude` (str): Exclude file name patterns.
- `file_name` (str): The name of the archive file. Default `archive.tgz`
- `strip` (int): Strip component paths to the given depth.
- `to_path` (str): The path to where the archive will be created. Default `.`
- `view` (bool): View the progress. Default `False`
```ini
[create an archive of the site]
archive: /path/to/file_or_directory
file_name: testing.tgz
to: /tmp
```
### certbot
Alias: ssl
Use Let's Encrypt (certbot) to acquire an SSL certificate. Argument is the domain name.
- `email`: The email address for "agree tos". Default: `webmaster@domain_name`
- `webroot`: The webroot to use. Default: `/var/www/maint/www`
```ini
[get an SSL cert]
ssl: example.app
email: webmaster@example.app
```
### copy
Copy a file or directory. First argument is the target file/directory. Second argument is the destination.
- `overwrite` (bool): Overwrite an existing target.
- `recursive` (bool): Copy directories recursively.
```ini
[copy a directory]
copy: /path/to/directory /path/to/new_directory
overwrite: yes
recursive: yes
```
### dir
Create a directory. Argument is the path.
- `group` (str): Set the group to the given group name.
- `mode` (str): Set the mode on the path.
- `owner` (str): Set the owner to the given owner name.
- `recursive` (str): Create the full path even if intermediate directories do not exist.
```ini
[create a directory]
dir: /path/to/directory
group: www-data
mode: 755
owner: deploy
recursive: yes
```
### extract
Extract an archive (tarball). Argument is the path to the archive file.
- `absolute` (bool): Don't strip leading slashes from file names. Default `False`
- `exclude` (str): Exclude file name patterns.
- `strip` (int): Strip component paths to the given depth.
- `to_path` (str): The path to where the archive will be created. Default `./`
- `view` (bool): View the progress. Default `False`
```ini
[extract an archive]
extract: /path/to/archive.tgz
```
### link
Create a symlink. First argument is the source.
- `force` (bool): Force creation of the link.
- `target` (str): The location of the link. Defaults to the current directory and the base name of the source.
```ini
[create a symlink]
link: /path/to/project/releases/1.0
cd: /path/to/project
force: yes
target: current
```
### move
Move a file or directory. First argument is the target. Second argument is the desitnation.
```ini
[move a file]
move: /path/to/file.txt /new/path/to/file.txt
```
### perms
Set permissions on a file or directory. Argument is the path.
- `group` (str): Set the group to the given group name.
- `mode` (str): Set the mode on the path.
- `owner` (str): Set the owner to the given owner name.
- `recursive` (bool): Apply permission recursively (directories only).
```ini
[set permissions on the shared directory]
perms: /path/to/project/shared
group: www-data
mode: 775
owner: deploy
recursive: yes
```
### push
Alias: rsync
Push (rsync) a path to a remote server. First argument is the local path. Second argument is the remote path.
- `delete` (bool): Delete existing files/directories. Default `False`
- `host` (str): The host name. Required.
- `key_file` (str): Use the given SSL (private) key.
- `links` (bool): Copy symlinks. Default `True
- `exclude` (str): Exclude patterns from the given (local) file.
- `port` (int): The TCP port on the host. Default: `22`
- `recursive` (bool): Operate recursively on directories.
- `user` (str): The username.
```ini
[push the project to the server]
push: /path/to/project /path/on/server
key_file: ~/.ssh/example_app
host: example.app
user: deploy
```
### remove
Remove a file or directory. Argument is the path.
- `force` (bool): Force the removal. Default `False`
- `recursive` (bool): Remove all directories in the path. Default `False`
```ini
[remove a directory]
remove: /path/to/directory
force: yes
recusrive: yes
```
### replace
Replace something in a file. First argument is the path.
- `backup`: Backup file extension. Default `.b`
- `delimiiter`: The sed delimiter. Default: `/`
- `find`: The text to be found. Required.
- `sub`: The text to be replaced. Required.
```ini
[replace text in a file]
replace: /path/to/file.txt
find: testing
sub: 123
```
### scopy
Copy a file to a remote server. First argument is the local file name. Second argument is the remote destination.
- `key_file` (str): The private key file to use for the connection.
- `host` (str): The host name. Required.
- `port` (int): The TCP port. Default: `22`
- `user` (str): The username. Required.
```ini
[copy a file to the server]
scopy: /path/to/local.txt path/to/remove.txt
host: example.app
user: deploy
```
### sync
Sync (rsync) local files and directories. First argument is the target. Second argument is the destination.
- `delete` (bool): Delete existing files/directories.
- `links` (bool): Copy symlinks.
- `exclude` (str): Exclude patterns from the given (local) file.
- `recursive` (bool): Operate recursively on directories.
```ini
[syncrhonize files on the local machine]
sync: /path/to/project /path/to/sync/directory
```
### touch
Touch a file, whether it exists or not. Argument is the path.
```ini
[touch a file]
touch: /path/to/file.txt
```
### wait
Wait for n number of seconds before continuing. Argument is the number of seconds.
```ini
[wait just a minute]
wait: 60
```
### write
Write to a file. Argument is the path.
- `content` (str): The content to write to the file. Replaces existing content.
```ini
[replace an existing file]
write: /path/to/file.txt
content: This whole file has been replaced.
```