Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/abdelhamiderrahmouni/prodtools

A set of command line tools to help me ship code faster, made with laravel zero.
https://github.com/abdelhamiderrahmouni/prodtools

Last synced: 6 days ago
JSON representation

A set of command line tools to help me ship code faster, made with laravel zero.

Awesome Lists containing this project

README

        


Prodtools


Total Downloads
Latest Stable Version
License

A set of command line tools to help me ship code faster, made with laravel zero.

Available functionalities :
- Lang files translation.
- Assets images optimization.
- files/folder/project compression
------

# Documentation
## General Use
### Installation
You can install the package via composer:
```bash
composer global require abdelhamiderrahmouni/prodtools
```
add it to your PATH:
```bash
export PATH="$PATH:$HOME/.composer/vendor/bin"
```

### Usage
the package offers three main commands:

#### translations
This command will translate your lang files from the source language to the target language or languages,
it supports multiple languages and can output the result in JSON format.
```bash
prodtools translate [--json]
```

example:
The following translates the php files holding the translations from `en` language to `fr` and `ar` languages
and outputs folders for `ar` and `fr` languages.
```bash
prodtools translate en fr ar
```

The following translates the JSON files holding the translations from `en` language to `fr` and `ar` languages
and outputs the translations to `ar.json` and `fr.json` files.
```bash
prodtools translate en fr ar --json
```
You can find more details on [superduper filament starter kit](https://github.com/riodwanto/superduper-filament-starter-kit)
@riodwanto is the original author of the command, I just added the JSON output feature.

#### Assets optimization
The idea behind this command came from the need to optimize the images in the assets folder before shipping the application.
As doing that manually is a tedious task, I decided to automate it.

This command will optimize the images in the assets folder.
```bash
prodtools images:comporess # defaults to public/assets
```
Options :
- `path` is the path to the folder containing the images to optimize; by default it's public/assets.

Arguments :
- `--keep` to keep the original images; by default it's false.
- `--prefix` to add a prefix to the original folder's name; by default it's "old_".
- `--details` to display the optimization details; by default it's false.

#### Project compression

This command will compress the project files and folders into a single archive file.
```bash
prodtools compress # defaults to current directory
```
Options :
- `path` is the path to the folder to compress; by default it's the current directory.

Arguments :
- `--exclude` mention the files and folders to exclude from the archive; by default it's ".git,node_modules".
- `--include` Directories and files to make sure they are included in the zip.
- `--output-name|name` specify the output file name; by default it's FolderName in snake case like "folder_name.zip".
- `--chunk-size` The maximum size of each chunk in MB, 0 for no chunking.
- `--excludes_file` A file containing directories and files to exclude from the zip (should be in the root of the project path) by default it will look for `.prodtools_compress_excludes`.

```bash
prodtools compress # compress the current directory, this will look for .prodtools_compress_excludes file in the root of the project and exclude the files and folders mentioned in it.
prodtools compress --exclude=".git,node_modules,.github,.idea,storage,.env,public/.htaccess"
prodtools compress --include="node_modules" # compress the current directory and include the node_modules folder.
prodtools compress --output-name="my_project.zip" # compress the current directory and name the output file my_project.zip.
prodtools compress --chunk-size="10" # compress the current directory and split the output file into chunks of 10MB.
```
#### Get Random Images from Unsplash
This command will download random images from unsplash and save them in the specified folder.
```bash
prodtools images:get --amount "" --size "x" --terms "" --multi-size --sizes "x,x,..." --amounts ",,..."
```
Options :
- `folder` is the folder where the images will be saved; by default the command will create a folder named local_images in the current path.

Arguments :
- `--amount` is the number of images to download; by default it's 5.
- `--size` is the size of the images to download; by default it's 200x200.
- `--terms` is the search terms to use; by default it's empty.
- `--multi-size` is a flag to download multiple sizes of the images; by default it's false.
- `--sizes` is the sizes of the images to download; by default it's "200x200,1280x720".
- `--amounts` is the number of images to download for each size; by default it's "5,5"

example:
```bash
prodtools images:get public/assets/images --amount "10" --size "1920x1080" --terms "nature,animals"
```
```bash
prodtools images:get public/assets/images --multi-size --sizes "1920x1080,1280x720,640x480" --amounts "5,3,2" # make sure the amounts match the sizes count
```

## Development
### build standalone application
Run the following command to build a standalone application:
```bash
php production-tools app:build prodtools
```

You will then be able to execute it directly:
```bash
./builds/prodtools
```
or on Windows:
```bash
C:\application\path> php builds\prodtools # this is still not ready for windows
```

## License

Laravel Zero is an open-source software licensed under the MIT license.