1.0.9 • Published 1 year ago

swiff-5 v1.0.9

Weekly downloads
-
License
-
Repository
-
Last release
1 year ago

Swiff

Note: Currently in Development (Will merge to Swiff after approval)

Swiff streamlines common SSH tasks during website/app development, saving you valuable time.

Key Features

🚀 Folder Synchronization

Keep folders in sync between servers effortlessly.

💫 Database Management

Manage databases between servers with automatic backups.

🎩 Composer File Management

Transfer composer files between servers with automatic backups.

💻 Remote Terminal Connection

Launch an SSH session directly into the remote site/app folder.

💻 Logger

Access all logs with swiff.log.

Getting Started

  1. Install Swiff globally with npm:

    npm install --global swiff-5@latest
  2. Run Swiff:

    swiff-5

Additional Features

  • Custom SSH Identity: Swiff uses your identity located at /Users/[currentUser]/.ssh/id_rsa. Specify a custom SSH key path in your .env file with:

    SWIFF_CUSTOM_KEY="/Users/[your-user]/.ssh/[key-filename]"
  • Gzipped Backups: Automatically back up and gzip your files and databases whenever they change.

  • Disable Specific Tasks: Specify tasks to disable via a config setting.

  • Dotenv Setup: Required .env

# The environment currently running in ('dev', 'staging', 'production', etc.)
ENVIRONMENT="dev"

SECURITY_KEY=""

DB_USER="db"
DB_PASSWORD="db"
DB_DATABASE="db"
DB_PORT="3306"
DB_DRIVER="mysql"
DB_SERVER="localhost"
DB_TABLE_PREFIX="craft"

Also this can be prefixed in swiff.config.js

  env: {
    prefix: "CRAFT_",
  },
  • Folder Sync Enhancements: New features include see diff and validation sync with git.

  • Enhanced Logger: swiff.log includes max size settings to manage log file size:

    logging: {
      enabled: true,
      dir: '', // Default root: "./storage/logs/"
      maxSize: 10 * 1024 * 1024, // Recommended 10MB max log file size
    },
  • Multi-Environment Support: Must have defaultEnvironment in environments object.

    defaultEnvironment: "staging",
    environments: {
      staging: {
       // The SSH login username
        user: "",   
        // The IP/hostname of the remote server
        host: "",  
        // The working directory of the remote app folder
        appPath: "",
        // The SSH port to connect on (22 is the SSH default)
        port: 22,
      },
      production: {
        user: "",   
        host: "",  
        appPath: "",    
        port: 22,
      },
    },

Requirements

Swiff requires Node.js LTS version (16.0.0+).

Place the following in swiff.config.js at the root of your application:

export default {
  defaultEnvironment: "staging",
  logging:{
    enabled: true,
    // change log directory (Default root: example "./storage/logs/")
    dir:'', 
    // recommended 10mb max log file size than clears log 
    maxSize: 10 * 1024 * 1024, 
  },
  environments: {
    staging: {
     // The SSH login username
     user: "",   
     // The IP/hostname of the remote server
     host: "",  
     // The working directory of the remote app folder
     appPath: "",
     // The SSH port to connect on (22 is the SSH default)
     port: 22,
    },
    production: {
      user: "",   
      host: "",  
      appPath: "",    
      port: 22,
    },
  },
  local: {
    // Play sound for task start, message, error
    playsound: true, 
    // If the env is ddev 
    ddev: true,
    // Add validation check with git for folderPush makes it consistent 
    git: true 
  },
  env:{
    prefix: null
  },
  pushFolders: [
    // { path: "config", exclude: "/project/*" },
    // 'templates',
    // 'web/dist'
  ],
  pullFolders: [
    // 'web/assets/volumes'
  ],
  disabled: ["databasePush"],
};
;

Swiff works with MySQL databases and supports ddev (requires local.ddev = true).

Technology

  • Node.js - JavaScript runtime built on Chrome's V8 engine
  • Ink 2 - React for interactive command-line apps
  • Babel - JavaScript transpiler
  • Rollup - JavaScript module bundler
  • Prettier - Code formatter
  • Pino - Logger

Credits