├── README.md ├── ship └── ship.gif /README.md: -------------------------------------------------------------------------------- 1 | # ship 2 | docker package manager, just for fun 3 | 4 | ## install 5 | 6 | Place the ruby script `ship` in your path and get the repo: 7 | 8 | ``` 9 | curl https://raw.githubusercontent.com/ship-containers/ship/master/ship > /usr/local/bin/ship 10 | chmod +x /usr/local/bin/ship 11 | sudo git clone https://github.com/ship-containers/repo.git /opt/ship 12 | ``` 13 | 14 | ## usage 15 | 16 | ``` 17 | $ ship help 18 | ship package manager 19 | just for fun _ 20 | __________ ___| | 21 | / \___/ """| 22 | ~~~~~~ ~~ ~~~~ ~~~ ~~~~ ~~~ 23 | 24 | Usage: 25 | 26 | ship list see all available packages 27 | ship installed see all installed packages 28 | ship update update all Dockerfiles 29 | ship upgrade rebuild all installed packages 30 | ship build build a package 31 | ship rebuild build a package with caches 32 | ship install create executable for package 33 | ship remove delete image for package 34 | ship search find package name 35 | ship help this message 36 | ``` 37 | 38 | ## example 39 | 40 | 41 | -------------------------------------------------------------------------------- /ship: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | 3 | REPO = "/opt/ship/".freeze 4 | 5 | all_packages = -> () { Dir["#{REPO}*"].map { |dir| dir[REPO.length..dir.length] } } 6 | installed = -> () { `docker images | cut -d " " -f 1`.split("\n") & all_packages.call } 7 | update = -> () { system "sudo sh -c 'cd #{REPO} && git pull'" } 8 | upgrade = -> () { installed.each { |package| rebuild(package) } } 9 | 10 | build = -> (package) { system "docker build -t #{package} #{REPO}#{package}/" } 11 | rebuild = -> (package) { system "docker build -t #{package} #{REPO}#{package}/ --no-cache" } 12 | runcmd = -> (package) { "docker run -it -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix -v #{ENV['HOME']}:/home/user #{package} \\$\{\@\:1\}" } 13 | install = -> (package) { build.call package 14 | system "sudo sh -c \'#{%{ 15 | echo "#!/bin/bash" > /usr/local/bin/#{package} && \ 16 | echo "#{runcmd.call(package)}" >> /usr/local/bin/#{package} && \ 17 | chmod +x /usr/local/bin/#{package} 18 | }}\'" 19 | } 20 | remove = -> (package) { system "sudo sh -c \"docker rmi -f #{package} && rm -rf /usr/local/bin/#{package}\""} 21 | search = -> (package) { all_packages.call.select { |possible| possible =~ /#{package}/ } } 22 | help = -> () { puts %{ship package manager 23 | just for fun _ 24 | __________ ___| | 25 | / \\___/ """| 26 | ~~~~~~ ~~ ~~~~ ~~~ ~~~~ ~~~ 27 | 28 | Usage: 29 | 30 | ship list see all available packages 31 | ship installed see all installed packages 32 | ship update update all Dockerfiles 33 | ship upgrade rebuild all installed packages 34 | ship build build a package 35 | ship rebuild build a package with caches 36 | ship install create executable for package 37 | ship remove delete image for package 38 | ship search find package name 39 | ship help 40 | } 41 | } 42 | 43 | case ARGV[0] 44 | when "list"; puts all_packages.call 45 | when "installed"; puts installed.call 46 | when "update"; update.call 47 | when "upgrade"; upgrade.call 48 | when "build"; build.call ARGV[1] 49 | when "rebuild"; rebuild.call ARGV[1] 50 | when "install"; install.call ARGV[1] 51 | when "remove"; remove.call ARGV[1] 52 | when "search"; puts search.call ARGV[1] 53 | when "run"; run.call ARGV[1] 54 | when "help"; help.call 55 | else; puts "can't ship \"#{ARGV[0]}\"" 56 | end 57 | -------------------------------------------------------------------------------- /ship.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ship-containers/ship/c63c6b287297a52555f15e5ee3edea15a338e0ea/ship.gif --------------------------------------------------------------------------------