function pgsh() { this.prompt = 'pgs $ ' 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) { return this.help } return 'Site by Weiyi Lou ' + new Date().getFullYear() } }, 'clear': { 'help': 'Clears the screen\nUsage: clear', 'run' : function(args, shell, terminal) { terminal.display.clear() } }, 'version': { 'help': 'Shell Information\nUsage: version', 'run': function(args) { if (args.length > 0) { return this.help } return 'Parsley Gardens Shell (pgsh) 1.0.0. Built with Riot.js' } }, 'git': { 'help': 'Link to Code Repository\nUsage: git', 'run': function(args) { if (args.length > 0) { return this.help } return 'Self-Hosted Code Repository at code.parsleygardens.net' } }, 'hello': { 'help': 'Usage: hello [name]', 'run': function(args) { address = args.join(' ').trim() if (address.length == 0) { return 'Hello to you too' } else if (address == 'pgsh') { return 'Hello human' } else { return 'My name is not "' + address + '"' } } }, 'magic': { 'help': 'Link to Artist\nUsage: magic', 'run': function(args) { if (args.length > 0) { return this.help } return 'Animation and Illustration at slightlymagic.com.au' } }, 'su': { 'help': 'Substitute as root user for Phenomenal Cosmic Power\nUsage: su', 'run': function(args, shell, terminal) { if (args.length > 0) { return this.help } var output = '' if (!shell.su) { terminal.commandline.setPrompt('root % ') shell.su = true output = 'With Great Power comes Great' } return output } }, 'exit': { 'help': 'Usage: exit', 'run': function(args, shell, terminal) { if (args.length > 0) { return this.help } var output = 'Close browser window to exit' if (shell.su) { terminal.commandline.setPrompt(shell.prompt) shell.su = false output = '' } return output } }, 'search': { 'help': 'Search the web\nUsage: search [query]', 'run': function(args, shell, terminal) { terminal.commandline.hidePrompt() setTimeout(function() { window.open('https://duckduckgo.com/?q=' + args.join('+'), '_blank') terminal.commandline.showPrompt() terminal.update() }, 1000) return 'Searching for "' + args.join(' ') + '" in new window...' } }, 'questions': { 'help': 'Answer some questions!\nUsage: questions', 'run': function() { return { 'run': function(input, terminal) { if (!this.running) { this.running = true terminal.display.hide() terminal.display.add('Welcome to the questions. Do you wish to continue?') terminal.commandline.hidePrompt() return } if (input != 'exit') { terminal.display.set('You answered the last question with "' + input + '"!\nWould you like another question?\n(Type "exit" to end)') } else { this.running = false terminal.display.restore() terminal.display.add('Thanks for answering questions!') terminal.commandline.showPrompt() terminal.returnToShell() } } } } }, 'help': { 'help': 'List all commands or view information for a command\nUsage: help [command]', 'run': function(args, shell) { command = args.join(' ').trim() if (command in shell.commands) { return shell.commands[command].help } else { var output = (command) ? 'Command not found: ' + command + '\n' : '' var commands = []; for(var name in shell.commands) { if (name !== 'Parent') { commands.push(name) } } output += 'Available commands:\n' + commands.sort().join(' ') return output } } } } this.run = function(input, terminal) { var parts = input.trim().split(' ') // First word is the command, all others are arguments. var command = parts.splice(0, 1) var args = parts var output = '' if (command in this.commands) { output = this.commands[command].run(args, this, terminal) } return output } }