1.0.9 • Published 11 months ago

swiff-5 v1.0.9

Weekly downloads
-
License
-
Repository
-
Last release
11 months 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

1.0.9

11 months ago

1.0.8

11 months ago

1.0.7

11 months ago

1.0.6

11 months ago

1.0.5

11 months ago

1.0.4

11 months ago

1.0.3

11 months ago

1.0.2

11 months ago

1.0.1

11 months ago

1.0.0

11 months ago

0.0.8

11 months ago

0.0.7

11 months ago

0.0.6

11 months ago

0.0.5

11 months ago

0.0.4

11 months ago

0.0.3

11 months ago

0.0.2

11 months ago

0.0.1

11 months ago