| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- function pgsh(ev) {
- var self = this
- ev.on('cmd_entered', function(input) {
- // First word is the command, all others are arguments.
- var parts = input.trim().split(' ')
- var command = self.active ? self.active : parts.splice(0, 1).toString()
- var args = parts
- if (command in self.commands) {
- self.commands[command].run(args)
- } else if (command) {
- show(command + ' not found')
- }
- })
- var show = function(text) {
- ev.trigger('disp_add', text)
- }
- this.prompt = '<span style="color:blueviolet">pgs </span>' +
- '<span style="color:green">$ </span>'
- this.prompt_su = '<span style="color:tomato">root </span>' +
- '<span style="color:red">% </span>'
- this.welcome = 'Linux parsleygardens.net 3.4.5-6-7-i286 #8 PGS Vimputer ' +
- '3.4.56-7 i286\n\n' +
- '~ Welcome to Parsley Gardens! ~\n' +
- '"He maketh me to lie down in green pa..."\n\n' +
- 'Type `help` for list of commands\n\n'
- this.commands = {
- 'about': {
- 'help': 'Author Information\nUsage: about',
- 'run': function(args) {
- if (args.length > 0) { show(this.help); return }
- show('Site by Weiyi Lou ' + new Date().getFullYear() + '\n\n')
- }
- },
- 'clear': {
- 'help': 'Clears the screen\nUsage: clear',
- 'run' : function(args) {
- ev.trigger('disp_clear')
- }
- },
- 'version': {
- 'help': 'Shell Information\nUsage: version',
- 'run': function(args) {
- if (args.length > 0) { show(this.help); return }
- show('Parsley Gardens Shell (pgsh) 1.0.0 Built with ' +
- '<a target="_blank" href="http://riotjs.com/">Riot</a>')
- }
- },
- 'git': {
- 'help': 'Link to Code Repository\nUsage: git',
- 'run': function(args) {
- if (args.length > 0) { show(this.help); return }
- show('Code Repository at <a target="_blank" ' +
- 'href="https://code.parsleygardens.net/explore/projects">' +
- 'code.parsleygardens.net</a>')
- }
- },
- 'hello': {
- 'help': 'Say hello to the computer\nUsage: hello [name]',
- 'run': function(args) {
- address = args.join(' ').trim()
- if (address.length == 0) {
- show('Hello to you too')
- } else if (address == 'pgsh') {
- show('Hello human')
- } else {
- show('My name is not "' + address + '"')
- }
- }
- },
- 'magic': {
- 'help': 'Link to Artist\nUsage: magic',
- 'run': function(args) {
- if (args.length > 0) { show(this.help); return }
- show('Animation and Illustration at <a target="_blank" ' +
- 'href="http://slightlymagic.com.au">slightlymagic.com.au</a>')
- }
- },
- 'su': {
- 'help': 'Gain Phenomenal Cosmic Power\nUsage: su',
- 'run': function(args) {
- if (args.length > 0) { show(this.help); return }
- if (!self.su) {
- self.su = true
- if (!self.su_warned) {
- self.su_warned = true
- show('We trust you have received the usual lecture from the ' +
- 'local System Administrator.\n' +
- 'It usually boils down to these three things:\n\n' +
- ' #1) Respect the privacy of others.\n' +
- ' #2) Think before you type.\n' +
- ' #3) With great power comes great\n\n')
- }
- ev.trigger('prompt_set', self.prompt_su)
- }
- }
- },
- 'exit': {
- 'help': 'Leave the current context\nUsage: exit',
- 'run': function(args) {
- if (args.length > 0) { show(this.help); return }
- if (self.su) {
- self.su = false
- ev.trigger('prompt_set', self.prompt)
- return
- }
- show('Close browser window to exit')
- }
- },
- 'search': {
- 'help': 'Search the Web (with a Duck)\nUsage: search [query]',
- 'run': function(args) {
- if (!args.join(' ').trim()) { show(this.help); return }
- ev.trigger('prompt_hide')
- show('Searching for "' + args.join(' ') + '" in new window...')
- setTimeout(function() {
- window.open('https://duckduckgo.com/?q=' + args.join('+'), '_blank')
- ev.trigger('prompt_show')
- }, 1000)
- }
- },
- 'questions': {
- 'help': 'Answer some questions!\nUsage: questions',
- 'run': function(args) {
- if (!self.active) {
- self.active = 'questions'
- ev.trigger('context_swap', 'questions')
- ev.trigger('disp_set', 'Welcome to the questions. ' +
- 'Do you want to continue?')
- return
- }
- if (args == 'exit') {
- self.active = ''
- ev.trigger('context_swap')
- show('Thanks for answering questions!')
- return
- }
- var output = 'You answered with "' + args + '"!\nNext question!\n' +
- '<span style="color:#555">(Type "exit" to end)</span>\n\n'
- ev.trigger('disp_set', output)
- var rand = Math.floor(Math.random() * this.questions.length);
- show(this.questions[rand])
- },
- 'questions': [
- 'Isn\'t <a href="https://www.youtube.com/watch?v=dQw4w9WgXcQ"' +
- ' target="_blank">this song</a> the best?',
- 'Iggledy Piggledy?',
- '1 + 2 = ?',
- 'Am I a sandwich?',
- 'Where were you at 3:15am on April 14th?',
- "Don't you mean prism?",
- 'Butts twelve by pies?',
- 'I say there, Monstrosity. Do you know the times?',
- '...is essay-writing an exercise in masking ignorance?',
- 'What is the name of the spaces. Between the teeth. Of a comb?',
- 'Why are you dressed up like Ship\'s Captain?'
- ]
- },
- 'help': {
- 'help': 'List available commands or view information for a given ' +
- 'command\nUsage: help [command]',
- 'run': function(args) {
- command = args.join(' ').trim()
- if (command in self.commands) {
- show(self.commands[command].help)
- } else if (command) {
- show('No information for: ' + command)
- } else {
- var commands = [];
- for(var name in self.commands) {
- commands.push(name)
- }
- show('Available commands:\n' + commands.sort().join(' ') +
- '\n\n`help [command]` for more information.')
- }
- }
- }
- }
- }
|