sidekickcode / sidekick

:+1: Your code, made perfect :rocket:
16 stars 3 forks source link

sidekick run won't work if a .sidekickrc file is present #3

Closed pietrovismara closed 7 years ago

pietrovismara commented 7 years ago

As you can see in the screenshot, sidekick run won't work if a .sidekickrc file is present. image

Maybe some more specific error message would help instead of having always the same generic one.

rishson commented 7 years ago

Hi, @pietrovismara . If sidekick finds a .sidekickrc at the base of the current repo, then it will use the settings in the .sidekickrc file. If no .sidekickrc file is found (as you screenshot demonstrates), then it should run with default settings (which it looks like its doing - i.e. adding the analysers that make sense for the files in the current repo). You CTRL+C'd out in the screenshot - can you tell me what happens if you don't do this? Does sidekick hang, or does it run to completion?

pietrovismara commented 7 years ago

Launching DEBUG=* sidekick run with a pregenerated .sidekickrc file i get this:

  cli unhandled promise rejection! Error: failed to start analysis, planning failed because: Error: invalid .sidekickrc: [
    {
        "property": "instance.languages.json",
        "message": "is not of a type(s) object",
        "schema": {
            "type": "object",
            "properties": {
                "analyserName": {
                    "type": "object",
                    "properties": {
                        "failCiOnError": {
                            "type": "boolean"
                        },
                        "version": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "failCiOnError"
                    ]
                }
            }
        },
        "instance": [
            {
                "name": "sidekick-david",
                "failCiOnError": false
            }
        ],
        "name": "type",
        "argument": [
            "object"
        ],
        "stack": "instance.languages.json is not of a type(s) object"
    },
    {
        "property": "instance.languages.all",
        "message": "is not of a type(s) object",
        "schema": {
            "type": "object",
            "properties": {
                "analyserName": {
                    "type": "object",
                    "properties": {
                        "failCiOnError": {
                            "type": "boolean"
                        },
                        "version": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "failCiOnError"
                    ]
                }
            }
        },
        "instance": [
            {
                "name": "sidekick-security",
                "failCiOnError": true
            }
        ],
        "name": "type",
        "argument": [
            "object"
        ],
        "stack": "instance.languages.all is not of a type(s) object"
    },
    {
        "property": "instance.languages.js",
        "message": "is not of a type(s) object",
        "schema": {
            "type": "object",
            "properties": {
                "analyserName": {
                    "type": "object",
                    "properties": {
                        "failCiOnError": {
                            "type": "boolean"
                        },
                        "version": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "failCiOnError"
                    ]
                }
            }
        },
        "instance": [
            {
                "name": "sidekick-js-todos",
                "failCiOnError": false
            },
            {
                "name": "sidekick-eslint",
                "failCiOnError": true
            },
            {
                "name": "sidekick-jshint",
                "failCiOnError": true
            }
        ],
        "name": "type",
        "argument": [
            "object"
        ],
        "stack": "instance.languages.js is not of a type(s) object"
    },
    {
        "property": "instance.languages.ts",
        "message": "is not of a type(s) object",
        "schema": {
            "type": "object",
            "properties": {
                "analyserName": {
                    "type": "object",
                    "properties": {
                        "failCiOnError": {
                            "type": "boolean"
                        },
                        "version": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "failCiOnError"
                    ]
                }
            }
        },
        "instance": [],
        "name": "type",
        "argument": [
            "object"
        ],
        "stack": "instance.languages.ts is not of a type(s) object"
    },
    {
        "property": "instance.languages.cs",
        "message": "is not of a type(s) object",
        "schema": {
            "type": "object",
            "properties": {
                "analyserName": {
                    "type": "object",
                    "properties": {
                        "failCiOnError": {
                            "type": "boolean"
                        },
                        "version": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "failCiOnError"
                    ]
                }
            }
        },
        "instance": [],
        "name": "type",
        "argument": [
            "object"
        ],
        "stack": "instance.languages.cs is not of a type(s) object"
    }
]
    at parse (/home/pietro/.nvm/versions/node/v7.1.0/lib/node_modules/sidekick/node_modules/@sidekick/common/repoConfig.js:271:11)
    at exports.fromString (/home/pietro/.nvm/versions/node/v7.1.0/lib/node_modules/sidekick/node_modules/@sidekick/common/repoConfig.js:52:46)
    at tryCatcher (/home/pietro/.nvm/versions/node/v7.1.0/lib/node_modules/sidekick/node_modules/bluebird/js/main/util.js:26:23)
    at Promise._settlePromiseFromHandler (/home/pietro/.nvm/versions/node/v7.1.0/lib/node_modules/sidekick/node_modules/bluebird/js/main/promise.js:503:31)
    at Promise._settlePromiseAt (/home/pietro/.nvm/versions/node/v7.1.0/lib/node_modules/sidekick/node_modules/bluebird/js/main/promise.js:577:18)
    at Promise._settlePromises (/home/pietro/.nvm/versions/node/v7.1.0/lib/node_modules/sidekick/node_modules/bluebird/js/main/promise.js:693:14)
    at Async._drainQueue (/home/pietro/.nvm/versions/node/v7.1.0/lib/node_modules/sidekick/node_modules/bluebird/js/main/async.js:123:16)
    at Async._drainQueues (/home/pietro/.nvm/versions/node/v7.1.0/lib/node_modules/sidekick/node_modules/bluebird/js/main/async.js:133:10)
    at Immediate.Async.drainQueues (/home/pietro/.nvm/versions/node/v7.1.0/lib/node_modules/sidekick/node_modules/bluebird/js/main/async.js:15:14)
    at runCallback (timers.js:637:20)
    at tryOnImmediate (timers.js:610:5)
    at processImmediate [as _immediateCallback] (timers.js:582:5)
    at /home/pietro/.nvm/versions/node/v7.1.0/lib/node_modules/sidekick/node_modules/@sidekick/runner/sidekick-runner.js:75:36
    at tryCatcher (/home/pietro/.nvm/versions/node/v7.1.0/lib/node_modules/sidekick/node_modules/bluebird/js/main/util.js:26:23)
    at Promise._settlePromiseFromHandler (/home/pietro/.nvm/versions/node/v7.1.0/lib/node_modules/sidekick/node_modules/bluebird/js/main/promise.js:503:31)
    at Promise._settlePromiseAt (/home/pietro/.nvm/versions/node/v7.1.0/lib/node_modules/sidekick/node_modules/bluebird/js/main/promise.js:577:18)
    at Promise._settlePromises (/home/pietro/.nvm/versions/node/v7.1.0/lib/node_modules/sidekick/node_modules/bluebird/js/main/promise.js:693:14)
    at Async._drainQueue (/home/pietro/.nvm/versions/node/v7.1.0/lib/node_modules/sidekick/node_modules/bluebird/js/main/async.js:123:16)
    at Async._drainQueues (/home/pietro/.nvm/versions/node/v7.1.0/lib/node_modules/sidekick/node_modules/bluebird/js/main/async.js:133:10)
    at Immediate.Async.drainQueues (/home/pietro/.nvm/versions/node/v7.1.0/lib/node_modules/sidekick/node_modules/bluebird/js/main/async.js:15:14)
    at runCallback (timers.js:637:20)
    at tryOnImmediate (timers.js:610:5)
    at processImmediate [as _immediateCallback] (timers.js:582:5) +13ms

So it looks like the .sidekickrc file generated by ./node_modules/sidekick/sidekick.js init is invalid.

rishson commented 7 years ago

@pietrovismara looking into this.

rishson commented 7 years ago

@pietrovismara can reproduce now. Working on a fix.

rishson commented 7 years ago

Fixed in 1.12.2

rishson commented 7 years ago

@pietrovismara this should be resolved now. However, the previously generated .sidekickrc file will be invalid and so you should remove and re-generate with sidekick init.

Tested to work when doing: [sidekick installed globally] sidekick init sidekick run