| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- function pgsh() {
- this.prompt = '<span style="color:purple">pgs </span><span style="color:green">$ </span>'
- this.welcome = ''
- 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() { return '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 <a target="_blank" href="http://riotjs.com/">Riot.js</a>'
- }
- },
- 'git': {
- 'help': 'Link to Code Repository\nUsage: git',
- 'run': function(args) {
- if (args.length > 0) { return this.help }
- return 'Self-Hosted Code Repository at <a target="_blank" href="https://code.parsleygardens.net/explore/projects">code.parsleygardens.net</a>'
- }
- },
- '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 <a target="_blank" href="http://slightlymagic.com.au">slightlymagic.com.au</a>'
- }
- },
- 'su': {
- 'help': 'Substitute as root user for Phenomenal Cosmic Power\nUsage: su',
- 'run': function(args, context) {
- if (args.length > 0) { return this.help }
- var output = ''
- if (!context.su) {
- context.oldprompt = context.prompt
- context.prompt = '<span style="color:purple">root </span><span style="color:red">% </span>'
- context.su = true
- output = 'With Great Power comes Great'
- }
- return output
- }
- },
- 'exit': {
- 'help': 'Usage: exit',
- 'run': function(args, context) {
- if (args.length > 0) { return this.help }
- var output = 'Close browser window to exit'
- if (context.su) {
- context.prompt = context.oldprompt
- context.su = false
- output = ''
- }
- return output
- }
- },
- 'help': {
- 'help': 'List all commands or view information for a command\nUsage: help [command]',
- 'run': function(args, context) {
- command = args.join(' ').trim()
- if (command in context.commands) {
- return context.commands[command].help
- } else {
- var output = (command) ? 'Command not found: ' + command + '\n' : ''
- var commands = [];
- for(var name in context.commands) {
- if (name !== 'Parent') { commands.push(name) }
- }
- output += 'Available commands:\n' + commands.sort().join(' ')
- return output
- }
- }
- }
- }
- this.process = function(input) {
- 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) {
- var shell = this
- output += this.commands[command].run(args, shell)
- }
- return output
- }
- }
- var pgsh = new pgsh()
|