c0_setup 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (6) hide show
  1. checksums.yaml +7 -0
  2. data/bin/c0_setup +17 -0
  3. data/cc0 +0 -0
  4. data/coin +0 -0
  5. data/lib/c0_setup.rb +105 -0
  6. metadata +49 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 002018b1b3177d7f303ad7eb0c35db70f8a23c4d
4
+ data.tar.gz: c2204473ddde76fbfdcb805b49ebee003bfcf74a
5
+ SHA512:
6
+ metadata.gz: 153e8f3e9e18b225f28ae3f51c5813a0acf7877e64d3a7c4639e1056888b694a05e2aaa30cc1a096c7b390e7f2a18b543f06a76d401fb16ebad93709bbde0b7a
7
+ data.tar.gz: 5ca62af343d469037e340d03eadc2c3d4322cd50ea76d39a7a536c4d6103aba4c02c1670d499c5d38f1a56d38aca2b6f4422e4b1f43c726963cf8a70e8f87d71
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # an unofficial setup utility for C0, a subset of C used to teach 15-122 @ CMU
4
+ # should work on unix/bsd (linux/mac)
5
+
6
+ require 'c0_setup'
7
+
8
+ unless ARGV[0].nil? or ARGV[0] != "install"
9
+ puts "Trying to setup C0 utilities..."
10
+ result = C0Setup.new.setup
11
+ puts result
12
+ puts "make sure you restart your terminal session for any changes to take effect" if !result.empty?
13
+ else
14
+ puts "to install c0 utils (cc0 and coin), try again 'cc0-setup install"
15
+ end
16
+
17
+
data/cc0 ADDED
Binary file
data/coin ADDED
Binary file
@@ -0,0 +1,105 @@
1
+ # an unofficial setup utility for C0, a subset of C used to teach 15-122 @ CMU
2
+ # should work on unix/bsd (linux/mac)
3
+
4
+ require 'fileutils'
5
+
6
+ class C0Setup
7
+
8
+ # do the setup yo
9
+ def setup
10
+ to_do = check_precedence()
11
+ result = []
12
+ if to_do.include? "runpath"
13
+ if create_runpath
14
+ result.push "successfully created runpath"
15
+ else
16
+ result.push "failed to create runpath"
17
+ return result
18
+ end
19
+ else
20
+ result.push ".c0 folder already exists, remove it and retry if broken"
21
+ return result
22
+ end
23
+ if to_do.include? "cc0"
24
+ if install_cc0
25
+ result.push "successfully installed cc0"
26
+ else
27
+ result.push "failed to install cc0"
28
+ end
29
+ else
30
+ result.push "cc0 is already installed somewhere, remove it and retry if broken"
31
+ end
32
+ if to_do.include? "coin"
33
+ if install_coin
34
+ result.push "successfully installed coin"
35
+ else
36
+ result.push "failed to install coin"
37
+ end
38
+ else
39
+ result.push "cc0 is already installed somewhere, remove it and retry if broken"
40
+ end
41
+ return result
42
+ end
43
+
44
+ # check for things that don't exist yet
45
+ def check_precedence
46
+ Dir.chdir(File.expand_path("~")) do
47
+ not_yet = []
48
+ if which("cc0").nil?
49
+ not_yet.push("cc0")
50
+ end
51
+ if which("coin").nil?
52
+ not_yet.push("coin")
53
+ end
54
+ if !Dir.exist?(".c0")
55
+ not_yet.push("runpath")
56
+ end
57
+ return not_yet
58
+ end
59
+ end
60
+
61
+ # create folder for binaries and set executable path
62
+ def create_runpath
63
+ Dir.chdir(File.expand_path("~")) do
64
+ Dir.mkdir ".c0"
65
+ File.new ".bashrc" unless File.exist? ".bashrc"
66
+ File.open(".bashrc", "a") do |file|
67
+ file.puts "export PATH=$PATH:~/.c0"
68
+ end
69
+ in_path = File.open(".bashrc", "r").read.include? "export PATH=$PATH:~/.c0"
70
+ return (in_path and Dir.exist? ".c0")
71
+ end
72
+ end
73
+
74
+ def install_cc0
75
+ # copy the cc0 binary to "~/.c0"
76
+ user = File.expand_path("~")
77
+ Dir.chdir(File.dirname __dir__) do
78
+ FileUtils.cp("./cc0", "#{user}/.c0")
79
+ end
80
+ return File.exist?("#{user}/.c0/cc0")
81
+ end
82
+
83
+ def install_coin
84
+ # copy the coin binary to "~/.c0"
85
+ user = File.expand_path("~")
86
+ Dir.chdir(File.dirname __dir__) do
87
+ FileUtils.cp("./coin", "#{user}/.c0")
88
+ end
89
+ return File.exist?("#{user}/.c0/coin")
90
+ end
91
+
92
+ def which(cmd)
93
+ # check for the presence of a binary in $PATH
94
+ exts = ENV['PATHEXT'] ? ENV['PATHEXT'].split(';') : ['']
95
+ ENV['PATH'].split(File::PATH_SEPARATOR).each do |path|
96
+ exts.each do |ext|
97
+ exe = File.join(path, "#{cmd}#{ext}")
98
+ return exe if File.executable?(exe) && !File.directory?(exe)
99
+ end
100
+ end
101
+ return nil
102
+ end
103
+
104
+ end
105
+
metadata ADDED
@@ -0,0 +1,49 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: c0_setup
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Ryan Brigden
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-01-16 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Setup C0 compiler and interpreter (cc0 and coin)
14
+ email: rbrigden@cmu.edu
15
+ executables:
16
+ - c0_setup
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - bin/c0_setup
21
+ - cc0
22
+ - coin
23
+ - lib/c0_setup.rb
24
+ homepage: https://github.com/rbrigden
25
+ licenses: []
26
+ metadata: {}
27
+ post_install_message:
28
+ rdoc_options: []
29
+ require_paths:
30
+ - lib
31
+ required_ruby_version: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: '0'
36
+ required_rubygems_version: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ requirements: []
42
+ rubyforge_project:
43
+ rubygems_version: 2.4.8
44
+ signing_key:
45
+ specification_version: 4
46
+ summary: An unofficial setup utility for C0, a subset of C used to teach 15-122 @
47
+ CMU
48
+ test_files: []
49
+ has_rdoc: