Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
134 changes: 114 additions & 20 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,53 +1,147 @@
<p align="center">
<img src="/arts/devpulse-cli-logo.svg" alt="Overview DevPulse PHP" style="width:200px">
<img src="/arts/devpulse-cli-logo.svg" alt="Overview DevPulse PHP" style="width:200px">
</p>

---
**DevPulse** is an open-source, lightweight command-line interface (CLI) designed to simplify and standardize development workflows. It provides a unified interface for managing scripts and server connections across platforms, boosting productivity and reducing complexity.

**DevPulse** is an open-source command-line tool that simplifies and unifies developer workflows. Install it globally, define project-specific or reusable scripts (e.g., builds, tests, deployments), and run them with `devpulse run <script>`. Designed for flexibility, **DevPulse** lets you replace scattered scripts and tools with a single interface, empowering teams to standardize workflows without locking into specific languages or ecosystems.
⚠️ **Note**: DevPulse is in active development. We're working toward a stable release—stay tuned!

> Note: DevPulse is still under active development and is not yet ready for production use.
## Key Features

- 🌍 **Cross-Platform Support**: Available via Composer; support for Windows, macOS, and Linux coming soon.
- ⚡ **Quick Setup**: Auto-generates configuration on first run or with `devpulse init`.
- 🔄 **Smart Configuration Merging**: Combines global and local configurations, with local settings taking precedence.
- 📝 **User-Friendly JSON Configs**: Easy-to-edit, human-readable JSON files for scripts and servers.
- 🔒 **Full Data Control**: Store configurations locally with no vendor lock-in.
- 🛡️ **Lightweight & Secure**: Zero dependencies, safe for any environment, including servers.
- 🛠️ **Script Management**: Easily add, remove, edit, list, and run scripts with intuitive commands. Execute multiple scripts simultaneously, including concurrent execution.
- 🌐 **Server Management**: Easily add, remove, edit, list, and SSH into servers without manual configuration of host, port, or other SSH details.

## Installation

Coming Soon...
### Prerequisites

- **PHP**: Version 8.2 or higher
- **Composer**: Required for installation
- **PATH Setup**: Ensure Composer's global bin directory is in your PATH. Add this to your `.bashrc`, `.zshrc`, or equivalent:
```bash
export PATH="$PATH:$HOME/.composer/vendor/bin"
```

## Usage
### Install DevPulse

Coming Soon...
1. Install globally via Composer:
```bash
composer global require softpulze/devpulse-cli
```
2. Verify installation:
```bash
devpulse --version
```

## Configuration
## Getting Started

DevPulse can be configured using a `devpulse.json` file in the root of your project.
### Initial Setup

You can scaffold the `devpulse.json` file with:
Run DevPulse for the first time to auto-generate a configuration file, or initialize manually:

```bash
devpulse init
```

Here's an example configuration:
`devpulse init` creates a `devpulse.json` file in the current directory. When executing any command, local settings (`./devpulse.json`) take precedence over global settings (e.g., `~/.devpulse/devpulse.json`).

### Configuration File

DevPulse uses a simple `devpulse.json` file to manage scripts and servers. Example:

```json
{
"scripts": [
{
"name": "php",
"description": "Print current PHP version.",
"command": "php --version"
"name": "rector",
"command": "./vendor/bin/rector",
"description": "Refactor with Rector"
},
{
"name": "pint",
"command": "./vendor/bin/pint",
"description": "Reformat code with Pint"
},
{
"name": "refacto",
"command": "devpulse run rector,pint",
"description": "Refactor code with rector and reformat code with Pint"
}
],
"servers": [
{
"name": "production",
"host": "example.com",
"user": "deploy",
"port": 22
}
]
}
```

### Presets
- **Scripts**: Define reusable commands with optional descriptions.
- **Servers**: Store SSH connection details for quick access.

## Script Management

Manage project scripts with straightforward commands:

| Command | Description | Example |
| ----------------------------- | ----------------------------------- | --------------------------------------------------------------- |
| `script:list` | List all scripts | `devpulse script:list` |
| `script:add` | Add a new script (interactive mode) | `devpulse script:add` |
| `script:add <name> <command>` | Add a script with inline options | `devpulse script:add test "npm test" --description="Run tests"` |
| `script:update <name>` | Update an existing script | `devpulse script:update test --command="npm run test:ci"` |
| `script:remove <name>` | Remove a script | `devpulse script:remove test` |
| `run <name>` | Run a script | `devpulse run test` |
| `run <name>,<another-name>` | Run multiple script at once | `devpulse run test,test2` |

### Running Scripts

Execute scripts with flexible options:

- Basic execution:
```bash
devpulse run test
```
- Run concurrently:
```bash
devpulse run test,test2 --concurrently
```
- Pass custom options:
```bash
devpulse run deploy --env=production --force
```

## Server Management

Simplify server connections with these commands:

| Command | Description | Example |
| -------------------------- | ----------------------------------- | -------------------------------------------------------------------- |
| `server:list` | List all servers | `devpulse server:list` |
| `server:add` | Add a new server (interactive mode) | `devpulse server:add` |
| `server:add <name> <host>` | Add a server with inline options | `devpulse server:add production example.com --user=deploy --port=22` |
| `server:update <name>` | Update server details | `devpulse server:update production --port=2222` |
| `server:remove <name>` | Remove a server | `devpulse server:remove production` |
| `ssh <name>` | SSH into a server | `devpulse ssh production` |

## Contributing

Coming Soon...
We welcome contributions! Fork the repository, make changes, and submit a Pull Request. Check the repository for guidelines and open issues.

## Command Options
## License

Coming Soon...
DevPulse is licensed under the [MIT License](https://opensource.org/licenses/MIT).

---
## Support

DevPulse is an open-sourced software licensed under the **[MIT license](https://opensource.org/licenses/MIT)**.
- **Documentation**: [Official DevPulse Docs](https://github.com/softpulze/devpulse-cli) (Available Soon)
- **Issues**: Report bugs or request features on the [GitHub repository](https://github.com/softpulze/devpulse-cli/issues)
- **Community**: Join discussions on [X](https://x.com/search?q=%23DevPulseCLI&src=typed_query) by searching for `#DevPulseCLI`.
122 changes: 61 additions & 61 deletions composer.json
Original file line number Diff line number Diff line change
@@ -1,64 +1,64 @@
{
"name": "softpulselab/devpulse-cli",
"description": "DevPulse CLI - An open-source command-line tool that simplifies and unifies developer workflows.",
"keywords": [
"devpulse",
"cli",
"opensource",
"productivity",
"tool"
"name": "softpulze/devpulse-cli",
"description": "DevPulse CLI - An open-source command-line tool that simplifies and unifies developer workflows.",
"keywords": [
"devpulse",
"cli",
"opensource",
"productivity",
"tool"
],
"homepage": "https://github.com/softpulze/devpulse-cli",
"type": "project",
"license": "MIT",
"support": {
"issues": "https://github.com/softpulze/devpulse-cli/issues",
"source": "https://github.com/softpulze/devpulse-cli"
},
"authors": [
{
"name": "Ashok Barua",
"email": "[email protected]"
}
],
"require": {
"php": "^8.2.0"
},
"require-dev": {
"larastan/larastan": "^3.0",
"laravel-zero/framework": "^12.0",
"laravel/pint": "^1.18",
"mockery/mockery": "^1.6.12",
"pestphp/pest": "^3.5.1",
"pestphp/pest-plugin-type-coverage": "^3.2",
"rector/rector": "^2.0"
},
"autoload": {
"files": [
"bootstrap/helpers.php"
],
"homepage": "https://laravel-zero.com",
"type": "project",
"license": "MIT",
"support": {
"issues": "https://github.com/laravel-zero/laravel-zero/issues",
"source": "https://github.com/laravel-zero/laravel-zero"
},
"authors": [
{
"name": "Nuno Maduro",
"email": "[email protected]"
}
],
"require": {
"php": "^8.2.0"
},
"require-dev": {
"larastan/larastan": "^3.0",
"laravel-zero/framework": "^12.0",
"laravel/pint": "^1.18",
"mockery/mockery": "^1.6.12",
"pestphp/pest": "^3.5.1",
"pestphp/pest-plugin-type-coverage": "^3.2",
"rector/rector": "^2.0"
},
"autoload": {
"files": [
"bootstrap/helpers.php"
],
"psr-4": {
"App\\": "app/",
"Database\\Factories\\": "database/factories/",
"Database\\Seeders\\": "database/seeders/"
}
},
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/"
}
},
"config": {
"preferred-install": "dist",
"sort-packages": true,
"optimize-autoloader": true,
"allow-plugins": {
"pestphp/pest-plugin": true
}
},
"minimum-stability": "stable",
"prefer-stable": true,
"bin": [
"builds/devpulse"
]
"psr-4": {
"App\\": "app/",
"Database\\Factories\\": "database/factories/",
"Database\\Seeders\\": "database/seeders/"
}
},
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/"
}
},
"config": {
"preferred-install": "dist",
"sort-packages": true,
"optimize-autoloader": true,
"allow-plugins": {
"pestphp/pest-plugin": true
}
},
"minimum-stability": "stable",
"prefer-stable": true,
"bin": [
"builds/devpulse"
]
}
Loading