diff --git a/.travis.yml b/.travis.yml index a7f62b0e..282a9c5b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,6 +11,8 @@ script: - npm run build-mac - npm run build-linux - export VERSION=$(echo $TRAVIS_TAG | tr -d "v") + - curl -F package=@releases/ndm_$(echo $VERSION)_amd64.deb https://$GEMFURY_TOKEN@push.fury.io/720kb/ + - curl -F package=@releases/ndm_$(echo $VERSION).rpm https://$GEMFURY_TOKEN@push.fury.io/720kb/ deploy: - provider: releases api_key: $GITHUB_ACCESS_TOKEN @@ -23,111 +25,3 @@ deploy: skip_cleanup: true on: tags: true - - provider: packagecloud - repository: "ndm" - username: "wouldgo" - token: $PACKAGECLOUD_TOKEN - dist: "debian/buster" - package_glob: releases/**/*.deb - skip_cleanup: true - on: - tags: true - - provider: packagecloud - repository: "ndm" - username: "wouldgo" - token: $PACKAGECLOUD_TOKEN - dist: "elementaryos/freya" - package_glob: releases/**/*.deb - skip_cleanup: true - on: - tags: true - - provider: packagecloud - repository: "ndm" - username: "wouldgo" - token: $PACKAGECLOUD_TOKEN - dist: "ubuntu/trusty" - package_glob: releases/**/*.deb - skip_cleanup: true - on: - tags: true - - provider: packagecloud - repository: "ndm" - username: "wouldgo" - token: $PACKAGECLOUD_TOKEN - dist: "ubuntu/utopic" - package_glob: releases/**/*.deb - skip_cleanup: true - on: - tags: true - - provider: packagecloud - repository: "ndm" - username: "wouldgo" - token: $PACKAGECLOUD_TOKEN - dist: "ubuntu/vivid" - package_glob: releases/**/*.deb - skip_cleanup: true - on: - tags: true - - provider: packagecloud - repository: "ndm" - username: "wouldgo" - token: $PACKAGECLOUD_TOKEN - dist: "ubuntu/wily" - package_glob: releases/**/*.deb - skip_cleanup: true - on: - tags: true - - provider: packagecloud - repository: "ndm" - username: "wouldgo" - token: $PACKAGECLOUD_TOKEN - dist: "ubuntu/xenial" - package_glob: releases/**/*.deb - skip_cleanup: true - on: - tags: true - - provider: packagecloud - repository: "ndm" - username: "wouldgo" - token: $PACKAGECLOUD_TOKEN - dist: "ubuntu/yakkety" - package_glob: releases/**/*.deb - skip_cleanup: true - on: - tags: true - - provider: packagecloud - repository: "ndm" - username: "wouldgo" - token: $PACKAGECLOUD_TOKEN - dist: "linuxmint/serena" - package_glob: releases/**/*.deb - skip_cleanup: true - on: - tags: true - - provider: packagecloud - repository: "ndm" - username: "wouldgo" - token: $PACKAGECLOUD_TOKEN - dist: "opensuse/42.1" - package_glob: releases/**/*.rpm - skip_cleanup: true - on: - tags: true - - provider: packagecloud - repository: "ndm" - username: "wouldgo" - token: $PACKAGECLOUD_TOKEN - dist: "fedora/25" - package_glob: releases/**/*.rpm - skip_cleanup: true - on: - tags: true - - provider: packagecloud - repository: "ndm" - username: "wouldgo" - token: $PACKAGECLOUD_TOKEN - dist: "el/7" - package_glob: releases/**/*.rpm - skip_cleanup: true - on: - tags: true diff --git a/README.md b/README.md index 0c3f4a17..a6a13da2 100644 --- a/README.md +++ b/README.md @@ -16,9 +16,6 @@ Runs on Linux, MacOS and Windows; **ndm** stands for "npm desktop manager". - - - diff --git a/lib/footer.pug b/lib/footer.pug index 457cf77d..7da29568 100644 --- a/lib/footer.pug +++ b/lib/footer.pug @@ -7,10 +7,13 @@ | v{{shell.npmCurrentVersionBadge}} button.button-global(type="button", title="Enable ndm in global folder", ng-show="shell.globalDisabled", ng-click="shell.enableGlobal()") i.fa.fa-globe.color-primary - | Enable globals + | Enable button.button-update(type="button", ng-show="!shell.globalDisabled && shell.npmCurrentVersionBadge", title="Update npm", ng-click="shell.activeClickedLink('update'); shell.updateNpm()") i.fa.fa-history - | Update npm + | Update + button.button-update(type="button", title="Run doctor", ng-click="shell.activeClickedLink('doctor'); shell.runDoctor()") + i.fa.fa-doctor + | Doctor span(class="npm-status", ng-mouseenter="shell.checkRegistryStatus()") i.fa.fa-disk(title="npm registry is available", ng-show="!shell.loadingRegistryStatus && shell.registryStatus") i.fa.fa-disk(title="npm registry checking ...", ng-show="shell.loadingRegistryStatus") diff --git a/lib/icons/fontello/config.json b/lib/icons/fontello/config.json index a533ff12..ea61bc84 100755 --- a/lib/icons/fontello/config.json +++ b/lib/icons/fontello/config.json @@ -131,6 +131,12 @@ "css": "globe", "code": 59394, "src": "fontawesome" + }, + { + "uid": "5590d2f643b64d2d0757ae660f9c24cb", + "css": "doctor", + "code": 61681, + "src": "fontawesome" } ] } \ No newline at end of file diff --git a/lib/icons/fontello/css/fontello-codes.css b/lib/icons/fontello/css/fontello-codes.css index 037d304a..c6c8a467 100755 --- a/lib/icons/fontello/css/fontello-codes.css +++ b/lib/icons/fontello/css/fontello-codes.css @@ -14,6 +14,7 @@ .fa-sort:before { content: '\f0dc'; } /* '' */ .fa-sort-down:before { content: '\f0dd'; } /* '' */ .fa-sort-up:before { content: '\f0de'; } /* '' */ +.fa-doctor:before { content: '\f0f1'; } /* '' */ .fa-circle:before { content: '\f111'; } /* '' */ .fa-rocket:before { content: '\f135'; } /* '' */ .fa-level-up:before { content: '\f148'; } /* '' */ diff --git a/lib/icons/fontello/css/fontello-embedded.css b/lib/icons/fontello/css/fontello-embedded.css index d52409b1..c89d9ff3 100755 --- a/lib/icons/fontello/css/fontello-embedded.css +++ b/lib/icons/fontello/css/fontello-embedded.css @@ -1,15 +1,15 @@ @font-face { font-family: 'fontello'; - src: url('../font/fontello.eot?53466719'); - src: url('../font/fontello.eot?53466719#iefix') format('embedded-opentype'), - url('../font/fontello.svg?53466719#fontello') format('svg'); + src: url('../font/fontello.eot?29008306'); + src: url('../font/fontello.eot?29008306#iefix') format('embedded-opentype'), + url('../font/fontello.svg?29008306#fontello') format('svg'); font-weight: normal; font-style: normal; } @font-face { font-family: 'fontello'; - src: url('data:application/octet-stream;base64,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') format('woff'), - url('data:application/octet-stream;base64,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JyIuAQ4BDwEmNiYGDwEGNgYVDgEVLgE3HgEXFgcGBwYXFAYWAa10xnJyxujIbgZ6vAETAggDAQIEAxEVEwoBDAIIBgMBBwYEBAoFBgQBCAECAQMDBAQEBAYBBgIICQUEBgIEAwEIDAEFHAQDAgIBCAEOAQIHCQMEBAEEAgMBBwoCBAUNAwMUDhMECAYBAgECBQkCARMJBgQCBQYKAwgEBwUCAwYJBAYBBQkEBQMDAgUEAQ4HCw8EEAMDAQgECAEIAwEIBAMCAgMEAgQSBQMMDAEDAwIMGRsDBgUFEwUDCwQNCwEEAgYECAQJBFEyBAUCBgUDARgKAQIHBQQDBAQEAQIBAQECCgcHEgQHCQQDCAQCDgEBAgIOAgQCAg8IAwQDAgMFAQQKCgEECAQFDAcCAwgDCQcWBgYFCAgQBBQKAQIEAgYDDgMEAQoFCBEKAgICAgEFAgQBCgIDDAMCCAECCAMBAwIHCwQBAgIIFAMICgECAQQCAwUCAQMCAQMBBBgDCQMBAQEDDQIOBAIDAQQDBQIGCAQCAgEIBAQHCAUHDAQEAgICBgEFBAMCAwUMBAISAQQCAgUOCQICCggFCQIGBgcFCQwKaXNQAQwBDQEEAxUBAwUCAwICAQUMCAMGBgYGAQEECAQKAQcGAgoCBAEMAQECAgQLDwECCQoBAwt0xOrEdHTE6sR0/t0BCAIGBgEECAMFCwEMAQMCAgwBCgcCAwQCBAECBgwFBgMDAgQBAQMDBAIEAQMDAgIIBAIGBAEDBAEEBAYHAwgHCgcEBQYFDAMBAgQCAQMMCQ4DBAUHCAUDEQIDDggFDAMBAwkJBgQDBgEOBAoEAQIFAgIGCgQHBwcBCQUIBwgDAgcDAgQCBgIEBQoDAw4CBQICBQQHAgEKCA8CAwMHAwIOAwIDBAYEBgQEAQEtTwQBCAQDBAYPCgIGBAUEBQ4JFAsCAQYaAgEXBQQGAwUUAwMQBQIBBAgFCAQBCxgNBQwCAgQEDAgOBA4BCgsUBwgBBQMNAgECARIDCgQECQUGAgMKAwIDBQwCEAgSAwMEBAYCBAoHDgEFAgQBBAICEAUPBQIFAwILAggEBAICBBgOCQ4FCQEEBgECAwIBBAMGBwYFAg8KAQQBAgMBAgMIBRcEAggIAwUOAgoKBQECAwQLCQUCAgICBgIKBgoEBAQDAQQKBAYBBwIBBwYFBAID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QGBZZrABY7AEJmEgsAQlYGQjsAMlYGRQWCEbIyFZIyAgsAQmI0ZhOFktsDcssAAWICAgsAUmIC5HI0cjYSM8OC2wOCywABYgsAgjQiAgIEYjR7ABKyNhOC2wOSywABawAyWwAiVHI0cjYbAAVFguIDwjIRuwAiWwAiVHI0cjYSCwBSWwBCVHI0cjYbAGJbAFJUmwAiVhuQgACABjYyMgWGIbIVljuAQAYiCwAFBYsEBgWWawAWNgIy4jICA8ijgjIVktsDossAAWILAIQyAuRyNHI2EgYLAgYGawAmIgsABQWLBAYFlmsAFjIyAgPIo4LbA7LCMgLkawAiVGUlggPFkusSsBFCstsDwsIyAuRrACJUZQWCA8WS6xKwEUKy2wPSwjIC5GsAIlRlJYIDxZIyAuRrACJUZQWCA8WS6xKwEUKy2wPiywNSsjIC5GsAIlRlJYIDxZLrErARQrLbA/LLA2K4ogIDywBCNCijgjIC5GsAIlRlJYIDxZLrErARQrsARDLrArKy2wQCywABawBCWwBCYgLkcjRyNhsAlDKyMgPCAuIzixKwEUKy2wQSyxCAQlQrAAFrAEJbAEJSAuRyNHI2EgsAQjQrAJQysgsGBQWCCwQFFYswIgAyAbswImAxpZQkIjIEewBEOwAmIgsABQWLBAYFlmsAFjYCCwASsgiophILACQ2BkI7ADQ2FkUFiwAkNhG7ADQ2BZsAMlsAJiILAAUFiwQGBZZrABY2GwAiVGYTgjIDwjOBshICBGI0ewASsjYTghWbErARQrLbBCLLA1Ky6xKwEUKy2wQyywNishIyAgPLAEI0IjOLErARQrsARDLrArKy2wRCywABUgR7AAI0KyAAEBFRQTLrAxKi2wRSywABUgR7AAI0KyAAEBFRQTLrAxKi2wRiyxAAEUE7AyKi2wRyywNCotsEgssAAWRSMgLiBGiiNhOLErARQrLbBJLLAII0KwSCstsEossgAAQSstsEsssgABQSstsEwssgEAQSstsE0ssgEBQSstsE4ssgAAQistsE8ssgABQistsFAssgEAQistsFEssgEBQistsFIssgAAPistsFMssgABPistsFQssgEAPistsFUssgEBPistsFYssgAAQCstsFcssgABQCstsFgssgEAQCstsFkssgEBQCstsFossgAAQystsFsssgABQystsFwssgEAQystsF0ssgEBQystsF4ssgAAPystsF8ssgABPystsGAssgEAPystsGEssgEBPystsGIssDcrLrErARQrLbBjLLA3K7A7Ky2wZCywNyuwPCstsGUssAAWsDcrsD0rLbBmLLA4Ky6xKwEUKy2wZyywOCuwOystsGgssDgrsDwrLbBpLLA4K7A9Ky2waiywOSsusSsBFCstsGsssDkrsDsrLbBsLLA5K7A8Ky2wbSywOSuwPSstsG4ssDorLrErARQrLbBvLLA6K7A7Ky2wcCywOiuwPCstsHEssDorsD0rLbByLLMJBAIDRVghGyMhWUIrsAhlsAMkUHiwARUwLQBLuADIUlixAQGOWbABuQgACABjcLEABUKyAAEAKrEABUKzCgIBCCqxAAVCsw4AAQgqsQAGQroCwAABAAkqsQAHQroAQAABAAkqsQMARLEkAYhRWLBAiFixA2REsSYBiFFYugiAAAEEQIhjVFixAwBEWVlZWbMMAgEMKrgB/4WwBI2xAgBEAAA=') format('truetype'); + src: url('data:application/octet-stream;base64,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') format('woff'), + url('data:application/octet-stream;base64,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JyYDNjcmIi8BNiYvASYvASYPASIPARUmJyIuAQ4BDwEmNiYGDwEGNgYVDgEVLgE3HgEXFgcGBwYXFAYWAa10xnJyxujIbgZ6vAETAggDAQIEAxEVEwoBDAIIBgMBBwYEBAoFBgQBCAECAQMDBAQEBAYBBgIICQUEBgIEAwEIDAEFHAQDAgIBCAEOAQIHCQMEBAEEAgMBBwoCBAUNAwMUDhMECAYBAgECBQkCARMJBgQCBQYKAwgEBwUCAwYJBAYBBQkEBQMDAgUEAQ4HCw8EEAMDAQgECAEIAwEIBAMCAgMEAgQSBQMMDAEDAwIMGRsDBgUFEwUDCwQNCwEEAgYECAQJBFEyBAUCBgUDARgKAQIHBQQDBAQEAQIBAQECCgcHEgQHCQQDCAQCDgEBAgIOAgQCAg8IAwQDAgMFAQQKCgEECAQFDAcCAwgDCQcWBgYFCAgQBBQKAQIEAgYDDgMEAQoFCBEKAgICAgEFAgQBCgIDDAMCCAECCAMBAwIHCwQBAgIIFAMICgECAQQCAwUCAQMCAQMBBBgDCQMBAQEDDQIOBAIDAQQDBQIGCAQCAgEIBAQHCAUHDAQEAgICBgEFBAMCAwUMBAISAQQCAgUOCQICCggFCQIGBgcFCQwKaXNQAQwBDQEEAxUBAwUCAwICAQUMCAMGBgYGAQEECAQKAQcGAgoCBAEMAQECAgQLDwECCQoBAwt0xOrEdHTE6sR0/t0BCAIGBgEECAMFCwEMAQMCAgwBCgcCAwQCBAECBgwFBgMDAgQBAQMDBAIEAQMDAgIIBAIGBAEDBAEEBAYHAwgHCgcEBQYFDAMBAgQCAQMMCQ4DBAUHCAUDEQIDDggFDAMBAwkJBgQDBgEOBAoEAQIFAgIGCgQHBwcBCQUIBwgDAgcDAgQCBgIEBQoDAw4CBQICBQQHAgEKCA8CAwMHAwIOAwIDBAYEBgQEAQEtTwQBCAQDBAYPCgIGBAUEBQ4JFAsCAQYaAgEXBQQGAwUUAwMQBQIBBAgFCAQBCxgNBQwCAgQEDAgOBA4BCgsUBwgBBQMNAgECARIDCgQECQUGAgMKAwIDBQwCEAgSAwMEBAYCBAoHDgEFAgQBBAICEAUPBQIFAwILAggEBAICBBgOCQ4FCQEEBgECAwIBBAMGBwYFAg8KAQQBAgMBAgMIBRcEAggIAwUOAgoKBQECAwQLCQUCAgIC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QGBZZrABY2GwAiVGYTgjIDwjOBshICBGI0ewASsjYTghWbErARQrLbBCLLA1Ky6xKwEUKy2wQyywNishIyAgPLAEI0IjOLErARQrsARDLrArKy2wRCywABUgR7AAI0KyAAEBFRQTLrAxKi2wRSywABUgR7AAI0KyAAEBFRQTLrAxKi2wRiyxAAEUE7AyKi2wRyywNCotsEgssAAWRSMgLiBGiiNhOLErARQrLbBJLLAII0KwSCstsEossgAAQSstsEsssgABQSstsEwssgEAQSstsE0ssgEBQSstsE4ssgAAQistsE8ssgABQistsFAssgEAQistsFEssgEBQistsFIssgAAPistsFMssgABPistsFQssgEAPistsFUssgEBPistsFYssgAAQCstsFcssgABQCstsFgssgEAQCstsFkssgEBQCstsFossgAAQystsFsssgABQystsFwssgEAQystsF0ssgEBQystsF4ssgAAPystsF8ssgABPystsGAssgEAPystsGEssgEBPystsGIssDcrLrErARQrLbBjLLA3K7A7Ky2wZCywNyuwPCstsGUssAAWsDcrsD0rLbBmLLA4Ky6xKwEUKy2wZyywOCuwOystsGgssDgrsDwrLbBpLLA4K7A9Ky2waiywOSsusSsBFCstsGsssDkrsDsrLbBsLLA5K7A8Ky2wbSywOSuwPSstsG4ssDorLrErARQrLbBvLLA6K7A7Ky2wcCywOiuwPCstsHEssDorsD0rLbByLLMJBAIDRVghGyMhWUIrsAhlsAMkUHiwARUwLQBLuADIUlixAQGOWbABuQgACABjcLEABUKyAAEAKrEABUKzCgIBCCqxAAVCsw4AAQgqsQAGQroCwAABAAkqsQAHQroAQAABAAkqsQMARLEkAYhRWLBAiFixA2REsSYBiFFYugiAAAEEQIhjVFixAwBEWVlZWbMMAgEMKrgB/4WwBI2xAgBEAAA=') format('truetype'); } /* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */ /* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */ @@ -17,7 +17,7 @@ @media screen and (-webkit-min-device-pixel-ratio:0) { @font-face { font-family: 'fontello'; - src: url('../font/fontello.svg?53466719#fontello') format('svg'); + src: url('../font/fontello.svg?29008306#fontello') format('svg'); } } */ @@ -67,6 +67,7 @@ .fa-sort:before { content: '\f0dc'; } /* '' */ .fa-sort-down:before { content: '\f0dd'; } /* '' */ .fa-sort-up:before { content: '\f0de'; } /* '' */ +.fa-doctor:before { content: '\f0f1'; } /* '' */ .fa-circle:before { content: '\f111'; } /* '' */ .fa-rocket:before { content: '\f135'; } /* '' */ .fa-level-up:before { content: '\f148'; } /* '' */ diff --git a/lib/icons/fontello/css/fontello-ie7-codes.css b/lib/icons/fontello/css/fontello-ie7-codes.css index d26f869f..d8df9c06 100755 --- a/lib/icons/fontello/css/fontello-ie7-codes.css +++ b/lib/icons/fontello/css/fontello-ie7-codes.css @@ -14,6 +14,7 @@ .fa-sort { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .fa-sort-down { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .fa-sort-up { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-doctor { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .fa-circle { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .fa-rocket { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .fa-level-up { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } diff --git a/lib/icons/fontello/css/fontello-ie7.css b/lib/icons/fontello/css/fontello-ie7.css index 5d82864a..b2543dbb 100755 --- a/lib/icons/fontello/css/fontello-ie7.css +++ b/lib/icons/fontello/css/fontello-ie7.css @@ -25,6 +25,7 @@ .fa-sort { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .fa-sort-down { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .fa-sort-up { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.fa-doctor { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .fa-circle { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .fa-rocket { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .fa-level-up { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } diff --git a/lib/icons/fontello/css/fontello.css b/lib/icons/fontello/css/fontello.css index 87d032ca..84546cec 100755 --- a/lib/icons/fontello/css/fontello.css +++ b/lib/icons/fontello/css/fontello.css @@ -1,11 +1,11 @@ @font-face { font-family: 'fontello'; - src: url('../font/fontello.eot?13933329'); - src: url('../font/fontello.eot?13933329#iefix') format('embedded-opentype'), - url('../font/fontello.woff2?13933329') format('woff2'), - url('../font/fontello.woff?13933329') format('woff'), - url('../font/fontello.ttf?13933329') format('truetype'), - url('../font/fontello.svg?13933329#fontello') format('svg'); + src: url('../font/fontello.eot?69907723'); + src: url('../font/fontello.eot?69907723#iefix') format('embedded-opentype'), + url('../font/fontello.woff2?69907723') format('woff2'), + url('../font/fontello.woff?69907723') format('woff'), + url('../font/fontello.ttf?69907723') format('truetype'), + url('../font/fontello.svg?69907723#fontello') format('svg'); font-weight: normal; font-style: normal; } @@ -15,7 +15,7 @@ @media screen and (-webkit-min-device-pixel-ratio:0) { @font-face { font-family: 'fontello'; - src: url('../font/fontello.svg?13933329#fontello') format('svg'); + src: url('../font/fontello.svg?69907723#fontello') format('svg'); } } */ @@ -70,6 +70,7 @@ .fa-sort:before { content: '\f0dc'; } /* '' */ .fa-sort-down:before { content: '\f0dd'; } /* '' */ .fa-sort-up:before { content: '\f0de'; } /* '' */ +.fa-doctor:before { content: '\f0f1'; } /* '' */ .fa-circle:before { content: '\f111'; } /* '' */ .fa-rocket:before { content: '\f135'; } /* '' */ .fa-level-up:before { content: '\f148'; } /* '' */ diff --git a/lib/icons/fontello/font/fontello.eot b/lib/icons/fontello/font/fontello.eot index e92cdcba..16e700e0 100755 Binary files a/lib/icons/fontello/font/fontello.eot and b/lib/icons/fontello/font/fontello.eot differ diff --git a/lib/icons/fontello/font/fontello.svg b/lib/icons/fontello/font/fontello.svg index 92521036..3d52f757 100755 --- a/lib/icons/fontello/font/fontello.svg +++ b/lib/icons/fontello/font/fontello.svg @@ -36,6 +36,8 @@ + + diff --git a/lib/icons/fontello/font/fontello.ttf b/lib/icons/fontello/font/fontello.ttf index 0dfd6ba1..976a7435 100755 Binary files a/lib/icons/fontello/font/fontello.ttf and b/lib/icons/fontello/font/fontello.ttf differ diff --git a/lib/icons/fontello/font/fontello.woff b/lib/icons/fontello/font/fontello.woff index 66332ccd..42916982 100755 Binary files a/lib/icons/fontello/font/fontello.woff and b/lib/icons/fontello/font/fontello.woff differ diff --git a/lib/icons/fontello/font/fontello.woff2 b/lib/icons/fontello/font/fontello.woff2 index 0ec76729..c89fb20d 100755 Binary files a/lib/icons/fontello/font/fontello.woff2 and b/lib/icons/fontello/font/fontello.woff2 differ diff --git a/lib/install-new-package.pug b/lib/install-new-package.pug index 06f172d3..19828734 100644 --- a/lib/install-new-package.pug +++ b/lib/install-new-package.pug @@ -1,7 +1,9 @@ div.dialog.prompt(ng-if="activeLink === '1'") form(ng-submit='installPackage(packageName, newPackageKind)') - div(class="tags-input", ng-model="packageName", contenteditable="true", ng-attr-disabled="{{installingPackage ? 'disabled' : ''}}" placeholder="package<@version> ..." ng-tag-input, ng-autofocus) + div(class="tags-input", ng-tag-input, ng-autofocus, ng-model="topMenu.packageName", ng-keyup="topMenu.search(topMenu.packageName[topMenu.packageName.length - 1].name)", contenteditable="true", ng-attr-disabled="{{topMenu.installingPackage ? 'disabled' : ''}}" placeholder="package<@version> ...") + + input(ng-hide="true", ng-model="topMenu.searchKeywords", ng-bind="topMenu.packageName") = " " span(class="prompt-kind") input(type="checkbox", ng-model='newPackageKind', ng-disabled='shell.globalSelected') @@ -17,4 +19,14 @@ div.dialog.prompt(ng-if="activeLink === '1'") img(src="img/loading.svg", width="13") = " " = " " - i(class="fa fa-times-circle-o button-close-prompt", ng-click="destroyActiveClickedLink()") + i(class="fa fa-times-circle-o button-close-prompt", ng-click="shell.activeLink = undefined") + .prompt-search + .prompt-search-content + .prompt-search-item(ng-repeat="item in topMenu.searchResults.objects", ng-click="topMenu.searchChoosePackage(item.package.name)") + h5 + | {{item.package.name}} + div + | {{item.package.description}} + .prompt-search-loader(ng-show="topMenu.searchingNpm") + img(src="img/loading.svg") + | Loading results ... diff --git a/lib/js/directives/ng-tag-input.js b/lib/js/directives/ng-tag-input.js index a35bbf2d..a4b9b6b4 100644 --- a/lib/js/directives/ng-tag-input.js +++ b/lib/js/directives/ng-tag-input.js @@ -3,7 +3,7 @@ import angular from 'angular'; const moduleName = 'npm-ui.ng-tag-input'; angular.module(moduleName, []) -.directive('ngTagInput', /*@ngInject*/ function ngTagInput($log) { +.directive('ngTagInput', /*@ngInject*/ function ngTagInput($rootScope, $log) { return { 'require': '?ngModel', 'link': (scope, element, attrs, ngModel) => { @@ -115,7 +115,23 @@ angular.module(moduleName, []) } , onKeypressDisabled = event => { return event.preventDefault(); - }; + } + , updateOnSearchChoosenPackage = $rootScope.$on('top-menu:search-choosen-package', (eventInformation, data) => { + let newInputValue = ''; + + data.forEach(pkg => { + newInputValue += pkg.name; + if (pkg.version && + pkg.version.length > 0) { + newInputValue += `@${pkg.version}`; + } + newInputValue += ' '; //leave a blank space at the end of the string to split into tags again + }); + + element[0].innerText = newInputValue; + createTags(); + updateModel(); + }); element.on('mousedown', onTrigger); element.on('click', onTrigger); @@ -133,6 +149,7 @@ angular.module(moduleName, []) } }); scope.$on('$destroy', () => { + updateOnSearchChoosenPackage(); element.unbind('keyup', onKeyUp); element.unbind('keydown', onKeyDown); element.unbind('paste', onPaste); diff --git a/lib/js/filters.js b/lib/js/filters.js new file mode 100644 index 00000000..f6ae67a7 --- /dev/null +++ b/lib/js/filters.js @@ -0,0 +1,11 @@ +import angular from 'angular'; +const moduleName = 'npm-ui.filters'; + +angular.module(moduleName, []) +.filter('removeHTML', () => { + return string => { + return string.replace(/<\/?[^>]+(>|$)/g, ''); + }; +}); + +export default moduleName; diff --git a/lib/js/index.js b/lib/js/index.js index daa3a318..494d9ed1 100644 --- a/lib/js/index.js +++ b/lib/js/index.js @@ -1,12 +1,9 @@ /*globals require process navigator */ import angular from 'angular'; -import loadingModule from './loading.js'; -import notificationModule from './notification.js'; import shellModule from './interface/shell.js'; import contentModule from './interface/content.js'; import leftModule from './interface/left.js'; import topModule from './interface/top.js'; -import errorsModule from './errors.js'; import ngRightClickModule from './directives/ng-right-click.js'; import ngDragDropModule from './directives/ng-drag-drop.js'; import ngAceEditor from './directives/ng-ace-editor.js'; @@ -17,6 +14,10 @@ import ngTagInput from './directives/ng-tag-input.js'; import ngTableKeyboard from './directives/ng-table-keyboard.js'; import assetsModule from './assets.js'; +import loadingModule from './loading.js'; +import errorsModule from './errors.js'; +import filtersModule from './filters.js'; +import notificationModule from './notification.js'; const Storage = require('electron-storage') , {ipcRenderer} = require('electron') @@ -42,7 +43,8 @@ angular.module('ndm', [ ngAutofocus, ngTagInput, ngTableKeyboard, - assetsModule + assetsModule, + filtersModule ]) .constant('timeoutForWhenUserIsPresent', 2500) .constant('appHistoryFile', 'snapshots.json') diff --git a/lib/js/interface/shell.js b/lib/js/interface/shell.js index ec16dde5..99aa475e 100644 --- a/lib/js/interface/shell.js +++ b/lib/js/interface/shell.js @@ -20,6 +20,7 @@ angular.module(moduleName, [ loadingFactory, notificationFactory, assets) { + const chooseProjectDir = files => { let pathExt; @@ -286,6 +287,47 @@ angular.module(moduleName, [ } }; + + this.runDoctor = () => { + + if (!this.runningDoctor) { + this.finishedRunningDoctor = false; + this.runningDoctor = true; + npm.npmInFolder('') + .then(npmInFolder => npmInFolder.doctor().then(doctorRes => { + //replace bad chars in log + $scope.$apply(() => { + this.doctorLog = doctorRes.map(logs => logs.map(log => log.replace(/\[\d\dm/g, ''))); + this.runningDoctor = undefined; + this.finishedRunningDoctor = true; + }); + $log.info('npm doctor:', doctorRes); + notificationFactory.notify('Finished running doctor.'); + })) + .catch(err => { + $log.error('npm doctor error:', err); + $scope.$apply(() => { + this.runningDoctor = undefined; + this.finishedRunningDoctor = true; + }); + }); + } + }; + + this.activeClickedLink = activeLink => { + if ((activeLink === '1' || activeLink === '4') && + this.activeLink === activeLink) { + //toggle prompts show/hide + this.activeLink = false; + } else { + + this.activeLink = activeLink; + $rootScope.$emit('top-bar:active-link', { + 'link': activeLink + }); + } + }; + this.openChooser = () => { dialog.showOpenDialog({ diff --git a/lib/js/interface/top.js b/lib/js/interface/top.js index fe82b413..5ec9b395 100644 --- a/lib/js/interface/top.js +++ b/lib/js/interface/top.js @@ -5,10 +5,18 @@ const moduleName = 'npm-ui.top-menu' , Path = require('path'); angular.module(moduleName, []) -.directive('topMenu', /*@ngInject*/ function TopMenuController($document, $rootScope, $log, npm, npmGlobal, loadingFactory, notificationFactory, errorsService) { +.directive('topMenu', /*@ngInject*/ function TopMenuController($document, $rootScope, $log, $timeout, npm, npmGlobal, loadingFactory, notificationFactory, errorsService) { return (scope, element, attrs) => { - - const topMenuIdentifierPath = attrs.topMenuId; + let searchTimeout //debounce search + , prevSearchKeyword; + + const unregisterLeftBarSelectProjectListener = $rootScope.$on('left-bar:select-project', (eventInformation, data) => { + if (data && + data.path) { + scope.projectPath = data.path; + } + }) + , topMenuIdentifierPath = attrs.topMenuId; scope.installPackage = (pkgs, packageKind) => { if (pkgs && @@ -36,9 +44,6 @@ angular.module(moduleName, []) }).catch(error => { errorsService.showErrorBox('Error', `Installing ${pkg.name}: ${error}`); }); - }); - }); - }); promiseSequence.then(() => { $log.info('Finished installing packages.'); @@ -289,6 +294,51 @@ angular.module(moduleName, []) }); }; }; + + scope.search = keyword => { + $log.info('search', keyword); + if (keyword && + keyword.trim() !== prevSearchKeyword) { + /*eslint-disable*/ + if (searchTimeout) { + $timeout.cancel(searchTimeout); + } + prevSearchKeyword = keyword; + /*eslint-enable*/ + searchTimeout = $timeout(() => { + scope.searchingNpm = true; + scope.searchResults = []; + npm.npmInFolder(this.projectPath).then(npmInFolder => { + npmInFolder.search(keyword).then(data => { + scope.$apply(() => { + scope.searchingNpm = false; + scope.searchResults = data; + }); + }).catch(err => { + scope.$apply(() => { + scope.searchingNpm = false; + scope.searchResults = []; + }); + $log.error('SEARCH ERROR', err); + }); + }); + }, 500); + } else { + scope.searchingNpm = false; + scope.searchResults = []; + } + }; + + scope.searchChoosePackage = packageName => { + //update digits in input + scope.packageName[this.packageName.length - 1].name = packageName; + $rootScope.$emit('top-menu:search-choosen-package', this.packageName); + scope.searchResults = []; + }; + + $rootScope.$on('$destroy', () => { + unregisterLeftBarSelectProjectListener(); + }); }); export default moduleName; diff --git a/lib/js/loading.js b/lib/js/loading.js index 226ec5bc..a7073764 100644 --- a/lib/js/loading.js +++ b/lib/js/loading.js @@ -34,7 +34,7 @@ angular.module(moduleName, []) return { 'scope': true, 'restrict': 'A', - 'templateUrl': 'logs-prompt.html', + 'templateUrl': 'npm-update-log.html', 'controller': /*@ngInject*/ function NpmLoadingController($scope) { let unregisterOnNpmLogs; diff --git a/lib/js/notification.js b/lib/js/notification.js index 12fce30f..82333e77 100644 --- a/lib/js/notification.js +++ b/lib/js/notification.js @@ -19,11 +19,13 @@ angular.module(moduleName, []) notification.onclick = () => { if (!skeepFocus) { windows = BrowserWindow.getAllWindows(); - - windows.forEach(window => { - window.show(); - window.focus(); - }); + if (windows[0] && windows[1]) { + //hide updates window and show main window + windows[0].hide(); + windows[1].show(); + windows[1].focus(); + windows[0].hide(); + } } notification = undefined; diff --git a/lib/js/npm/npm-api.js b/lib/js/npm/npm-api.js index d762a224..f528d1c5 100644 --- a/lib/js/npm/npm-api.js +++ b/lib/js/npm/npm-api.js @@ -7,30 +7,21 @@ const moduleName = 'npm-api.service' , fs = require('fs') , cp = require('child_process') , exec = cp.exec; - //, sudo = require('electron-sudo') - /*, sudoOptions = { - 'name': 'ndm', - 'icns': 'icon.icns', - 'on': function onSudo(ps) { - ps.stdout.on('data', function onSudoStdout(data) { - - $log.info(data); - }); - - setTimeout(() => { - ps.kill(); - }, 50000); - } - };*/ angular.module(moduleName, []) .service('npm', /*@ngInject*/ function NpmService($rootScope, $log, errorsService) { const writable = new stream.Writable({ 'write': (chunk, encoding, next) => { const thisLogBuffer = new Buffer(chunk) - , thisLog = thisLogBuffer.toString(); + , thisLog = thisLogBuffer + .toString() + .trim(); + + if (thisLog) { + + $rootScope.$emit('npm:log', thisLog); + } - $rootScope.$emit('npm:log', thisLog); next(); } }) diff --git a/lib/js/npm/npm-operations.js b/lib/js/npm/npm-operations.js index 03970881..4a81e87a 100644 --- a/lib/js/npm/npm-operations.js +++ b/lib/js/npm/npm-operations.js @@ -1,4 +1,4 @@ -/* global process */ +/* global process,fetch */ const isGlobalSym = Symbol('isGlobal') , npmSym = Symbol('npm') , whereSym = Symbol('where') @@ -37,6 +37,12 @@ class NpmOperations { }); } + search(keyword) { + + return fetch(`https://registry.npmjs.org/-/v1/search?text=${keyword}&size=25`) + .then(res => res.json()); + } + run(scriptName) { return new Promise((resolveRun, rejectRun) => { this[npmSym].commands.runScript([scriptName], (err, infos) => { @@ -382,6 +388,21 @@ class NpmOperations { }); } + doctor() { + return new Promise((resolveDoctor, rejectDoctor) => { + + this[npmSym].commands.doctor((doctorErr, doctorInfo) => { + + if (doctorErr) { + + return rejectDoctor(doctorErr); + } + + return resolveDoctor(doctorInfo); + }); + }); + } + root() { return new Promise((resolveRoot, rejectRoot) => { diff --git a/lib/npm-doctor-log.pug b/lib/npm-doctor-log.pug new file mode 100644 index 00000000..d90a25db --- /dev/null +++ b/lib/npm-doctor-log.pug @@ -0,0 +1,75 @@ +div.dialog.dialog-window(ng-if="shell.activeLink === 'doctor'") + div(class="prompt-window-options") + img(ng-show="!shell.finishedRunningDoctor", src='img/loading.svg', width='13') + i(class="fa fa-check color-primary", ng-show="shell.finishedRunningDoctor") + button(ng-click="shell.activeLink = false") + | Close + button(ng-click="shell.activeClickedLink('doctor'); shell.runDoctor()", ng-if="!shell.runningDoctor") + | Run again + div(contenteditable="true", class="window", ng-autoscroll) + div(class="col-md-12 logs") + b + | Running doctor + div(class="col-md-12 logs") + | npm ping: + = " " + b + | {{shell.doctorLog[0][1]}} + div(class="col-md-12 logs logs-error", ng-if="shell.doctorLog[0][2] && shell.doctorLog[0][2].length > 0") + | ↳ {{shell.doctorLog[0][2]}} + div(class="col-md-12 logs") + | npm -v: + = " " + b + | {{shell.doctorLog[1][1]}} + div(class="col-md-12 logs logs-error", ng-if="shell.doctorLog[1][2] && shell.doctorLog[1][2].length > 0") + | ↳ {{shell.doctorLog[1][2]}} + div(class="col-md-12 logs") + | node -v: + = " " + b + | {{shell.doctorLog[2][1]}} + div(class="col-md-12 logs logs-error", ng-if="shell.doctorLog[2][2] && shell.doctorLog[2][2].length > 0") + | ↳ {{shell.doctorLog[2][2]}} + div(class="col-md-12 logs") + | npm config get registry: + = " " + b + | {{shell.doctorLog[3][1]}} + div(class="col-md-12 logs logs-error", ng-if="shell.doctorLog[3][2] && shell.doctorLog[3][2].length > 0") + | ↳ {{shell.doctorLog[3][2]}} + div(class="col-md-12 logs") + | which git: + = " " + b + | {{shell.doctorLog[4][1]}} + div(class="col-md-12 logs logs-error", ng-if="shell.doctorLog[4][2] && shell.doctorLog[4][2].length > 0") + | ↳ {{shell.doctorLog[4][2]}} + div(class="col-md-12 logs") + | Perms check on cached files: + = " " + b + | {{shell.doctorLog[5][1]}} + div(class="col-md-12 logs logs-error", ng-if="shell.doctorLog[5][2] && shell.doctorLog[5][2].length > 0") + | ↳ {{shell.doctorLog[5][2]}} + div(class="col-md-12 logs") + | Perms check on global node_modules: + = " " + b + | {{shell.doctorLog[6][1]}} + div(class="col-md-12 logs logs-error", ng-if="shell.doctorLog[6][2] && shell.doctorLog[6][2].length > 0") + | ↳ {{shell.doctorLog[6][2]}} + div(class="col-md-12 logs") + | Perms check on local node_modules: + = " " + b + | {{shell.doctorLog[7][1]}} + div(class="col-md-12 logs logs-error", ng-if="shell.doctorLog[7][2] && shell.doctorLog[7][2].length > 0") + | ↳ {{shell.doctorLog[7][2]}} + div(class="col-md-12 logs") + | Checksum cached files : + = " " + b + | {{shell.doctorLog[8][1]}} + div(class="col-md-12 logs logs-error", ng-if="shell.doctorLog[8][2] && shell.doctorLog[8][2].length > 0") + | ↳ {{shell.doctorLog[8][2]}} diff --git a/lib/logs-prompt.pug b/lib/npm-update-log.pug similarity index 55% rename from lib/logs-prompt.pug rename to lib/npm-update-log.pug index 82a26ad7..21ec675b 100644 --- a/lib/logs-prompt.pug +++ b/lib/npm-update-log.pug @@ -4,19 +4,13 @@ div.dialog.dialog-window(ng-if="shell.activeLink === 'update'") i(class="fa fa-check color-primary", ng-show="log.logsFinished") button(ng-click="shell.activeLink = false", ng-if="!shell.updatingNpm") | Close + button(ng-click="shell.activeClickedLink('update'); shell.updateNpm()", ng-if="!shell.updatingNpm") + | Run again div(contenteditable="true", class="window", ng-autoscroll) div(class="col-md-12 logs") b | Updating npm - div - | ============================================= - | Local Datetime: - = " " - | {{ log.nowDatetime | date : 'longDate'}} - = " " - | {{ log.nowDatetime | date : 'mediumTime'}} - div - | ============================================= + div(class="col-md-12 logs") | Output: - div(contenteditable="true", ng-repeat="aLog in log.logs track by $index") - | {{ aLog }} + div(class="col-md-12 logs", contenteditable="true", ng-repeat="aLog in log.logs track by $index") + | {{ aLog }} diff --git a/lib/package-informations.pug b/lib/package-informations.pug index 8673a025..2e204d4f 100644 --- a/lib/package-informations.pug +++ b/lib/package-informations.pug @@ -8,7 +8,7 @@ div.table-infos-content b | Description: = " " - | {{packageViewInfos.description || '-'}} + | {{packageViewInfos.description || '-' | removeHTML}} div.information(title="Package dependencies") b | Dependencies: diff --git a/lib/scss/header.scss b/lib/scss/header.scss index 379a02e3..c644bcb5 100644 --- a/lib/scss/header.scss +++ b/lib/scss/header.scss @@ -23,7 +23,7 @@ float: right; font-size: 12px; padding-left: 2px; - margin: 5px 4px 0 0; + margin: 4.5px 4px 0 0; line-height: 13px; i { diff --git a/lib/scss/prompt.scss b/lib/scss/prompt.scss index 05ab17df..545bd1bc 100644 --- a/lib/scss/prompt.scss +++ b/lib/scss/prompt.scss @@ -145,8 +145,16 @@ margin-top: -4px; .logs { - padding: 6px; + padding: 1px 6px; + + &:first-child { + margin-top: 5px; + } } + .logs-error { + color: $color-error; + } + .ng-ace-editor { height: 100%; } @@ -243,3 +251,44 @@ } } } + +.prompt-search { + font-size: 11.5px; + margin-top: 3px; + color: $color-muted; + overflow: hidden; + overflow-y: auto; + max-height: 200px; + + .prompt-search-loader { + img { + vertical-align: bottom; + margin: 0; + margin-right: 2px; + width: 16px; + } + } + + h5 { + color: $color-222; + margin: 0; + padding: 0; + margin-top: 5px; + font-weight: 500; + font-size: 12px; + margin-bottom: 3px; + } + + .prompt-search-item { + padding: 3px; + border-bottom: 1px solid $bg-muted-invisible; + + &:last-child { + border: 0; + } + + &:hover { + background: $bg-muted-invisible; + } + } +} diff --git a/lib/top.pug b/lib/top.pug index 67fa1ff7..f33ab382 100644 --- a/lib/top.pug +++ b/lib/top.pug @@ -1,5 +1,6 @@ .top-menu(top-menu, top-menu-id="{{tab}}") span(npm-loading) + include ./npm-doctor-log.pug include ./install-new-package-version.pug include ./install-new-package.pug .row diff --git a/package.json b/package.json index f18b4f25..8c2fa110 100644 --- a/package.json +++ b/package.json @@ -87,9 +87,9 @@ "appTemplate": { "title": "ndm", "width": 640, - "height": 430, + "height": 420, "minWidth": 640, - "minHeight": 430, + "minHeight": 420, "show": false, "center": true, "movable": true, @@ -124,7 +124,7 @@ "bootstrap": "^3.3.6", "electron-storage": "^1.0.6", "fs-extra": "^2.0.0", - "npm": "^4.1.1", + "npm": "^4.4.0", "rimraf": "^2.5.4", "selection-model": "^0.11.0", "shell-path": "^2.0.0",