Git Product home page Git Product logo

apm's Introduction

Atom

Build status

Atom and all repositories under Atom will be archived on December 15, 2022. Learn more in our official announcement

Atom is a hackable text editor for the 21st century, built on Electron, and based on everything we love about our favorite editors. We designed it to be deeply customizable, but still approachable using the default configuration.

Atom

Atom Screenshot

Visit atom.io to learn more or visit the Atom forum.

Follow @AtomEditor on Twitter for important announcements.

This project adheres to the Contributor Covenant code of conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to [email protected].

Documentation

If you want to read about using Atom or developing packages in Atom, the Atom Flight Manual is free and available online. You can find the source to the manual in atom/flight-manual.atom.io.

The API reference for developing packages is also documented on Atom.io.

Installing

Prerequisites

macOS

Download the latest Atom release.

Atom will automatically update when a new release is available.

Windows

Download the latest Atom installer. AtomSetup.exe is 32-bit. For 64-bit systems, download AtomSetup-x64.exe.

Atom will automatically update when a new release is available.

You can also download atom-windows.zip (32-bit) or atom-x64-windows.zip (64-bit) from the releases page. The .zip version will not automatically update.

Using Chocolatey? Run cinst Atom to install the latest version of Atom.

Linux

Atom is only available for 64-bit Linux systems.

Configure your distribution's package manager to install and update Atom by following the Linux installation instructions in the Flight Manual. You will also find instructions on how to install Atom's official Linux packages without using a package repository, though you will not get automatic updates after installing Atom this way.

Archive extraction

An archive is available for people who don't want to install atom as root.

This version enables you to install multiple Atom versions in parallel. It has been built on Ubuntu 64-bit, but should be compatible with other Linux distributions.

  1. Install dependencies (on Ubuntu):
sudo apt install git libasound2 libcurl4 libgbm1 libgcrypt20 libgtk-3-0 libnotify4 libnss3 libglib2.0-bin xdg-utils libx11-xcb1 libxcb-dri3-0 libxss1 libxtst6 libxkbfile1
  1. Download atom-amd64.tar.gz from the Atom releases page.
  2. Run tar xf atom-amd64.tar.gz in the directory where you want to extract the Atom folder.
  3. Launch Atom using the installed atom command from the newly extracted directory.

The Linux version does not currently automatically update so you will need to repeat these steps to upgrade to future releases.

Building

Discussion

License

MIT

When using the Atom or other GitHub logos, be sure to follow the GitHub logo guidelines.

apm's People

Contributors

50wliu avatar aerijo avatar aminya avatar anaisbetts avatar benogle avatar binarymuse avatar bronson avatar damieng avatar darangi avatar daviwil avatar deedeeg avatar frederickgeek8 avatar izuzak avatar jasonrudolph avatar joefitzgerald avatar kevinsawicki avatar kuychaco avatar lee-dohm avatar lgeiger avatar lijunle avatar mcolyer avatar mnquintana avatar okbel avatar sadick254 avatar smashwilson avatar stevenhauser avatar thedaniel avatar thomasjo avatar uzitech avatar zcbenz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

apm's Issues

Remove access to keychain

I think the only reason APM needs a token from the keychain is because Atom.io and the Atom org are private. All other operations can be done via git and the command line (like publish is).

If we hardcode a token into APM until we release it would solve the problems like @benogle was having in #33.

Renaming packages

Do we have a nice way to rename a package so that it doesnt break for current installs? I really want to tell people to rename their syntax themes (and rename a couple of ours, mac-ui, base16-tomorrow-dark, monokai). Also if folks want to rename for any other reason, it seems they cant.

apm mv? apm rename??

Atom token auth support

For various reasons, we need to discontinue the use of a GitHub OAuth
token with the Atom.io API. This is a little awkward as there are a number of
moving parts: The atom.io site/account page, the API, apm, and Atom's apm integration.

Here's one way we could do this, feedback requested:

  • Finish up the branch with the atom.io account page and deploy it behind a staff-only feature flag.
  • Get a branch of apm going with twitter cli-style auth flow (#82)
  • Confirm the editor doesn't make any authed API calls directly.
  • Remove GitHub OAuth token from all public API calls in Atom (I think these all shell out to APM anyway)
  • Ship apm with new auth flow and genpop account page
  • Solve apm authentication flow in Atom itself when the need presents itself (e.g. for auto-update should we decide to charge)
  • Leave GitHub OAuth support in until enough active users have upgraded their editor and we've blogged about it.

This maybe seems like a lot of steps but it's not so bad, and it's transparent
to the everyday user. The only people that even need to know about the change
are package publishers, of whom there are only 710 (less than 1% of users)

I'm filing this issue on atom/apm because the biggest change to any of the
software involved is to add a "copy-paste from the web" flow to apm's
authentication / authorization.

Prevent publishing if source repo is private

I published a private repo to apm today and apm reported everything as a-ok. I could even see my package on atom.io. Then when someone tried to install it, it failed because my repo was private. It would be rad if apm would prevent me from publishing if the source repo is private.

Add rebuild command

This should be kicked off by the atom build when atom-shell is upgraded to recompile native modules against the latest headers.

`apm dev` should let you know if the current cloned directory is not on origin/master

Example:

I have fuzzy-finder checked out, but it is WAY behind. In fact, I forgot I even had it installed locally.

So when I run apm dev fuzzy-finder I expect it to be using the most recent version. It might be too aggressive or complicated to force update fuzzy-finder. But it would be nice if it had a warning that it wasn't on origin/master

Windows doesn't have a `security` command

Moving this from atom/atom#1035

So we currently reference the security command here src/auth.coffee

@zcbenz has opened atom/node-keytar#3, so we can replace security -q find-generic-password -ws 'GitHub API Token' with require('keytar').findPasswordForService('GitHub API Token')

On Windows ideally we should be able to get the access token from GitHub's Windows client, but @paulcbetts mentioned that Github for Windows can't use the Windows Vault due to backwards compatibility.

Given all of that, I think it still makes sense to move forward with this change because atleast if they've signed in with Atom, we can reuse that key. For initial users I think we should just suggest that they bootstrap using an environment variable. Thoughts?

Add apm test

Runs the specs from the current package in a window and then quits

Output repository on publish fail

If you have a wrong URL in your repository field when setting up a plugin, you'll get this back from apm:

Registering package failed: That repo does not exist, isn't an atom package, or you do not have access

It would be nice if the error message included what that wrong repo was just to be extra clear since people seem to forget to set it correctly and get confused. (From the IRC channel...)

Update package template

Needs a package.json instead of package.cson and should have more default fields such as name, version, description, etc.

module version mismatch

I get this when running apm:

$ apm version 

/Applications/Atom.app/Contents/Resources/app/node_modules/keytar/node_modules/bindings/bindings.js:83
        throw e
              ^
Error: Module version mismatch. Expected 11, got 13.
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at bindings (/Applications/Atom.app/Contents/Resources/app/node_modules/keytar/node_modules/bindings/bindings.js:76:44)
    at Object.<anonymous> (/Applications/Atom.app/Contents/Resources/app/node_modules/keytar/lib/keytar.js:4:31)
    at Object.<anonymous> (/Applications/Atom.app/Contents/Resources/app/node_modules/keytar/lib/keytar.js:58:4)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)

I'm on Atom v0.64.0, and ran the install cli tools command.

Can't create new packages

[master] ~/.atom/packages/emmet $ apm publish 0.1.4
Preparing and tagging a new version ✓
Pushing v0.1.4 tag ✓
Publishing [email protected] ✗
Creating new version failed: Git tag not found
[master] ~/.atom/packages/emmet $ git tag
v0.1.0
v0.1.1
v0.1.2
v0.1.3
v0.1.4
[master] ~/.atom/packages/emmet $ apm publish -t v0.1.4
Publishing [email protected] ✗
Creating new version failed: Git tag not found
[master] ~/.atom/packages/emmet $ apm -v
0.7.0

Deprecating packages

What's the story for deprecating a package? Say I am no longer developing my package, and I want to point to someone else's package.

The easiest thing is obviously putting something in the readme that points to another package. But deprecation would not be shown in the settings view unless the readme button were explicitly clicked.

Encourage a changelog in packages

I dont know where to put this, so it's near the package stuff.

Whenever I see a new update to a package, I want to know wtf changed. So now, my process is to head to the repo and look through the commits between 'prepare x.x.x' commits. Not ideal.

How would you feel about encouraging a CHANGELOG.md with a specific format, and parsing/displaying it in the settings? It's manual for them, but we could probably get most to use it juts by encouraging in the docs. Maybe apm could even look for an entry in the changelog for the version to be published and warn if there is nothing for that version. eg.

$ apm publish minor
Warning: You do not have an entry for v0.5.1 in the CHANGELOG.md. Sure you want to continue?

Yar? Nar? Too complicated?

Discourage atom- package prefixes

Interesting suggestion via email: The guy suggests disallowing atom- package name prefixes. I think a gentle message could be a better choice.

Feel free to close this issue, but thought it was a good enough idea to warrant one.

Precompile during publish

We should precompile .coffee and .cson files when publishing for a faster experience when people install packages.

Stop using npm fork

Now that we are on releases instead of ☁️ 🐜 we can stop using our custom npm fork that supports multiple registries

APM search could be improved

From a halp ticket

The search page for packages should be drastically improved. Concrete example:

- search for 'prefix' -> nothing
- search for 'autoprefix' -> nothing
- search for 'autoprefixer' => finds the autoprefixer package

Add `apm develop`

Clone the package to ~/github
Link to ~/.atom/dev/packages
Add option to clone and link all atom packages from ~/github/atom/package.json

`apm publish minor` fails randomly-ish

So I've noticed apm publish minor seems to randomly fail every other try or so with error message Git tag not found? Re-running seems to usually just work the next time.

Here's the last several tries from my editor, about half of which failed:

Joels-MacBook-Air:fizzy joelglovier$ apm publish minor
Preparing and tagging a new version ✓
Pushing v0.10.0 tag ✓
Publishing [email protected] ✗
Creating new version failed: Git tag not found
Joels-MacBook-Air:fizzy joelglovier$ apm publish minor
Preparing and tagging a new version ✓
Pushing v0.11.0 tag ✓
Publishing [email protected] ✓
Joels-MacBook-Air:fizzy joelglovier$ apm publish minor
Preparing and tagging a new version ✓
Pushing v0.12.0 tag ✓
Publishing [email protected] ✗
Creating new version failed: Git tag not found
Joels-MacBook-Air:fizzy joelglovier$ apm publish minor
Preparing and tagging a new version ✓
Pushing v0.13.0 tag ✓
Publishing [email protected] ✗
Creating new version failed: Git tag not found
Joels-MacBook-Air:fizzy joelglovier$ apm publish minor
Preparing and tagging a new version ✓
Pushing v0.14.0 tag ✓
Publishing [email protected]

apm -v shows I'm on 0.10.0

Use atom.io API rather than couch.

Auth:

Currently the atom.io package API accepts a valid GH OAuth token in the Authorization header. We store this in the keychain (right?) when a user signs in with Atom, and can use that when shelling out to APM there. What about when running e.g. apm publish from the CLI? Check the keychain for an oauth token and then direct the user to sign in with Atom if it's not present?

Fetching:

This should be straightforward, though the current API diverges slightly from npmjs.org

Publishing:

  • If we use the GH tag API for publishing, publish needs to push the tags up to GH before submitting the package. see #22 , API docs linked above.

In a past life I wrote plenty of coffeescript, so I am happy to have a go at spiking out the necessary changes.

Also, the package API is not fully baked as it has no client yet, so feel free to propose changes that will make this smoother.

Update theme template

We should provide a basic set of selectors and use less variables for easy customization (like solarized-dark-syntax).

I think this will solve the majority case where users would like to select different colors but without learning all of our TM grammar syntax classes.

Login fails if token already exists

Duplicate notes are no longer allowed:

{ message: 'Validation Failed',
  documentation_url: 'http://developer.github.com/v3/oauth_authorizations/#create-a-new-authorization',
  errors: 
   [ { resource: 'OauthAccess',
       code: 'already_exists',
       field: 'description' } ] }

`grunt prepublish` fails on my linux box

[daniel@lilcomps apm ((v0.32.0))]$ ./node_modules/grunt-cli/bin/grunt prepublish
Running "clean" task

Running "node" task
Fatal error: incorrect header check
[daniel@lilcomps apm ((v0.32.0))]$ 

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.