Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Gylfie the Robot

Gylfie the Robot

Gylfie is the robot who interfere with our work process on Github and helps proper flow of issues.

Source code: https://github.com/vtambourine/robot-gylfie-webhook

Benjamin Tambourine

December 26, 2014
Tweet

More Decks by Benjamin Tambourine

Other Decks in Programming

Transcript

  1. КАЧЕСТВО КОДА • ПРОСТОЙ КОД ЛЕГКО ЧИТАТЬ • ПРОСТОЙ КОД

    ЛЕГКО ПИСАТЬ • В ПРОСТОМ КОДЕ ТРУДНЕЕ ДОПУСТИТЬ ОШИБКУ
  2. CALL REVIEWERS • СОЗДАТЬ ЛОКАЛЬНУЮ КОПИЮ • СПИСОК ИЗМЕНЕННЫХ ФАЙЛОВ

    • ОПРЕДЕЛИТЬ АВТОРОВ • ПРИЗВАТЬ РЕЦЕНЗЕНТОВ
  3. CALL REVIEWERS • СОЗДАТЬ ЛОКАЛЬНУЮ КОПИЮ • СПИСОК ИЗМЕНЕННЫХ ФАЙЛОВ

    • ОПРЕДЕЛИТЬ АВТОРОВ • ПРИЗВАТЬ РЕЦЕНЗЕНТОВ
  4. CALLBACK var getContributors = (callback) => { repository.getBlame((error, authors) =>

    { if (error) callback(error) // ... callback(null, contributors) }) }
  5. PROMISE var getContributors = () => { return Promise((resolve, reject)

    => { repository.getBlame().then((authors) => { // ... resolve(contributors) }, (error) => { reject(error) }) }) }
  6. GENERATORS var getContributors = function () { return spawn(function* ()

    { var authors = yield repository.getBlame() // ... return contributors }) }
  7. ASYNC FUNCTION async function getContributors() { var authors = await

    repository.getBlame() // ... return contributors }
  8. ASYNC FUNCTION async function getContributors() { var authors = await

    repository.getBlame() // ... return contributors } getContributors().then(...)
  9. ASYNC FUNCTION async handle(payload) { await cloneRepository() // … var

    files = await getChangedFiles() // … var authors = await getAuthors(files) // … callReviewers(contributors) }
  10. TRACEUR traceur.require.makeDefault( (filename) => { return filename.indexOf('node_modules') === -1 },

    {asyncFunctions: true} ) require('traceur-source-maps').install(traceur)
  11. TRACEUR traceur.require.makeDefault( (filename) => { return filename.indexOf('node_modules') === -1 },

    {asyncFunctions: true} ) require('traceur-source-maps').install(traceur) require('./server').default.listen(4567)