Skip to content

Commit

Permalink
Updated README and changed version number to 1.1
Browse files Browse the repository at this point in the history
  • Loading branch information
whisperity committed Jul 25, 2013
1 parent 1c4cb4f commit b62e8ba
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 88 deletions.
132 changes: 48 additions & 84 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,134 +1,98 @@
SharpGMad
=========

SharpGMad is a reimplementation of Garry Newman's
[GMad](http://github.com/garrynewman/gmad) application.
SharpGMad is a graphical tool used to manipulate [Garry's
Mod](http://en.wikipedia.org/wiki/Garry%27s_Mod)'s workshop addon packages
(aka: _gma_ files).

_GMad_ is used to manipulate Garry's Mod (his game) addon files and is
written in C++. SharpGMod takes it to be in C#, originally written directly
from the code available by garry.
The program had been originally created as a straight reimplementation in
C# of Garry Newman's [GMad](http://github.com/garrynewman/gmad) tool, but
ever since it has been given more functionality.

(The current version of SharpGMad implements and complies with
(The current version implements and complies with
[`f2a0de4`](http://github.com/garrynewman/gmad/tree/f2a0de42f5d124221ea080f18f338cf8fc23c15f).)

Ever since, SharpGMad's code has been refurbished to match more with
development style used in C# applications, and to, of course, support new
opportunities.

Usage
-----

Currently the following operation modes are supported:

### [`gmad`](http://github.com/garrynewman/gmad) (legacy) mode
### `gmad` mode

`SharpGMad.exe <command> <options>`
Because SharpGMad provides the legacy interface of gmad, all of its
operations are supported.

To create a new .gma file
#### Create new GMA file from a folder

`SharpGMad.exe create -folder "C:\path\to\addon\folder\" -out
"C:\where\to\save\file\out.gma"`

#### Extract an existing file

`SharpGMad.exe extract -file
"C:\steam\etc\garrysmod\addons\my_addon_12345.gma" -out "C:\this\folder"`

### Conversion mode

Packing Garry's Mod 12 _loose_ addons into GMAs are also supported. (This
way, SharpGMad will use an existing `addon.txt` or `info.txt` and ask the
user for missing metadata.)

To create a new .gma file **using GMod 12 addons/ folder structure**

`SharpGMad.exe convert -folder "C:\path\to\addon\folder\" -out
"C:\where\to\save\file\out.gma"`

To extract an existing .gma file into its parent folder

`SharpGMad.exe extract -file
"C:\steam\etc\garrysmod\addons\my_addon_12345.gma"`

To extract an existing .gma file into another folder
The `gmad` and conversion modes are available in the GUI too, under
_Legacy operations_.

`SharpGMad.exe extract -file "C:\steam\etc\garrysmod\addons\my_addon_12345.gma"
-out "C:\this\folder"`
### Realtime mode

### Realtime access
The main feature of SharpGMad is the realtime wrapper. With it, you can
load a GMA file like how you load an archive (zip, rar, tar) and
access/update the contents of the addon without having to do a full
extract and create run.

What is the main feature of SharpGMad, however, is the so-called realtime
wrapper. With it, you can load a GMA file like any other archive (zip,
rar, tar, ...) and update the contents of the files in it without having
to fully extract and then repack the file.
The realtime mode also supports _exporting_ a single file to a specific
location on the hard drive where you can edit it with an appropriate
editor. If a file is exported and then changed, it only takes two clicks
to _pull_ these changes and update the addon with them.

In realtime, you can also _export_ a single file to a specific location in
your system and see/run/edit. If a file is exported and then edited
"outside", SharpGMad offers the possibility to _pull_ the changes and
instantly update the addon with it. Exported files are indicated with
blue file name, whilst changed files are purple.
Exported files are shown with a blue filename, while changed (so-called
_pullable_) expors are written with purple.

The realtime wrapper comes in two flavours.
Both a graphical and a command-line interface is available for realtime
mode.

#### GUI

`SharpGMad.exe [path]`

If the program is started with no command-line arguments (or the only
argument is a file path), a GUI will load. (Because of this, dragging and
dropping a file onto SharpGMad in Explorer is supported.)
argument is a file path), a GUI will load. So you can **drag & drop** a
file in Explorer onto SharpGMad and it will be opened automatically.

![Screenshot of GUI mode](Screenshot.png)

#### Console

`SharpGMad.exe realtime`

Optionally, you can specify a .gma file to be loaded initially
Optionally, you can specify a file to be loaded initially

`SharpGMad.exe realtime -file "C:\steam\etc\garrysmod\addons\my_addon_12345.gma"`

#### Realtime functionality

The following operations are supported in realtime mode.
(The `command` is applicable in CLI-mode. Most features have a corresponding,
easy operation in GUI.)

* _Addon operations_
* `new <filename>`: Create new addon and save it as `<filename>`
* `load <filename>`: Load an existing addon saved as `<filename>`
* `push`: Save changes to the disk
* **Console only!** `close`: Drop all changes and close the addon without
saving
* **Console only!** _Filesystem operations_
* `path`: Print the full file path of the currently opened addon
* `pwd`: Print current working directory
* `cd <folder>`: Change working directory to `<folder>`
* `ls`: List all files in the current folder
* _Addon file contents_
* `add <filename>`: Add `<filename>`
* **Console only!** `addfolder <folder>`: Add all files from `<folder>`
* `list`: List the files currently added
* `remove <filename>`: Remove `<filename>`
* `extract <filename> [path]`: Extract `<filename>` to the current folder
(or to `[path]` if specified). Unlike `export`, a plain `extract` does not
set up a realtime change watch.
* `mget <folder> <f1> [f2...]`: Extract all specified files to `<folder>`
* _Exporting and pulling changes_
* **Console only!** `export`: List all currently handled exports
* `export <filename> [path]`: Export `<filename>` for editing to the
current folder (or to `[path]` if specified)
* `pull`: Pull all changes from all exported files
* `pull <filename>`: Pull changes of `<filename>` (the parameter
indicates the path of the file **within** the addon, not the path of the
exported file)
* `drop <filename>`: Drop the export and delete the exported file
(`<filename>` is file path **within** the addon)
* `shellexec <path>`: Execute the specified file
* _Metadata operations_
* **Console only!** `get` or `set`: List the handled metadata parameters
* `get <parameter>`: Print the value of `<parameter>`
* `set <parameter> <value>`: Sets the value of `<parameter>` to `<value>`
* **Console only!** `gui`: Load a GUI window
* **Console only!** `help`: Show the list of available commands
* `exit`: Exit the application
You can execute the command `help` in the internal shell to get a list of
all supported commands. Every operation of the GUI is represented by a
corresponding command-line variant.

Compiling and requirements
--------------------------

SharpGMad is written for the .NET 4.0 framework. This is the only
SharpGMad is written using the .NET 4.0 framework. This is the only
requirement, you can compile the solution with any development environment
on any computer compatible with .NET 4.0.

Disclaimer
----------

The program _SharpGMad_ is provided "AS IS" without any expressed or
implied warranties. A general rule of thumb is that you should **NEVER**
meddle with files you hadn't made backup of beforehand. The creators
refuse liability to any damage caused by the software.
Binary file modified Screenshot.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 4 additions & 4 deletions SharpGMad/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("SharpGMad")]
[assembly: AssemblyDescription("Garry's Mod Addon package manipulator")]
[assembly: AssemblyDescription("gmad with GUI, written in C#, with realtime access for Garry's Mod addon files")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Whisperity")]
[assembly: AssemblyProduct("SharpGMad")]
[assembly: AssemblyCopyright("Copyright © 2013, Whisperity")]
[assembly: AssemblyCopyright("Copyright © 2013, Whisperity")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

Expand All @@ -32,5 +32,5 @@
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.1")]
[assembly: AssemblyFileVersion("1.0.1")]
[assembly: AssemblyVersion("1.1")]
[assembly: AssemblyFileVersion("1.1")]

0 comments on commit b62e8ba

Please sign in to comment.