smc-get 0.2.0.beta1 → 0.3.0.beta1

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.
@@ -1,31 +1,53 @@
1
- This file documents the the changes that have been made
2
- to smc-get between versions. It's *not* intended to serve
3
- as a full-blown changelog, for this you have to install git
4
- and issue a <tt>git log</tt> command in the project directory.
5
-
6
- Bugfixes are written in <i>italic</i>, mayor changes in <b>bold</b> font.
7
-
8
- == 0.2.0-beta1
9
-
10
- * <b>Added a completely new SMC package format: smcpak. These are XZ-compressed
11
- tarballs allowing for easy deployment of packages. See the smcpak.rdoc file
12
- for further information.</b>
13
- * <b>Rewrote nearly the full API. This release is 100%
14
- incompatible with anything released so far.</b>
15
- * <b>New classes LocalRepository and RemoteRepository for
16
- managing downloads and installations.</b>
17
- * <b><tt>smc-get list</tt> without arguments works a little different now.
18
- Instead of showing the installation time of a package it now shows the
19
- time of the last update, which allows you to better keep track of
20
- what is out of date.</b>
21
- * <b>Added <tt>smc-get update</tt> for a fully automated update of all (or
22
- selected) installed packages.</b>
23
- * <b>Added <tt>smc-get build</tt> to automatically build SMC packages either
24
- interactively or as an automated process.</b>
25
- * Added modification detection via SHA1 checksums.
26
- * New dependency on the {ruby-xz gem}[http://rubygems.org/gems/ruby-xz].
27
- * New dependency on the {minitar gem}[http://rubygems.org/gems/minitar].
28
- * New dependency on liblzma[http://tukaani.org/xz/].
29
- * Official bugtracker is now at GitHub: https://github.com/Luiji/smc-get/issues.
30
- * Added this file (HISTORY.rdoc) for collecting change information.
31
-
1
+ This file documents the the changes that have been made
2
+ to smc-get between versions. It's *not* intended to serve
3
+ as a full-blown changelog, for this you have to install git
4
+ and issue a <tt>git log</tt> command in the project directory.
5
+
6
+ Bugfixes are written in <i>italic</i>, mayor changes in <b>bold</b> font.
7
+ If a change is related to a ticket
8
+ {on our issue tracker}[https://github.com/Luiji/smc-get/issues],
9
+ the corresponding ticket is given in square brackets [ and ].
10
+
11
+ == 0.3.0-beta1
12
+
13
+ * Lots of smaller fixes and internal code improvements
14
+ * We have a working default repository now!
15
+ * Check specs for validness before they're installed
16
+ * <i>Fixed a problem with <tt>smc-get uninstall</tt> not removing
17
+ directories.</i>
18
+ * <b>Added the <tt>server</tt> command to <tt>smc-get</tt>.
19
+ * Experimental script for converting Luiji's GitHub repo to the new
20
+ SMCPAK format.
21
+ * <b>Added --local option to <tt>smc-get install</tt> for installing local
22
+ package files.</b>
23
+
24
+ == 0.2.0-beta2
25
+
26
+ * <i>Fixed world handling in packages [#4]</i>
27
+ * <i>Added missing dependency tracking [#3]</i>
28
+ * <i>Fixed startup crash on permission error.</i>
29
+
30
+ == 0.2.0-beta1
31
+
32
+ * <b>Added a completely new SMC package format: smcpak. These are XZ-compressed
33
+ tarballs allowing for easy deployment of packages. See the smcpak.rdoc file
34
+ for further information.</b>
35
+ * <b>Rewrote nearly the full API. This release is 100%
36
+ incompatible with anything released so far.</b>
37
+ * <b>New classes LocalRepository and RemoteRepository for
38
+ managing downloads and installations.</b>
39
+ * <b><tt>smc-get list</tt> without arguments works a little different now.
40
+ Instead of showing the installation time of a package it now shows the
41
+ time of the last update, which allows you to better keep track of
42
+ what is out of date.</b>
43
+ * <b>Added <tt>smc-get update</tt> for a fully automated update of all (or
44
+ selected) installed packages.</b>
45
+ * <b>Added <tt>smc-get build</tt> to automatically build SMC packages either
46
+ interactively or as an automated process.</b>
47
+ * Added modification detection via SHA1 checksums.
48
+ * New dependency on the {ruby-xz gem}[http://rubygems.org/gems/ruby-xz].
49
+ * New dependency on the {minitar gem}[http://rubygems.org/gems/minitar].
50
+ * New dependency on liblzma[http://tukaani.org/xz/].
51
+ * Official bugtracker is now at GitHub: https://github.com/Luiji/smc-get/issues.
52
+ * Added this file (HISTORY.rdoc) for collecting change information.
53
+
@@ -1,163 +1,163 @@
1
- = SMC-GET -- level repository manager for Secret Maryo Chronicles
2
- smc-get - Library and command-line for managing SMC level packages.
3
-
4
- Author:: Luiji Maryo (mailto:luiji@users.sourceforge.net)
5
- Contributor:: Marvin Gülker (mailto:sutniuq@gmx.net)
6
- Copyright:: Copyright (C) 2010-2011 Entertaining Software, Inc.
7
- Copyright:: Copyright (C) 2011 Marvin Gülker
8
- License:: GNU General Public License (see COPYING)
9
-
10
- = Synopsis for use as a command-line tool
11
- smc-get install mypackage
12
- smc-get uninstall mypackage
13
- smc-get help
14
-
15
- = Synopsis for use as a library
16
- require 'smc_get'
17
- # Initialize the library
18
- SmcGet.setup
19
-
20
- # Bind to local and remote repositories
21
- rr = SmcGet::RemoteRepository.new("http://example.org/smc-repo")
22
- lr = SmcGet::LocalRepository.new("/usr/share/smc")
23
-
24
- # Get a package
25
- path = rr.fetch_package("mypackage")
26
- pkg = SmcGet::Package.from_file(pkg)
27
-
28
- # Install it!
29
- lr.install(pkg)
30
-
31
- #...or remove it.
32
- lr.uninstall("mypackage")
33
-
34
- = Description
35
- smc-get is a library and command-line tool for installing, uninstalling, etc.
36
- level packages from the Secret Maryo Chronicles Contributed Levels Repository.
37
-
38
- == Prototype Notice
39
-
40
- This program is a prototype for functionality that will eventually be merged
41
- with Secret Maryo Chronicles. It is subject to change and should not be used
42
- for anything other then testing.
43
-
44
- = Usage
45
-
46
- == Using it as a command-line
47
- smc-get's main purpose is to be used as a command-line utility. It should be
48
- executed in the syntax:
49
- smc-get COMMAND [PARAMETERS...]
50
- Where <tt>COMMAND</tt> is the command and <tt>PARAMATERS...</tt> are the
51
- parameters for that command.
52
-
53
- To get help on the various commands, use the help command.
54
- smc-get help [COMMAND]
55
- Ommit the +COMMAND+ if you want general usage information.
56
-
57
- === Configuration file
58
- smc-get requires a configuration file when used as a commandline tool.
59
- By default it searches for <tt>smc-get.yml</tt> in the <b>config/</b>
60
- subdirectory of your smc-get installation, then for <tt>smc-get-conf.yml</tt>
61
- in the user's home directory and then for the file specified via the <tt>-c</tt>
62
- commandline switch, if existant. Values set in later evaluated configuration
63
- files override those in prevously evaluated ones; see
64
- smc-get help
65
- for more explanation. If you want to use the CUI from your scripts, you
66
- can specify a config file via <tt>-c</tt>, but make sure it contains all
67
- possible options, otherwise those in the global or user-level config files
68
- may affect your program. See below for an example.
69
-
70
- Be careful when using +sudo+, because it changes the environment variables.
71
- smc-get may not find your user-level configuration file when using sudo,
72
- because it derives the path from the +USER+ environment variable which may
73
- get set to +root+ when using +sudo+.
74
-
75
- In the configuration file you can set some general options, look into
76
- the file which is quite self-explanatory. A sample configuration may
77
- look like this:
78
- data_directory: "/usr/local/share/smc"
79
- repo_url: "ftp://ftp.example.org/smc
80
-
81
- == Using it as a library
82
- smc-get, although mainly targetted at being a command-line utility, may also be
83
- used as a library. This is useful when, for instance, creating a GUI front-end.
84
-
85
- To initialize the library, call SmcGet.setup which will do some basic initialization
86
- needed for use of the library.
87
- SmcGet.setup
88
- For interacting with the SMC repository, smc-get exposes an object-oriented API
89
- centered around the Package and repository classes. Before you can do anything,
90
- you have to "establish" connections to a remote and a local repository, where
91
- remote repositories are repositories where <tt>smc-get</tt> downloads from,
92
- and local repositories are repositories where <tt>smc-get</tt> installs
93
- into, i.e. usually your SMC installation. You can use multiple repositories
94
- if you know how to manage it.
95
-
96
- rr = SmcGet::RemoteRepository.new("http://example.org/smc-repo")
97
- lr = SmcGet::LocalRepository.new("/usr/local/share/smc")
98
-
99
- After you initialized the library
100
- as explained above, you can query, install and uninstall packages.
101
-
102
- path = rr.fetch_package("mypackage")
103
- pkg = SmcGet::Package.from_file(path)
104
- lr.install(pkg)
105
-
106
- If any of the methods fails, it will raise various exceptions. When creating a GUI,
107
- you should catch these exceptions and present them as message boxes.
108
-
109
- begin
110
- rr.fetch_package("mypackage")
111
- rescue SmcGet::Errors::NoSuchPackageError => e
112
- alert "No such package: #{e.package_name}!"
113
- end
114
-
115
- All errors smc-get raises are subclasses of SmcGet::Errors::SmcGetError. That
116
- means, if you rescue from this exception, you can handle all package-related
117
- errors at once:
118
-
119
- begin
120
- lr.install(pkg)
121
- rescue SmcGet::Errors::SmcGetError => e
122
- alert e.message
123
- end
124
-
125
- Furthermore, these error messages should have a pretty informative message set,
126
- so unless you want to localize the error messages you can just reach them
127
- through (the messages, not the whole exceptions, of course).
128
-
129
- The configuration file only contains settings for the commandline user
130
- interface, so you don't need it here. If you want to use the CUI from
131
- your scripts, do
132
- require "smc_get"
133
- require "smc_get/cui"
134
-
135
- cui = SmcGet::CUI.new(ARGV)
136
- cui.start
137
- The configuration file from the <b>config/</b> directory will automatically
138
- be loaded as well as the user-level configuration file; you may specify another
139
- configuration file by placing the appropriate option in ARGV:
140
- ARGV.unshift("-c")
141
- ARGV.unshift("YOURCONFIGFILE.yml")
142
-
143
- cui = SmcGet::CUI.new(ARGV)
144
- cui.start
145
-
146
- = License
147
-
148
- smc-get is licensed under the GNU General Public License version 3 or later. For
149
- more information, see COPYING.
150
-
151
- = Website
152
-
153
- This software was written by Entertaining Software, Inc. Visit us at
154
- http://www.entertainingsoftware.com.
155
-
156
- This software is hosted at GitHub. The project page can be found at
157
- https://github.com/Luiji/smc-get.
158
-
159
- This software was written for Secret Maryo Chronicles. Visit them at
160
- http://www.secretmaryo.org.
161
-
162
- Bugs related to this software may be reported at
1
+ = SMC-GET -- level repository manager for Secret Maryo Chronicles
2
+ smc-get - Library and command-line for managing SMC level packages.
3
+
4
+ Author:: Luiji Maryo (mailto:luiji@users.sourceforge.net)
5
+ Contributor:: Marvin Gülker (mailto:sutniuq@gmx.net)
6
+ Copyright:: Copyright (C) 2010-2011 Entertaining Software, Inc.
7
+ Copyright:: Copyright (C) 2011 Marvin Gülker
8
+ License:: GNU General Public License (see COPYING)
9
+
10
+ = Synopsis for use as a command-line tool
11
+ smc-get install mypackage
12
+ smc-get uninstall mypackage
13
+ smc-get help
14
+
15
+ = Synopsis for use as a library
16
+ require 'smc_get'
17
+ # Initialize the library
18
+ SmcGet.setup
19
+
20
+ # Bind to local and remote repositories
21
+ rr = SmcGet::RemoteRepository.new("http://example.org/smc-repo")
22
+ lr = SmcGet::LocalRepository.new("/usr/share/smc")
23
+
24
+ # Get a package
25
+ path = rr.fetch_package("mypackage")
26
+ pkg = SmcGet::Package.from_file(pkg)
27
+
28
+ # Install it!
29
+ lr.install(pkg)
30
+
31
+ #...or remove it.
32
+ lr.uninstall("mypackage")
33
+
34
+ = Description
35
+ smc-get is a library and command-line tool for installing, uninstalling, etc.
36
+ level packages from the Secret Maryo Chronicles Contributed Levels Repository.
37
+
38
+ == Prototype Notice
39
+
40
+ This program is a prototype for functionality that will eventually be merged
41
+ with Secret Maryo Chronicles. It is subject to change and should not be used
42
+ for anything other then testing.
43
+
44
+ = Usage
45
+
46
+ == Using it as a command-line
47
+ smc-get's main purpose is to be used as a command-line utility. It should be
48
+ executed in the syntax:
49
+ smc-get COMMAND [PARAMETERS...]
50
+ Where <tt>COMMAND</tt> is the command and <tt>PARAMATERS...</tt> are the
51
+ parameters for that command.
52
+
53
+ To get help on the various commands, use the help command.
54
+ smc-get help [COMMAND]
55
+ Ommit the +COMMAND+ if you want general usage information.
56
+
57
+ === Configuration file
58
+ smc-get requires a configuration file when used as a commandline tool.
59
+ By default it searches for <tt>smc-get.yml</tt> in the <b>config/</b>
60
+ subdirectory of your smc-get installation, then for <tt>smc-get-conf.yml</tt>
61
+ in the user's home directory and then for the file specified via the <tt>-c</tt>
62
+ commandline switch, if existant. Values set in later evaluated configuration
63
+ files override those in prevously evaluated ones; see
64
+ smc-get help
65
+ for more explanation. If you want to use the CUI from your scripts, you
66
+ can specify a config file via <tt>-c</tt>, but make sure it contains all
67
+ possible options, otherwise those in the global or user-level config files
68
+ may affect your program. See below for an example.
69
+
70
+ Be careful when using +sudo+, because it changes the environment variables.
71
+ smc-get may not find your user-level configuration file when using sudo,
72
+ because it derives the path from the +USER+ environment variable which may
73
+ get set to +root+ when using +sudo+.
74
+
75
+ In the configuration file you can set some general options, look into
76
+ the file which is quite self-explanatory. A sample configuration may
77
+ look like this:
78
+ data_directory: "/usr/local/share/smc"
79
+ repo_url: "ftp://ftp.example.org/smc
80
+
81
+ == Using it as a library
82
+ smc-get, although mainly targetted at being a command-line utility, may also be
83
+ used as a library. This is useful when, for instance, creating a GUI front-end.
84
+
85
+ To initialize the library, call SmcGet.setup which will do some basic initialization
86
+ needed for use of the library.
87
+ SmcGet.setup
88
+ For interacting with the SMC repository, smc-get exposes an object-oriented API
89
+ centered around the Package and repository classes. Before you can do anything,
90
+ you have to "establish" connections to a remote and a local repository, where
91
+ remote repositories are repositories where <tt>smc-get</tt> downloads from,
92
+ and local repositories are repositories where <tt>smc-get</tt> installs
93
+ into, i.e. usually your SMC installation. You can use multiple repositories
94
+ if you know how to manage it.
95
+
96
+ rr = SmcGet::RemoteRepository.new("http://example.org/smc-repo")
97
+ lr = SmcGet::LocalRepository.new("/usr/local/share/smc")
98
+
99
+ After you initialized the library
100
+ as explained above, you can query, install and uninstall packages.
101
+
102
+ path = rr.fetch_package("mypackage")
103
+ pkg = SmcGet::Package.from_file(path)
104
+ lr.install(pkg)
105
+
106
+ If any of the methods fails, it will raise various exceptions. When creating a GUI,
107
+ you should catch these exceptions and present them as message boxes.
108
+
109
+ begin
110
+ rr.fetch_package("mypackage")
111
+ rescue SmcGet::Errors::NoSuchPackageError => e
112
+ alert "No such package: #{e.package_name}!"
113
+ end
114
+
115
+ All errors smc-get raises are subclasses of SmcGet::Errors::SmcGetError. That
116
+ means, if you rescue from this exception, you can handle all package-related
117
+ errors at once:
118
+
119
+ begin
120
+ lr.install(pkg)
121
+ rescue SmcGet::Errors::SmcGetError => e
122
+ alert e.message
123
+ end
124
+
125
+ Furthermore, these error messages should have a pretty informative message set,
126
+ so unless you want to localize the error messages you can just reach them
127
+ through (the messages, not the whole exceptions, of course).
128
+
129
+ The configuration file only contains settings for the commandline user
130
+ interface, so you don't need it here. If you want to use the CUI from
131
+ your scripts, do
132
+ require "smc_get"
133
+ require "smc_get/cui"
134
+
135
+ cui = SmcGet::CUI.new(ARGV)
136
+ cui.start
137
+ The configuration file from the <b>config/</b> directory will automatically
138
+ be loaded as well as the user-level configuration file; you may specify another
139
+ configuration file by placing the appropriate option in ARGV:
140
+ ARGV.unshift("-c")
141
+ ARGV.unshift("YOURCONFIGFILE.yml")
142
+
143
+ cui = SmcGet::CUI.new(ARGV)
144
+ cui.start
145
+
146
+ = License
147
+
148
+ smc-get is licensed under the GNU General Public License version 3 or later. For
149
+ more information, see COPYING.
150
+
151
+ = Website
152
+
153
+ This software was written by Entertaining Software, Inc. Visit us at
154
+ http://www.entertainingsoftware.com.
155
+
156
+ This software is hosted at GitHub. The project page can be found at
157
+ https://github.com/Luiji/smc-get.
158
+
159
+ This software was written for Secret Maryo Chronicles. Visit them at
160
+ http://www.secretmaryo.org.
161
+
162
+ Bugs related to this software may be reported at
163
163
  https://github.com/Luiji/smc-get/issues.
@@ -1 +1 @@
1
- 0.2.0-beta1
1
+ 0.3.0-beta1
@@ -1,44 +1,44 @@
1
- #!/usr/bin/env ruby
2
- #Encoding: UTF-8
3
-
4
- require "pathname"
5
- require "digest/sha1"
6
-
7
- PROG = File.basename($0)
8
-
9
- if ARGV.include?("-h") or ARGV.include?("--help")
10
- puts(<<HELP)
11
- USAGE:
12
- #{PROG} [FILES...]
13
-
14
- Prints out all SHA1 checksums of the FILES given at the commandline.
15
- FILES that are directories are listed recursively. If no FILES
16
- are given, recursively lists the current directory.
17
- HELP
18
- exit
19
- end
20
-
21
- Signal.trap("SIGINT"){exit}
22
- Signal.trap("SIGTERM"){exit}
23
-
24
- ARGV.unshift(".") if ARGV.empty?
25
-
26
- ARGV.each do |arg|
27
- begin
28
- path = Pathname.new(arg)
29
-
30
- if path.file?
31
- puts "#{path}: #{Digest::SHA1.hexdigest(File.read(path))}"
32
- else
33
- path.find do |sub_path|
34
- puts "#{sub_path}: #{Digest::SHA1.hexdigest(File.read(sub_path))}" if sub_path.file?
35
- end
36
- end
37
- rescue Errno::ENOENT => e
38
- $stderr.puts("WARNING: Not found: #{arg}.")
39
- $stderr.puts("Skipping.")
40
- rescue Errno::EACCES => e
41
- $stderr.puts("WARNING: Permission denied: #{arg}.")
42
- $stderr.puts("Skipping.")
43
- end
44
- end
1
+ #!/usr/bin/env ruby
2
+ #Encoding: UTF-8
3
+
4
+ require "pathname"
5
+ require "digest/sha1"
6
+
7
+ PROG = File.basename($0)
8
+
9
+ if ARGV.include?("-h") or ARGV.include?("--help")
10
+ puts(<<HELP)
11
+ USAGE:
12
+ #{PROG} [FILES...]
13
+
14
+ Prints out all SHA1 checksums of the FILES given at the commandline.
15
+ FILES that are directories are listed recursively. If no FILES
16
+ are given, recursively lists the current directory.
17
+ HELP
18
+ exit
19
+ end
20
+
21
+ Signal.trap("SIGINT"){exit}
22
+ Signal.trap("SIGTERM"){exit}
23
+
24
+ ARGV.unshift(".") if ARGV.empty?
25
+
26
+ ARGV.each do |arg|
27
+ begin
28
+ path = Pathname.new(arg)
29
+
30
+ if path.file?
31
+ puts "#{path}: #{Digest::SHA1.hexdigest(File.read(path))}"
32
+ else
33
+ path.find do |sub_path|
34
+ puts "#{sub_path}: #{Digest::SHA1.hexdigest(File.read(sub_path))}" if sub_path.file?
35
+ end
36
+ end
37
+ rescue Errno::ENOENT => e
38
+ $stderr.puts("WARNING: Not found: #{arg}.")
39
+ $stderr.puts("Skipping.")
40
+ rescue Errno::EACCES => e
41
+ $stderr.puts("WARNING: Permission denied: #{arg}.")
42
+ $stderr.puts("Skipping.")
43
+ end
44
+ end