Переместите watch в конец в массиве аргументов - он будет выполняться последним grunt.registerTask('default', ['concat', 'uglify', 'imagemin', 'less', 'autoprefixer', 'watch']); А вообще,если говорить о практическом применении, то watch обычно натравляют на файлы, которые переписывают, а не на те, которые получаются в результате работы других задач.
Проблема в том, что в chrome.storage почти все работает асинхронно, вероятно вам нужно сделать что-то вроде этого: stackoverflow.com/questions/6847697/how-to-return-...
Иными словами здесь "return resultValue;" выполняется раньше, чем "resultValue = result[key];"
Sam: Ваш вопрос слишком общий: даже если взять только только серверную часть - можно предложить несколько разных языков (и, соответственно, фреймворков или полезных библиотек) для реализации. Лучше строить вопрос от того, что ваш "один разработчик" уже знает или умет и дополнять список.
korsamc: Как верно заметил jcmvbkbc, мы лишь можем помочь вам написать самому - а для chown подход тот же, что и для link: посмотреть ман, подключить необходимые библиотеки, и вызвать с нужными параметрами.
А вы проверяли контрольную сумму образа с офф. сайта? (сталкивался с похожей проблемой - ubuntu из поврежденного образа устанавливалась не до конца, и потом не определялся ее загрузчик)