Needs Perl Modules

    @plastichub/osr-sync
    TypeScript icon, indicating that this package has built-in type declarations

    0.1.8 • Public • Published

    Sync folders

    Installation

    npm install -g @plastichub/osr-sync

    Usage

    sync (folder)

     osrc-sync --clear=true --source='./products/lydia-v4' --target='../plastic-hub-public/products/lydia-v4_test' --debug=true --profile='./osr-sync.json'

    where `osr-sync.json` is

    {
        "debug": false,
        "matching": [
            "*.json",
            "*.md",
            "*.yaml",
            "*.csv",
            "*.xls",
            "cad/**",
            "media/gallery/**",
            "resources/**",
            "drawings/**",
            "vendor/**",
            "resources/**",
            "laser/**",
            "howto/**",
            "renderings/**",
            "!./.git/**",
            "!./node_modules/**",
            "!./_MACOSX/**",
            "!./production/**",
            "!./templates/**",
            "!./.*/**",
            "!./**/*.zip",
            "!./**/*.tar"
        ]
    }

    Sync: Rename output nodes

    Additionally, output paths can be manipulated specifying the --renamer argument:

    osr-sync --renamer="./.laser-renamer.js" --clear=true --source='./products/sheetpress-cell' --target='../../rosa/laser_sheetpress' --debug=true --profile="./.osr-sync-laser-sheetpress.json"

    where ´osr-sync-laser-sheetpress.json´ is:

    {
        "debug": false,
        "matching": [
            "laser/**"
        ]
    }

    and ´./.laser-renamer.js´ is :

    exports.default = function (from, to) {
        return to.replace("Ferro", "Steel").replace("Inox", "Stainless");
    }

    Another example is to read command line arguments

    function getQuantity() {
        for (let i = 0; i < process.argv.length; i++) {
            if (process.argv[i].indexOf('--quantity') !== -1) {
                return process.argv[i].split('=')[1];
            }
        }
    }
    
    exports.default = function (from, to) {
        const sets = getQuantity();
        const parts = to.split("_");
        const partsLength = parts.length;
        const qtyToken = parts[partsLength - 3];
        if (qtyToken) {
            let qty = parseInt(qtyToken.replace('x', '')) * sets;
            parts[partsLength - 3] = 'x' + qty;
            return parts.join('_');
        }
        return null;
    }

    In this case, the script renames SP1.0_001_Lower_Rib_1A_x16.0mm_Ferro.DXF to SP1.0_001_Lower_Rib_1A[CLI-Arg --quantity]_6.0mm_Ferro.DXF The feature is useful to strip custom filename syntax, or just batch rename stuff.

    Zip

    Same as sync, a profile contains glob patterns for includes and excludes. Multiple sources can be hinged together at one root using the cwd argument

    node ./node_modules/osr-sync/dist/main.js zip --clear=true --source='./products/zoe' --source='./products/components/hal' --cwd="./" --target='../out.zip'  --debug=true --profile='./.osr-sync-zip.json'

    or when used globally

    osr-sync zip --clear=true --source='./products/zoe' --source='./products/components/hal' --cwd="./" --target='../out.zip'  --debug=true --profile='./.osr-sync-zip.json'

    Todos

    • [-] CLI:Sync: Support component level firmware config patches (overlays)
    • [-] jekyll2mc
    • [-] pack'n go for laser vendor template/renamer (generate folders, by material and thickness)
    • [ ] Shell Extension (OS context menu)
    • [-] Sheets2*: URL, cell transform (using config)
    • [ ] Drive
    • [-] SW Configs => CAD = Laser => Report (@osr-cad & @osr-deploy)
    • [ ] Sync osr-template folder per dist (@osr-templates & @osr-deploy)

    Keywords

    none

    Install

    npm i @plastichub/osr-sync

    DownloadsWeekly Downloads

    57

    Version

    0.1.8

    License

    none

    Unpacked Size

    110 kB

    Total Files

    51

    Last publish

    Collaborators

    • plastichubdev